private void SpaceEvents_ChooseNightlyFarmEvent(object sender, EventArgsChooseNightlyFarmEvent e) { if (OurMoon.CurrentPhase() == MoonPhase.BlueMoon && !Game1.weddingToday && (e.NightEvent == null || (e.NightEvent is SoundInTheNightEvent && Helper.Reflection.GetField <NetInt>(e.NightEvent, "behavior").GetValue().Value == 2))) { if (Dice.NextDouble() < 0.025 && !Game1.currentSeason.Equals("winter")) { e.NightEvent = new FairyEvent(); } else if (Dice.NextDouble() < 0.025) { e.NightEvent = new WitchEvent(); } else if (Dice.NextDouble() < 0.025) { e.NightEvent = new WitchEvent(); } else if (Dice.NextDouble() < 0.025) { e.NightEvent = new SoundInTheNightEvent(1); } else if (Dice.NextDouble() < 0.025) { e.NightEvent = new SoundInTheNightEvent(0); } else if (Dice.NextDouble() < 0.025) { e.NightEvent = new SoundInTheNightEvent(3); } } }
private void changeFarmEvent(object sender, EventArgsChooseNightlyFarmEvent args) { if (Game1.player.professions.Contains(PROFESSION_NIGHTLY_EVENTS) && !Game1.weddingToday && (args.NightEvent == null || (args.NightEvent is SoundInTheNightEvent && Helper.Reflection.GetField <NetInt>(args.NightEvent, "behavior").GetValue().Value == 2))) { //Log.Async("Doing event check"); FarmEvent ev = null; //for (uint i = 0; i < 100 && ev == null; ++i) // Testing purposes. { Game1.stats.daysPlayed += 999999; // To rig the rng to not just give the same results. try // Just in case. Want to make sure stats.daysPlayed gets fixed { ev = pickFarmEvent(); } catch (Exception) { } Game1.stats.daysPlayed -= 999999; //if (ev != null) Log.Async("ev=" + ev + " " + (ev is SoundInTheNightEvent ? (Util.GetInstanceField(typeof(SoundInTheNightEvent), ev, "behavior") + " " + Util.GetInstanceField(typeof(SoundInTheNightEvent), ev, "soundName")) : "?")); if (ev != null && ev.setUp()) { ev = null; } } if (ev != null) { Log.info($"Applying {ev} as tonight's nightly event, due to having PROFESSION_NIGHTLY_EVENTS"); args.NightEvent = ev; } } }