Пример #1
0
 public void newDay(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     BackgroundHandler.updateBackground();
     ForegroundHandler.updateForeground();
     ParticleHandler.updateParticleSystems(Game1.currentLocation);
     //ParticleSystem testSystem = new ParticleSystem("Content/Particles/Test_P");
     //testSystem.tileLocation = new Microsoft.Xna.Framework.Vector2(24, 10);
     //ParticleSystem testSystem = new ParticleSystem(Game1.mouseCursors, new Microsoft.Xna.Framework.Rectangle(32, 0, 10, 10), new Microsoft.Xna.Framework.Vector2(24, 10), 4, 0.1f, 5f, 1, 24000, 0, 0, -0.05f, 0.55f,
     //    new Dictionary<int, float>
     //    {
     //        {ParticleSystem.Out, 0 },
     //        {ParticleSystem.North, -2 },
     //        {ParticleSystem.East, -2 },
     //        {ParticleSystem.Up, 0 },
     //        {ParticleSystem.Right, 0 }
     //    },
     //    new Dictionary<int, float>
     //    {
     //        {ParticleSystem.Out, 0 },
     //        {ParticleSystem.North, 10f },
     //        {ParticleSystem.East, 10f },
     //        {ParticleSystem.Up, 0 },
     //        {ParticleSystem.Right, 0 }
     //    }
     //);
     //ParticleHandler.systems.Add(testSystem);
 }
Пример #2
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            if (!Game1.isRaining || !Game1.IsMasterGame)
            {
                return;
            }

            foreach (var l in Game1.locations)
            {
                if (l.terrainFeatures.Pairs.Any() && l is Farm && l.map.Properties.ContainsKey("Underground") && l.map.Properties["Underground"] == "true")
                {
                    foreach (var k in l.terrainFeatures.Pairs)
                    {
                        if (k.Value is HoeDirt dirt)
                        {
                            dirt.state.Value = HoeDirt.dry;
                        }
                    }

                    //rewater
                    foreach (var o in l.objects.Pairs)
                    {
                        Monitor.Log($"Parent Sheet Index is {o.Value.ParentSheetIndex}", LogLevel.Info);
                        if (o.Value.ParentSheetIndex == 621 || o.Value.ParentSheetIndex == 599 ||
                            o.Value.ParentSheetIndex == 645 || o.Value.ParentSheetIndex == 1113)
                        {
                            o.Value.DayUpdate(l);
                        }
                    }
                }
            }
        }
Пример #3
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            if (!config.RandomizeMonsterPositionInHutch)
            {
                return;
            }

            foreach (var item in Game1.getFarm().buildings)
            {
                if (item?.indoors?.Value is SlimeHutch hutch)
                {
                    foreach (var monster in hutch.characters)
                    {
                        int     tries = 50;
                        Vector2 tile  = hutch.getRandomTile();
                        while ((!hutch.isTileLocationTotallyClearAndPlaceable(tile) || tile.Y >= 12f) && tries > 0)
                        {
                            tile = hutch.getRandomTile();
                            tries--;
                        }

                        tile *= 64;

                        if (tries > 0)
                        {
                            monster.Position = tile;
                        }
                    }
                }
            }
        }
 private void OnDayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     if (DoNothing)
     {
         return;
     }
     Monitor.Log($"Testing API: {ClimateAPI.GetAmtOfRainSinceDay1()}, {ClimateAPI.GetNumDaysOfStreak()} and {ClimateAPI.GetCurrentWeatherStreak()}");
 }
Пример #5
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     if (isTenting)
     {
         Helper.Events.GameLoop.TimeChanged += GameLoop_TimeChanged;
         Helper.Events.Input.ButtonPressed  += Input_ButtonPressed;
     }
 }
        private void GameLoop_DayStarted(object?sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            Game1.options.musicVolumeLevel = musicOutsideEvent;
            Game1.musicCategory.SetVolume(musicOutsideEvent);
            Game1.musicPlayerVolume = musicOutsideEvent;

            eventTriggered = false;
        }
Пример #7
0
 /// <summary>
 /// Refresh the stock of every store at the start of each day
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     Monitor.Log($"Refreshing stock for all custom shops...", LogLevel.Debug);
     foreach (Shop Store in Shops.Values)
     {
         Store.UpdateItemPriceAndStock();
     }
 }
Пример #8
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            string text = "I was just thinking about the last %year years...\"/pause 1000/speak spouse \"We've been through a lot together, haven't we?$h";

            DialoguePatches.AddWrapperToString("Data\\ExtraDialogue:SummitEvent_Dialogue2_Spouse", ref text);
            Monitor.Log($"prefixed: {text}");
            DialoguePatches.FixString(Game1.getCharacterFromName("Shane"), ref text);
            Monitor.Log($"fixed: {text}");
        }
Пример #9
0
        private void OnDayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            LogDebug($"Autograbbing on day start");
            var locations = Game1.locations.Concat(Game1.getFarm().buildings.Select(building => building.indoors.Value)).Where(location => location != null);

            foreach (var location in locations)
            {
                GrabAtLocation(location);
            }
        }
Пример #10
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     if (Config.JukeboxRingEnabled)
     {
         if (Game1.player.craftingRecipes.ContainsKey("Mini-Jukebox") && !Game1.player.craftingRecipes.ContainsKey("Jukebox Ring"))
         {
             Game1.player.craftingRecipes.Add("Jukebox Ring", 0);
         }
     }
 }
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     foreach (var location in Game1.locations)
     {
         if (location.IsGreenhouse)
         {
             Harvest(location);
         }
     }
 }
Пример #12
0
 void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     pet = null;
     SetState(PetState.Vanilla);
     hasFetchedToday = false;
     if (GetPet() != null && !(Game1.getFarm().characters.Contains(pet) && !(Game1.getLocationFromName(Game1.player.homeLocation).characters.Contains(pet))))
     {
         pet.warpToFarmHouse(Game1.player);
     }
 }
Пример #13
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     foreach (var shopid in MapTKShop.Bought.Keys)
     {
         if (MapTKShop.GetShop(Plato.ModHelper, shopid) is MapTKShop shop &&
             (shop.Restock == "Daily" || (shop.Restock == "Monthly" && Game1.dayOfMonth == 1) || (shop.Restock == "Yearly" && Game1.dayOfMonth == 1 && Game1.currentSeason.ToLower() == "spring")))
         {
             MapTKShop.Bought.Remove(shopid);
         }
     }
 }
Пример #14
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            foreach (Building b in Game1.getFarm().buildings)
            {
                if (b.nameOfIndoorsWithoutUnique != "SlimeHutch")
                {
                    continue;
                }

                ((SlimeHutch)b.indoors).TryRefillWater();
            }
        }
Пример #15
0
        private void OnNewDay(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            //new day reset
            TimeElapsed    = 0;
            CurrentRainAmt = (Game1.isRaining ? 70 : 0);

            if (Game1.random.NextDouble() <= ModOptions.VariableRainChance && Game1.isRaining)
            {
                Game1.hudMessages.Add(new HUDMessage("The rain today will be variable"));
                IsVariableRain = true;
            }
        }
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     if (CheckForMapAccess())
     {
         if (IsMainPlayer())
         {
             ResetDailyValues();
             SetMaxNumberOfTrainsAndStartTime();
         }
         UpdateTrainLootChances();
     }
 }
Пример #17
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     lastFadeAlpha  = 1f;
     displayTicks   = 0;
     clickedOnQuote = false;
     dailyQuote     = GetAQuote(Config.RandomQuote);
     if (dailyQuote != null)
     {
         Monitor.Log($"Today's quote: {dailyQuote.quote}\r\n\r\n-- {dailyQuote.author}", LogLevel.Debug);
         Helper.Events.Display.Rendering += Display_Rendering;
         Helper.Events.Display.Rendered  += Display_Rendered;
     }
 }
Пример #18
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            var spawn = Helper.Data.ReadSaveData <LastOverWorldChestSpawn>("lastOverworldChestSpawn") ?? new LastOverWorldChestSpawn();
            int days  = Game1.Date.TotalDays - spawn.lastOverworldChestSpawn;

            Monitor.Log($"Last spawn: {days} days ago");
            if (spawn.lastOverworldChestSpawn < 1 || Game1.Date.TotalDays < 2 || (Config.RespawnInterval > 0 && days >= Config.RespawnInterval))
            {
                Monitor.Log($"Respawning chests", LogLevel.Debug);
                spawn.lastOverworldChestSpawn = Game1.Date.TotalDays;
                Helper.Data.WriteSaveData("lastOverworldChestSpawn", spawn);
                RespawnChests();
            }
        }
Пример #19
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            curedNPCs.Clear();
            curedFarmers.Clear();
            //Utils.AddZombiePlayer(Game1.player.uniqueMultiplayerID);

            if (Game1.random.NextDouble() < config.DailyZombificationChance)
            {
                Utils.MakeRandomZombie();
            }
            if (zombieTextures.Count > 0 && !Game1.player.mailReceived.Contains("ZombieCure"))
            {
                Game1.mailbox.Add("ZombieCure");
            }
        }
Пример #20
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            Farm farm = Game1.getFarm();

            if (Game1.isRaining)
            {
                foreach (KeyValuePair <Vector2, Object> kvp in farm.objects.Pairs)
                {
                    if (kvp.Value.bigCraftable && kvp.Value.Name.EndsWith("Pet Bowl"))
                    {
                        kvp.Value.modData["aedenthorn.PetBowl/Watered"] = "true";
                    }
                }
            }
        }
Пример #21
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            if (Game1.player.hasOrWillReceiveMail(AquariumOpenAfterLandslide) || Game1.player.hasOrWillReceiveMail(AquariumOpenLater))
            {
                return;
            }

            if (Game1.Date.TotalDays == 30)
            {
                Game1.player.mailbox.Add(AquariumOpenAfterLandslide);
            }

            if (Game1.Date.TotalDays > 30)
            {
                Game1.player.mailbox.Add(AquariumOpenLater);
            }
        }
Пример #22
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            //Check and log the trues
            if (Game1.IsMasterGame)
            {
                this.Monitor.Log("isMasterGame was true this is not expected.", LogLevel.Warn);
            }

            if (Game1.player.uniqueMultiplayerID == Game1.MasterPlayer.uniqueMultiplayerID)
            {
                this.Monitor.Log("Unique multiplayer ID was the same this is not expected.", LogLevel.Warn);
            }

            if (Game1.player.name == Game1.MasterPlayer.name)
            {
                this.Monitor.Log("player.name was that same this is not expected.", LogLevel.Warn);
            }

            if (Context.IsMainPlayer)
            {
                this.Monitor.Log("SMAPI Context IsMainPlayer was true this is not expected.", LogLevel.Warn);
            }


            //Check and log the nots
            if (!Game1.IsMasterGame)
            {
                this.Monitor.Log("isMasterGame was true this is expected.");
            }

            if (Game1.player.uniqueMultiplayerID != Game1.MasterPlayer.uniqueMultiplayerID)
            {
                this.Monitor.Log("Unique multiplayer ID was the same this is expected.");
            }

            if (Game1.player.name != Game1.MasterPlayer.name)
            {
                this.Monitor.Log("player.name was that same this is expected.");
            }

            if (!Context.IsMainPlayer)
            {
                this.Monitor.Log("SMAPI Context IsMainPlayer was true this is expected.");
            }
        }
Пример #23
0
        private static void DayStarted_UpdateWaterColor(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            CachedWaterColors.Clear();                                               //clear the cache to allow changes by the game

            HashSet <GameLocation> locationsToUpdate = new HashSet <GameLocation>(); //create a set of distinct locations to update

            foreach (Farmer player in Game1.getOnlineFarmers())                      //for each active player
            {
                if (player.currentLocation != null)                                  //if this player has a location
                {
                    locationsToUpdate.Add(player.currentLocation);                   //add it to the set
                }
            }
            foreach (GameLocation location in locationsToUpdate) //for each location in the set
            {
                UpdateWaterColor(location);                      //update it
            }
        }
Пример #24
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     foreach (Building building in Game1.getFarm().buildings)
     {
         this.Monitor.VerboseLog($"Checking Building {building.buildingType.Value}");
         if (building is Coop || building is Barn)
         {
             if (building.indoors.Value is AnimalHouse indoors && indoors.Objects.Values.Any(p => p.Name.Contains("arecrow")))
             {
                 foreach (FarmAnimal animal in indoors.animals.Values)
                 {
                     animal.pet(Game1.MasterPlayer);
                     this.Monitor.VerboseLog($"   Petting {animal.Name}");
                 }
             }
         }
     }
 }
Пример #25
0
        private void OnDayStart(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            var zoneAreas = Helper.Data.ReadJsonFile <ModData>("assets/ModData.json").ZoneAreas;

            Zones = new Dictionary <GameLocation, string>();

            foreach (var loc in Game1.locations)
            {
                var zone = zoneAreas.Where(area => area.Value.Contains(loc.Name)).Select(area => area.Key).FirstOrDefault() ?? loc.Name;
                Zones.Add(loc, zone);
                LogDebug($"Zoned {loc.Name} as {zone}");
                if (loc is BuildableGameLocation buildableLoc)
                {
                    foreach (var building in buildableLoc.buildings.Where(building => building.indoors.Value != null))
                    {
                        Zones.Add(building.indoors.Value, zone);
                        LogDebug($"Zoned interior {building.indoors.Value.Name} as {zone}");
                    }
                }
            }
        }
Пример #26
0
        private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            startedWalking = false;
            if (!Config.EnableMod || Utility.isFestivalDay(Game1.dayOfMonth, Game1.currentSeason))
            {
                return;
            }
            var robin = Game1.getCharacterFromName("Robin");

            if (robin is null)
            {
                Monitor.Log($"Couldn't find Robin", LogLevel.Warn);
                return;
            }
            robin.shouldPlayRobinHammerAnimation.Value = false;
            robin.ignoreScheduleToday = false;
            robin.resetCurrentDialogue();
            robin.reloadDefaultLocation();
            Game1.warpCharacter(robin, robin.DefaultMap, robin.DefaultPosition / 64f);
            Farm farm = Game1.getFarm();
        }
Пример #27
0
        private void OnDayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
        {
            var seasonNumber = seasonNumbers[Game1.currentSeason];
            var calendarDay  = seasonNumber * 28 + Game1.dayOfMonth;
            var mineChanges  = MineShaft.permanentMineChanges;

            LogDebug($"Number of mine changes: {mineChanges.Count}");
            foreach (var kvp in mineChanges)
            {
                var mineLevel        = kvp.Key;
                var mineLevelChanges = kvp.Value;
                if (calendarDay % 2 == 0 && mineLevelChanges.coalCartsLeft <= 0)
                {
                    mineLevelChanges.coalCartsLeft++;
                    LogDebug($"Refreshing coal carts for mine level {mineLevel}");
                }
                if (calendarDay % 6 == 0 && mineLevelChanges.platformContainersLeft <= 0)
                {
                    mineLevelChanges.platformContainersLeft += 12;
                    LogDebug($"Refreshing platform containers for mine level {mineLevel}");
                }
            }
        }
Пример #28
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     TodaysStock = null;
 }
Пример #29
0
 public void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     Helper.Events.GameLoop.UpdateTicked += GameLoop_UpdateTicked;
 }
Пример #30
0
 private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e)
 {
     FindSeedMakers();
 }