public override void clientClone(ModPlayer clientClone) { SoulPlayer clone = clientClone as SoulPlayer; for (int i = 0; i < this.activeSouls.GetLength(0); ++i) { for (int j = 0; j < this.activeSouls.GetLength(1); ++j) { if (this.activeSouls[i, j] == null) { this.activeSouls[i, j] = new NetSoulData(); } clone.activeSouls[i, j].stack = this.activeSouls[i, j].stack; clone.activeSouls[i, j].soulNPC = this.activeSouls[i, j].soulNPC; } } clone.seaSnailSoul = seaSnailSoul; clone.lacBeetleSoul = lacBeetleSoul; clone.cyanBeetleSoul = cyanBeetleSoul; clone.cochinealBeetleSoul = cochinealBeetleSoul; clone.iceTortoiseSoul = iceTortoiseSoul; clone.eocSoulDash = eocSoulDash; }
public override void EditSpawnRate(Player player, ref int spawnRate, ref int maxSpawns) { SoulPlayer sp = player.GetModPlayer <SoulPlayer>(); if (sp.pinkySoul) { spawnRate -= 5 * (sp.YellowSoulNet.stack); if (spawnRate < 5) { spawnRate = 5; } } }
public override void SendClientChanges(ModPlayer clientPlayer) { SoulPlayer clone = clientPlayer as SoulPlayer; if (clone.activeSouls[activeSoulConfig, (int)SoulType.Red] != this.activeSouls[activeSoulConfig, (int)SoulType.Red] || clone.activeSouls[activeSoulConfig, (int)SoulType.Blue] != this.activeSouls[activeSoulConfig, (int)SoulType.Blue] || clone.activeSouls[activeSoulConfig, (int)SoulType.Yellow] != this.activeSouls[activeSoulConfig, (int)SoulType.Yellow]) { ModPacket packet = mod.GetPacket(); packet.Write((byte)MysticHunterMessageType.SyncPlayerSouls); packet.Write((byte)player.whoAmI); packet.Write(RedSoulNet.soulNPC); packet.Write(BlueSoulNet.soulNPC); packet.Write(YellowSoulNet.soulNPC); packet.Write(RedSoulNet.stack); packet.Write(BlueSoulNet.stack); packet.Write(YellowSoulNet.stack); packet.Send(); } else { if (clone.seaSnailSoul != this.seaSnailSoul || clone.lacBeetleSoul != this.lacBeetleSoul || clone.cyanBeetleSoul != this.cyanBeetleSoul || clone.cochinealBeetleSoul != this.cochinealBeetleSoul || clone.iceTortoiseSoul != this.iceTortoiseSoul) { ModPacket packet = mod.GetPacket(); packet.Write((byte)MysticHunterMessageType.SyncPlayerSoulExtras); packet.Write((byte)player.whoAmI); packet.Write(seaSnailSoul); packet.Write(lacBeetleSoul); packet.Write(cyanBeetleSoul); packet.Write(cochinealBeetleSoul); packet.Write(iceTortoiseSoul); packet.Write(eocSoulDash); packet.Send(); } } }
public override bool PreAI(Projectile projectile) { if (justSpawned) { SoulPlayer sp = Main.player[projectile.owner].GetModPlayer <SoulPlayer>(); if (sp.ghostSoul && projectile.penetrate != -1) { int additivePenetration = 1; if (sp.activeSouls[sp.activeSoulConfig, (int)SoulType.Yellow].stack >= 5) { additivePenetration++; } if (sp.activeSouls[sp.activeSoulConfig, (int)SoulType.Yellow].stack >= 9) { additivePenetration++; } projectile.penetrate = projectile.maxPenetrate = (projectile.penetrate + additivePenetration); } justSpawned = false; } return(true); }
public override void HandlePacket(BinaryReader reader, int whoAmI) { MysticHunterMessageType msgType = (MysticHunterMessageType)reader.ReadByte(); switch (msgType) { case MysticHunterMessageType.SyncPlayerSouls: case MysticHunterMessageType.SyncStartSoulPlayer: byte playerID = reader.ReadByte(); SoulPlayer targetPlayer = Main.player[playerID].GetModPlayer <SoulPlayer>(); targetPlayer.activeSouls[0, 0].soulNPC = reader.ReadInt16(); targetPlayer.activeSouls[0, 1].soulNPC = reader.ReadInt16(); targetPlayer.activeSouls[0, 2].soulNPC = reader.ReadInt16(); targetPlayer.activeSouls[0, 0].stack = reader.ReadByte(); targetPlayer.activeSouls[0, 1].stack = reader.ReadByte(); targetPlayer.activeSouls[0, 2].stack = reader.ReadByte(); if (msgType == MysticHunterMessageType.SyncStartSoulPlayer) { targetPlayer.seaSnailSoul = reader.ReadBoolean(); targetPlayer.lacBeetleSoul = reader.ReadBoolean(); targetPlayer.cyanBeetleSoul = reader.ReadBoolean(); targetPlayer.cochinealBeetleSoul = reader.ReadBoolean(); targetPlayer.iceTortoiseSoul = reader.ReadBoolean(); targetPlayer.eocSoulDash = reader.ReadBoolean(); } if (msgType == MysticHunterMessageType.SyncPlayerSouls && Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)MysticHunterMessageType.SyncPlayerSouls); packet.Write(playerID); packet.Write(targetPlayer.activeSouls[0, 0].soulNPC); packet.Write(targetPlayer.activeSouls[0, 1].soulNPC); packet.Write(targetPlayer.activeSouls[0, 2].soulNPC); packet.Write(targetPlayer.activeSouls[0, 0].stack); packet.Write(targetPlayer.activeSouls[0, 1].stack); packet.Write(targetPlayer.activeSouls[0, 2].stack); packet.Send(-1, playerID); } break; case MysticHunterMessageType.SyncPlayerSoulExtras: byte playerID2 = reader.ReadByte(); SoulPlayer targetPlayer2 = Main.player[playerID2].GetModPlayer <SoulPlayer>(); targetPlayer2.seaSnailSoul = reader.ReadBoolean(); targetPlayer2.lacBeetleSoul = reader.ReadBoolean(); targetPlayer2.cyanBeetleSoul = reader.ReadBoolean(); targetPlayer2.cochinealBeetleSoul = reader.ReadBoolean(); targetPlayer2.iceTortoiseSoul = reader.ReadBoolean(); targetPlayer2.eocSoulDash = reader.ReadBoolean(); if (msgType == MysticHunterMessageType.SyncPlayerSouls && Main.netMode == NetmodeID.Server) { var packet = GetPacket(); packet.Write((byte)MysticHunterMessageType.SyncPlayerSoulExtras); packet.Write(playerID2); packet.Write(targetPlayer2.seaSnailSoul); packet.Write(targetPlayer2.lacBeetleSoul); packet.Write(targetPlayer2.cyanBeetleSoul); packet.Write(targetPlayer2.cochinealBeetleSoul); packet.Write(targetPlayer2.iceTortoiseSoul); packet.Write(targetPlayer2.eocSoulDash); packet.Send(-1, playerID2); } break; } }