Home
Pages

src/traits

declarative-hex-worlds

declarative-hex-worlds


declarative-hex-worlds / src/traits

src/traits

src/traits/ — umbrella over every koota trait() declaration the library defines.

Traits live in this sub-package (not scattered through sibling sub-packages) specifically to avoid the koota↔gameboard↔scenario top-level evaluation cycle that the original flat src/*.ts layout dodged accidentally. Each trait file imports only koota (the npm dep) and pure-type imports — never runtime values from sibling sub-packages.

Per PRD §6 invariant 7 (splitting: true + trait identity) each trait is exported from exactly one location so reference-equality holds regardless of which subpath a consumer imports from.

Interfaces

CollisionQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:83

Objective completed when a collision report matches an expected state.

Extends

Properties

actor?

optional actor?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:87

Optional source actor id.

expect

expect: GameboardQuestCollisionExpectation

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:93

Expected collision state.

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

Inherited from

GameboardQuestObjectiveBase.id

kind

kind: "collision"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:85

Objective discriminator.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.

Inherited from

GameboardQuestObjectiveBase.label

targetActor?

optional targetActor?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:89

Optional target actor id.

targetTile?

optional targetTile?: string | HexCoordinates

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:91

Optional target tile coordinates or tile key.


DefeatActorQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:75

Objective completed when a target actor no longer exists.

Extends

Properties

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

Inherited from

GameboardQuestObjectiveBase.id

kind

kind: "defeat-actor"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:77

Objective discriminator.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.

Inherited from

GameboardQuestObjectiveBase.label

targetActor

targetActor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:79

Target actor id.


GameboardQuestObjectiveBase

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:31

Shared fields for every quest objective.

Extended by

Properties

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.


GameboardQuestObjectiveProgress

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:105

Runtime progress for one quest objective.

Properties

completedAtStep?

optional completedAtStep?: number

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:113

Simulation/system step when completion or blocking occurred.

detail

detail: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:111

Human-readable progress detail.

objectiveId

objectiveId: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:107

Objective id.

status

status: GameboardQuestObjectiveStatus

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:109

Objective status.


InteractActorQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:63

Objective completed when an actor interacts with another actor.

Extends

Properties

actor

actor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:67

Source actor id.

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

Inherited from

GameboardQuestObjectiveBase.id

kind

kind: "interact-actor"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:65

Objective discriminator.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.

Inherited from

GameboardQuestObjectiveBase.label

maxDistance?

optional maxDistance?: number

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:71

Maximum accepted interaction distance.

targetActor

targetActor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:69

Target actor id.


ReachActorQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:51

Objective completed when an actor reaches another actor.

Extends

Properties

actor

actor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:55

Source actor id.

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

Inherited from

GameboardQuestObjectiveBase.id

kind

kind: "reach-actor"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:53

Objective discriminator.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.

Inherited from

GameboardQuestObjectiveBase.label

maxDistance?

optional maxDistance?: number

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:59

Maximum accepted distance from the target actor.

targetActor

targetActor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:57

Target actor id.


ReachTileQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:39

Objective completed when an actor reaches a tile.

Extends

Properties

actor

actor: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:43

Source actor id.

id

id: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33

Stable objective id within the quest.

Inherited from

GameboardQuestObjectiveBase.id

kind

kind: "reach-tile"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:41

Objective discriminator.

label?

optional label?: string

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35

Optional display label.

Inherited from

GameboardQuestObjectiveBase.label

maxDistance?

optional maxDistance?: number

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:47

Maximum accepted distance from the target tile.

tile

tile: string | HexCoordinates

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:45

Target tile coordinates or tile key.

Type Aliases

BuiltInGameboardMovementProfileId

BuiltInGameboardMovementProfileId = "ground" | "worker" | "cavalry" | "ship" | "flying"

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:10

Built-in movement profile ids for common medieval board actors.


GameboardActorKind

GameboardActorKind = "player" | "npc" | "enemy" | "prop" | "unit" | "neutral" | string & object

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:16

Actor role used by collision, targeting, commands, and SimpleRPG fixtures.


GameboardActorMetadataValue

GameboardActorMetadataValue = string | number | boolean | null

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:26

Serializable actor metadata value mirrored into Koota state.


GameboardMovementProfileId

GameboardMovementProfileId = BuiltInGameboardMovementProfileId | string & object

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:13

Movement profile id accepted by movement helpers (built-in or custom string).


GameboardMovementStatus

GameboardMovementStatus = "idle" | "ready" | "moving" | "completed" | "blocked" | "out-of-range"

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:16

Runtime movement path status for a movement agent.


GameboardPatrolStatus

GameboardPatrolStatus = "idle" | "waiting" | "requested" | "moving" | "completed" | "blocked" | "paused"

Defined in: packages/declarative-hex-worlds/src/traits/patrol.ts:10

Runtime patrol status for a patrol agent.


GameboardQuestCollisionExpectation

GameboardQuestCollisionExpectation = "can-enter" | "blocked" | "hostile" | "interactive" | "prop"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:21

Collision expectation supported by collision quest objectives.


GameboardQuestMetadataValue

GameboardQuestMetadataValue = string | number | boolean | null

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:28

Serializable quest metadata value.


GameboardQuestObjective

GameboardQuestObjective = ReachTileQuestObjective | ReachActorQuestObjective | InteractActorQuestObjective | DefeatActorQuestObjective | CollisionQuestObjective

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:97

Quest objective union.


GameboardQuestObjectiveStatus

GameboardQuestObjectiveStatus = "pending" | "completed" | "blocked"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:19

Runtime quest objective status.


GameboardQuestStatus

GameboardQuestStatus = "pending" | "active" | "completed" | "blocked"

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:17

Runtime quest lifecycle status.

Variables

AdjacentTo

const AdjacentTo: Relation<Trait<{ edge: number; }>>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:223

Directional neighbor relation between adjacent axial hex tiles.


GAMEBOARD_QUEST_SCHEMA_VERSION

const GAMEBOARD_QUEST_SCHEMA_VERSION: "1.0.0" = '1.0.0'

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:14

Schema version written to quest trait state.


GameboardActor

const GameboardActor: Trait<{ actorId: string; blocksMovement: boolean; faction: string | undefined; hostile: boolean; interactive: boolean; kind: GameboardActorKind; metadata: () => Record<string, GameboardActorMetadataValue>; tags: () => string[]; team: string | undefined; }>

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:29

Actor trait attached to placement entities that participate in gameplay.


GameboardPatrolAgent

const GameboardPatrolAgent: Trait<{ active: boolean; currentWaypointIndex: number; loop: boolean; pauseTicks: number; roundsCompleted: number; routeId: string; segmentCosts: () => number[]; targetWaypointIndex: number; waitTicksRemaining: number; waypointKeys: () => string[]; }>

Defined in: packages/declarative-hex-worlds/src/traits/patrol.ts:20

Patrol agent trait storing route progress and wait state.


GameboardPatrolState

const GameboardPatrolState: Trait<{ lastPathKeys: () => string[]; reason: string | undefined; status: GameboardPatrolStatus; targetKey: string; }>

Defined in: packages/declarative-hex-worlds/src/traits/patrol.ts:44

Patrol state trait exposed for systems and UIs.


GameboardQuest

const GameboardQuest: Trait<{ activeObjectiveIndex: number; metadata: () => Record<string, GameboardQuestMetadataValue>; objectives: () => GameboardQuestObjective[]; progress: () => GameboardQuestObjectiveProgress[]; questId: string; schemaVersion: string; status: GameboardQuestStatus; title: string; }>

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:117

Quest trait storing definition, progress, active objective, and metadata.


GameboardState

const GameboardState: Trait<{ placementCount: number; schemaVersion: string; seed: string; shape: () => GameboardShape; textureSet: "default" | "fall" | "summer" | "winter"; tileCount: number; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:31

Board-level Koota trait with the deterministic plan metadata currently loaded into a world.


HexTileState

const HexTileState: Trait<{ baseAssetId: string; coastEdges: number; coastWaterless: boolean; coordinates: () => HexCoordinates; elevation: number; key: string; riverCrossing: "A" | "B" | undefined; riverCurvy: boolean; riverEdges: number; riverWaterless: boolean; roadEdges: number; roadSlope: "high" | "low" | undefined; supportAssetId: string; tags: () => string[]; terrain: GameboardTerrain; textureSet: "default" | "fall" | "summer" | "winter"; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:49

Full tile trait used for serialization, rendering, and coarse tile queries.


IsActiveGameboardQuest

const IsActiveGameboardQuest: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:139

Marker trait for active quest entities.


IsBlockedGameboardQuest

const IsBlockedGameboardQuest: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:143

Marker trait for blocked quest entities.


IsBlockingActor

const IsBlockingActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:65

Marker trait for movement-blocking actors.


IsCoastPlacement

const IsCoastPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:191

Marker trait for coast placements.


IsCompletedGameboardQuest

const IsCompletedGameboardQuest: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:141

Marker trait for completed quest entities.


IsDecorationPlacement

const IsDecorationPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:193

Marker trait for decorative placements.


IsEnemyActor

const IsEnemyActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:57

Marker trait for enemy actors.


IsGameboardActor

const IsGameboardActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:51

Marker trait for all gameplay actors.


IsGameboardPatrolAgent

const IsGameboardPatrolAgent: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/patrol.ts:56

Marker trait for patrol agents.


IsGameboardPlacement

const IsGameboardPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:183

Marker trait for all board placement entities.


IsGameboardQuest

const IsGameboardQuest: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:137

Marker trait for quest entities.


IsGameboardTile

const IsGameboardTile: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:181

Marker trait for board tile entities.


IsHarborPlacement

const IsHarborPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:201

Marker trait for harbor-capable structure or prop placements.


IsHostileActor

const IsHostileActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:61

Marker trait for hostile actors.


IsInteractiveActor

const IsInteractiveActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:63

Marker trait for interactive actors.


IsMoving

const IsMoving: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:55

Marker trait for placements with active movement.


IsNpcActor

const IsNpcActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:55

Marker trait for NPC actors.


IsPlayerActor

const IsPlayerActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:53

Marker trait for player actors.


IsPropActor

const IsPropActor: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:59

Marker trait for prop actors.


IsPropPlacement

const IsPropPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:199

Marker trait for prop placements.


IsRiverPlacement

const IsRiverPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:189

Marker trait for river placements.


IsRoadPlacement

const IsRoadPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:187

Marker trait for road placements.


IsStackedTerrain

const IsStackedTerrain: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:203

Marker trait for elevated or explicitly stacked terrain placements.


IsStructurePlacement

const IsStructurePlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:195

Marker trait for structure placements.


IsTerrainPlacement

const IsTerrainPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:185

Marker trait for terrain and transition placements.


IsUnitPlacement

const IsUnitPlacement: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:197

Marker trait for unit placements.


MovementAgent

const MovementAgent: Trait<{ movementBudget: number; profileId: GameboardMovementProfileId; remainingMovement: number; }>

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:25

Movement agent trait attached to placement entities that can move.


MovementPathState

const MovementPathState: Trait<{ cost: number; destinationKey: string; nextIndex: number; pathKeys: () => string[]; reason: string | undefined; spentCost: number; status: GameboardMovementStatus; visited: number; }>

Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:35

Runtime path state for a movement agent.


PlacementOccupiesTile

const PlacementOccupiesTile: Relation<Trait<{ blocksMovement: boolean; footprintIndex: number; occupancyGroup: string; originTileKey: string; }>>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:210

Non-exclusive relation from a placement to every tile in its footprint.


PlacementOnTile

const PlacementOnTile: Relation<Trait<Record<string, never>>>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:208

Exclusive relation from a placement to its origin tile.


PlacementState

const PlacementState: Trait<{ assetId: string; coordinates: () => HexCoordinates; elevation: number; elevationOffset: number; id: string; kind: GameboardPlacementKind; layer: GameboardPlacementLayer; metadata: () => Record<string, string | number | boolean | null>; order: number; position: () => WorldPosition; requiresExtra: boolean; rotationRadians: number; rotationSteps: number; scale: number; stackIndex: number | undefined; textureSet: "default" | "fall" | "summer" | "winter"; tileKey: string; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:143

Runtime placement trait for terrain overlays, structures, units, props, and externally registered pieces.


RequiresExtraAsset

const RequiresExtraAsset: TagTrait

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:205

Marker trait for placements whose assets are supplied by local EXTRA ingest.


TileConnectivity

const TileConnectivity: Trait<{ coastEdges: number; coastWaterless: boolean; riverCrossing: "A" | "B" | undefined; riverCurvy: boolean; riverEdges: number; riverWaterless: boolean; roadEdges: number; roadSlope: "high" | "low" | undefined; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:111

Decomposed edge connectivity trait used by roads, rivers, coasts, and pathing.


TileCoordinates

const TileCoordinates: Trait<{ key: string; q: number; r: number; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:85

Decomposed coordinate trait for systems that only need tile lookup data.


TileElevation

const TileElevation: Trait<{ baseAssetId: string; elevation: number; supportAssetId: string; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:101

Decomposed elevation trait for stacking, movement, and rendering systems.


TileRenderState

const TileRenderState: Trait<{ textureSet: "default" | "fall" | "summer" | "winter"; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:131

Decomposed render trait for systems that switch seasonal texture sets.


TileTagList

const TileTagList: Trait<() => string[]>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:137

Decomposed tag list trait used by selectors, recipes, and seeded generation.


TileTerrain

const TileTerrain: Trait<{ terrain: GameboardTerrain; }>

Defined in: packages/declarative-hex-worlds/src/traits/board.ts:95

Decomposed terrain trait for biome and placement-rule systems.