The source for my mods, including Cloudy Skies, is currently under an All Rights Reserved license unless otherwise noted after CurseForge went against my wishes and allowed people to upload my mods without permission. See LICENSE.
I encourage and support:
Including my mods in mod packs via linking (not via including a file)
Making content packs that modify the look or behavior of my mods
Translating my mods into other languages
Contributing to the source with pull requests
Please do not:
Claim that my mods are your own work
Release copies of my mods while I'm still maintaining them
Publish my mods on other platforms
Post copies of my mods for translation purposes (I am more than happy to merge translations into the main mod)
File credits
This author has not credited anyone else in this file
Donation Points system
Please log in to find out whether this mod is receiving Donation Points
Added: New trigger actions for changing the current weather as well as tomorrow's weather.
Added: New console command for changing the current weather.
Added: Support for running tile actions when the user interacts with a big craftable.
Added: Support for using the new weather condition added in Stardew 1.6 in other location contexts than the `Default` while still having maps update correctly.
Changed: Do not attempt to patch the normal UI when running on Android.
Fixed: Compatibility with recent versions of Item Extensions.
Version 1.8.0
Added: Custom weather types have more control over critter spawning with their new `Critters` property.
Added: New game state queries for checking the class type of a given location and for checking the game time within a specific location, which can be used to determine if it's dark in that location.
Added: New console command for resetting the spawned critters in the current location.
Added: New syntax for trigger action targets for targeting more than one location based on location names.
Added: New syntax for trigger action targets for targeting a region of a location.
Added: New trigger actions for spawning ores and resource clumps (boulders, logs, meteorites, etc.)
Changed: Added more safety checks to the Harmony patches out of paranoia that something broke with 1.6.9. (Miraculously, the only things that broke weren't Harmony related at all.)
Fixed: Compatibility with Stardew Valley 1.6.9.
Version 1.7.0
Added: There are now settings for enabling / disabling shaders.
Added: Custom weather types have more control over music with their new `SoftMusicOverrides` property.
Added: Shader layers now have an optional `Color` that can be passed to the underlying shader for drawing.
Added: Console command for resetting locations if you happen to make a mistake when messing with the new Stardew 1.6 weather type.
Added: New trigger action for converting fruit trees from one type to another.
Added: New built-in `Blur` shader.
Fixed: Effects and layers not being properly disposed of when entering a location without an active custom weather type.
Fixed: The shader layer now understands how to send an array of float values to a shader.
Translation: Added Japanese translation courtesy of mitekano23 on NexusMods. Thank you!
Translation: Updated French translation courtesy of Caranud on NexusMods. Thank you!
Version 1.6.0
Added: `Shader` layers have arrived! Do fancier rendering for weather, if you dare.
Added: All effects and layers now have a `TargetMapType` for letting you specify if they should be active on indoor maps, outdoor maps, or both. Outdoor by default, of course.
Added: Custom art for Ginger Isle based on the original game assets to make it fit in a bit more when you're on the region selection menu.
Added: Support for the Ultimate Fertilizer mod with our trigger actions.
Added: New trigger action for spawning custom artifact spots.
Fixed: The TV weather channel rendering on top of the world.
Fixed: Equality checks not working correctly for some layer/effect types.
Fixed: Do not render the timing overlay when taking a screenshot.
Fixed: The `SpawnForage` command not properly accepting more than one spawnable.
Translation: Added a localization entry for Calico Desert.
Translation: Added Chinese translation courtesy of EtaMyosotis on NexusMods. Thank you!
Translation: Added French translation courtesy of Caranud on NexusMods. Thank you!
Version 1.5.0
Added: System for tracking the previous week's weather in all locations, which can be queried using game state queries.
Added: New trigger actions for: converting trees to other tree types, fertilizing dirt, growing crops, growing giant crops, growing fruit trees, growing trees, killing crops, spawning forage, un-fertilizing dirt, un-growing trees, un-watering dirt, un-watering pet bowls, watering dirt, and watering pet bowls.
Added: New game state query for checking the current weather type that supports matching multiple types, as well as matching the weather up to one week in the past.
Added: Whether or not a given water condition performs the standard logic to water crops and pet bowls is now a separate flag in weather data.
Added: Added a new `cs_history` command for viewing the stored historical weather data, which will have at most 8 entries.
Changed: The various game state queries for checking weather flags now have an optional argument for checking the weather up to one week in the past.
Changed: Deprecated the action to water crops. Use the new, better action please.
Changed: Reduce the severity of some debugging message from Debug to Trace.
Fixed: If the TV patches can't apply cleanly, then don't replace the TV with our custom menu. (Assuming we un-patch cleanly.)
Version 1.4.1
Fixed: Issue in 1.4.0 where weather sprites would be displayed incorrectly on the TV. I thought I fixed it before pushing 1.4.0, but apparently not.
Version 1.4.0
Added: Added a new trigger action for watering crops / pet bowls that could come in handy for doing interesting weather stuff.
Fixed: Ambient outdoor opacity not being calculated correctly when it is time for it to get dark out in-game.
Fixed: The in-game TV not displaying its screen in the correct position when combined with our Weather channel replacement and using a zoom other than 100%.
API: The API now supports letting other C# mods add custom layer and effect types.
Version 1.3.0
Added: We now replace the TV Menu! Get weather for more locations. This requires the locations to opt into the new system.
Added: There is now a more flexible system for applying screen tints, letting you use game state queries and have multiple data points across time that are smoothly blended between.
Changed: Deprecated the old screen tints system.
Changed: Internal changes to prepare for letting C# mods add custom effect and layer types.
API: The API now supports modifying data assets from C# mods using the AssetRequested event.
Version 1.2.0
Changed: The `Buff` effect now has `CustomFields`, though they haven't been hooked up to anything yet. (SpaceCore Skill support coming soon.)
Changed: Merge `Snow` and `TextureScroll` into a single layer type.
Fixed: Layers did not have the correct sprite sorting applied.
Fixed: Typo in the Content Patcher token. `Lighting` instead of `Lightning`.
Fixed: Some Harmony patches not working on 1.6.6. They have been updated to hopefully be more robust against game changes.
Fixed: When invalidating the icon for a `Buff` texture, the buff's texture was not being updated correctly.
Fixed: The equality comparisons for some layer types were not working as expected, causing layers to be recreated unnecessarily.
Authoring: We have a proper author's guide now!
Version 1.1.0
Added: Custom weather totems are now possible!
Added: Weather effects!
Changed: The `cs_list` command now displays all weather conditions, not just those provided by Cloudy Skies, as well as what the current and future weather are for all location contexts.
Changed: The `cs_tomorrow` command now simulates using a custom weather totem.
Fixed: Mistake in `GetMorningSong()` transpiler that could cause an argument null exception.
API: You can now make an item behave as a custom weather totem by setting per-instance modData or an object-wide custom field with the key `leclair.cloudyskies/WeatherTotem` and a value that is the id of the desired weather.
API: Added fields to the weather data model for controlling the behavior of custom totems.
API: By default, whether or not a weather totem works in a given location context is controlled by the `AllowRainTotem` field of that location context. You can add a custom field with the key `leclair.cloudyskies/AllowTotem:ID` where `ID` is the weather Id and the value is `true` or `false` to allow or disallow changing that context with any given totem.
API: Added the following game state queries for checking the state of the weather in a location: `CS_LOCATION_IGNORE_DEBRIS_WEATHER`, `CS_WEATHER_IS_RAINING`, `CS_WEATHER_IS_SNOWING`, `CS_WEATHER_IS_LIGHTNING`, `CS_WEATHER_IS_DEBRIS`, and `CS_WEATHER_IS_GREEN_RAIN`.
API: Added the `leclair.cloudyskies/Weather` Content Patcher token for determining the state of the location's weather. Possible values: `Raining`, `Snowing`, `Lightning`, `Debris`, `GreenRain`, `Sunny`, `Music`, and `NightTiles`.
API: Custom weather types can now have effects. These are things that happen to the player when they are in a location where the weather is applied. Currently there are effects to modify the player's health, modify the player's stamina, apply a buff to the player, or to run trigger actions.
Are you a player?
There's not much here for you, unless one of the mods you're using needs this, in which case: download it and forget it.
Are you a modder?
This mod provides a framework for adding custom weather types to the game using content packs. But what does that mean?
In Stardew Valley 1.6, the current weather was changed so that mods can add custom weather Ids. However, just having a custom weather Id doesn't do much. This mod is here to fix that, making it easy to add custom rendering effects and the like when there's weather afoot.
Want to get started? We have an authoring guide, as well as a sample content pack with a commented content file showing off a few things.
Make sure to note that your weather won't magically show up. You need to add it to Data/LocationContexts like you would any other weather. You can create custom weather totems though, as documented in the author guide, or you can force tomorrow's weather though, using the cs_tomorrow command. Also check the cs_list command to see all the available weather types by Id.
Compatibility
Works with Stardew Valley 1.6 on Linux/Mac/Windows.