3060 lines
144 KiB
C#
3060 lines
144 KiB
C#
using Microsoft.Xna.Framework;
|
|
using System;
|
|
using System.Text;
|
|
namespace Terraria
|
|
{
|
|
public class messageBuffer
|
|
{
|
|
public const int readBufferMax = 65535;
|
|
public const int writeBufferMax = 65535;
|
|
public bool broadcast;
|
|
public byte[] readBuffer = new byte[65535];
|
|
public byte[] writeBuffer = new byte[65535];
|
|
public bool writeLocked;
|
|
public int messageLength;
|
|
public int totalData;
|
|
public int whoAmI;
|
|
public int spamCount;
|
|
public int maxSpam;
|
|
public bool checkBytes;
|
|
public void Reset()
|
|
{
|
|
this.writeBuffer = new byte[65535];
|
|
this.writeLocked = false;
|
|
this.messageLength = 0;
|
|
this.totalData = 0;
|
|
this.spamCount = 0;
|
|
this.broadcast = false;
|
|
this.checkBytes = false;
|
|
}
|
|
public void GetData(int start, int length)
|
|
{
|
|
if (this.whoAmI < 256)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].timeOut = 0;
|
|
}
|
|
else
|
|
{
|
|
Netplay.clientSock.timeOut = 0;
|
|
}
|
|
int num = start + 1;
|
|
byte b = this.readBuffer[start];
|
|
Main.rxMsg++;
|
|
Main.rxData += length;
|
|
Main.rxMsgType[(int)b]++;
|
|
Main.rxDataType[(int)b] += length;
|
|
if (Main.netMode == 1 && Netplay.clientSock.statusMax > 0)
|
|
{
|
|
Netplay.clientSock.statusCount++;
|
|
}
|
|
if (Main.verboseNetplay)
|
|
{
|
|
for (int i = start; i < start + length; i++)
|
|
{
|
|
}
|
|
for (int j = start; j < start + length; j++)
|
|
{
|
|
byte arg_CD_0 = this.readBuffer[j];
|
|
}
|
|
}
|
|
if (Main.netMode == 2 && b != 38 && Netplay.serverSock[this.whoAmI].state == -1)
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[1], 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (Main.netMode == 2 && Netplay.serverSock[this.whoAmI].state < 10 && b > 12 && b != 16 && b != 42 && b != 50 && b != 38 && b != 68)
|
|
{
|
|
NetMessage.BootPlayer(this.whoAmI, Lang.mp[2]);
|
|
}
|
|
if (b == 1 && Main.netMode == 2)
|
|
{
|
|
if (Main.dedServ && Netplay.CheckBan(Netplay.serverSock[this.whoAmI].tcpClient.Client.RemoteEndPoint.ToString()))
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[3], 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (Netplay.serverSock[this.whoAmI].state == 0)
|
|
{
|
|
string @string = Encoding.UTF8.GetString(this.readBuffer, start + 1, length - 1);
|
|
if (!(@string == "Terraria" + Main.curRelease))
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[4], 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (Netplay.password == null || Netplay.password == "")
|
|
{
|
|
Netplay.serverSock[this.whoAmI].state = 1;
|
|
NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
Netplay.serverSock[this.whoAmI].state = -1;
|
|
NetMessage.SendData(37, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 2 && Main.netMode == 1)
|
|
{
|
|
Netplay.disconnect = true;
|
|
Main.statusText = Encoding.UTF8.GetString(this.readBuffer, start + 1, length - 1);
|
|
return;
|
|
}
|
|
if (b == 3 && Main.netMode == 1)
|
|
{
|
|
if (Netplay.clientSock.state == 1)
|
|
{
|
|
Netplay.clientSock.state = 2;
|
|
}
|
|
int num2 = (int)this.readBuffer[start + 1];
|
|
if (num2 != Main.myPlayer)
|
|
{
|
|
Main.player[num2] = (Player)Main.player[Main.myPlayer].Clone();
|
|
Main.player[Main.myPlayer] = new Player();
|
|
Main.player[num2].whoAmi = num2;
|
|
Main.myPlayer = num2;
|
|
}
|
|
NetMessage.SendData(4, -1, -1, Main.player[Main.myPlayer].name, Main.myPlayer, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(68, -1, -1, "", Main.myPlayer, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(16, -1, -1, "", Main.myPlayer, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(42, -1, -1, "", Main.myPlayer, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(50, -1, -1, "", Main.myPlayer, 0f, 0f, 0f, 0);
|
|
for (int k = 0; k < 59; k++)
|
|
{
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].inventory[k].name, Main.myPlayer, (float)k, (float)Main.player[Main.myPlayer].inventory[k].prefix, 0f, 0);
|
|
}
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[0].name, Main.myPlayer, 59f, (float)Main.player[Main.myPlayer].armor[0].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[1].name, Main.myPlayer, 60f, (float)Main.player[Main.myPlayer].armor[1].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[2].name, Main.myPlayer, 61f, (float)Main.player[Main.myPlayer].armor[2].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[3].name, Main.myPlayer, 62f, (float)Main.player[Main.myPlayer].armor[3].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[4].name, Main.myPlayer, 63f, (float)Main.player[Main.myPlayer].armor[4].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[5].name, Main.myPlayer, 64f, (float)Main.player[Main.myPlayer].armor[5].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[6].name, Main.myPlayer, 65f, (float)Main.player[Main.myPlayer].armor[6].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[7].name, Main.myPlayer, 66f, (float)Main.player[Main.myPlayer].armor[7].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[8].name, Main.myPlayer, 67f, (float)Main.player[Main.myPlayer].armor[8].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[9].name, Main.myPlayer, 68f, (float)Main.player[Main.myPlayer].armor[9].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].armor[10].name, Main.myPlayer, 69f, (float)Main.player[Main.myPlayer].armor[10].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].dye[0].name, Main.myPlayer, 70f, (float)Main.player[Main.myPlayer].dye[0].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].dye[1].name, Main.myPlayer, 71f, (float)Main.player[Main.myPlayer].dye[1].prefix, 0f, 0);
|
|
NetMessage.SendData(5, -1, -1, Main.player[Main.myPlayer].dye[2].name, Main.myPlayer, 72f, (float)Main.player[Main.myPlayer].dye[2].prefix, 0f, 0);
|
|
NetMessage.SendData(6, -1, -1, "", 0, 0f, 0f, 0f, 0);
|
|
if (Netplay.clientSock.state == 2)
|
|
{
|
|
Netplay.clientSock.state = 3;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 4)
|
|
{
|
|
bool flag = false;
|
|
int num3 = (int)this.readBuffer[start + 1];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num3 = this.whoAmI;
|
|
}
|
|
if (num3 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
int num4 = (int)this.readBuffer[start + 2];
|
|
if (num4 >= 51)
|
|
{
|
|
num4 = 0;
|
|
}
|
|
Main.player[num3].hair = num4;
|
|
Main.player[num3].whoAmi = num3;
|
|
num += 2;
|
|
byte b2 = this.readBuffer[num];
|
|
num++;
|
|
if (b2 == 1)
|
|
{
|
|
Main.player[num3].male = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num3].male = false;
|
|
}
|
|
Main.player[num3].hairColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].hairColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].hairColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].skinColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].skinColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].skinColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].eyeColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].eyeColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].eyeColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shirtColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shirtColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shirtColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].underShirtColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].underShirtColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].underShirtColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].pantsColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].pantsColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].pantsColor.B = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shoeColor.R = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shoeColor.G = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num3].shoeColor.B = this.readBuffer[num];
|
|
num++;
|
|
byte difficulty = this.readBuffer[num];
|
|
Main.player[num3].difficulty = difficulty;
|
|
num++;
|
|
string text = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
text = text.Trim();
|
|
Main.player[num3].name = text.Trim();
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Netplay.serverSock[this.whoAmI].state < 10)
|
|
{
|
|
for (int l = 0; l < 255; l++)
|
|
{
|
|
if (l != num3 && text == Main.player[l].name && Netplay.serverSock[l].active)
|
|
{
|
|
flag = true;
|
|
}
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, text + " " + Lang.mp[5], 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (text.Length > Player.nameLen)
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, "Name is too long.", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (text == "")
|
|
{
|
|
NetMessage.SendData(2, this.whoAmI, -1, "Empty name.", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
Netplay.serverSock[this.whoAmI].oldName = text;
|
|
Netplay.serverSock[this.whoAmI].name = text;
|
|
NetMessage.SendData(4, -1, this.whoAmI, text, num3, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 5)
|
|
{
|
|
int num5 = (int)this.readBuffer[start + 1];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num5 = this.whoAmI;
|
|
}
|
|
if (num5 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
lock (Main.player[num5])
|
|
{
|
|
int num6 = (int)this.readBuffer[start + 2];
|
|
int stack = (int)BitConverter.ToInt16(this.readBuffer, start + 3);
|
|
byte b3 = this.readBuffer[start + 5];
|
|
int type = (int)BitConverter.ToInt16(this.readBuffer, start + 6);
|
|
if (num6 < 59)
|
|
{
|
|
Main.player[num5].inventory[num6] = new Item();
|
|
Main.player[num5].inventory[num6].netDefaults(type);
|
|
Main.player[num5].inventory[num6].stack = stack;
|
|
Main.player[num5].inventory[num6].Prefix((int)b3);
|
|
}
|
|
else
|
|
{
|
|
if (num6 >= 70 && num6 <= 72)
|
|
{
|
|
int num7 = num6 - 58 - 12;
|
|
Main.player[num5].dye[num7] = new Item();
|
|
Main.player[num5].dye[num7].netDefaults(type);
|
|
Main.player[num5].dye[num7].stack = stack;
|
|
Main.player[num5].dye[num7].Prefix((int)b3);
|
|
}
|
|
else
|
|
{
|
|
Main.player[num5].armor[num6 - 58 - 1] = new Item();
|
|
Main.player[num5].armor[num6 - 58 - 1].netDefaults(type);
|
|
Main.player[num5].armor[num6 - 58 - 1].stack = stack;
|
|
Main.player[num5].armor[num6 - 58 - 1].Prefix((int)b3);
|
|
}
|
|
}
|
|
if (Main.netMode == 2 && num5 == this.whoAmI)
|
|
{
|
|
NetMessage.SendData(5, -1, this.whoAmI, "", num5, (float)num6, (float)b3, 0f, 0);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
if (b == 6)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Netplay.serverSock[this.whoAmI].state == 1)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].state = 2;
|
|
}
|
|
NetMessage.SendData(7, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 7)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.time = (double)BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.dayTime = false;
|
|
if (this.readBuffer[num] == 1)
|
|
{
|
|
Main.dayTime = true;
|
|
}
|
|
num++;
|
|
Main.moonPhase = (int)this.readBuffer[num];
|
|
num++;
|
|
int num8 = (int)this.readBuffer[num];
|
|
num++;
|
|
int num9 = (int)this.readBuffer[num];
|
|
num++;
|
|
if (num8 == 1)
|
|
{
|
|
Main.bloodMoon = true;
|
|
}
|
|
else
|
|
{
|
|
Main.bloodMoon = false;
|
|
}
|
|
if (num9 == 1)
|
|
{
|
|
Main.eclipse = true;
|
|
}
|
|
else
|
|
{
|
|
Main.eclipse = false;
|
|
}
|
|
Main.maxTilesX = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.maxTilesY = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.spawnTileX = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.spawnTileY = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.worldSurface = (double)BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.rockLayer = (double)BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.worldID = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.moonType = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.treeX[0] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.treeX[1] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.treeX[2] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.treeStyle[0] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.treeStyle[1] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.treeStyle[2] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.treeStyle[3] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.caveBackX[0] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.caveBackX[1] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.caveBackX[2] = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.caveBackStyle[0] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.caveBackStyle[1] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.caveBackStyle[2] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.caveBackStyle[3] = (int)this.readBuffer[num];
|
|
num++;
|
|
byte style = this.readBuffer[num];
|
|
num++;
|
|
byte style2 = this.readBuffer[num];
|
|
num++;
|
|
byte style3 = this.readBuffer[num];
|
|
num++;
|
|
byte style4 = this.readBuffer[num];
|
|
num++;
|
|
byte style5 = this.readBuffer[num];
|
|
num++;
|
|
byte style6 = this.readBuffer[num];
|
|
num++;
|
|
byte style7 = this.readBuffer[num];
|
|
num++;
|
|
byte style8 = this.readBuffer[num];
|
|
num++;
|
|
WorldGen.setBG(0, (int)style);
|
|
WorldGen.setBG(1, (int)style2);
|
|
WorldGen.setBG(2, (int)style3);
|
|
WorldGen.setBG(3, (int)style4);
|
|
WorldGen.setBG(4, (int)style5);
|
|
WorldGen.setBG(5, (int)style6);
|
|
WorldGen.setBG(6, (int)style7);
|
|
WorldGen.setBG(7, (int)style8);
|
|
Main.iceBackStyle = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.jungleBackStyle = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.hellBackStyle = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.windSpeedSet = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
Main.numClouds = (int)this.readBuffer[num];
|
|
num++;
|
|
byte b4 = this.readBuffer[num];
|
|
num++;
|
|
byte b5 = this.readBuffer[num];
|
|
num++;
|
|
float num10 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
Main.maxRaining = num10;
|
|
if (num10 > 0f)
|
|
{
|
|
Main.raining = true;
|
|
}
|
|
else
|
|
{
|
|
Main.raining = false;
|
|
}
|
|
bool flag3 = false;
|
|
bool crimson = false;
|
|
if ((b4 & 1) == 1)
|
|
{
|
|
WorldGen.shadowOrbSmashed = true;
|
|
}
|
|
if ((b4 & 2) == 2)
|
|
{
|
|
NPC.downedBoss1 = true;
|
|
}
|
|
if ((b4 & 4) == 4)
|
|
{
|
|
NPC.downedBoss2 = true;
|
|
}
|
|
if ((b4 & 8) == 8)
|
|
{
|
|
NPC.downedBoss3 = true;
|
|
}
|
|
if ((b4 & 16) == 16)
|
|
{
|
|
Main.hardMode = true;
|
|
}
|
|
if ((b4 & 32) == 32)
|
|
{
|
|
NPC.downedClown = true;
|
|
}
|
|
if ((b4 & 64) == 64)
|
|
{
|
|
Main.ServerSideCharacter = true;
|
|
}
|
|
if ((b4 & 128) == 128)
|
|
{
|
|
NPC.downedPlantBoss = true;
|
|
}
|
|
if ((b5 & 1) == 1)
|
|
{
|
|
NPC.downedMechBoss1 = true;
|
|
}
|
|
if ((b5 & 2) == 2)
|
|
{
|
|
NPC.downedMechBoss2 = true;
|
|
}
|
|
if ((b5 & 4) == 4)
|
|
{
|
|
NPC.downedMechBoss3 = true;
|
|
}
|
|
if ((b5 & 8) == 8)
|
|
{
|
|
NPC.downedMechBossAny = true;
|
|
}
|
|
if ((b5 & 16) == 16)
|
|
{
|
|
flag3 = true;
|
|
}
|
|
if ((b5 & 32) == 32)
|
|
{
|
|
crimson = true;
|
|
}
|
|
if (flag3)
|
|
{
|
|
Main.cloudBGActive = 1f;
|
|
}
|
|
if (!flag3)
|
|
{
|
|
Main.cloudBGActive = 0f;
|
|
}
|
|
WorldGen.crimson = crimson;
|
|
Main.worldName = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
if (Netplay.clientSock.state == 3)
|
|
{
|
|
Netplay.clientSock.state = 4;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 8)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
int num11 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num12 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
bool flag4 = true;
|
|
if (num11 == -1 || num12 == -1)
|
|
{
|
|
flag4 = false;
|
|
}
|
|
else
|
|
{
|
|
if (num11 < 10 || num11 > Main.maxTilesX - 10)
|
|
{
|
|
flag4 = false;
|
|
}
|
|
else
|
|
{
|
|
if (num12 < 10 || num12 > Main.maxTilesY - 10)
|
|
{
|
|
flag4 = false;
|
|
}
|
|
}
|
|
}
|
|
int num13 = 1350;
|
|
if (flag4)
|
|
{
|
|
num13 *= 2;
|
|
}
|
|
if (Netplay.serverSock[this.whoAmI].state == 2)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].state = 3;
|
|
}
|
|
NetMessage.SendData(9, this.whoAmI, -1, Lang.inter[44], num13, 0f, 0f, 0f, 0);
|
|
Netplay.serverSock[this.whoAmI].statusText2 = "is receiving tile data";
|
|
Netplay.serverSock[this.whoAmI].statusMax += num13;
|
|
int sectionX = Netplay.GetSectionX(Main.spawnTileX);
|
|
int sectionY = Netplay.GetSectionY(Main.spawnTileY);
|
|
for (int m = sectionX - 2; m < sectionX + 3; m++)
|
|
{
|
|
for (int n = sectionY - 1; n < sectionY + 2; n++)
|
|
{
|
|
NetMessage.SendSection(this.whoAmI, m, n);
|
|
}
|
|
}
|
|
if (flag4)
|
|
{
|
|
num11 = Netplay.GetSectionX(num11);
|
|
num12 = Netplay.GetSectionY(num12);
|
|
for (int num14 = num11 - 2; num14 < num11 + 3; num14++)
|
|
{
|
|
for (int num15 = num12 - 1; num15 < num12 + 2; num15++)
|
|
{
|
|
NetMessage.SendSection(this.whoAmI, num14, num15);
|
|
}
|
|
}
|
|
NetMessage.SendData(11, this.whoAmI, -1, "", num11 - 2, (float)(num12 - 1), (float)(num11 + 2), (float)(num12 + 1), 0);
|
|
}
|
|
NetMessage.SendData(11, this.whoAmI, -1, "", sectionX - 2, (float)(sectionY - 1), (float)(sectionX + 2), (float)(sectionY + 1), 0);
|
|
for (int num16 = 0; num16 < 400; num16++)
|
|
{
|
|
if (Main.item[num16].active)
|
|
{
|
|
NetMessage.SendData(21, this.whoAmI, -1, "", num16, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(22, this.whoAmI, -1, "", num16, 0f, 0f, 0f, 0);
|
|
}
|
|
}
|
|
for (int num17 = 0; num17 < 200; num17++)
|
|
{
|
|
if (Main.npc[num17].active)
|
|
{
|
|
NetMessage.SendData(23, this.whoAmI, -1, "", num17, 0f, 0f, 0f, 0);
|
|
}
|
|
}
|
|
for (int num18 = 0; num18 < 1000; num18++)
|
|
{
|
|
if (Main.projectile[num18].active && (Main.projPet[Main.projectile[num18].type] || Main.projectile[num18].netImportant))
|
|
{
|
|
NetMessage.SendData(27, this.whoAmI, -1, "", num18, 0f, 0f, 0f, 0);
|
|
}
|
|
}
|
|
NetMessage.SendData(49, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(57, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 17, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 18, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 19, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 20, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 22, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 38, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 54, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 107, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 108, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 124, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 160, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 178, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 207, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 208, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 209, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 227, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 228, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(56, this.whoAmI, -1, "", 229, 0f, 0f, 0f, 0);
|
|
NetMessage.SendData(7, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 9)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
int num19 = BitConverter.ToInt32(this.readBuffer, start + 1);
|
|
string string2 = Encoding.UTF8.GetString(this.readBuffer, start + 5, length - 5);
|
|
Netplay.clientSock.statusMax += num19;
|
|
Netplay.clientSock.statusText = string2;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 10 && Main.netMode == 1)
|
|
{
|
|
short num20 = BitConverter.ToInt16(this.readBuffer, start + 1);
|
|
int num21 = BitConverter.ToInt32(this.readBuffer, start + 3);
|
|
int num22 = BitConverter.ToInt32(this.readBuffer, start + 7);
|
|
num = start + 11;
|
|
for (int num23 = num21; num23 < num21 + (int)num20; num23++)
|
|
{
|
|
if (Main.tile[num23, num22] == null)
|
|
{
|
|
Main.tile[num23, num22] = new Tile();
|
|
}
|
|
byte b6 = this.readBuffer[num];
|
|
num++;
|
|
byte b7 = this.readBuffer[num];
|
|
num++;
|
|
bool flag5 = Main.tile[num23, num22].active();
|
|
if ((b6 & 1) == 1)
|
|
{
|
|
Main.tile[num23, num22].active(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].active(false);
|
|
}
|
|
byte arg_1BFD_0 = (byte)(b6 & 2);
|
|
if ((b6 & 4) == 4)
|
|
{
|
|
Main.tile[num23, num22].wall = 1;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].wall = 0;
|
|
}
|
|
if ((b6 & 8) == 8)
|
|
{
|
|
Main.tile[num23, num22].liquid = 1;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].liquid = 0;
|
|
}
|
|
if ((b6 & 16) == 16)
|
|
{
|
|
Main.tile[num23, num22].wire(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].wire(false);
|
|
}
|
|
if ((b6 & 32) == 32)
|
|
{
|
|
Main.tile[num23, num22].halfBrick(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].halfBrick(false);
|
|
}
|
|
if ((b6 & 64) == 64)
|
|
{
|
|
Main.tile[num23, num22].actuator(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].actuator(false);
|
|
}
|
|
if ((b6 & 128) == 128)
|
|
{
|
|
Main.tile[num23, num22].inActive(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].inActive(false);
|
|
}
|
|
if ((b7 & 1) == 1)
|
|
{
|
|
Main.tile[num23, num22].wire2(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].wire2(false);
|
|
}
|
|
if ((b7 & 2) == 2)
|
|
{
|
|
Main.tile[num23, num22].wire3(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].wire3(false);
|
|
}
|
|
if ((b7 & 4) == 4)
|
|
{
|
|
Main.tile[num23, num22].color(this.readBuffer[num]);
|
|
num++;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].color(0);
|
|
}
|
|
if ((b7 & 8) == 8)
|
|
{
|
|
Main.tile[num23, num22].wallColor(this.readBuffer[num]);
|
|
num++;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num23, num22].wallColor(0);
|
|
}
|
|
if (Main.tile[num23, num22].active())
|
|
{
|
|
int type2 = (int)Main.tile[num23, num22].type;
|
|
Main.tile[num23, num22].type = this.readBuffer[num];
|
|
num++;
|
|
if (Main.tileFrameImportant[(int)Main.tile[num23, num22].type])
|
|
{
|
|
Main.tile[num23, num22].frameX = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
Main.tile[num23, num22].frameY = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
}
|
|
else
|
|
{
|
|
if (!flag5 || (int)Main.tile[num23, num22].type != type2)
|
|
{
|
|
Main.tile[num23, num22].frameX = -1;
|
|
Main.tile[num23, num22].frameY = -1;
|
|
}
|
|
}
|
|
byte b8 = 0;
|
|
if ((b7 & 16) == 16)
|
|
{
|
|
b8 += 1;
|
|
}
|
|
if ((b7 & 32) == 32)
|
|
{
|
|
b8 += 2;
|
|
}
|
|
Main.tile[num23, num22].slope(b8);
|
|
}
|
|
if (Main.tile[num23, num22].wall > 0)
|
|
{
|
|
Main.tile[num23, num22].wall = this.readBuffer[num];
|
|
num++;
|
|
}
|
|
if (Main.tile[num23, num22].liquid > 0)
|
|
{
|
|
Main.tile[num23, num22].liquid = this.readBuffer[num];
|
|
num++;
|
|
byte liquidType = this.readBuffer[num];
|
|
num++;
|
|
Main.tile[num23, num22].liquidType((int)liquidType);
|
|
}
|
|
short num24 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int num25 = num23;
|
|
while (num24 > 0)
|
|
{
|
|
num25++;
|
|
num24 -= 1;
|
|
if (Main.tile[num25, num22] == null)
|
|
{
|
|
Main.tile[num25, num22] = new Tile();
|
|
}
|
|
Main.tile[num25, num22].active(Main.tile[num23, num22].active());
|
|
Main.tile[num25, num22].type = Main.tile[num23, num22].type;
|
|
Main.tile[num25, num22].wall = Main.tile[num23, num22].wall;
|
|
Main.tile[num25, num22].wire(Main.tile[num23, num22].wire());
|
|
if (Main.tileFrameImportant[(int)Main.tile[num25, num22].type])
|
|
{
|
|
Main.tile[num25, num22].frameX = Main.tile[num23, num22].frameX;
|
|
Main.tile[num25, num22].frameY = Main.tile[num23, num22].frameY;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num25, num22].frameX = -1;
|
|
Main.tile[num25, num22].frameY = -1;
|
|
}
|
|
Main.tile[num25, num22].liquid = Main.tile[num23, num22].liquid;
|
|
Main.tile[num25, num22].liquidType((int)Main.tile[num23, num22].liquidType());
|
|
Main.tile[num25, num22].halfBrick(Main.tile[num23, num22].halfBrick());
|
|
Main.tile[num25, num22].slope(Main.tile[num23, num22].slope());
|
|
Main.tile[num25, num22].actuator(Main.tile[num23, num22].actuator());
|
|
Main.tile[num25, num22].inActive(Main.tile[num23, num22].inActive());
|
|
Main.tile[num25, num22].wire2(Main.tile[num23, num22].wire2());
|
|
Main.tile[num25, num22].wire3(Main.tile[num23, num22].wire3());
|
|
Main.tile[num25, num22].color(Main.tile[num23, num22].color());
|
|
Main.tile[num25, num22].wallColor(Main.tile[num23, num22].wallColor());
|
|
}
|
|
num23 = num25;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData((int)b, -1, this.whoAmI, "", (int)num20, (float)num21, (float)num22, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 11)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
int startX = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 4;
|
|
int startY = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 4;
|
|
int endX = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 4;
|
|
int endY = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 4;
|
|
WorldGen.SectionTileFrame(startX, startY, endX, endY);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 12)
|
|
{
|
|
int num26 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num26 = this.whoAmI;
|
|
}
|
|
num++;
|
|
Main.player[num26].SpawnX = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.player[num26].SpawnY = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
Main.player[num26].Spawn();
|
|
if (Main.netMode == 2 && Netplay.serverSock[this.whoAmI].state >= 3)
|
|
{
|
|
if (Netplay.serverSock[this.whoAmI].state == 3)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].state = 10;
|
|
NetMessage.greetPlayer(this.whoAmI);
|
|
NetMessage.buffer[this.whoAmI].broadcast = true;
|
|
NetMessage.syncPlayers();
|
|
NetMessage.SendData(12, -1, this.whoAmI, "", this.whoAmI, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
NetMessage.SendData(12, -1, this.whoAmI, "", this.whoAmI, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 13)
|
|
{
|
|
int num27 = (int)this.readBuffer[num];
|
|
if (num27 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
if (Main.netMode == 1)
|
|
{
|
|
bool arg_24C7_0 = Main.player[num27].active;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
num27 = this.whoAmI;
|
|
}
|
|
num++;
|
|
int num28 = (int)this.readBuffer[num];
|
|
num++;
|
|
int selectedItem = (int)this.readBuffer[num];
|
|
num++;
|
|
float x = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float num29 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float x2 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
byte b9 = this.readBuffer[num];
|
|
num++;
|
|
Main.player[num27].selectedItem = selectedItem;
|
|
Main.player[num27].position.X = x;
|
|
Main.player[num27].position.Y = num29;
|
|
Main.player[num27].velocity.X = x2;
|
|
Main.player[num27].velocity.Y = y;
|
|
Main.player[num27].oldVelocity = Main.player[num27].velocity;
|
|
Main.player[num27].fallStart = (int)(num29 / 16f);
|
|
Main.player[num27].controlUp = false;
|
|
Main.player[num27].controlDown = false;
|
|
Main.player[num27].controlLeft = false;
|
|
Main.player[num27].controlRight = false;
|
|
Main.player[num27].controlJump = false;
|
|
Main.player[num27].controlUseItem = false;
|
|
Main.player[num27].direction = -1;
|
|
if ((num28 & 1) == 1)
|
|
{
|
|
Main.player[num27].controlUp = true;
|
|
}
|
|
if ((num28 & 2) == 2)
|
|
{
|
|
Main.player[num27].controlDown = true;
|
|
}
|
|
if ((num28 & 4) == 4)
|
|
{
|
|
Main.player[num27].controlLeft = true;
|
|
}
|
|
if ((num28 & 8) == 8)
|
|
{
|
|
Main.player[num27].controlRight = true;
|
|
}
|
|
if ((num28 & 16) == 16)
|
|
{
|
|
Main.player[num27].controlJump = true;
|
|
}
|
|
if ((num28 & 32) == 32)
|
|
{
|
|
Main.player[num27].controlUseItem = true;
|
|
}
|
|
if ((num28 & 64) == 64)
|
|
{
|
|
Main.player[num27].direction = 1;
|
|
}
|
|
if ((b9 & 1) == 1)
|
|
{
|
|
Main.player[num27].pulley = true;
|
|
if ((b9 & 2) == 2)
|
|
{
|
|
Main.player[num27].pulleyDir = 2;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num27].pulleyDir = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.player[num27].pulley = false;
|
|
}
|
|
if (Main.netMode == 2 && Netplay.serverSock[this.whoAmI].state == 10)
|
|
{
|
|
NetMessage.SendData(13, -1, this.whoAmI, "", num27, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 14)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
int num30 = (int)this.readBuffer[num];
|
|
num++;
|
|
int num31 = (int)this.readBuffer[num];
|
|
if (num31 == 1)
|
|
{
|
|
if (!Main.player[num30].active)
|
|
{
|
|
Main.player[num30] = new Player();
|
|
}
|
|
Main.player[num30].active = true;
|
|
return;
|
|
}
|
|
Main.player[num30].active = false;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 15)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 16)
|
|
{
|
|
int num32 = (int)this.readBuffer[num];
|
|
num++;
|
|
if (num32 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
int statLife = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int num33 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
if (Main.netMode == 2)
|
|
{
|
|
num32 = this.whoAmI;
|
|
}
|
|
Main.player[num32].statLife = statLife;
|
|
if (num33 < 100)
|
|
{
|
|
num33 = 100;
|
|
}
|
|
Main.player[num32].statLifeMax = num33;
|
|
if (Main.player[num32].statLife <= 0)
|
|
{
|
|
Main.player[num32].dead = true;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(16, -1, this.whoAmI, "", num32, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 17)
|
|
{
|
|
byte b10 = this.readBuffer[num];
|
|
num++;
|
|
int num34 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num35 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
byte b11 = this.readBuffer[num];
|
|
num++;
|
|
int num36 = (int)this.readBuffer[num];
|
|
bool flag6 = false;
|
|
if (b11 == 1)
|
|
{
|
|
flag6 = true;
|
|
}
|
|
if (Main.tile[num34, num35] == null)
|
|
{
|
|
Main.tile[num34, num35] = new Tile();
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (!flag6)
|
|
{
|
|
if (b10 == 0 || b10 == 2 || b10 == 4)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].spamDelBlock += 1f;
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 1 || b10 == 3)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].spamAddBlock += 1f;
|
|
}
|
|
}
|
|
}
|
|
if (!Netplay.serverSock[this.whoAmI].tileSection[Netplay.GetSectionX(num34), Netplay.GetSectionY(num35)])
|
|
{
|
|
flag6 = true;
|
|
}
|
|
}
|
|
if (b10 == 0)
|
|
{
|
|
WorldGen.KillTile(num34, num35, flag6, false, false);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 1)
|
|
{
|
|
WorldGen.PlaceTile(num34, num35, (int)b11, false, true, -1, num36);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 2)
|
|
{
|
|
WorldGen.KillWall(num34, num35, flag6);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 3)
|
|
{
|
|
WorldGen.PlaceWall(num34, num35, (int)b11, false);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 4)
|
|
{
|
|
WorldGen.KillTile(num34, num35, flag6, false, true);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 5)
|
|
{
|
|
WorldGen.PlaceWire(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 6)
|
|
{
|
|
WorldGen.KillWire(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 7)
|
|
{
|
|
WorldGen.PoundTile(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 8)
|
|
{
|
|
WorldGen.PlaceActuator(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 9)
|
|
{
|
|
WorldGen.KillActuator(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 10)
|
|
{
|
|
WorldGen.PlaceWire2(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 11)
|
|
{
|
|
WorldGen.KillWire2(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 12)
|
|
{
|
|
WorldGen.PlaceWire3(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 13)
|
|
{
|
|
WorldGen.KillWire3(num34, num35);
|
|
}
|
|
else
|
|
{
|
|
if (b10 == 14)
|
|
{
|
|
WorldGen.SlopeTile(num34, num35, (int)b11);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(17, -1, this.whoAmI, "", (int)b10, (float)num34, (float)num35, (float)b11, num36);
|
|
if (b10 == 1 && b11 == 53)
|
|
{
|
|
NetMessage.SendTileSquare(-1, num34, num35, 1);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 18)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
byte b12 = this.readBuffer[num];
|
|
num++;
|
|
int num37 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
short sunModY = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
short moonModY = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
if (b12 == 1)
|
|
{
|
|
Main.dayTime = true;
|
|
}
|
|
else
|
|
{
|
|
Main.dayTime = false;
|
|
}
|
|
Main.time = (double)num37;
|
|
Main.sunModY = sunModY;
|
|
Main.moonModY = moonModY;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(18, -1, this.whoAmI, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 19)
|
|
{
|
|
byte b13 = this.readBuffer[num];
|
|
num++;
|
|
int num38 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num39 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num40 = (int)this.readBuffer[num];
|
|
int direction = 0;
|
|
if (num40 == 0)
|
|
{
|
|
direction = -1;
|
|
}
|
|
if (b13 == 0)
|
|
{
|
|
WorldGen.OpenDoor(num38, num39, direction);
|
|
}
|
|
else
|
|
{
|
|
if (b13 == 1)
|
|
{
|
|
WorldGen.CloseDoor(num38, num39, true);
|
|
}
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(19, -1, this.whoAmI, "", (int)b13, (float)num38, (float)num39, (float)num40, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 20)
|
|
{
|
|
short num41 = BitConverter.ToInt16(this.readBuffer, start + 1);
|
|
int num42 = BitConverter.ToInt32(this.readBuffer, start + 3);
|
|
int num43 = BitConverter.ToInt32(this.readBuffer, start + 7);
|
|
num = start + 11;
|
|
for (int num44 = num42; num44 < num42 + (int)num41; num44++)
|
|
{
|
|
for (int num45 = num43; num45 < num43 + (int)num41; num45++)
|
|
{
|
|
if (Main.tile[num44, num45] == null)
|
|
{
|
|
Main.tile[num44, num45] = new Tile();
|
|
}
|
|
byte b14 = this.readBuffer[num];
|
|
num++;
|
|
byte b15 = this.readBuffer[num];
|
|
num++;
|
|
bool flag7 = Main.tile[num44, num45].active();
|
|
if ((b14 & 1) == 1)
|
|
{
|
|
Main.tile[num44, num45].active(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].active(false);
|
|
}
|
|
if ((b14 & 4) == 4)
|
|
{
|
|
Main.tile[num44, num45].wall = 1;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].wall = 0;
|
|
}
|
|
bool flag8 = false;
|
|
if ((b14 & 8) == 8)
|
|
{
|
|
flag8 = true;
|
|
}
|
|
if (Main.netMode != 2)
|
|
{
|
|
if (flag8)
|
|
{
|
|
Main.tile[num44, num45].liquid = 1;
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].liquid = 0;
|
|
}
|
|
}
|
|
if ((b14 & 16) == 16)
|
|
{
|
|
Main.tile[num44, num45].wire(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].wire(false);
|
|
}
|
|
if ((b14 & 32) == 32)
|
|
{
|
|
Main.tile[num44, num45].halfBrick(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].halfBrick(false);
|
|
}
|
|
if ((b14 & 64) == 64)
|
|
{
|
|
Main.tile[num44, num45].actuator(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].actuator(false);
|
|
}
|
|
if ((b14 & 128) == 128)
|
|
{
|
|
Main.tile[num44, num45].inActive(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].inActive(false);
|
|
}
|
|
if ((b15 & 1) == 1)
|
|
{
|
|
Main.tile[num44, num45].wire2(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].wire2(false);
|
|
}
|
|
if ((b15 & 2) == 2)
|
|
{
|
|
Main.tile[num44, num45].wire3(true);
|
|
}
|
|
else
|
|
{
|
|
Main.tile[num44, num45].wire3(false);
|
|
}
|
|
if ((b15 & 4) == 4)
|
|
{
|
|
Main.tile[num44, num45].color(this.readBuffer[num]);
|
|
num++;
|
|
}
|
|
if ((b15 & 8) == 8)
|
|
{
|
|
Main.tile[num44, num45].wallColor(this.readBuffer[num]);
|
|
num++;
|
|
}
|
|
if (Main.tile[num44, num45].active())
|
|
{
|
|
int type3 = (int)Main.tile[num44, num45].type;
|
|
Main.tile[num44, num45].type = this.readBuffer[num];
|
|
num++;
|
|
if (Main.tileFrameImportant[(int)Main.tile[num44, num45].type])
|
|
{
|
|
Main.tile[num44, num45].frameX = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
Main.tile[num44, num45].frameY = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
}
|
|
else
|
|
{
|
|
if (!flag7 || (int)Main.tile[num44, num45].type != type3)
|
|
{
|
|
Main.tile[num44, num45].frameX = -1;
|
|
Main.tile[num44, num45].frameY = -1;
|
|
}
|
|
}
|
|
byte b16 = 0;
|
|
if ((b15 & 16) == 16)
|
|
{
|
|
b16 += 1;
|
|
}
|
|
if ((b15 & 32) == 32)
|
|
{
|
|
b16 += 2;
|
|
}
|
|
Main.tile[num44, num45].slope(b16);
|
|
}
|
|
if (Main.tile[num44, num45].wall > 0)
|
|
{
|
|
Main.tile[num44, num45].wall = this.readBuffer[num];
|
|
num++;
|
|
}
|
|
if (flag8)
|
|
{
|
|
Main.tile[num44, num45].liquid = this.readBuffer[num];
|
|
num++;
|
|
byte liquidType2 = this.readBuffer[num];
|
|
num++;
|
|
Main.tile[num44, num45].liquidType((int)liquidType2);
|
|
}
|
|
}
|
|
}
|
|
WorldGen.RangeFrame(num42, num43, num42 + (int)num41, num43 + (int)num41);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData((int)b, -1, this.whoAmI, "", (int)num41, (float)num42, (float)num43, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 21)
|
|
{
|
|
short num46 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
float num47 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float num48 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float x3 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y2 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
short stack2 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte pre = this.readBuffer[num];
|
|
num++;
|
|
byte b17 = this.readBuffer[num];
|
|
num++;
|
|
short num49 = BitConverter.ToInt16(this.readBuffer, num);
|
|
if (Main.netMode == 1)
|
|
{
|
|
if (num49 == 0)
|
|
{
|
|
Main.item[(int)num46].active = false;
|
|
return;
|
|
}
|
|
Main.item[(int)num46].netDefaults((int)num49);
|
|
Main.item[(int)num46].Prefix((int)pre);
|
|
Main.item[(int)num46].stack = (int)stack2;
|
|
Main.item[(int)num46].position.X = num47;
|
|
Main.item[(int)num46].position.Y = num48;
|
|
Main.item[(int)num46].velocity.X = x3;
|
|
Main.item[(int)num46].velocity.Y = y2;
|
|
Main.item[(int)num46].active = true;
|
|
Main.item[(int)num46].wet = Collision.WetCollision(Main.item[(int)num46].position, Main.item[(int)num46].width, Main.item[(int)num46].height);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (num49 == 0)
|
|
{
|
|
if (num46 < 400)
|
|
{
|
|
Main.item[(int)num46].active = false;
|
|
NetMessage.SendData(21, -1, -1, "", (int)num46, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bool flag9 = false;
|
|
if (num46 == 400)
|
|
{
|
|
flag9 = true;
|
|
}
|
|
if (flag9)
|
|
{
|
|
Item item = new Item();
|
|
item.netDefaults((int)num49);
|
|
num46 = (short)Item.NewItem((int)num47, (int)num48, item.width, item.height, item.type, (int)stack2, true, 0, false);
|
|
}
|
|
Main.item[(int)num46].netDefaults((int)num49);
|
|
Main.item[(int)num46].Prefix((int)pre);
|
|
Main.item[(int)num46].stack = (int)stack2;
|
|
Main.item[(int)num46].position.X = num47;
|
|
Main.item[(int)num46].position.Y = num48;
|
|
Main.item[(int)num46].velocity.X = x3;
|
|
Main.item[(int)num46].velocity.Y = y2;
|
|
Main.item[(int)num46].active = true;
|
|
Main.item[(int)num46].owner = Main.myPlayer;
|
|
if (flag9)
|
|
{
|
|
NetMessage.SendData(21, -1, -1, "", (int)num46, 0f, 0f, 0f, 0);
|
|
if (b17 == 0)
|
|
{
|
|
Main.item[(int)num46].ownIgnore = this.whoAmI;
|
|
Main.item[(int)num46].ownTime = 100;
|
|
}
|
|
Main.item[(int)num46].FindOwner((int)num46);
|
|
return;
|
|
}
|
|
NetMessage.SendData(21, -1, this.whoAmI, "", (int)num46, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 22)
|
|
{
|
|
short num50 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b18 = this.readBuffer[num];
|
|
if (Main.netMode == 2 && Main.item[(int)num50].owner != this.whoAmI)
|
|
{
|
|
return;
|
|
}
|
|
Main.item[(int)num50].owner = (int)b18;
|
|
if ((int)b18 == Main.myPlayer)
|
|
{
|
|
Main.item[(int)num50].keepTime = 15;
|
|
}
|
|
else
|
|
{
|
|
Main.item[(int)num50].keepTime = 0;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
Main.item[(int)num50].owner = 255;
|
|
Main.item[(int)num50].keepTime = 15;
|
|
NetMessage.SendData(22, -1, -1, "", (int)num50, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 23 && Main.netMode == 1)
|
|
{
|
|
short num51 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
float x4 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y3 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float x5 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y4 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
int target = (int)this.readBuffer[num];
|
|
num++;
|
|
byte b19 = this.readBuffer[num];
|
|
num++;
|
|
int direction2 = -1;
|
|
int directionY = -1;
|
|
if ((b19 & 1) == 1)
|
|
{
|
|
direction2 = 1;
|
|
}
|
|
if ((b19 & 2) == 2)
|
|
{
|
|
directionY = 1;
|
|
}
|
|
bool[] array = new bool[4];
|
|
if ((b19 & 4) == 4)
|
|
{
|
|
array[3] = true;
|
|
}
|
|
if ((b19 & 8) == 8)
|
|
{
|
|
array[2] = true;
|
|
}
|
|
if ((b19 & 16) == 16)
|
|
{
|
|
array[1] = true;
|
|
}
|
|
if ((b19 & 32) == 32)
|
|
{
|
|
array[0] = true;
|
|
}
|
|
int spriteDirection = -1;
|
|
if ((b19 & 64) == 64)
|
|
{
|
|
spriteDirection = 1;
|
|
}
|
|
int num52 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
float[] array2 = new float[NPC.maxAI];
|
|
for (int num53 = 0; num53 < NPC.maxAI; num53++)
|
|
{
|
|
if (array[num53])
|
|
{
|
|
array2[num53] = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
}
|
|
else
|
|
{
|
|
array2[num53] = 0f;
|
|
}
|
|
}
|
|
int num54 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
int num55 = -1;
|
|
if (!Main.npc[(int)num51].active || Main.npc[(int)num51].netID != num54)
|
|
{
|
|
if (Main.npc[(int)num51].active)
|
|
{
|
|
num55 = Main.npc[(int)num51].type;
|
|
}
|
|
Main.npc[(int)num51].active = true;
|
|
Main.npc[(int)num51].netDefaults(num54);
|
|
}
|
|
Main.npc[(int)num51].position.X = x4;
|
|
Main.npc[(int)num51].position.Y = y3;
|
|
Main.npc[(int)num51].velocity.X = x5;
|
|
Main.npc[(int)num51].velocity.Y = y4;
|
|
Main.npc[(int)num51].target = target;
|
|
Main.npc[(int)num51].direction = direction2;
|
|
Main.npc[(int)num51].directionY = directionY;
|
|
Main.npc[(int)num51].spriteDirection = spriteDirection;
|
|
Main.npc[(int)num51].life = num52;
|
|
if (num52 <= 0)
|
|
{
|
|
Main.npc[(int)num51].active = false;
|
|
}
|
|
for (int num56 = 0; num56 < NPC.maxAI; num56++)
|
|
{
|
|
Main.npc[(int)num51].ai[num56] = array2[num56];
|
|
}
|
|
if (num55 > -1 && num55 != Main.npc[(int)num51].type)
|
|
{
|
|
Main.npc[(int)num51].xForm(num55, Main.npc[(int)num51].type);
|
|
}
|
|
if (num54 == 262)
|
|
{
|
|
NPC.plantBoss = (int)num51;
|
|
}
|
|
if (num54 == 245)
|
|
{
|
|
NPC.golemBoss = (int)num51;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 24)
|
|
{
|
|
short num57 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b20 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b20 = (byte)this.whoAmI;
|
|
}
|
|
Main.npc[(int)num57].StrikeNPC(Main.player[(int)b20].inventory[Main.player[(int)b20].selectedItem].damage, Main.player[(int)b20].inventory[Main.player[(int)b20].selectedItem].knockBack, Main.player[(int)b20].direction, false, false);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(24, -1, this.whoAmI, "", (int)num57, (float)b20, 0f, 0f, 0);
|
|
NetMessage.SendData(23, -1, -1, "", (int)num57, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 25)
|
|
{
|
|
int num58 = (int)this.readBuffer[start + 1];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num58 = this.whoAmI;
|
|
}
|
|
byte b21 = this.readBuffer[start + 2];
|
|
byte b22 = this.readBuffer[start + 3];
|
|
byte b23 = this.readBuffer[start + 4];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b21 = 255;
|
|
b22 = 255;
|
|
b23 = 255;
|
|
}
|
|
string string3 = Encoding.UTF8.GetString(this.readBuffer, start + 5, length - 5);
|
|
if (Main.netMode == 1)
|
|
{
|
|
string newText = string3;
|
|
if (num58 < 255)
|
|
{
|
|
newText = "<" + Main.player[num58].name + "> " + string3;
|
|
Main.player[num58].chatText = string3;
|
|
Main.player[num58].chatShowTime = Main.chatLength / 2;
|
|
}
|
|
Main.NewText(newText, b21, b22, b23, false);
|
|
return;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
string text2 = string3.ToLower();
|
|
if (text2 == Lang.mp[6] || text2 == Lang.mp[21])
|
|
{
|
|
string text3 = "";
|
|
for (int num59 = 0; num59 < 255; num59++)
|
|
{
|
|
if (Main.player[num59].active)
|
|
{
|
|
if (text3 == "")
|
|
{
|
|
text3 += Main.player[num59].name;
|
|
}
|
|
else
|
|
{
|
|
text3 = text3 + ", " + Main.player[num59].name;
|
|
}
|
|
}
|
|
}
|
|
NetMessage.SendData(25, this.whoAmI, -1, Lang.mp[7] + " " + text3 + ".", 255, 255f, 240f, 20f, 0);
|
|
return;
|
|
}
|
|
if (text2.Length >= 4 && text2.Substring(0, 4) == "/me ")
|
|
{
|
|
NetMessage.SendData(25, -1, -1, "*" + Main.player[this.whoAmI].name + " " + string3.Substring(4), 255, 200f, 100f, 0f, 0);
|
|
return;
|
|
}
|
|
if (text2 == Lang.mp[8])
|
|
{
|
|
NetMessage.SendData(25, -1, -1, string.Concat(new object[]
|
|
{
|
|
"*",
|
|
Main.player[this.whoAmI].name,
|
|
" ",
|
|
Lang.mp[9],
|
|
" ",
|
|
Main.rand.Next(1, 101)
|
|
}), 255, 255f, 240f, 20f, 0);
|
|
return;
|
|
}
|
|
if (text2.Length >= 3 && text2.Substring(0, 3) == "/p ")
|
|
{
|
|
if (Main.player[this.whoAmI].team != 0)
|
|
{
|
|
for (int num60 = 0; num60 < 255; num60++)
|
|
{
|
|
if (Main.player[num60].team == Main.player[this.whoAmI].team)
|
|
{
|
|
NetMessage.SendData(25, num60, -1, string3.Substring(3), num58, (float)Main.teamColor[Main.player[this.whoAmI].team].R, (float)Main.teamColor[Main.player[this.whoAmI].team].G, (float)Main.teamColor[Main.player[this.whoAmI].team].B, 0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
NetMessage.SendData(25, this.whoAmI, -1, Lang.mp[10], 255, 255f, 240f, 20f, 0);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (Main.player[this.whoAmI].difficulty == 2)
|
|
{
|
|
b21 = Main.hcColor.R;
|
|
b22 = Main.hcColor.G;
|
|
b23 = Main.hcColor.B;
|
|
}
|
|
else
|
|
{
|
|
if (Main.player[this.whoAmI].difficulty == 1)
|
|
{
|
|
b21 = Main.mcColor.R;
|
|
b22 = Main.mcColor.G;
|
|
b23 = Main.mcColor.B;
|
|
}
|
|
}
|
|
NetMessage.SendData(25, -1, -1, string3, num58, (float)b21, (float)b22, (float)b23, 0);
|
|
if (Main.dedServ)
|
|
{
|
|
Console.WriteLine("<" + Main.player[this.whoAmI].name + "> " + string3);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 26)
|
|
{
|
|
byte b24 = this.readBuffer[num];
|
|
if (Main.netMode == 2 && this.whoAmI != (int)b24 && (!Main.player[(int)b24].hostile || !Main.player[this.whoAmI].hostile))
|
|
{
|
|
return;
|
|
}
|
|
num++;
|
|
int num61 = (int)(this.readBuffer[num] - 1);
|
|
num++;
|
|
short num62 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b25 = this.readBuffer[num];
|
|
num++;
|
|
bool pvp = false;
|
|
byte b26 = this.readBuffer[num];
|
|
num++;
|
|
bool crit = false;
|
|
string string4 = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
if (b25 != 0)
|
|
{
|
|
pvp = true;
|
|
}
|
|
if (b26 != 0)
|
|
{
|
|
crit = true;
|
|
}
|
|
Main.player[(int)b24].Hurt((int)num62, num61, pvp, true, string4, crit);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(26, -1, this.whoAmI, string4, (int)b24, (float)num61, (float)num62, (float)b25, (int)b26);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 27)
|
|
{
|
|
short num63 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
float x6 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y5 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float x7 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float y6 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
float knockBack = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
short damage = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b27 = this.readBuffer[num];
|
|
num++;
|
|
short num64 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
float[] array3 = new float[Projectile.maxAI];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b27 = (byte)this.whoAmI;
|
|
if (Main.projHostile[(int)num64])
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
for (int num65 = 0; num65 < Projectile.maxAI; num65++)
|
|
{
|
|
array3[num65] = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
}
|
|
int num66 = 1000;
|
|
for (int num67 = 0; num67 < 1000; num67++)
|
|
{
|
|
if (Main.projectile[num67].owner == (int)b27 && Main.projectile[num67].identity == (int)num63 && Main.projectile[num67].active)
|
|
{
|
|
num66 = num67;
|
|
break;
|
|
}
|
|
}
|
|
if (num66 == 1000)
|
|
{
|
|
for (int num68 = 0; num68 < 1000; num68++)
|
|
{
|
|
if (!Main.projectile[num68].active)
|
|
{
|
|
num66 = num68;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (!Main.projectile[num66].active || Main.projectile[num66].type != (int)num64)
|
|
{
|
|
Main.projectile[num66].SetDefaults((int)num64);
|
|
if (Main.netMode == 2)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].spamProjectile += 1f;
|
|
}
|
|
}
|
|
Main.projectile[num66].identity = (int)num63;
|
|
Main.projectile[num66].position.X = x6;
|
|
Main.projectile[num66].position.Y = y5;
|
|
Main.projectile[num66].velocity.X = x7;
|
|
Main.projectile[num66].velocity.Y = y6;
|
|
Main.projectile[num66].damage = (int)damage;
|
|
Main.projectile[num66].type = (int)num64;
|
|
Main.projectile[num66].owner = (int)b27;
|
|
Main.projectile[num66].knockBack = knockBack;
|
|
for (int num69 = 0; num69 < Projectile.maxAI; num69++)
|
|
{
|
|
Main.projectile[num66].ai[num69] = array3[num69];
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(27, -1, this.whoAmI, "", num66, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 28)
|
|
{
|
|
short num70 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
short num71 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
float num72 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
int num73 = (int)(this.readBuffer[num] - 1);
|
|
num++;
|
|
int num74 = (int)this.readBuffer[num];
|
|
if (num71 >= 0)
|
|
{
|
|
if (num74 == 1)
|
|
{
|
|
Main.npc[(int)num70].StrikeNPC((int)num71, num72, num73, true, false);
|
|
}
|
|
else
|
|
{
|
|
Main.npc[(int)num70].StrikeNPC((int)num71, num72, num73, false, false);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Main.npc[(int)num70].life = 0;
|
|
Main.npc[(int)num70].HitEffect(0, 10.0);
|
|
Main.npc[(int)num70].active = false;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Main.npc[(int)num70].life <= 0)
|
|
{
|
|
NetMessage.SendData(28, -1, this.whoAmI, "", (int)num70, (float)num71, num72, (float)num73, num74);
|
|
NetMessage.SendData(23, -1, -1, "", (int)num70, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
NetMessage.SendData(28, -1, this.whoAmI, "", (int)num70, (float)num71, num72, (float)num73, num74);
|
|
Main.npc[(int)num70].netUpdate = true;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 29)
|
|
{
|
|
short num75 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b28 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b28 = (byte)this.whoAmI;
|
|
}
|
|
for (int num76 = 0; num76 < 1000; num76++)
|
|
{
|
|
if (Main.projectile[num76].owner == (int)b28 && Main.projectile[num76].identity == (int)num75 && Main.projectile[num76].active)
|
|
{
|
|
Main.projectile[num76].Kill();
|
|
break;
|
|
}
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(29, -1, this.whoAmI, "", (int)num75, (float)b28, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 30)
|
|
{
|
|
byte b29 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b29 = (byte)this.whoAmI;
|
|
}
|
|
num++;
|
|
byte b30 = this.readBuffer[num];
|
|
if (b30 == 1)
|
|
{
|
|
Main.player[(int)b29].hostile = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[(int)b29].hostile = false;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(30, -1, this.whoAmI, "", (int)b29, 0f, 0f, 0f, 0);
|
|
string str = " " + Lang.mp[11];
|
|
if (b30 == 0)
|
|
{
|
|
str = " " + Lang.mp[12];
|
|
}
|
|
NetMessage.SendData(25, -1, -1, Main.player[(int)b29].name + str, 255, (float)Main.teamColor[Main.player[(int)b29].team].R, (float)Main.teamColor[Main.player[(int)b29].team].G, (float)Main.teamColor[Main.player[(int)b29].team].B, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 31)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
int x8 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int y7 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num77 = Chest.FindChest(x8, y7);
|
|
if (num77 > -1 && Chest.UsingChest(num77) == -1)
|
|
{
|
|
for (int num78 = 0; num78 < Chest.maxItems; num78++)
|
|
{
|
|
NetMessage.SendData(32, this.whoAmI, -1, "", num77, (float)num78, 0f, 0f, 0);
|
|
}
|
|
NetMessage.SendData(33, this.whoAmI, -1, "", num77, 0f, 0f, 0f, 0);
|
|
Main.player[this.whoAmI].chest = num77;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 32)
|
|
{
|
|
int num79 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int num80 = (int)this.readBuffer[num];
|
|
num++;
|
|
int stack3 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int pre2 = (int)this.readBuffer[num];
|
|
num++;
|
|
int type4 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
if (Main.chest[num79] == null)
|
|
{
|
|
Main.chest[num79] = new Chest();
|
|
}
|
|
if (Main.chest[num79].item[num80] == null)
|
|
{
|
|
Main.chest[num79].item[num80] = new Item();
|
|
}
|
|
Main.chest[num79].item[num80].netDefaults(type4);
|
|
Main.chest[num79].item[num80].Prefix(pre2);
|
|
Main.chest[num79].item[num80].stack = stack3;
|
|
return;
|
|
}
|
|
if (b == 33)
|
|
{
|
|
int num81 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int chestX = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int chestY = BitConverter.ToInt32(this.readBuffer, num);
|
|
if (Main.netMode == 1)
|
|
{
|
|
if (Main.player[Main.myPlayer].chest == -1)
|
|
{
|
|
Main.playerInventory = true;
|
|
Main.PlaySound(10, -1, -1, 1);
|
|
}
|
|
else
|
|
{
|
|
if (Main.player[Main.myPlayer].chest != num81 && num81 != -1)
|
|
{
|
|
Main.playerInventory = true;
|
|
Main.PlaySound(12, -1, -1, 1);
|
|
}
|
|
else
|
|
{
|
|
if (Main.player[Main.myPlayer].chest != -1 && num81 == -1)
|
|
{
|
|
Main.PlaySound(11, -1, -1, 1);
|
|
}
|
|
}
|
|
}
|
|
Main.player[Main.myPlayer].chest = num81;
|
|
Main.player[Main.myPlayer].chestX = chestX;
|
|
Main.player[Main.myPlayer].chestY = chestY;
|
|
return;
|
|
}
|
|
Main.player[this.whoAmI].chest = num81;
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (b == 34)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
int num82 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num83 = BitConverter.ToInt32(this.readBuffer, num);
|
|
if (Main.tile[num82, num83].type == 21)
|
|
{
|
|
WorldGen.KillTile(num82, num83, false, false, false);
|
|
if (!Main.tile[num82, num83].active())
|
|
{
|
|
NetMessage.SendData(17, -1, -1, "", 0, (float)num82, (float)num83, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 35)
|
|
{
|
|
int num84 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num84 = this.whoAmI;
|
|
}
|
|
num++;
|
|
int num85 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
if (num84 != Main.myPlayer || Main.ServerSideCharacter)
|
|
{
|
|
Main.player[num84].HealEffect(num85, true);
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(35, -1, this.whoAmI, "", num84, (float)num85, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 36)
|
|
{
|
|
int num86 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num86 = this.whoAmI;
|
|
}
|
|
num++;
|
|
byte b31 = this.readBuffer[num];
|
|
num++;
|
|
if ((b31 & 1) == 1)
|
|
{
|
|
Main.player[num86].zoneEvil = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneEvil = false;
|
|
}
|
|
if ((b31 & 2) == 2)
|
|
{
|
|
Main.player[num86].zoneMeteor = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneMeteor = false;
|
|
}
|
|
if ((b31 & 4) == 4)
|
|
{
|
|
Main.player[num86].zoneDungeon = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneDungeon = false;
|
|
}
|
|
if ((b31 & 8) == 8)
|
|
{
|
|
Main.player[num86].zoneJungle = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneJungle = false;
|
|
}
|
|
if ((b31 & 16) == 16)
|
|
{
|
|
Main.player[num86].zoneHoly = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneHoly = false;
|
|
}
|
|
if ((b31 & 32) == 32)
|
|
{
|
|
Main.player[num86].zoneSnow = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneSnow = false;
|
|
}
|
|
if ((b31 & 64) == 64)
|
|
{
|
|
Main.player[num86].zoneBlood = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneBlood = false;
|
|
}
|
|
if ((b31 & 128) == 128)
|
|
{
|
|
Main.player[num86].zoneCandle = true;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num86].zoneCandle = false;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(36, -1, this.whoAmI, "", num86, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 37)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
if (Main.autoPass)
|
|
{
|
|
NetMessage.SendData(38, -1, -1, Netplay.password, 0, 0f, 0f, 0f, 0);
|
|
Main.autoPass = false;
|
|
return;
|
|
}
|
|
Netplay.password = "";
|
|
Main.menuMode = 31;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 38)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
string string5 = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
if (string5 == Netplay.password)
|
|
{
|
|
Netplay.serverSock[this.whoAmI].state = 1;
|
|
NetMessage.SendData(3, this.whoAmI, -1, "", 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
NetMessage.SendData(2, this.whoAmI, -1, Lang.mp[1], 0, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 39 && Main.netMode == 1)
|
|
{
|
|
short num87 = BitConverter.ToInt16(this.readBuffer, num);
|
|
Main.item[(int)num87].owner = 255;
|
|
NetMessage.SendData(22, -1, -1, "", (int)num87, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
if (b == 40)
|
|
{
|
|
byte b32 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b32 = (byte)this.whoAmI;
|
|
}
|
|
num++;
|
|
int talkNPC = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
Main.player[(int)b32].talkNPC = talkNPC;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(40, -1, this.whoAmI, "", (int)b32, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 41)
|
|
{
|
|
byte b33 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b33 = (byte)this.whoAmI;
|
|
}
|
|
num++;
|
|
float itemRotation = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
int itemAnimation = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
Main.player[(int)b33].itemRotation = itemRotation;
|
|
Main.player[(int)b33].itemAnimation = itemAnimation;
|
|
Main.player[(int)b33].channel = Main.player[(int)b33].inventory[Main.player[(int)b33].selectedItem].channel;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(41, -1, this.whoAmI, "", (int)b33, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 42)
|
|
{
|
|
int num88 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num88 = this.whoAmI;
|
|
}
|
|
num++;
|
|
int statMana = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int statManaMax = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
if (Main.netMode == 2)
|
|
{
|
|
num88 = this.whoAmI;
|
|
}
|
|
else
|
|
{
|
|
if (Main.myPlayer == num88 && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
Main.player[num88].statMana = statMana;
|
|
Main.player[num88].statManaMax = statManaMax;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(42, -1, this.whoAmI, "", num88, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 43)
|
|
{
|
|
int num89 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num89 = this.whoAmI;
|
|
}
|
|
num++;
|
|
int num90 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
if (num89 != Main.myPlayer)
|
|
{
|
|
Main.player[num89].ManaEffect(num90);
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(43, -1, this.whoAmI, "", num89, (float)num90, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 44)
|
|
{
|
|
byte b34 = this.readBuffer[num];
|
|
if ((int)b34 == Main.myPlayer)
|
|
{
|
|
return;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
b34 = (byte)this.whoAmI;
|
|
}
|
|
num++;
|
|
int num91 = (int)(this.readBuffer[num] - 1);
|
|
num++;
|
|
short num92 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b35 = this.readBuffer[num];
|
|
num++;
|
|
string string6 = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
bool pvp2 = false;
|
|
if (b35 != 0)
|
|
{
|
|
pvp2 = true;
|
|
}
|
|
Main.player[(int)b34].KillMe((double)num92, num91, pvp2, string6);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(44, -1, this.whoAmI, string6, (int)b34, (float)num91, (float)num92, (float)b35, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 45)
|
|
{
|
|
int num93 = (int)this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
num93 = this.whoAmI;
|
|
}
|
|
num++;
|
|
int num94 = (int)this.readBuffer[num];
|
|
num++;
|
|
int team = Main.player[num93].team;
|
|
Main.player[num93].team = num94;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(45, -1, this.whoAmI, "", num93, 0f, 0f, 0f, 0);
|
|
string str2 = "";
|
|
if (num94 == 0)
|
|
{
|
|
str2 = " " + Lang.mp[13];
|
|
}
|
|
else
|
|
{
|
|
if (num94 == 1)
|
|
{
|
|
str2 = " " + Lang.mp[14];
|
|
}
|
|
else
|
|
{
|
|
if (num94 == 2)
|
|
{
|
|
str2 = " " + Lang.mp[15];
|
|
}
|
|
else
|
|
{
|
|
if (num94 == 3)
|
|
{
|
|
str2 = " " + Lang.mp[16];
|
|
}
|
|
else
|
|
{
|
|
if (num94 == 4)
|
|
{
|
|
str2 = " " + Lang.mp[17];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (int num95 = 0; num95 < 255; num95++)
|
|
{
|
|
if (num95 == this.whoAmI || (team > 0 && Main.player[num95].team == team) || (num94 > 0 && Main.player[num95].team == num94))
|
|
{
|
|
NetMessage.SendData(25, num95, -1, Main.player[num93].name + str2, 255, (float)Main.teamColor[num94].R, (float)Main.teamColor[num94].G, (float)Main.teamColor[num94].B, 0);
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 46)
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
int i2 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int j2 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num96 = Sign.ReadSign(i2, j2);
|
|
if (num96 >= 0)
|
|
{
|
|
NetMessage.SendData(47, this.whoAmI, -1, "", num96, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 47)
|
|
{
|
|
int num97 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
int x9 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int y8 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
string string7 = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
Main.sign[num97] = new Sign();
|
|
Main.sign[num97].x = x9;
|
|
Main.sign[num97].y = y8;
|
|
Sign.TextSign(num97, string7);
|
|
if (Main.netMode == 1 && Main.sign[num97] != null && num97 != Main.player[Main.myPlayer].sign)
|
|
{
|
|
Main.playerInventory = false;
|
|
Main.player[Main.myPlayer].talkNPC = -1;
|
|
Main.editSign = false;
|
|
Main.PlaySound(10, -1, -1, 1);
|
|
Main.player[Main.myPlayer].sign = num97;
|
|
Main.npcChatText = Main.sign[num97].text;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 48)
|
|
{
|
|
int num98 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num99 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
byte liquid = this.readBuffer[num];
|
|
num++;
|
|
byte liquidType3 = this.readBuffer[num];
|
|
num++;
|
|
if (Main.netMode == 2 && Netplay.spamCheck)
|
|
{
|
|
int num100 = this.whoAmI;
|
|
int num101 = (int)(Main.player[num100].position.X + (float)(Main.player[num100].width / 2));
|
|
int num102 = (int)(Main.player[num100].position.Y + (float)(Main.player[num100].height / 2));
|
|
int num103 = 10;
|
|
int num104 = num101 - num103;
|
|
int num105 = num101 + num103;
|
|
int num106 = num102 - num103;
|
|
int num107 = num102 + num103;
|
|
if (num101 < num104 || num101 > num105 || num102 < num106 || num102 > num107)
|
|
{
|
|
NetMessage.BootPlayer(this.whoAmI, "Cheating attempt detected: Liquid spam");
|
|
return;
|
|
}
|
|
}
|
|
if (Main.tile[num98, num99] == null)
|
|
{
|
|
Main.tile[num98, num99] = new Tile();
|
|
}
|
|
lock (Main.tile[num98, num99])
|
|
{
|
|
Main.tile[num98, num99].liquid = liquid;
|
|
Main.tile[num98, num99].liquidType((int)liquidType3);
|
|
if (Main.netMode == 2)
|
|
{
|
|
WorldGen.SquareTileFrame(num98, num99, true);
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
if (b == 49)
|
|
{
|
|
if (Netplay.clientSock.state == 6)
|
|
{
|
|
Netplay.clientSock.state = 10;
|
|
Main.player[Main.myPlayer].Spawn();
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 50)
|
|
{
|
|
int num108 = (int)this.readBuffer[num];
|
|
num++;
|
|
if (Main.netMode == 2)
|
|
{
|
|
num108 = this.whoAmI;
|
|
}
|
|
else
|
|
{
|
|
if (num108 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
for (int num109 = 0; num109 < 10; num109++)
|
|
{
|
|
Main.player[num108].buffType[num109] = (int)this.readBuffer[num];
|
|
if (Main.player[num108].buffType[num109] > 0)
|
|
{
|
|
Main.player[num108].buffTime[num109] = 60;
|
|
}
|
|
else
|
|
{
|
|
Main.player[num108].buffTime[num109] = 0;
|
|
}
|
|
num++;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(50, -1, this.whoAmI, "", num108, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 51)
|
|
{
|
|
byte b36 = this.readBuffer[num];
|
|
num++;
|
|
byte b37 = this.readBuffer[num];
|
|
if (b37 == 1)
|
|
{
|
|
NPC.SpawnSkeletron();
|
|
return;
|
|
}
|
|
if (b37 == 2)
|
|
{
|
|
if (Main.netMode != 2)
|
|
{
|
|
Main.PlaySound(2, (int)Main.player[(int)b36].position.X, (int)Main.player[(int)b36].position.Y, 1);
|
|
return;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(51, -1, this.whoAmI, "", (int)b36, (float)b37, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 52)
|
|
{
|
|
byte number = this.readBuffer[num];
|
|
num++;
|
|
byte b38 = this.readBuffer[num];
|
|
num++;
|
|
int num110 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num111 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
if (b38 == 1)
|
|
{
|
|
Chest.Unlock(num110, num111);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(52, -1, this.whoAmI, "", (int)number, (float)b38, (float)num110, (float)num111, 0);
|
|
NetMessage.SendTileSquare(-1, num110, num111, 2);
|
|
}
|
|
}
|
|
if (b38 == 2)
|
|
{
|
|
WorldGen.UnlockDoor(num110, num111);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(52, -1, this.whoAmI, "", (int)number, (float)b38, (float)num110, (float)num111, 0);
|
|
NetMessage.SendTileSquare(-1, num110, num111, 2);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 53)
|
|
{
|
|
short num112 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte type5 = this.readBuffer[num];
|
|
num++;
|
|
short time = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
Main.npc[(int)num112].AddBuff((int)type5, (int)time, true);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(54, -1, -1, "", (int)num112, 0f, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 54)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
short num113 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
for (int num114 = 0; num114 < 5; num114++)
|
|
{
|
|
Main.npc[(int)num113].buffType[num114] = (int)this.readBuffer[num];
|
|
num++;
|
|
Main.npc[(int)num113].buffTime[num114] = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 55)
|
|
{
|
|
byte b39 = this.readBuffer[num];
|
|
num++;
|
|
byte b40 = this.readBuffer[num];
|
|
num++;
|
|
short num115 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
if (Main.netMode == 2 && (int)b39 != this.whoAmI && !Main.pvpBuff[(int)b40])
|
|
{
|
|
return;
|
|
}
|
|
if (Main.netMode == 1 && (int)b39 == Main.myPlayer)
|
|
{
|
|
Main.player[(int)b39].AddBuff((int)b40, (int)num115, true);
|
|
return;
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(55, (int)b39, -1, "", (int)b39, (float)b40, (float)num115, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 56)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
short num116 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
string string8 = Encoding.UTF8.GetString(this.readBuffer, num, length - num + start);
|
|
Main.chrName[(int)num116] = string8;
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 57)
|
|
{
|
|
if (Main.netMode == 1)
|
|
{
|
|
WorldGen.tGood = this.readBuffer[num];
|
|
num++;
|
|
WorldGen.tEvil = this.readBuffer[num];
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 58)
|
|
{
|
|
byte b41 = this.readBuffer[num];
|
|
if (Main.netMode == 2)
|
|
{
|
|
b41 = (byte)this.whoAmI;
|
|
}
|
|
num++;
|
|
float num117 = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(58, -1, this.whoAmI, "", this.whoAmI, num117, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
Main.harpNote = num117;
|
|
int style9 = 26;
|
|
if (Main.player[(int)b41].inventory[Main.player[(int)b41].selectedItem].type == 507)
|
|
{
|
|
style9 = 35;
|
|
}
|
|
Main.PlaySound(2, (int)Main.player[(int)b41].position.X, (int)Main.player[(int)b41].position.Y, style9);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (b == 59)
|
|
{
|
|
int num118 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num119 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
WorldGen.hitSwitch(num118, num119);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(59, -1, this.whoAmI, "", num118, (float)num119, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 60)
|
|
{
|
|
short num120 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
short num121 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
short num122 = BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
byte b42 = this.readBuffer[num];
|
|
num++;
|
|
bool homeless = false;
|
|
if (b42 == 1)
|
|
{
|
|
homeless = true;
|
|
}
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.npc[(int)num120].homeless = homeless;
|
|
Main.npc[(int)num120].homeTileX = (int)num121;
|
|
Main.npc[(int)num120].homeTileY = (int)num122;
|
|
return;
|
|
}
|
|
if (b42 == 0)
|
|
{
|
|
WorldGen.kickOut((int)num120);
|
|
return;
|
|
}
|
|
WorldGen.moveRoom((int)num121, (int)num122, (int)num120);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (b == 61)
|
|
{
|
|
int plr = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num123 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (num123 == 4 || num123 == 13 || num123 == 50 || num123 == 125 || num123 == 126 || num123 == 134 || num123 == 127 || num123 == 128 || num123 == 222 || num123 == 245 || num123 == 266)
|
|
{
|
|
bool flag11 = true;
|
|
for (int num124 = 0; num124 < 200; num124++)
|
|
{
|
|
if (Main.npc[num124].active && Main.npc[num124].type == num123)
|
|
{
|
|
flag11 = false;
|
|
}
|
|
}
|
|
if (flag11)
|
|
{
|
|
NPC.SpawnOnPlayer(plr, num123);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (num123 < 0)
|
|
{
|
|
int num125 = -1;
|
|
if (num123 == -1)
|
|
{
|
|
num125 = 1;
|
|
}
|
|
if (num123 == -2)
|
|
{
|
|
num125 = 2;
|
|
}
|
|
if (num123 == -3)
|
|
{
|
|
num125 = 3;
|
|
}
|
|
if (num125 > 0 && Main.invasionType == 0)
|
|
{
|
|
Main.invasionDelay = 0;
|
|
Main.StartInvasion(num125);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 62)
|
|
{
|
|
int num126 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num127 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
if (Main.netMode == 2)
|
|
{
|
|
num126 = this.whoAmI;
|
|
}
|
|
if (num127 == 1)
|
|
{
|
|
Main.player[num126].NinjaDodge();
|
|
}
|
|
if (num127 == 2)
|
|
{
|
|
Main.player[num126].ShadowDodge();
|
|
}
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(62, -1, this.whoAmI, "", num126, (float)num127, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 63)
|
|
{
|
|
int num128 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num129 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
byte b43 = this.readBuffer[num];
|
|
WorldGen.paintTile(num128, num129, b43, false);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(63, -1, this.whoAmI, "", num128, (float)num129, (float)b43, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 64)
|
|
{
|
|
int num130 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
int num131 = BitConverter.ToInt32(this.readBuffer, num);
|
|
num += 4;
|
|
byte b44 = this.readBuffer[num];
|
|
WorldGen.paintWall(num130, num131, b44, false);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(64, -1, this.whoAmI, "", num130, (float)num131, (float)b44, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 65)
|
|
{
|
|
byte b45 = this.readBuffer[num];
|
|
num++;
|
|
short num132 = BitConverter.ToInt16(this.readBuffer, num);
|
|
if (Main.netMode == 2)
|
|
{
|
|
num132 = (short)this.whoAmI;
|
|
}
|
|
num += 2;
|
|
Vector2 newPos;
|
|
newPos.X = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
newPos.Y = BitConverter.ToSingle(this.readBuffer, num);
|
|
num += 4;
|
|
int num133 = 0;
|
|
int num134 = 0;
|
|
if ((b45 & 1) == 1)
|
|
{
|
|
num133++;
|
|
}
|
|
if ((b45 & 2) == 2)
|
|
{
|
|
num133 += 2;
|
|
}
|
|
if ((b45 & 4) == 4)
|
|
{
|
|
num134++;
|
|
}
|
|
if ((b45 & 8) == 8)
|
|
{
|
|
num134++;
|
|
}
|
|
if (num133 == 0)
|
|
{
|
|
Main.player[(int)num132].Teleport(newPos, num134);
|
|
}
|
|
else
|
|
{
|
|
if (num133 == 1)
|
|
{
|
|
Main.npc[(int)num132].Teleport(newPos, num134);
|
|
}
|
|
}
|
|
if (Main.netMode == 2 && num133 == 0)
|
|
{
|
|
NetMessage.SendData(65, -1, this.whoAmI, "", 0, (float)num132, newPos.X, newPos.Y, num134);
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 66)
|
|
{
|
|
int num135 = (int)this.readBuffer[num];
|
|
num++;
|
|
int num136 = (int)BitConverter.ToInt16(this.readBuffer, num);
|
|
num += 2;
|
|
if (num136 > 0)
|
|
{
|
|
Main.player[num135].statLife += num136;
|
|
if (Main.player[num135].statLife > Main.player[num135].statLifeMax)
|
|
{
|
|
Main.player[num135].statLife = Main.player[num135].statLifeMax;
|
|
}
|
|
Main.player[num135].HealEffect(num136, false);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(66, -1, this.whoAmI, "", num135, (float)num136, 0f, 0f, 0);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (b == 67)
|
|
{
|
|
return;
|
|
}
|
|
if (b == 68)
|
|
{
|
|
Encoding.UTF8.GetString(this.readBuffer, start + 1, length - 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|