blob: 8ec1f9b0641201d9d8f9d5e0563ba549e49b6823 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import type { BaseEntity, PersonId, PlaceId } from '@hollowdark/engine/entities/base'
export type PlaceType = 'region' | 'city' | 'neighborhood' | 'specific_location'
/**
* Cultural character of a region or city — drives event textures,
* stereotypes, attitudes. Open-ended because cultures differ on many axes;
* specific named attributes live alongside this via content references.
*/
export interface CultureDescriptor {
readonly dominantFaithId: string | null
readonly cosmopolitanism: number
readonly conservatism: number
readonly hospitality: number
readonly tags: readonly string[]
}
export interface ClimateDescriptor {
readonly latitudeBand: 'tropical' | 'temperate' | 'continental' | 'arid' | 'alpine' | 'tundra'
readonly summerSeverity: number
readonly winterSeverity: number
readonly rainfall: number
readonly notes: string
}
export interface EconomicCharacter {
readonly primaryIndustries: readonly string[]
readonly inequality: number
readonly prosperity: number
}
export interface PoliticalCharacter {
readonly form: 'democracy' | 'mixed' | 'authoritarian' | 'oligarchy' | 'other'
readonly stability: number
readonly currentTensions: readonly string[]
}
export interface Place extends BaseEntity<PlaceId, 'place'> {
readonly name: string
readonly type: PlaceType
readonly parentPlaceId: PlaceId | null
readonly culture: CultureDescriptor | null
readonly climate: ClimateDescriptor | null
readonly economy: EconomicCharacter | null
readonly politics: PoliticalCharacter | null
readonly population: number
readonly ownerId: PersonId | null
readonly currentResidents: readonly PersonId[]
readonly propertyValue: number | null
}
|