Lifecycle & Aging

Elves age. Skill comes easier when they are young; compositions reach their peak in their prime; their voice carries further once they are elders. When an elder has lived a satisfied life long enough, they do not depart in bitterness -- they attend one last revel, say goodbye, and leave a legacy behind that the colony remembers.

Overview

Every elf carries an Age component set at spawn. Age measures ticks lived since birth. Four stages bracket that lifespan, each shifting how the elf interacts with nearly every downstream system:

StageTicks LivedGame Days
Young0 -- 4990 -- 4
Prime500 -- 1,9995 -- 19
Mature2,000 -- 3,99920 -- 39
Elder4,000+40+

(DAY_LENGTH = 100 ticks.)

Stage is derived from tick - birth_tick on demand -- it is not stored. A cached last_known_stage field lets transition detection fire exactly once per boundary crossing.

Three systems drive the lifecycle:

  • age_stage_system (once per day) -- emits StageTransition events when the cached stage differs from the current one.
  • elder_fulfillment_system (every 50 ticks) -- tracks how long each elder has been satisfied; marks them Fulfilled after 500 ticks above satisfaction 70.
  • farewell_departure_system (every tick) -- processes elders marked AwaitingFarewell, spawning a LegacyFigure record and despawning the elder.

Source: crates/er-sim/src/sim/systems/lifecycle.rs; crates/er-sim/src/sim/components.rs, Stage, Age, Fulfilled, FulfillmentProgress, AwaitingFarewell, LegacyFigure.

How It Works

Stage Multipliers

Each stage scales four numeric bands of the elf's behavior. The multipliers are read at call-sites throughout the sim; no single system applies them all.

MultiplierYoungPrimeMatureElderReads Applied In
Skill XP1.3x1.0x0.7x0.5xcompose, build, gather XP awards
Composition quality (mastery + originality)0.8x1.2x1.0x1.1xcompose system
Physical (work progress)1.0x1.0x0.8x0.5xbuild, gather task progress
Influence (prestige weight in satisfaction)0.7x1.0x1.3x1.5xsatisfaction prestige term

The shape is deliberate:

  • Young elves learn fast (1.3x XP) but make lower-quality work (0.8x quality).
  • Prime elves produce their best compositions (1.2x quality) with normal XP and physical ability.
  • Mature elves lose some XP gain (0.7x) and physical rate (0.8x) but their prestige weighs more heavily in satisfaction (1.3x).
  • Elder elves move slowly (0.5x physical, 0.5x XP) but their work carries unusual emotional weight (+10 to the emotional score on every composition, on top of 1.1x base quality). Their prestige also weighs more in satisfaction than any other stage (1.5x).

Elders are slower hands, but deeper voices.

Source: crates/er-sim/src/sim/components.rs, Stage::skill_xp_multiplier, comp_quality_multiplier, physical_multiplier, influence_multiplier, elder_emotional_bonus.

Personality Maturation Rate

The personality maturation system -- which nudges expressed personality values toward their roots -- also scales by age stage. Young elves change most quickly; elders are almost immovable:

StageMaturation Rate (per 50-tick cycle)
Young0.04 (4%)
Prime0.02 (2%)
Mature0.01 (1%)
Elder0.005 (0.5%)

This means a scar applied in youth reshapes the elf fast; a scar applied to an elder barely shifts their behavior before they depart. Identity calcifies with age.

Source: crates/er-sim/src/sim/components.rs, Stage::maturation_rate; applied in crates/er-sim/src/sim/systems/mood.rs, personality_maturation_system.

Stage Transitions

Once per day (tick multiple of DAY_LENGTH = 100, skipping tick 0), every elf's current stage is compared to their cached last_known_stage. If the stage advanced, the cache updates and a StageTransition { elf, from, to } cultural event fires.

There is no hard cap at Elder -- once an elf reaches stage Elder at tick 4,000, they remain Elder for the rest of their life. Departure happens through satisfaction mechanics, not a hard age limit.

Source: crates/er-sim/src/sim/systems/lifecycle.rs, age_stage_system.

Elder Fulfillment

When an elf reaches Elder stage and has satisfaction > 70, an invisible counter starts. Every 50 ticks:

  • If their satisfaction is still above 70, add +50 to FulfillmentProgress.ticks_above.
  • If their satisfaction drops to 70 or below, reset FulfillmentProgress to zero. Partial progress does not persist.

When the counter reaches 500 ticks (10 game days of continuous happiness as an elder), the elf is marked Fulfilled. The FulfillmentProgress component is removed and an ElderFulfilled event fires.

An elf who spends their elder years bouncing between content and discontent never completes the fulfillment path. The fulfillment counter is strict -- sustained contentment, not average contentment, is what marks an elder for an honored departure.

Source: crates/er-sim/src/sim/systems/lifecycle.rs, elder_fulfillment_system -- threshold 70.0, accumulator step 50, completion at 500.

The Farewell Revel

Being marked Fulfilled does not trigger an immediate departure. Instead, the elf waits for the next revel they attend. When that revel concludes, the finalization pass scans attendees for the Fulfilled marker and tags each one with AwaitingFarewell.

This is deliberate: the revel is the farewell. The community gathers, the fulfilled elder performs or witnesses one last performance, and only then do they leave. There is no silent fulfilled departure.

On the next tick after being tagged, farewell_departure_system runs the full departure sequence:

  1. Build a LegacyFigure record from the elder's portfolio, prestige, love reactions, and revels performed.
  2. Emit a FulfilledDeparture { elf, legacy_score } event (notable priority).
  3. Apply the fulfilled-departure mood cascade to every elf in the elder's relationship list.
  4. Apply any apprenticeship cleanup (see apprenticeship).
  5. Despawn the elder.

Source: crates/er-sim/src/sim/systems/revel.rs (Fulfilled detection + AwaitingFarewell tag at line 523); crates/er-sim/src/sim/systems/lifecycle.rs, farewell_departure_system.

Fulfilled Departure Mood Cascade

A fulfilled departure is bittersweet, not devastating. Mood effects on surviving elves are softer than for a dissatisfied departure, and the mourning period is shorter:

Relationship to Departed ElderMood ModifierDuration
Partner-8 "Partner departed in fulfillment"300 ticks
Friend-5 "Friend departed in fulfillment"200 ticks
Rival+2 "Rival departed"50 ticks
Acquaintance-1 "Elder departed"50 ticks

Friends with strength >= 60 and all Partners also enter a Mourning state -- but the Mourning component is created with ticks_remaining: 150, shorter than the 200-tick mourning that follows dissatisfied departures. The shortening reflects the different emotional shape: the community mourns, but the mourning is wrapped in pride.

Source: crates/er-sim/src/sim/systems/lifecycle.rs, farewell_departure_system -- mood matches at lines 137-141, mourning at line 159.

Legacy Figures

When a fulfilled elder departs, a LegacyFigure record is pushed onto the colony's permanent legacy list. Legacy figures outlive the elves themselves -- they are cultural memory the simulation never forgets.

A LegacyFigure captures:

FieldSource
nameElder's display name
gestaltPersonality gestalt at departure (e.g., DeepRoot, WildFlame)
composition_countPortfolio size at departure
legacy_scorecomposition_count * 2 + love_reactions * 3 + revels_performed + prestige_tier * 5
departure_dayGame day of departure (tick / 100)
departure_reasonDepartureReason::Fulfilled

The legacy_score is a rough numeric summary of cultural impact. A prolific Legendary-tier composer who performed at many revels will leave a higher-scored legacy than a quiet Mature-stage soloist. The score is also announced in the FulfilledDeparture event.

Legacy figures persist in the colony state; they are the kind of historical record a future UI panel could render as a "Hall of Elders." Dissatisfied departures do not currently push LegacyFigure records -- only fulfilled ones earn the remembrance.

Source: crates/er-sim/src/sim/components.rs, LegacyFigure; crates/er-sim/src/sim/systems/lifecycle.rs, score at line 106.


Interactions

Satisfaction & Departure

Fulfilled departure is a separate departure path from the satisfaction-triggered one. The discontented timeline (300 ticks warning, 500 more ticks to depart) does not apply to elders who are flourishing -- they leave through a different gate, at a different cadence, with a different mood footprint on those they leave behind.

The satisfaction formula itself also weights elder elves differently: the prestige bonus term is scaled by the elder's 1.5x influence multiplier. A renowned elder's prestige contributes more heavily to their own satisfaction than a young elf's would, which makes it easier for them to accumulate the 500 ticks of sustained happiness that fulfillment requires.

Personality

The personality maturation system reads the elf's age stage to set the convergence rate. Elves in crisis (scarred) heal quickly when young and slowly when old. An Elder who loses a partner carries that scar for the remainder of their life with very little behavioral adjustment.

Compositions & Revels

Every composition reads the composer's stage through Age to scale mastery and originality by comp_quality_multiplier. Elder compositions receive a flat +10 to their emotional score on top of that multiplier, making late-career works often the most emotionally resonant pieces in a colony's portfolio.

At revel time, the finalization pass checks for attending elders marked Fulfilled. An elder who is fulfilled and attends any revel will depart after that revel -- your scheduling of revels implicitly schedules their goodbyes.

Apprenticeship

When an elder with AwaitingFarewell departs, the farewell system calls cleanup_apprenticeship_on_departure. If the elder was mentoring an apprentice, the student loses their Apprenticeship component and receives a -8 "Mentor departed" mood modifier for 200 ticks.

Students graduated under the elder retain their permanent TrainedBy lineage marker -- the master's name lives on in the student's detail panel even though the elder is gone.

Skills & Work

Build and gather task progress is scaled by physical_multiplier -- Mature elves work at 80% speed and Elder elves at 50%. Skill XP gains are scaled by skill_xp_multiplier, so aging elves climb skill levels slowly even when they work often. A Young elf learning their craft gains XP 2.6x faster than an Elder performing the same task (1.3 / 0.5).


Tips

  • Schedule revels for your elders. An elder who reaches Fulfilled status is waiting for the next revel to say goodbye. If you want to delay a beloved elder's departure, holding off on revels buys time -- but keeping them in an environment that produces sustained satisfaction is already in tension with extending their life indefinitely. The simulation is designed for graceful exits.

  • Prime is the composition sweet spot. Stage Prime gives 1.2x quality with full physical and XP multipliers, and no elder emotional bonus -- pure technical peak. If you are trying to push a specific elf toward a Magnum Opus (skill 10, inspiration > 90, mood > 50), their Prime window (ticks 500--1,999, days 5--19) is when the composition quality math is most forgiving.

  • Elder prestige compounds. The 1.5x influence multiplier on prestige means an elder with a high prestige tier gets more satisfaction from their reputation than any other stage. Keeping a prestige-Renowned elder's satisfaction above 70 long enough to trigger Fulfilled is easier than it looks; the system rewards long-lived success.

  • Young elves are emotionally volatile. 4% maturation rate means a scar applied in youth shifts their behavior visibly within a few days. Young elves who suffer heartbreak or unrequited love can change noticeably before you have time to stabilize them. Pair them with friends early.

  • Mourning for a fulfilled elder is shorter. 150 ticks vs 200 for dissatisfied departures. Your surviving elves will compose fewer Elegies after a fulfilled departure than they will after a bitter one. If you're chasing Elegy-tagged compositions, dissatisfaction cascades produce them more reliably -- though at the cost of a colony that feels worse.

  • LegacyFigures are cumulative, not displayed (yet). The simulation records them permanently, but there is no in-game panel that lists them. This is future UI territory -- a Hall of Elders that shows every fulfilled departure's name, gestalt, compositions, and score. The data is already being collected for that day.

  • Cascade softness matters for colony resilience. A dissatisfied departure gives friends -10 mood for 300 ticks; a fulfilled departure gives -5 for 200. Across a long-running colony, a string of fulfilled departures leaves the survivors in noticeably better emotional shape than a string of dissatisfied ones. The lifecycle system is balanced so that peaceful exits preserve the colony's capacity for the next generation.