示例#1
0
        public override void HandleFromClient(BinaryReader reader, int whoAmI)
        {
            var data = reader.ReadString();

            switch (data)
            {
            case SQUIRTLE:
            {
                if (!Main.player[whoAmI].active)
                {
                    return;
                }

                PokeballCaught.writeDetour(nameof(Squirtle), "Squirtle", "Terramon/Minisprites/Regular/miniSquirtle");
                int index = Item.NewItem(Main.player[whoAmI].getRect(), ModContent.ItemType <PokeballCaught>());
                if (index >= 400 || !(Main.item[index].modItem is PokeballCaught modItem))
                {
                    return;
                }
            }
            break;

            case CHARMANDER:
            {
                PokeballCaught.writeDetour(nameof(Charmander), "Charmander", "Terramon/Minisprites/Regular/miniCharmander");
                int index = Item.NewItem(Main.player[whoAmI].getRect(), ModContent.ItemType <PokeballCaught>());
                if (index >= 400 || !(Main.item[index].modItem is PokeballCaught modItem))
                {
                    return;
                }
            }
            break;

            case BULBASAUR:
            {
                PokeballCaught.writeDetour(nameof(Bulbasaur), "Bulbasaur", "Terramon/Minisprites/Regular/miniBulbasaur");
                int index = Item.NewItem(Main.player[whoAmI].getRect(), ModContent.ItemType <PokeballCaught>());
                if (index >= 400 || !(Main.item[index].modItem is PokeballCaught modItem))
                {
                    return;
                }
            }
            break;
            }
        }
        public override float SpawnChance(NPCSpawnInfo spawnInfo)
        {
            Player player = Main.LocalPlayer;

            Item[] pokeballCaught    = spawnInfo.player.inventory.Where(i => !i.IsAir && i.modItem is PokeballCaught).ToArray();
            Item[] greatballCaught   = spawnInfo.player.inventory.Where(i => !i.IsAir && i.modItem is GreatBallCaught).ToArray();
            Item[] ultraballCaught   = spawnInfo.player.inventory.Where(i => !i.IsAir && i.modItem is UltraBallCaught).ToArray();
            Item[] duskballCaught    = spawnInfo.player.inventory.Where(i => !i.IsAir && i.modItem is DuskBallCaught).ToArray();
            Item[] premierballCaught = spawnInfo.player.inventory.Where(i => !i.IsAir && i.modItem is PremierBallCaught).ToArray();
            if (spawnInfo.player.ZoneRockLayerHeight && spawnInfo.player.ZoneSnow)
            {
                if (pokeballCaught.Any() || greatballCaught.Any() || ultraballCaught.Any() || duskballCaught.Any() || premierballCaught.Any())
                {
                    for (int i = 0; i < pokeballCaught.Length; i++)
                    {
                        PokeballCaught ball = (pokeballCaught[i].modItem as PokeballCaught);
                        if (ball.PokemonName == "Blastoise")
                        {
                            return(0.035f);
                        }
                    }
                    for (int i = 0; i < greatballCaught.Length; i++)
                    {
                        GreatBallCaught greatball = (greatballCaught[i].modItem as GreatBallCaught);
                        if (greatball.PokemonName == "Blastoise")
                        {
                            return(0.035f);
                        }
                    }
                    for (int i = 0; i < ultraballCaught.Length; i++)
                    {
                        UltraBallCaught ultraball = (pokeballCaught[i].modItem as UltraBallCaught);
                        if (ultraball.PokemonName == "Blastoise")
                        {
                            return(0.035f);
                        }
                    }
                    for (int i = 0; i < duskballCaught.Length; i++)
                    {
                        DuskBallCaught duskball = (pokeballCaught[i].modItem as DuskBallCaught);
                        if (duskball.PokemonName == "Blastoise")
                        {
                            return(0.035f);
                        }
                    }
                    for (int i = 0; i < premierballCaught.Length; i++)
                    {
                        PremierBallCaught premierball = (pokeballCaught[i].modItem as PremierBallCaught);
                        if (premierball.PokemonName == "Blastoise")
                        {
                            return(0.035f);
                        }
                    }
                }
                return(0f);
            }
            else
            {
                return(0f);
            }
        }