コード例 #1
0
        public static void ProcessScytheHarvest(Crop crop, int xTile, int yTile,
                                                StardewValley.TerrainFeatures.HoeDirt soil, StardewValley.Characters.JunimoHarvester junimoHarvester)
        {
            Random random = new Random((int)Game1.stats.DaysPlayed + (int)Game1.uniqueIDForThisGame);

            // extra luck fix - num *= 2;
            if (random.NextDouble() < (double)((float)Game1.player.LuckLevel / 1500f) + Game1.dailyLuck / 1200.0 + 9.9999997473787516E-05)
            {
                int num = random.Next(1, 3);
                for (int i = 0; i < num; i++)
                {
                    if (junimoHarvester == null)
                    {
                        Game1.createObjectDebris(crop.indexOfHarvest, xTile, yTile, -1, random.Next(0, 2), 1f, null);
                    }
                    else
                    {
                        junimoHarvester.tryToAddItemToHut(new StardewValley.Object(crop.indexOfHarvest, 1, false, -1, 0));
                    }
                }
                if (junimoHarvester == null || Utility.isOnScreen(junimoHarvester.getTileLocationPoint(), Game1.tileSize, junimoHarvester.currentLocation))
                {
                    Game1.playSound("dwoop");
                }
            }

            // experience fix
            if (junimoHarvester == null)
            {
                int   experienceBase = Convert.ToInt32(Game1.objectInformation[crop.indexOfHarvest].Split(new char[] { '/' })[1]);
                float experience     = (float)(16.0 * Math.Log(0.018 * (double)experienceBase + 1.0, 2.7182818284590451));
                Game1.player.gainExperience(0, (int)Math.Round((double)experience));
            }

            // sunflower seeds fix
            if (crop.indexOfHarvest == 421)
            {
                int indexOfHarvest = 431;
                int num            = random.Next(1, 3);
                for (int i = 0; i < num; i++)
                {
                    if (junimoHarvester == null)
                    {
                        Game1.createObjectDebris(indexOfHarvest, xTile, yTile, -1, 0, 1f, null);
                    }
                    else
                    {
                        junimoHarvester.tryToAddItemToHut(new StardewValley.Object(indexOfHarvest, 1, false, -1, 0));
                    }
                }
            }
        }
コード例 #2
0
        /// <summary>
        ///     Actually harvest an adjacent fruit tree to the current location.
        /// </summary>
        internal static void TryToActuallyHarvestFruitTree(StardewValley.Characters.JunimoHarvester harvester)
        {
            if (harvester.currentLocation == null)
            {
                return;
            }

            bool found = GetAdjacentReadyToHarvestFruitTree(harvester.getTileLocation(), harvester.currentLocation,
                                                            out KeyValuePair <Vector2, FruitTree> tree);

            if (found)
            {
                //shake the tree without it releasing any fruit
                int fruitsOnTree = tree.Value.fruitsOnTree.Value;
                tree.Value.fruitsOnTree.Value = 0;
                tree.Value.performUseAction(tree.Key, harvester.currentLocation);
                tree.Value.fruitsOnTree.Value = fruitsOnTree;
                SObject result = GetFruitFromTree(tree.Value);
                if (result != null)
                {
                    harvester.tryToAddItemToHut(result);
                }
            }
        }