Seasons & Weather
The climate system drives a 100-day year divided into four 25-day seasons. Weather and temperature shift each day, affecting mood, foraging efficiency, and the forest spirit.
Overview
Time in Elf Revel is measured in ticks. One in-game day is 100 ticks. A full year is 100 days (10,000 ticks), split evenly into four seasons of 25 days each. At each day boundary, the climate system advances the season (if needed), rolls for new weather, and computes a daily base temperature with jitter.
Temperature updates every tick based on time of day. Weather persists with 70% momentum -- there is only a 30% chance it changes on any given day within the same season, while season boundaries always force a reroll.
How It Works
The Year Cycle
| Season | Days | Day Range (in year) | Description |
|---|---|---|---|
| Spring | 0--24 | 0--24 | Awakening. Balanced foraging. Spirit is sensitive. |
| Summer | 25--49 | 25--49 | Peak abundance. Highest foraging multiplier. |
| Autumn | 50--74 | 50--74 | Declining bounty. Snow begins to appear. |
| Winter | 75--99 | 75--99 | Harsh. Reduced foraging. Snow is common. Spirit dormant. |
Years wrap: day 100 is Spring of year 1, day 200 is Spring of year 2, and so on.
Source: src/sim/climate.rs, SEASON_LENGTH = 25, YEAR_LENGTH = 100, Season::from_day.
Time of Day
Each 100-tick day is divided into four periods:
| Period | Tick Range (within day) | Temperature Modifier |
|---|---|---|
| Dawn | 0--9 | -5 |
| Day | 10--69 | +0 (base) |
| Dusk | 70--84 | -3 |
| Night | 85--99 | -8 |
The temperature modifier is applied to the daily base temperature each tick. Dawn and Night are the coldest periods.
Source: src/sim/world.rs, TimeOfDay::from_tick. src/sim/climate.rs, Climate::update_temperature.
Temperature Curve
Each season defines a quadratic temperature curve with three control points: start, mid-extreme, and end. The temperature is interpolated across the 25 days of the season using quadratic interpolation, then jittered by a random value in the range +/-5.
| Season | Start Temp | Mid-Extreme | End Temp |
|---|---|---|---|
| Spring | 35 | 45 | 55 |
| Summer | 55 | 75 | 65 |
| Autumn | 65 | 45 | 30 |
| Winter | 30 | 15 | 25 |
The interpolation formula uses quadratic Bezier-style weighting:
base = start x (1-t)(1-2t) + mid x 4t(1-t) + end x t(2t-1)
Where t = day_in_season / 24 (0.0 to 1.0).
After interpolation, jitter of +/-5 is applied, and the result is clamped to 0--100. Temperature can never go below 0 or above 100.
Source: src/sim/climate.rs, Season::temperature_curve and Climate::advance_day.
Temperature Thresholds
| Condition | Threshold | Effect |
|---|---|---|
| Cold | Temperature < 25 | Outdoor mood penalty: "Chilled" -2 |
| Hot | Temperature > 75 | Universal mood penalty: "Sweltering" -1 |
Cold only affects elves outdoors (not within Manhattan distance 2 of a roofed building). Hot affects everyone.
Source: src/sim/climate.rs, is_cold() and is_hot(). src/sim/systems.rs, weather_mood_system.
Weather System
Weather is determined daily. On a season boundary, weather is always rerolled. Within a season, there is a 30% chance of reroll and a 70% chance the previous weather persists (momentum).
Source: src/sim/climate.rs, Climate::advance_day -- rng.gen::<f32>() < 0.3 triggers reroll.
Weather Types
| Weather | Description | Possible Seasons |
|---|---|---|
| Clear | Sunny skies. No special effects. | All |
| Cloudy | Overcast. No direct effects. | All |
| Rain | Outdoor mood penalty. | All |
| Storm | Flavor event (neutral mood). | All |
| Snow | Outdoor beauty bonus. | Autumn, Winter only |
| Fog | Inspiration boost for skilled musicians. | All |
Snow has zero weight in Spring and Summer -- it physically cannot occur in those seasons.
Source: src/sim/climate.rs, Weather::season_weights.
Values & Formulas
Season Weather Weights
Each weather type has a probability weight per season. To get the percentage chance, divide by the row total (100 in all cases).
| Weather | Spring | Summer | Autumn | Winter |
|---|---|---|---|---|
| Clear | 40 | 60 | 40 | 30 |
| Cloudy | 25 | 15 | 25 | 25 |
| Rain | 25 | 10 | 20 | 10 |
| Storm | 5 | 10 | 10 | 5 |
| Snow | 0 | 0 | 5 | 25 |
| Fog | 5 | 5 | 0 | 5 |
Notable patterns:
- Summer is 60% Clear -- the best season for outdoor work.
- Winter has a 25% Snow chance -- the highest of any weather type besides Clear.
- Fog only appears in Spring, Summer, and Winter (0% in Autumn).
- Storms are rare in Spring and Winter (5%), more common in Summer and Autumn (10%).
Source: src/sim/climate.rs, Weather::season_weights.
Seasonal Mood Modifiers
In addition to weather, each season applies a persistent mood modifier to all elves. These are refreshed at every day boundary using replace semantics.
| Season | Modifier | Value | Duration |
|---|---|---|---|
| Spring | "Spring optimism" | +2 | 1 day (100 ticks) |
| Summer | (none) | -- | -- |
| Autumn | "Autumn melancholy" | -1 | 1 day (100 ticks) |
| Winter | "Winter stillness" | -1 | 1 day (100 ticks) |
Spring is the most mood-positive season (+2 baseline), while Autumn and Winter carry a persistent -1 drag on morale. Summer is neutral -- no seasonal modifier, but typically benefits from 60% Clear weather.
Source: src/sim/systems.rs, seasonal_mood_system.
Weather Mood Effects
These are applied by the weather mood system. "Outdoors" means the elf is more than Manhattan distance 2 from any Dwelling, Workshop, or Feast Hall.
| Weather/Condition | Target | Mood Value | Duration | Notes |
|---|---|---|---|---|
| Rain (outdoors) | Outdoor elves | -1 "Caught in rain" | 50 ticks | Shelter negates |
| Snow (outdoors) | Outdoor elves | +2 "Snow-covered landscape" | 50 ticks | Beauty bonus |
| Storm | All elves | 0 "Sheltering from storm" | 50 ticks | Flavor only |
| Fog | Musicians (skill > 5) | +1 "Mysterious fog" | 50 ticks | Also +1 Nature inspiration |
| Cold (temp < 25, outdoors) | Outdoor elves | -2 "Chilled" | 50 ticks | Shelter negates |
| Hot (temp > 75) | All elves | -1 "Sweltering" | 50 ticks | Cannot be avoided |
Mood effects use replace semantics -- they refresh the duration instead of stacking. An elf standing in rain for 100 ticks gets one -1 modifier refreshed repeatedly, not multiple stacking penalties.
Source: src/sim/systems.rs, weather_mood_system -- uses mood.replace().
Foraging Multipliers
The seasonal foraging multiplier affects passive sustenance gain when elves forage:
| Season | Multiplier | Effective Foraging |
|---|---|---|
| Spring | 1.0x | Baseline |
| Summer | 1.5x | Peak abundance |
| Autumn | 1.25x | Slight bonus |
| Winter | 0.5x | Halved |
Foraging happens every 10 ticks for elves with sustenance below 40. On forest terrain, the base gain is 8; on meadow or other walkable terrain, it is 5 (capped at 60). The seasonal multiplier applies to the overall foraging economy of the settlement.
Source: src/sim/climate.rs, Climate::season_foraging_multiplier. src/sim/systems.rs, foraging_system.
Interactions
Forest Spirit
The Forest Spirit responds differently to clearing based on season. Clearing forest in Spring adds +7 anger (vs. +5 in other seasons) because the forest is awakening. The spirit's natural dawn decay and garden calming also vary by season -- see the Forest Spirit page for details.
Composition and Inspiration
Fog weather adds +1 to the Nature inspiration channel for all elves, which can help trigger compositions. Snow gives a beauty mood bonus that feeds into morale, indirectly improving composition emotional depth.
Needs Decay
Weather does not directly change needs decay rates, but the mood modifiers it produces affect morale, which determines the morale state (Inspired/Normal/Stressed/Breaking). See Needs & Mood. Morale state in turn affects work speed: Inspired elves get +2 work speed, Stressed elves get -1.
Building Shelter
Roofed buildings (Dwelling, Workshop, Feast Hall) provide shelter within Manhattan distance 2. Gardens do not provide shelter -- they are open-air structures. In rainy or cold weather, having roofed buildings near work areas protects your elves from mood penalties.
Tips
-
Stockpile food before Winter. Foraging drops to 0.5x, and Snow weather (25% chance) adds further pressure. Aim for a food stockpile of 15+ by day 50 (mid-Autumn).
-
Summer is build season. With 60% Clear weather and 1.5x foraging, your elves can work outdoors without mood penalties and food accumulates naturally. Queue major construction projects for Summer.
-
Build roofed structures early. A single Dwelling shelters all elves within 2 tiles from rain (-1 mood) and cold (-2 mood). Place it centrally.
-
Fog is a gift for musicians. If you have a high-skill composer (Music > 5), fog gives them +1 mood and +1 Nature inspiration. Don't pull them indoors during fog.
-
Snow is surprisingly pleasant. The +2 beauty mood bonus outweighs any cold penalty for elves near shelter. Let your elves enjoy it, but make sure they have a warm building nearby.
-
Watch season transitions. Weather always rerolls at a season boundary. The jump from Autumn to Winter can bring sudden Snow (25% weight) and cold temperatures. Prepare your settlement layout accordingly.
-
Spring clearing is dangerous. Clearing forest in Spring costs +7 spirit anger instead of +5. If you need to expand, wait until Summer when the spirit is less reactive.
-
Night is the coldest period. At -8 from base temperature, Night in Winter can push temperatures down to single digits. Ensure resting elves are near Dwellings.
-
Spring is the best season for morale. The +2 "Spring optimism" modifier offsets rain penalties and helps recovering Discontented elves. Time revel performances for Spring to maximize audience mood.
-
Autumn and Winter stack mood drags. The -1 seasonal modifier on top of cold weather (-2) and rain (-1) can push morale down quickly. Plan building shelter completion before Autumn arrives.