src/traits
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?
optionalactor?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:87
Optional source actor id.
expect
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?
optionallabel?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35
Optional display label.
Inherited from
GameboardQuestObjectiveBase.label
targetActor?
optionaltargetActor?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:89
Optional target actor id.
targetTile?
optionaltargetTile?: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?
optionallabel?: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
ReachTileQuestObjectiveReachActorQuestObjectiveInteractActorQuestObjectiveDefeatActorQuestObjectiveCollisionQuestObjective
Properties
id
id:
string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:33
Stable objective id within the quest.
label?
optionallabel?: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?
optionalcompletedAtStep?: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?
optionallabel?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35
Optional display label.
Inherited from
GameboardQuestObjectiveBase.label
maxDistance?
optionalmaxDistance?: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?
optionallabel?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35
Optional display label.
Inherited from
GameboardQuestObjectiveBase.label
maxDistance?
optionalmaxDistance?: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?
optionallabel?:string
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:35
Optional display label.
Inherited from
GameboardQuestObjectiveBase.label
maxDistance?
optionalmaxDistance?: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
constAdjacentTo: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
constGAMEBOARD_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
constGameboardActor: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
constGameboardPatrolAgent: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
constGameboardPatrolState: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
constGameboardQuest: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
constGameboardState: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
constHexTileState: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
constIsActiveGameboardQuest:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:139
Marker trait for active quest entities.
IsBlockedGameboardQuest
constIsBlockedGameboardQuest:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:143
Marker trait for blocked quest entities.
IsBlockingActor
constIsBlockingActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:65
Marker trait for movement-blocking actors.
IsCoastPlacement
constIsCoastPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:191
Marker trait for coast placements.
IsCompletedGameboardQuest
constIsCompletedGameboardQuest:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:141
Marker trait for completed quest entities.
IsDecorationPlacement
constIsDecorationPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:193
Marker trait for decorative placements.
IsEnemyActor
constIsEnemyActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:57
Marker trait for enemy actors.
IsGameboardActor
constIsGameboardActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:51
Marker trait for all gameplay actors.
IsGameboardPatrolAgent
constIsGameboardPatrolAgent:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/patrol.ts:56
Marker trait for patrol agents.
IsGameboardPlacement
constIsGameboardPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:183
Marker trait for all board placement entities.
IsGameboardQuest
constIsGameboardQuest:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/quests.ts:137
Marker trait for quest entities.
IsGameboardTile
constIsGameboardTile:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:181
Marker trait for board tile entities.
IsHarborPlacement
constIsHarborPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:201
Marker trait for harbor-capable structure or prop placements.
IsHostileActor
constIsHostileActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:61
Marker trait for hostile actors.
IsInteractiveActor
constIsInteractiveActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:63
Marker trait for interactive actors.
IsMoving
constIsMoving:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/movement.ts:55
Marker trait for placements with active movement.
IsNpcActor
constIsNpcActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:55
Marker trait for NPC actors.
IsPlayerActor
constIsPlayerActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:53
Marker trait for player actors.
IsPropActor
constIsPropActor:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/actors.ts:59
Marker trait for prop actors.
IsPropPlacement
constIsPropPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:199
Marker trait for prop placements.
IsRiverPlacement
constIsRiverPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:189
Marker trait for river placements.
IsRoadPlacement
constIsRoadPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:187
Marker trait for road placements.
IsStackedTerrain
constIsStackedTerrain:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:203
Marker trait for elevated or explicitly stacked terrain placements.
IsStructurePlacement
constIsStructurePlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:195
Marker trait for structure placements.
IsTerrainPlacement
constIsTerrainPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:185
Marker trait for terrain and transition placements.
IsUnitPlacement
constIsUnitPlacement:TagTrait
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:197
Marker trait for unit placements.
MovementAgent
constMovementAgent: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
constMovementPathState: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
constPlacementOccupiesTile: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
constPlacementOnTile: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
constPlacementState: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
constRequiresExtraAsset: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
constTileConnectivity: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
constTileCoordinates: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
constTileElevation: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
constTileRenderState: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
constTileTagList: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
constTileTerrain:Trait<{terrain:GameboardTerrain; }>
Defined in: packages/declarative-hex-worlds/src/traits/board.ts:95
Decomposed terrain trait for biome and placement-rule systems.
