Table of Contents

Class NameGrammarTemplate

Namespace
FishMMO.Shared.NameGeneration
Assembly
FishMMO.Shared.dll

The universal vocabulary every generator mode shares: the meaning tables that turn syllables into a gloss ("silver-", "of ancient", "light"), the title grammar (deeds, places, outcomes), the item vocabulary, and the city and POI tables that are not tied to one race or biome.

Exactly one of these is active; the last one loaded wins and registers itself with NameGrammar.

[CreateAssetMenu(fileName = "Name Grammar", menuName = "FishMMO/Naming/Name Grammar", order = 4)]
public class NameGrammarTemplate : CachedScriptableObject<NameGrammarTemplate>, ICachedObject
Inheritance
Object
ScriptableObject
NameGrammarTemplate
Implements
Inherited Members
ScriptableObject.SetDirty()
ScriptableObject.CreateInstance<T>()
Object.GetEntityId()
Object.GetInstanceID()
Object.GetHashCode()
Object.InstantiateAsync<T>(T)
Object.InstantiateAsync<T>(T, Transform)
Object.InstantiateAsync<T>(T, Vector3, Quaternion)
Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion, Transform)
Object.Instantiate(Object)
Object.Instantiate(Object, Scene)
Object.Instantiate<T>(T, InstantiateParameters)
Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
Object.Instantiate(Object, Transform)
Object.Instantiate<T>(T)
Object.Instantiate<T>(T, Vector3, Quaternion)
Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
Object.Instantiate<T>(T, Transform)
Object.Destroy(Object)
Object.DestroyImmediate(Object)
Object.DontDestroyOnLoad(Object)
Object.DestroyObject(Object)
Object.FindObjectsOfType<T>()
Object.FindObjectsByType<T>(FindObjectsSortMode)
Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
Object.FindObjectOfType<T>()
Object.FindFirstObjectByType<T>()
Object.FindAnyObjectByType<T>()
Object.FindFirstObjectByType<T>(FindObjectsInactive)
Object.FindAnyObjectByType<T>(FindObjectsInactive)
Object.FindObjectsByType<T>()
Object.FindObjectsByType<T>(FindObjectsInactive)
Object.ToString()
Object.name
Object.hideFlags

Fields

BattleQualifiers

public string[] BattleQualifiers

Field Value

string[]

BiomeMeaningCodas

public List<StringMapping> BiomeMeaningCodas

Field Value

List<StringMapping>

BiomeMeaningOnsets

[Header("Biome meaning — scanned in order; first match wins")]
public List<StringMapping> BiomeMeaningOnsets

Field Value

List<StringMapping>

CityPrefixes

[Header("Cities")]
[Tooltip("Leading words for city names, e.g. 'Old', 'North'.")]
public string[] CityPrefixes

Field Value

string[]

CitySuffixMeanings

[Tooltip("City suffix → meaning, e.g. 'hold' → 'stronghold'.")]
public List<StringMapping> CitySuffixMeanings

Field Value

List<StringMapping>

ComposedAdjectives

public string[] ComposedAdjectives

Field Value

string[]

ComposedQualifiers

public string[] ComposedQualifiers

Field Value

string[]

DeedObjects

public string[] DeedObjects

Field Value

string[]

DeedVerbs

[Header("Titles — legends")]
public string[] DeedVerbs

Field Value

string[]

EraQualifiers

public string[] EraQualifiers

Field Value

string[]

FallbackCitySuffixes

[Tooltip("Used when a race has no suffixes for the requested city type.")]
public string[] FallbackCitySuffixes

Field Value

string[]

GenericOccupations

[Tooltip("Trades any race may practise, used when a race lists none of its own.")]
public string[] GenericOccupations

Field Value

string[]

ItemEpithets

public string[] ItemEpithets

Field Value

string[]

ItemGenericNouns

[Tooltip("Nouns used when the item type has no entry above.")]
public string[] ItemGenericNouns

Field Value

string[]

ItemHeroRelations

[Tooltip("Patterns relating an item to a person: {0} = item noun, {1} = character name.")]
public string[] ItemHeroRelations

Field Value

string[]

ItemLegendaryPrefixes

public string[] ItemLegendaryPrefixes

Field Value

string[]

ItemPlaceRelations

[Tooltip("Patterns relating an item to a place: {0} = item noun, {1} = place name.")]
public string[] ItemPlaceRelations

Field Value

string[]

ItemTypeNouns

[Tooltip("Item type (lowercase ItemType name) → nouns for '<Noun> of <Root>' names.")]
public List<StringListMapping> ItemTypeNouns

Field Value

List<StringListMapping>

ItemTypeSuffixes

[Header("Items")]
[Tooltip("Item type (lowercase ItemType name) → name endings, e.g. 'weapon' → bane, cleaver, fang.")]
public List<StringListMapping> ItemTypeSuffixes

Field Value

List<StringListMapping>

MeaningCodas

[Tooltip("Name ending → meaning fragment, e.g. 'iel' → 'light'.")]
public List<StringMapping> MeaningCodas

Field Value

List<StringMapping>

MeaningMiddles

[Tooltip("Middle syllable → connective, e.g. 'al' → 'of ancient'.")]
public List<StringMapping> MeaningMiddles

Field Value

List<StringMapping>

MeaningOnsets

[Header("Character meaning — scanned in order; first match wins")]
[Tooltip("Name start → meaning fragment, e.g. 'Ael' → 'silver-'.")]
public List<StringMapping> MeaningOnsets

Field Value

List<StringMapping>

MeaningTitleBias

[Tooltip("Meaning keyword → title category it leans toward (honorific / epithet / rank / legend).")]
public List<StringMapping> MeaningTitleBias

Field Value

List<StringMapping>

OrdinalTakingHonorifics

[Tooltip("Honorifics that may take an ordinal: King, Third of his Name — but never Sir.")]
public string[] OrdinalTakingHonorifics

Field Value

string[]

Ordinals

[Header("Titles — ordinals and pronouns")]
public string[] Ordinals

Field Value

string[]

Outcomes

public string[] Outcomes

Field Value

string[]

POITypeSuffixes

[Header("Points of interest")]
[Tooltip("POI type (lowercase POIType name) → type-specific suffixes, e.g. 'shrine' → Shrine, Altar, Fane.")]
public List<StringListMapping> POITypeSuffixes

Field Value

List<StringListMapping>

PlaceEpithetPatterns

[Header("Titles — composition")]
[Tooltip("{0} = place name. Example: 'of {0}', 'bane of {0}'.")]
public string[] PlaceEpithetPatterns

Field Value

string[]

PlaceTakingHonorifics

[Tooltip("Honorifics that may take 'of <place>': Lord of Ashford, but never Sir of Ashford.")]
public string[] PlaceTakingHonorifics

Field Value

string[]

PossessivePronouns

public string[] PossessivePronouns

Field Value

string[]

TitleTemplates

[Header("Titles — compositions")]
[Tooltip("How titles are assembled, by category and register. Empty falls back to the built-in set.")]
public List<TitleTemplate> TitleTemplates

Field Value

List<TitleTemplate>

UniversalPlaces

public string[] UniversalPlaces

Field Value

string[]

Methods

OnLoad(string, string, int)

Virtual method called when a ScriptableObject is successfully added to the cache. Derived classes can override this method to add custom logging, initialization, or other specific logic that should occur upon caching.

public override void OnLoad(string typeName, string resourceName, int resourceID)

Parameters

typeName string

The name of the type (e.g., "RaceTemplate") under which the object is currently being cached.

resourceName string

The name of the ScriptableObject asset (e.g., "HumanRace").

resourceID int

The deterministic ID generated for the resource instance.

OnUnload(string, string, int)

Virtual method called when a ScriptableObject is successfully removed from the cache. Derived classes can override this method to add custom logging, cleanup, or other specific logic that should occur upon uncaching.

public override void OnUnload(string typeName, string resourceName, int resourceID)

Parameters

typeName string

The name of the type (e.g., "RaceTemplate") from which the object is being removed from cache.

resourceName string

The name of the ScriptableObject asset (e.g., "HumanRace").

resourceID int

The deterministic ID of the resource instance.