public override void HandlePacket(BinaryReader reader, int whoAmI) { int i = reader.ReadByte(); try { if (i == 0 && Main.netMode == 2) { int idx = reader.ReadInt16(); int proj = reader.ReadUInt16(); int posX = reader.ReadInt32(); int posY = reader.ReadInt32(); if (idx <= -1) { return; } Bobber bob = (Bobber)(Main.projectile[proj].modProjectile); Entity target = bob.projectile; if (idx < Main.npc.Length) { target = Main.npc[idx]; } else if (idx < Main.npc.Length + Main.player.Length) { target = Main.player[idx - Main.npc.Length]; } bob.npcIndex = (short)idx; target.Center = new Microsoft.Xna.Framework.Vector2(posX, posY); bob.projectile.Center = target.Center; } if (i == 1 && Main.netMode == 2) { int p = reader.ReadUInt16(); int mimicX = reader.ReadInt32(); int mimicY = reader.ReadInt32(); FishPlayer f = Main.player[p].GetModPlayer <FishPlayer>(this); if (f != null) { f.mimicX = mimicX; f.mimicY = mimicY; f.mimicToSpawn = true; } } if (i == 2) { int proj = reader.ReadUInt16(); short npcIndex = reader.ReadInt16(); float ai0 = reader.ReadSingle(); Main.projectile[proj].ai[0] = ai0; ((Bobber)(Main.projectile[proj].modProjectile)).npcIndex = npcIndex; } if (i == 3 && Main.netMode == 1) { int dmg = reader.ReadInt32(); if (Main.player[Main.myPlayer].accDreamCatcher) { Main.player[Main.myPlayer].addDPS(dmg); } } if (i == 4 && Main.netMode != 2) { int p = reader.ReadUInt16(); int heal = reader.ReadInt32(); Player player = Main.player[p]; if (player.statLifeMax2 > player.statLife) { player.statLife += heal; if (player.statLife > player.statLifeMax2) { player.statLife = player.statLifeMax2; } player.HealEffect(heal); } } if (i == 5 && Main.netMode != 2) { int p = reader.ReadUInt16(); int syphon = reader.ReadInt32(); Player player = Main.player[p]; if (player.statManaMax2 > player.statMana) { player.statMana += syphon; if (player.statMana > player.statManaMax2) { player.statMana = player.statManaMax2; } player.ManaEffect(syphon); } } if (i == 6) { int who = reader.ReadInt16(); float x = reader.ReadSingle(); float y = reader.ReadSingle(); //float xSpeed = reader.ReadSingle(); //float ySpeed = reader.ReadSingle(); if (who >= 0 && who < Main.npc.Length) { FishGlobalNPC npcGlobal = Main.npc[who].GetGlobalNPC <FishGlobalNPC>(); //npcGlobal.newSpeed = new Vector2(xSpeed, ySpeed); npcGlobal.newCenter = new Vector2(x, y); } else if (who >= Main.npc.Length && who < Main.npc.Length + Main.player.Length) { FishPlayer p = Main.player[who - Main.npc.Length].GetModPlayer <FishPlayer>(); //p.newSpeed = new Vector2(xSpeed, ySpeed); p.newCenter = new Vector2(x, y); } else { return; } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)6); pk.Write((short)who); pk.Write(x); pk.Write(y); // pk.Write(xSpeed); // pk.Write(ySpeed); pk.Send(); } } if (i == 7) { int who = reader.ReadInt16(); float x = reader.ReadSingle(); float y = reader.ReadSingle(); //float xSpeed = reader.ReadSingle(); //float ySpeed = reader.ReadSingle(); if (Main.netMode != NetmodeID.MultiplayerClient && who != Main.myPlayer) { FishPlayer p = Main.player[who].GetModPlayer <FishPlayer>(); //p.newSpeed = new Vector2(xSpeed, ySpeed); p.newCenter = new Vector2(x, y); } else { return; } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)7); pk.Write((short)who); pk.Write(x); pk.Write(y); // pk.Write(xSpeed); // pk.Write(ySpeed); pk.Send(); } } } catch (Exception ex) { if (Main.netMode != 2) { Main.NewText("Exception on message " + i + ": " + ex.ToString()); } else { Console.WriteLine("Exception on message " + i + ": " + ex.ToString()); } } }
public override void HandlePacket(BinaryReader reader, int whoAmI) { int i = reader.ReadByte(); try { if (i == 0 && Main.netMode == 2) { int idx = reader.ReadInt16(); int proj = reader.ReadUInt16(); int posX = reader.ReadInt32(); int posY = reader.ReadInt32(); if (idx <= -1) { return; } Bobber bob = (Bobber)(Main.projectile[proj].modProjectile); Entity target = bob.projectile; if (idx < Main.npc.Length) { target = Main.npc[idx]; } else if (idx < Main.npc.Length + Main.player.Length) { target = Main.player[idx - Main.npc.Length]; } bob.npcIndex = (short)idx; target.Center = new Microsoft.Xna.Framework.Vector2(posX, posY); bob.projectile.Center = target.Center; } if (i == 1 && Main.netMode == 2) { int p = reader.ReadUInt16(); int mimicX = reader.ReadInt32(); int mimicY = reader.ReadInt32(); FishPlayer f = Main.player[p].GetModPlayer <FishPlayer>(this); if (f != null) { f.mimicX = mimicX; f.mimicY = mimicY; f.mimicToSpawn = true; } } if (i == 2) { int proj = reader.ReadUInt16(); short npcIndex = reader.ReadInt16(); float ai0 = reader.ReadSingle(); Main.projectile[proj].ai[0] = ai0; ((Bobber)(Main.projectile[proj].modProjectile)).npcIndex = npcIndex; } if (i == 3 && Main.netMode == 1) { int dmg = reader.ReadInt32(); if (Main.player[Main.myPlayer].accDreamCatcher) { Main.player[Main.myPlayer].addDPS(dmg); } } if (i == 4 && Main.netMode != 2) { int p = reader.ReadUInt16(); int heal = reader.ReadInt32(); Player player = Main.player[p]; if (player.statLifeMax2 > player.statLife) { player.statLife += heal; if (player.statLife > player.statLifeMax2) { player.statLife = player.statLifeMax2; } player.HealEffect(heal); } } if (i == 5 && Main.netMode != 2) { int p = reader.ReadUInt16(); int syphon = reader.ReadInt32(); Player player = Main.player[p]; if (player.statManaMax2 > player.statMana) { player.statMana += syphon; if (player.statMana > player.statManaMax2) { player.statMana = player.statManaMax2; } player.ManaEffect(syphon); } } if (i == 6) { int who = reader.ReadInt16(); float x = reader.ReadSingle(); float y = reader.ReadSingle(); //float xSpeed = reader.ReadSingle(); //float ySpeed = reader.ReadSingle(); if (who >= 0 && who < Main.npc.Length) { FishGlobalNPC npcGlobal = Main.npc[who].GetGlobalNPC <FishGlobalNPC>(); //npcGlobal.newSpeed = new Vector2(xSpeed, ySpeed); npcGlobal.newCenter = new Vector2(x, y); } else if (who >= Main.npc.Length && who < Main.npc.Length + Main.player.Length) { FishPlayer p = Main.player[who - Main.npc.Length].GetModPlayer <FishPlayer>(); //p.newSpeed = new Vector2(xSpeed, ySpeed); p.newCenter = new Vector2(x, y); } else { return; } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)6); pk.Write((short)who); pk.Write(x); pk.Write(y); // pk.Write(xSpeed); // pk.Write(ySpeed); pk.Send(); } } if (i == 7) { int who = reader.ReadInt16(); float x = reader.ReadSingle(); float y = reader.ReadSingle(); //float xSpeed = reader.ReadSingle(); //float ySpeed = reader.ReadSingle(); if (Main.netMode != NetmodeID.MultiplayerClient && who != Main.myPlayer) { FishPlayer p = Main.player[who].GetModPlayer <FishPlayer>(); //p.newSpeed = new Vector2(xSpeed, ySpeed); p.newCenter = new Vector2(x, y); } else { return; } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)7); pk.Write((short)who); pk.Write(x); pk.Write(y); // pk.Write(xSpeed); // pk.Write(ySpeed); pk.Send(); } } if (i == 9) { for (int k = 0; k < Main.player.Length; k++) { if (Main.player[k].active && !Main.player[k].dead) { FishPlayer pl = Main.player[k].GetModPlayer <FishPlayer>(); if (pl.hasAnyBaitBuffs() || pl.hasAnyBaitDebuffs()) { pl.updateBaits(); } } } } if (i == 10) { int plr = reader.ReadInt16(); int[] buffs = new int[4]; int[] debuffs = new int[4]; // ErrorLogger.Log("Recieved update package. Player no " + plr); int buffTime = reader.ReadInt32(); FishPlayer pl = Main.player[plr].GetModPlayer <FishPlayer>(); for (int k = 0; k < pl.baitBuff.Length; k++) { buffs[k] = reader.ReadInt32(); } for (int k = 0; k < pl.baitDebuff.Length; k++) { debuffs[k] = reader.ReadInt32(); } if (Main.netMode == NetmodeID.MultiplayerClient && Main.myPlayer == plr) { return; } int pbtype = BuffType <PoweredBaitBuff>(); for (int j = 0; j < 22; j++) { if (pl.player.buffType[j] == pbtype) { pl.player.buffTime[j] = buffTime; pl.baitTimer = buffTime; for (int k = 0; k < pl.baitBuff.Length; k++) { pl.addBaitBuffs(buffTime, k, buffs[k]); } for (int k = 0; k < pl.baitDebuff.Length; k++) { pl.addBaitDebuffs(buffTime, k, debuffs[k]); } } } for (int j = 0; j < 22; j++) { if (pl.player.buffType[j] <= 0) { pl.player.buffType[j] = pbtype; pl.player.buffTime[j] = buffTime; pl.baitTimer = buffTime; for (int k = 0; k < pl.baitBuff.Length; k++) { pl.addBaitBuffs(buffTime, k, buffs[k]); } for (int k = 0; k < pl.baitDebuff.Length; k++) { pl.addBaitDebuffs(buffTime, k, debuffs[k]); } } } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)10); pk.Write((short)plr); pk.Write(buffTime); for (int k = 0; k < pl.baitBuff.Length; k++) { pk.Write(pl.baitBuff[k]); } for (int k = 0; k < pl.baitDebuff.Length; k++) { pk.Write(pl.baitDebuff[k]); } pk.Send(); } } if (i == 12) { int updatee = reader.ReadInt32(); int count = reader.ReadInt32(); List <int> debuffs = new List <int>(); for (int k = 0; k < count; k++) { debuffs.Add(reader.ReadInt32()); } if (updatee >= Main.npc.Length) { FishPlayer pl = Main.player[updatee - Main.npc.Length].GetModPlayer <FishPlayer>(); pl.debuffsPresent.Clear(); pl.debuffsPresent.AddRange(debuffs); } else { NPC npc = Main.npc[updatee]; FishGlobalNPC fgnpc = npc.GetGlobalNPC <FishGlobalNPC>(); fgnpc.debuffsPresent.Clear(); fgnpc.debuffsPresent.AddRange(debuffs); } if (Main.netMode == NetmodeID.Server) { ModPacket pk = GetPacket(); pk.Write((byte)UnuBattleRods.Message.DebuffUpdate); pk.Write(updatee); pk.Write(count); for (int k = 0; k < count; k++) { pk.Write(debuffs[k]); } pk.Send(); } } if (i == 14)//Syncronize Config to server options { byte flags = reader.ReadByte(); harderLureRecipes = ((flags & 1) == 1); allowFishedItems = ((flags & 2) == 2); int fishCount = reader.ReadInt32(); fishToReplace.Clear(); for (int k = 0; k < fishCount; k++) { fishToReplace.Add(reader.ReadString()); } } } catch (Exception ex) { if (Main.netMode != 2) { Main.NewText("Exception on message " + i + ": " + ex.ToString()); } else { Console.WriteLine("Exception on message " + i + ": " + ex.ToString()); } } }