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)); } } } }
/// <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); } } }