Name generation
From "Iron Sword" to "Vampiric Iron Sword of the Fortress" to "The Doombringer" — three weighted pools and a handful of gates.
How a name is composed
1. Unique path — if the rarity requires a legendary effect and the
UniqueNames pool has an eligible entry:
weighted pick → optional "The " prepended → done ("The Doombringer")
2. Base name — template BaseName → sub-type name → type name,
optionally replaced by a weighted pick from BaseNamePool
3. Prefix — only if rarity.MaxNameAffixCount ≥ 1 ("Vampiric …")
4. Suffix — only if rarity.MaxNameAffixCount ≥ 2 ("… of the Fortress")
Result: [prefix] base [suffix], joined with spaces.All pools live on a NameGenerationConfig asset, assigned on your GeneratorSettings. No config = plain base names, which is a perfectly valid minimal setup.
Name fragments — weighted and gated
| NameFragment field | Type | Description |
|---|---|---|
| Text | string | The fragment itself — "Gleaming", "of Embers", "Widowmaker". |
| Weight | float | Selection weight within its pool. |
| Required Rarities | RarityDefinition[] | Restrict a fragment to certain tiers — the example config locks plain material prefixes ("Iron", "Worn") to Common and reserves the 20 fantasy prefixes for Magic and above. |
| Required Item Types / Sub-Types | refs | "of Swiftness" for boots only, "Runed" for staves — empty means unrestricted. |
The example NameConfig demonstrates the full pattern: rarity-gated material vs. fantasy prefixes, a dozen generic suffixes, and ~21 unique names gated by sub-type so a sword never rolls a grimoire's legend.
Prefix/Suffix type on AffixDefinition is display metadata for your tooltips — the generated name draws exclusively from these NameFragment pools. That separation is deliberate: name flavor and stat budget stay independently tunable.Unique names
Tiers flagged RequiresLegendaryEffect (the example's Unique) skip the prefix/suffix machinery entirely and pick from UniqueNames. With PrependArticleToUniqueName on (the default), "Doombringer" becomes "The Doombringer" — with a guard against double-The when the fragment already starts with one.