Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        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();
                }
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
            }
        }