@doodle-engine/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/conditions/index.d.ts +37 -0
- package/dist/conditions/index.d.ts.map +1 -0
- package/dist/core.cjs +2 -0
- package/dist/core.js +1192 -0
- package/dist/effects/index.d.ts +39 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/engine/index.d.ts +145 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/localization/index.d.ts +42 -0
- package/dist/localization/index.d.ts.map +1 -0
- package/dist/parser/index.d.ts +39 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/snapshot/index.d.ts +23 -0
- package/dist/snapshot/index.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/conditions.d.ts +155 -0
- package/dist/types/conditions.d.ts.map +1 -0
- package/dist/types/effects.d.ts +256 -0
- package/dist/types/effects.d.ts.map +1 -0
- package/dist/types/entities.d.ts +196 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/registry.d.ts +45 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/save.d.ts +18 -0
- package/dist/types/save.d.ts.map +1 -0
- package/dist/types/snapshot.d.ts +181 -0
- package/dist/types/snapshot.d.ts.map +1 -0
- package/dist/types/state.d.ts +85 -0
- package/dist/types/state.d.ts.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect processing system for the Doodle Engine.
|
|
3
|
+
*
|
|
4
|
+
* Effects are functions that mutate game state in response to player actions.
|
|
5
|
+
* They are executed when:
|
|
6
|
+
* - A dialogue node is reached
|
|
7
|
+
* - A player selects a dialogue choice
|
|
8
|
+
* - The engine processes narrative events
|
|
9
|
+
*
|
|
10
|
+
* All effects follow an immutable pattern - they return a new GameState
|
|
11
|
+
* rather than mutating the existing one.
|
|
12
|
+
*/
|
|
13
|
+
import type { Effect } from '../types/effects';
|
|
14
|
+
import type { GameState } from '../types/state';
|
|
15
|
+
/**
|
|
16
|
+
* Apply a single effect to the game state.
|
|
17
|
+
*
|
|
18
|
+
* @param effect - The effect to apply
|
|
19
|
+
* @param state - Current game state
|
|
20
|
+
* @returns New game state with the effect applied
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const effect: Effect = { type: 'setFlag', flag: 'metBartender' }
|
|
25
|
+
* const newState = applyEffect(effect, state)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function applyEffect(effect: Effect, state: GameState): GameState;
|
|
29
|
+
/**
|
|
30
|
+
* Apply multiple effects in sequence.
|
|
31
|
+
* Effects are processed in order, with each effect receiving the state
|
|
32
|
+
* produced by the previous effect.
|
|
33
|
+
*
|
|
34
|
+
* @param effects - Array of effects to apply
|
|
35
|
+
* @param state - Current game state
|
|
36
|
+
* @returns New game state with all effects applied
|
|
37
|
+
*/
|
|
38
|
+
export declare function applyEffects(effects: Effect[], state: GameState): GameState;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effects/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAoFvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAE3E"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Engine class for the Doodle Engine.
|
|
3
|
+
*
|
|
4
|
+
* The engine is the heart of the system. It:
|
|
5
|
+
* - Holds the content registry (static) and game state (dynamic)
|
|
6
|
+
* - Exposes API methods for player actions
|
|
7
|
+
* - Evaluates conditions and applies effects
|
|
8
|
+
* - Builds snapshots for the renderer
|
|
9
|
+
*
|
|
10
|
+
* One-way data flow: actions in, snapshots out.
|
|
11
|
+
*/
|
|
12
|
+
import type { ContentRegistry } from '../types/registry';
|
|
13
|
+
import type { GameState } from '../types/state';
|
|
14
|
+
import type { GameConfig } from '../types/entities';
|
|
15
|
+
import type { Snapshot } from '../types/snapshot';
|
|
16
|
+
import type { SaveData } from '../types/save';
|
|
17
|
+
/**
|
|
18
|
+
* The Doodle Engine.
|
|
19
|
+
*
|
|
20
|
+
* Manages game state, processes actions, and produces snapshots.
|
|
21
|
+
*/
|
|
22
|
+
export declare class Engine {
|
|
23
|
+
private registry;
|
|
24
|
+
private state;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new engine instance.
|
|
27
|
+
*
|
|
28
|
+
* @param registry - Content registry with all game entities
|
|
29
|
+
* @param state - Initial game state
|
|
30
|
+
*/
|
|
31
|
+
constructor(registry: ContentRegistry, state: GameState);
|
|
32
|
+
/**
|
|
33
|
+
* Start a new game from configuration.
|
|
34
|
+
*
|
|
35
|
+
* Initializes game state from the provided config and builds the initial snapshot.
|
|
36
|
+
*
|
|
37
|
+
* @param config - Game configuration with starting conditions
|
|
38
|
+
* @returns Initial snapshot
|
|
39
|
+
*/
|
|
40
|
+
newGame(config: GameConfig): Snapshot;
|
|
41
|
+
/**
|
|
42
|
+
* Load a game from save data.
|
|
43
|
+
*
|
|
44
|
+
* Restores game state and builds a snapshot.
|
|
45
|
+
*
|
|
46
|
+
* @param saveData - Saved game data
|
|
47
|
+
* @returns Snapshot of the loaded game
|
|
48
|
+
*/
|
|
49
|
+
loadGame(saveData: SaveData): Snapshot;
|
|
50
|
+
/**
|
|
51
|
+
* Save the current game state.
|
|
52
|
+
*
|
|
53
|
+
* Returns save data that can be serialized and stored.
|
|
54
|
+
*
|
|
55
|
+
* @returns Save data with current state
|
|
56
|
+
*/
|
|
57
|
+
saveGame(): SaveData;
|
|
58
|
+
/**
|
|
59
|
+
* Player selected a dialogue choice.
|
|
60
|
+
*
|
|
61
|
+
* Processes the choice effects and advances to the next node.
|
|
62
|
+
*
|
|
63
|
+
* @param choiceId - ID of the selected choice
|
|
64
|
+
* @returns New snapshot after processing the choice
|
|
65
|
+
*/
|
|
66
|
+
selectChoice(choiceId: string): Snapshot;
|
|
67
|
+
/**
|
|
68
|
+
* Player clicked on a character to talk.
|
|
69
|
+
*
|
|
70
|
+
* Starts the character's dialogue if they have one.
|
|
71
|
+
*
|
|
72
|
+
* @param characterId - ID of the character to talk to
|
|
73
|
+
* @returns New snapshot with dialogue started
|
|
74
|
+
*/
|
|
75
|
+
talkTo(characterId: string): Snapshot;
|
|
76
|
+
/**
|
|
77
|
+
* Player clicked on an item to pick it up.
|
|
78
|
+
*
|
|
79
|
+
* Adds the item to inventory if it's at the current location.
|
|
80
|
+
*
|
|
81
|
+
* @param itemId - ID of the item to take
|
|
82
|
+
* @returns New snapshot with item in inventory
|
|
83
|
+
*/
|
|
84
|
+
takeItem(itemId: string): Snapshot;
|
|
85
|
+
/**
|
|
86
|
+
* Player clicked on a map location to travel.
|
|
87
|
+
*
|
|
88
|
+
* Changes location, advances time based on distance, and checks for triggered dialogues.
|
|
89
|
+
*
|
|
90
|
+
* @param locationId - ID of the destination location
|
|
91
|
+
* @returns New snapshot at the new location
|
|
92
|
+
*/
|
|
93
|
+
travelTo(locationId: string): Snapshot;
|
|
94
|
+
/**
|
|
95
|
+
* Player wrote a note.
|
|
96
|
+
*
|
|
97
|
+
* Adds a note to the player's journal.
|
|
98
|
+
*
|
|
99
|
+
* @param title - Note title
|
|
100
|
+
* @param text - Note content
|
|
101
|
+
* @returns New snapshot with note added
|
|
102
|
+
*/
|
|
103
|
+
writeNote(title: string, text: string): Snapshot;
|
|
104
|
+
/**
|
|
105
|
+
* Player deleted a note.
|
|
106
|
+
*
|
|
107
|
+
* Removes a note from the player's journal.
|
|
108
|
+
*
|
|
109
|
+
* @param noteId - ID of the note to delete
|
|
110
|
+
* @returns New snapshot with note removed
|
|
111
|
+
*/
|
|
112
|
+
deleteNote(noteId: string): Snapshot;
|
|
113
|
+
/**
|
|
114
|
+
* Change the current language.
|
|
115
|
+
*
|
|
116
|
+
* Updates the locale and rebuilds the snapshot with new translations.
|
|
117
|
+
*
|
|
118
|
+
* @param locale - Language code (e.g., "en", "es")
|
|
119
|
+
* @returns New snapshot with updated locale
|
|
120
|
+
*/
|
|
121
|
+
setLocale(locale: string): Snapshot;
|
|
122
|
+
/**
|
|
123
|
+
* Get the current snapshot without making any changes.
|
|
124
|
+
*
|
|
125
|
+
* Useful for initial rendering or refreshing the view.
|
|
126
|
+
*
|
|
127
|
+
* @returns Current snapshot
|
|
128
|
+
*/
|
|
129
|
+
getSnapshot(): Snapshot;
|
|
130
|
+
/**
|
|
131
|
+
* Build a snapshot and clear transient state (notifications, pendingSounds).
|
|
132
|
+
* Transient state is data that should only appear in one snapshot.
|
|
133
|
+
*/
|
|
134
|
+
private buildSnapshotAndClearTransients;
|
|
135
|
+
/**
|
|
136
|
+
* Check for dialogues that should auto-trigger at the current location.
|
|
137
|
+
*
|
|
138
|
+
* If a dialogue matches the current location and all its conditions pass,
|
|
139
|
+
* start that dialogue.
|
|
140
|
+
*
|
|
141
|
+
* This is called after location changes (newGame, travelTo).
|
|
142
|
+
*/
|
|
143
|
+
private checkTriggeredDialogues;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,gBAAgB,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAK7C;;;;GAIG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAW;IAExB;;;;;OAKG;gBACS,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS;IASvD;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ;IA6CrC;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAQtC;;;;;;OAMG;IACH,QAAQ,IAAI,QAAQ;IAQpB;;;;;;;OAOG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAoDxC;;;;;;;OAOG;IACH,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ;IAkCrC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IAmBlC;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IAoDtC;;;;;;;;OAQG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ;IAehD;;;;;;;OAOG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IASpC;;;;;;;OAOG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ;IASnC;;;;;;OAMG;IACH,WAAW,IAAI,QAAQ;IAQvB;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAcvC;;;;;;;OAOG;IACH,OAAO,CAAC,uBAAuB;CAoChC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @doodle-engine/core
|
|
3
|
+
*
|
|
4
|
+
* Pure TypeScript narrative RPG engine.
|
|
5
|
+
* Framework-agnostic - manages game state, evaluates conditions, processes effects, builds snapshots.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VERSION = "0.0.1";
|
|
8
|
+
export type { Location, Character, Item, Map, MapLocation, Dialogue, DialogueNode, Choice, Quest, QuestStage, JournalEntry, GameConfig, } from './types/entities';
|
|
9
|
+
export type { Condition, HasFlagCondition, NotFlagCondition, HasItemCondition, VariableEqualsCondition, VariableGreaterThanCondition, VariableLessThanCondition, AtLocationCondition, QuestAtStageCondition, CharacterAtCondition, CharacterInPartyCondition, RelationshipAboveCondition, RelationshipBelowCondition, TimeIsCondition, ItemAtCondition, } from './types/conditions';
|
|
10
|
+
export type { Effect, SetFlagEffect, ClearFlagEffect, SetVariableEffect, AddVariableEffect, AddItemEffect, RemoveItemEffect, MoveItemEffect, GoToLocationEffect, AdvanceTimeEffect, SetQuestStageEffect, AddJournalEntryEffect, StartDialogueEffect, EndDialogueEffect, SetCharacterLocationEffect, AddToPartyEffect, RemoveFromPartyEffect, SetRelationshipEffect, AddRelationshipEffect, SetCharacterStatEffect, AddCharacterStatEffect, SetMapEnabledEffect, PlayMusicEffect, PlaySoundEffect, NotifyEffect, PlayVideoEffect, } from './types/effects';
|
|
11
|
+
export type { GameState, CharacterState, DialogueState, PlayerNote, Time, } from './types/state';
|
|
12
|
+
export type { Snapshot, SnapshotLocation, SnapshotCharacter, SnapshotItem, SnapshotChoice, SnapshotDialogue, SnapshotQuest, SnapshotJournalEntry, SnapshotMapLocation, SnapshotMap, } from './types/snapshot';
|
|
13
|
+
export type { SaveData, } from './types/save';
|
|
14
|
+
export type { ContentRegistry, LocaleData, } from './types/registry';
|
|
15
|
+
export { evaluateCondition, evaluateConditions, } from './conditions';
|
|
16
|
+
export { applyEffect, applyEffects, } from './effects';
|
|
17
|
+
export { resolveText, createResolver, } from './localization';
|
|
18
|
+
export { buildSnapshot, } from './snapshot';
|
|
19
|
+
export { Engine, } from './engine';
|
|
20
|
+
export { parseDialogue, parseCondition, parseEffect, } from './parser';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAA;AAG9B,YAAY,EACV,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,GAAG,EACH,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,UAAU,GACX,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,0BAA0B,EAC1B,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACV,MAAM,EACN,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,IAAI,GACL,MAAM,eAAe,CAAA;AAGtB,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,GACZ,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,QAAQ,GACT,MAAM,cAAc,CAAA;AAGrB,YAAY,EACV,eAAe,EACf,UAAU,GACX,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,WAAW,EACX,YAAY,GACb,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,WAAW,EACX,cAAc,GACf,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,aAAa,GACd,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,MAAM,GACP,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Localization system for the Doodle Engine.
|
|
3
|
+
*
|
|
4
|
+
* Handles resolution of @keys to translated strings based on the current locale.
|
|
5
|
+
* Authors use @keys in content files, and the engine resolves them when building snapshots.
|
|
6
|
+
*/
|
|
7
|
+
import type { LocaleData } from '../types/registry';
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a localization key to a translated string.
|
|
10
|
+
*
|
|
11
|
+
* If the text starts with '@', looks up the key (without @) in the locale data.
|
|
12
|
+
* If the key is not found, returns the key itself as a fallback.
|
|
13
|
+
* If the text doesn't start with '@', returns it as-is (inline text).
|
|
14
|
+
*
|
|
15
|
+
* @param text - Text that may be a @key or inline text
|
|
16
|
+
* @param localeData - Locale dictionary for the current language
|
|
17
|
+
* @returns Resolved string
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* resolveText("@location.tavern.name", localeData) // "The Salty Dog"
|
|
22
|
+
* resolveText("Just some text", localeData) // "Just some text"
|
|
23
|
+
* resolveText("@missing.key", localeData) // "@missing.key" (fallback)
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveText(text: string, localeData: LocaleData): string;
|
|
27
|
+
/**
|
|
28
|
+
* Create a localization resolver function bound to a specific locale.
|
|
29
|
+
* Useful for passing to functions that need to resolve multiple strings.
|
|
30
|
+
*
|
|
31
|
+
* @param localeData - Locale dictionary for the current language
|
|
32
|
+
* @returns Function that resolves text using the provided locale data
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* const resolve = createResolver(localeData)
|
|
37
|
+
* const name = resolve("@character.bartender.name")
|
|
38
|
+
* const bio = resolve("@character.bartender.bio")
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function createResolver(localeData: LocaleData): (text: string) => string;
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/localization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAYxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAE/E"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialogue DSL Parser
|
|
3
|
+
*
|
|
4
|
+
* Parses .dlg files written in the custom DSL syntax into Dialogue entities.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Structure keywords: NODE, END, GOTO, TRIGGER, REQUIRE
|
|
7
|
+
* - Dialogue keywords: SPEAKER:, NARRATOR:, VOICE
|
|
8
|
+
* - Choice blocks with conditions and effects
|
|
9
|
+
* - Conditional blocks (IF/END)
|
|
10
|
+
* - All 14 condition types
|
|
11
|
+
* - All 24 effect types
|
|
12
|
+
* - @localization keys and "inline text"
|
|
13
|
+
*/
|
|
14
|
+
import type { Dialogue } from '../types/entities';
|
|
15
|
+
import type { Condition } from '../types/conditions';
|
|
16
|
+
import type { Effect } from '../types/effects';
|
|
17
|
+
/**
|
|
18
|
+
* Parse a condition string into a Condition object
|
|
19
|
+
* Examples:
|
|
20
|
+
* "hasFlag metBartender" -> { type: 'hasFlag', flag: 'metBartender' }
|
|
21
|
+
* "variableGreaterThan gold 10" -> { type: 'variableGreaterThan', variable: 'gold', value: 10 }
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseCondition(conditionStr: string): Condition;
|
|
24
|
+
/**
|
|
25
|
+
* Parse an effect string into an Effect object
|
|
26
|
+
* Examples:
|
|
27
|
+
* "SET flag metBartender" -> { type: 'setFlag', flag: 'metBartender' }
|
|
28
|
+
* "ADD variable gold -50" -> { type: 'addVariable', variable: 'gold', value: -50 }
|
|
29
|
+
* "NOTIFY @quest.started" -> { type: 'notify', message: '@quest.started' }
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseEffect(effectStr: string): Effect;
|
|
32
|
+
/**
|
|
33
|
+
* Parse a complete dialogue from DSL source
|
|
34
|
+
* @param input - The DSL source code
|
|
35
|
+
* @param id - The dialogue ID
|
|
36
|
+
* @returns A complete Dialogue entity
|
|
37
|
+
*/
|
|
38
|
+
export declare function parseDialogue(input: string, id: string): Dialogue;
|
|
39
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAwB,MAAM,mBAAmB,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAqF9C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CA4D9D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgJrD;AAiPD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,CAyCjE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot builder for the Doodle Engine.
|
|
3
|
+
*
|
|
4
|
+
* Builds a snapshot from the current game state and content registry.
|
|
5
|
+
* A snapshot is everything the renderer needs to display the current moment:
|
|
6
|
+
* - All localization resolved (@keys → text)
|
|
7
|
+
* - All conditions evaluated (only visible choices included)
|
|
8
|
+
* - All entity data enriched with full information
|
|
9
|
+
*
|
|
10
|
+
* The renderer never sees raw game state or content registry.
|
|
11
|
+
*/
|
|
12
|
+
import type { ContentRegistry } from '../types/registry';
|
|
13
|
+
import type { GameState } from '../types/state';
|
|
14
|
+
import type { Snapshot } from '../types/snapshot';
|
|
15
|
+
/**
|
|
16
|
+
* Build a complete snapshot from current game state.
|
|
17
|
+
*
|
|
18
|
+
* @param state - Current game state
|
|
19
|
+
* @param registry - Content registry with all entities
|
|
20
|
+
* @returns Complete snapshot ready for rendering
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildSnapshot(state: GameState, registry: ContentRegistry): Snapshot;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/snapshot/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,mBAAmB,CAAA;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EACV,QAAQ,EAUT,MAAM,mBAAmB,CAAA;AAI1B;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,GAAG,QAAQ,CAmEnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2022.full.d.ts","../src/types/conditions.ts","../src/types/effects.ts","../src/types/entities.ts","../src/types/state.ts","../src/types/snapshot.ts","../src/types/save.ts","../src/types/registry.ts","../src/conditions/index.ts","../src/effects/index.ts","../src/localization/index.ts","../src/snapshot/index.ts","../src/engine/index.ts","../src/parser/index.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/kleur/kleur.d.ts","../../../node_modules/@types/prompts/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[80,89,143,160,161],[89,143,160,161],[80,81,82,83,84,89,143,160,161],[80,82,89,143,160,161],[89,140,141,143,160,161],[89,142,143,160,161],[143,160,161],[89,143,148,160,161,178],[89,143,144,149,154,160,161,163,175,186],[89,143,144,145,154,160,161,163],[89,143,146,160,161,187],[89,143,147,148,155,160,161,164],[89,143,148,160,161,175,183],[89,143,149,151,154,160,161,163],[89,142,143,150,160,161],[89,143,151,152,160,161],[89,143,153,154,160,161],[89,142,143,154,160,161],[89,143,154,155,156,160,161,175,186],[89,143,154,155,156,160,161,170,175,178],[89,135,143,151,154,157,160,161,163,175,186],[89,143,154,155,157,158,160,161,163,175,183,186],[89,143,157,159,160,161,175,183,186],[87,88,89,90,91,92,93,94,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[89,143,154,160,161],[89,143,160,161,162,186],[89,143,151,154,160,161,163,175],[89,143,160,161,164],[89,143,160,161,165],[89,142,143,160,161,166],[89,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[89,143,160,161,168],[89,143,160,161,169],[89,143,154,160,161,170,171],[89,143,160,161,170,172,187,189],[89,143,155,160,161],[89,143,154,160,161,175,176,178],[89,143,160,161,177,178],[89,143,160,161,175,176],[89,143,160,161,178],[89,143,160,161,179],[89,140,143,160,161,175,180,186],[89,143,154,160,161,181,182],[89,143,160,161,181,182],[89,143,148,160,161,163,175,183],[89,143,160,161,184],[89,143,160,161,163,185],[89,143,157,160,161,169,186],[89,143,148,160,161,187],[89,143,160,161,175,188],[89,143,160,161,162,189],[89,143,160,161,190],[89,143,148,160,161],[89,135,143,160,161],[89,143,160,161,191],[89,135,143,154,156,160,161,166,175,178,186,188,189,191],[89,143,160,161,175,192],[89,143,160,161,175,193,194],[89,143,160,161,198],[89,143,160,161,196,197],[89,101,104,107,108,143,160,161,186],[89,104,143,160,161,175,186],[89,104,108,143,160,161,186],[89,143,160,161,175],[89,98,143,160,161],[89,102,143,160,161],[89,100,101,104,143,160,161,186],[89,143,160,161,163,183],[89,143,160,161,193],[89,98,143,160,161,193],[89,100,104,143,160,161,163,186],[89,95,96,97,99,103,143,154,160,161,175,186],[89,104,112,120,143,160,161],[89,96,102,143,160,161],[89,104,129,130,143,160,161],[89,96,99,104,143,160,161,178,186,193],[89,104,143,160,161],[89,100,104,143,160,161,186],[89,95,143,160,161],[89,98,99,100,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,143,160,161],[89,104,122,125,143,151,160,161],[89,104,112,113,114,143,160,161],[89,102,104,113,115,143,160,161],[89,103,143,160,161],[89,96,98,104,143,160,161],[89,104,108,113,115,143,160,161],[89,108,143,160,161],[89,102,104,107,143,160,161,186],[89,96,100,104,112,143,160,161],[89,104,122,143,160,161],[89,115,143,160,161],[89,98,104,129,143,160,161,178,191,193],[66,69,89,143,160,161],[67,69,89,143,160,161],[68,69,70,71,72,73,74,76,89,143,160,161],[66,67,68,69,70,71,72,73,74,75,76,77,78,89,143,160,161],[72,89,143,160,161],[66,67,68,89,143,160,161],[69,70,72,73,75,89,143,160,161],[66,67,89,143,160,161],[68,89,143,160,161],[69,89,143,160,161]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"2d59c08e8aa73bb43aea7e420d5f41beebbff5325bce50d5efeac8b10106f685","signature":"dcd373d835298e64cb5d5e4597a62aad73ba343cea6404d87d010514a75576b8"},{"version":"0babc8c41f54023f7ae767cc40dbfd0d716e898fd1a292d443369b041962d3eb","signature":"fbb8cbc1e5e17afb9ea465c9f1ca4dc7c7b3a4ed40b5325f644202c147326c5d"},{"version":"d8b4df376f1b8d88f90556fbabff82fcbe25d141eb5cf109c13d531b4255e5a4","signature":"6cf8defd91b7281586a6388dfb27e6d2fe049add463ee0a6d27bfaed6adf701c"},{"version":"998d94ea3f00895c9aa6cdce2f42925739fea5ac59583552ed3a57db6f93d555","signature":"6fff754c3d348971036884469edbbaaf64c6e5ff452aba4854ac1f16498adc0f"},{"version":"5fc74ede84fb3134ee5007fd95c105948a8d4b0a9244f4681552d8014a4a4738","signature":"7d26a3e59ee4f6580c05d5abcc13202d3b0c6b89489b90e1df76df6a30f2aaf1"},{"version":"2e8df3e91ae3d3e70651dee6b7e4eeb905a9538eaf49887eceb99806042fc250","signature":"0c0a572898a4b515c2a2b6cdbff925c0612a1588f51217f93efca21770c076d1"},{"version":"2b699d7bba667334e175312f48b178413a5b3b00fc347fb6f7d9cad830901ca1","signature":"026f1b2fcd0b3295e889f03bb101ec90ccc3c76e4d3b4dbb5f3537e957eaa1eb"},{"version":"0625ead5ebfb23b2e22bf2defa5fc20c6cebc5a1956cb19a07fc4fc4f3e00eef","signature":"6392e4d06eb2762faf7303aa41b92d23fd5ad66309f1c57f89ad1c6086ae8bc2"},{"version":"fe5d667744f6569ea22597c04a2ef41259f8caa34dd6422658e230e501a144e4","signature":"8fc6f464550b89ee260f708e7af0eef88fb520cf39cf86eebdc5adea1950e5ec"},{"version":"f5d3d8d1cc9b4a202d35223c497256c5a0c7d7bab98f8e07cc6dc4f39ab8120a","signature":"a76c8101df57d8d763093febe03cd342f603dc17b60706542316c03e58e59cd0"},{"version":"2b63258161fdda9836e0caee8426ad9c3732619b23dc7f47fe9cb65fba11e772","signature":"66e9f207c03d41359bf33a048cda49fbe48b10fa29289d120eaa538456c85f28"},{"version":"a4215c87b037e4100e514d3c2eaec1cf5e6b8a79ee6aec41f27b60f389eef3a1","signature":"52b513eb781c1170f7467cd87ffe12b6bd35c530d1ba31634044bbc0e4e754e2"},{"version":"5deb7c3ae2b34a6c166068c41fa1e87af617d85c7ef30b350391f9f636f2855e","signature":"31b1936bc25f5184d594adabad011ca1f0357183284de7e3cf2b6bd0bd155afe"},{"version":"9fdc438cf68ef23b06b95d53b46ce1bce480b4d930f68e4095d64a6d376f34c6","signature":"daefcf691eab258e8836d4cc4eb9c1e126184c5c0e7e4568d1188d7f5a886126"},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"9cdfd0a77dd7eeed57e91d3f449274ea2470abdb7e167a2f146b1ea8de6224e0","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"d00e86e2e74089bf416b4c5cc433d88eb2e09dcef5e3c5b79ca04a36d8d8d6f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"a1a3cbade20430dcb7f00fa23c2f020e827d5620c0d44213db1665c53231f1fc","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"6ab263df6465e2ed8f1d02922bae18bb5b407020767de021449a4c509859b22e","impliedFormat":1},{"version":"6805621d9f970cda51ab1516e051febe5f3ec0e45b371c7ad98ac2700d13d57c","impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1}],"root":[[66,79]],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":true,"module":99,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"referencedMap":[[82,1],[80,2],[85,3],[81,1],[83,4],[84,1],[86,2],[140,5],[141,5],[142,6],[89,7],[143,8],[144,9],[145,10],[87,2],[146,11],[147,12],[148,13],[149,14],[150,15],[151,16],[152,16],[153,17],[154,18],[155,19],[156,20],[90,2],[88,2],[157,21],[158,22],[159,23],[193,24],[160,25],[161,2],[162,26],[163,27],[164,28],[165,29],[166,30],[167,31],[168,32],[169,33],[170,34],[171,34],[172,35],[173,2],[174,36],[175,37],[177,38],[176,39],[178,40],[179,41],[180,42],[181,43],[182,44],[183,45],[184,46],[185,47],[186,48],[187,49],[188,50],[189,51],[190,52],[91,2],[92,53],[93,2],[94,2],[136,54],[137,55],[138,2],[139,40],[191,56],[192,57],[195,58],[199,59],[196,2],[198,60],[197,2],[194,2],[63,2],[64,2],[12,2],[10,2],[11,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[65,2],[57,2],[58,2],[60,2],[59,2],[1,2],[61,2],[62,2],[14,2],[13,2],[112,61],[124,62],[110,63],[125,64],[134,65],[101,66],[102,67],[100,68],[133,69],[128,70],[132,71],[104,72],[121,73],[103,74],[131,75],[98,76],[99,70],[105,77],[106,2],[111,78],[109,77],[96,79],[135,80],[126,81],[115,82],[114,77],[116,83],[119,84],[113,85],[117,86],[129,69],[107,87],[108,88],[120,89],[97,64],[123,90],[122,77],[118,91],[127,2],[95,2],[130,92],[73,93],[74,94],[77,95],[79,96],[75,97],[78,98],[76,99],[66,2],[67,2],[68,100],[72,101],[71,102],[70,102],[69,2]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Condition type definitions for the Doodle Engine.
|
|
3
|
+
* Conditions are tests against game state that return true or false.
|
|
4
|
+
* All conditions use a discriminated union pattern for extensibility.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check if a flag is set to true.
|
|
8
|
+
* Example: hasFlag metBartender
|
|
9
|
+
*/
|
|
10
|
+
export interface HasFlagCondition {
|
|
11
|
+
type: 'hasFlag';
|
|
12
|
+
/** Flag key to check */
|
|
13
|
+
flag: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Check if a flag is not set to true.
|
|
17
|
+
* Example: notFlag doorLocked
|
|
18
|
+
*/
|
|
19
|
+
export interface NotFlagCondition {
|
|
20
|
+
type: 'notFlag';
|
|
21
|
+
/** Flag key to check */
|
|
22
|
+
flag: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if an item is in the player's inventory.
|
|
26
|
+
* Example: hasItem rusty_key
|
|
27
|
+
*/
|
|
28
|
+
export interface HasItemCondition {
|
|
29
|
+
type: 'hasItem';
|
|
30
|
+
/** Item ID to check for */
|
|
31
|
+
itemId: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a variable equals a specific value.
|
|
35
|
+
* Example: variableEquals gold 100
|
|
36
|
+
*/
|
|
37
|
+
export interface VariableEqualsCondition {
|
|
38
|
+
type: 'variableEquals';
|
|
39
|
+
/** Variable key to check */
|
|
40
|
+
variable: string;
|
|
41
|
+
/** Value to compare against */
|
|
42
|
+
value: number | string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if a variable is greater than a value.
|
|
46
|
+
* Example: variableGreaterThan gold 10
|
|
47
|
+
*/
|
|
48
|
+
export interface VariableGreaterThanCondition {
|
|
49
|
+
type: 'variableGreaterThan';
|
|
50
|
+
/** Variable key to check */
|
|
51
|
+
variable: string;
|
|
52
|
+
/** Value to compare against */
|
|
53
|
+
value: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a variable is less than a value.
|
|
57
|
+
* Example: variableLessThan reputation 0
|
|
58
|
+
*/
|
|
59
|
+
export interface VariableLessThanCondition {
|
|
60
|
+
type: 'variableLessThan';
|
|
61
|
+
/** Variable key to check */
|
|
62
|
+
variable: string;
|
|
63
|
+
/** Value to compare against */
|
|
64
|
+
value: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if player is at a specific location.
|
|
68
|
+
* Example: atLocation tavern
|
|
69
|
+
*/
|
|
70
|
+
export interface AtLocationCondition {
|
|
71
|
+
type: 'atLocation';
|
|
72
|
+
/** Location ID to check */
|
|
73
|
+
locationId: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Check if a quest is at a specific stage.
|
|
77
|
+
* Example: questAtStage odd_jobs started
|
|
78
|
+
*/
|
|
79
|
+
export interface QuestAtStageCondition {
|
|
80
|
+
type: 'questAtStage';
|
|
81
|
+
/** Quest ID to check */
|
|
82
|
+
questId: string;
|
|
83
|
+
/** Stage ID to check for */
|
|
84
|
+
stageId: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Check if a character is at a specific location.
|
|
88
|
+
* Example: characterAt merchant market
|
|
89
|
+
*/
|
|
90
|
+
export interface CharacterAtCondition {
|
|
91
|
+
type: 'characterAt';
|
|
92
|
+
/** Character ID to check */
|
|
93
|
+
characterId: string;
|
|
94
|
+
/** Location ID to check */
|
|
95
|
+
locationId: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if a character is in the player's party.
|
|
99
|
+
* Example: characterInParty jaheira
|
|
100
|
+
*/
|
|
101
|
+
export interface CharacterInPartyCondition {
|
|
102
|
+
type: 'characterInParty';
|
|
103
|
+
/** Character ID to check */
|
|
104
|
+
characterId: string;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Check if relationship with a character is above a value.
|
|
108
|
+
* Example: relationshipAbove bartender 5
|
|
109
|
+
*/
|
|
110
|
+
export interface RelationshipAboveCondition {
|
|
111
|
+
type: 'relationshipAbove';
|
|
112
|
+
/** Character ID to check */
|
|
113
|
+
characterId: string;
|
|
114
|
+
/** Minimum relationship value (exclusive) */
|
|
115
|
+
value: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check if relationship with a character is below a value.
|
|
119
|
+
* Example: relationshipBelow bartender 0
|
|
120
|
+
*/
|
|
121
|
+
export interface RelationshipBelowCondition {
|
|
122
|
+
type: 'relationshipBelow';
|
|
123
|
+
/** Character ID to check */
|
|
124
|
+
characterId: string;
|
|
125
|
+
/** Maximum relationship value (exclusive) */
|
|
126
|
+
value: number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check if current time is within a range (24-hour format).
|
|
130
|
+
* Example: timeIs 20 6 (8 PM to 6 AM)
|
|
131
|
+
*/
|
|
132
|
+
export interface TimeIsCondition {
|
|
133
|
+
type: 'timeIs';
|
|
134
|
+
/** Start hour (0-23, inclusive) */
|
|
135
|
+
startHour: number;
|
|
136
|
+
/** End hour (0-23, exclusive) */
|
|
137
|
+
endHour: number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if an item is at a specific location.
|
|
141
|
+
* Example: itemAt sword armory
|
|
142
|
+
*/
|
|
143
|
+
export interface ItemAtCondition {
|
|
144
|
+
type: 'itemAt';
|
|
145
|
+
/** Item ID to check */
|
|
146
|
+
itemId: string;
|
|
147
|
+
/** Location ID to check */
|
|
148
|
+
locationId: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Union of all condition types.
|
|
152
|
+
* This discriminated union allows authors to extend with custom conditions.
|
|
153
|
+
*/
|
|
154
|
+
export type Condition = HasFlagCondition | NotFlagCondition | HasItemCondition | VariableEqualsCondition | VariableGreaterThanCondition | VariableLessThanCondition | AtLocationCondition | QuestAtStageCondition | CharacterAtCondition | CharacterInPartyCondition | RelationshipAboveCondition | RelationshipBelowCondition | TimeIsCondition | ItemAtCondition;
|
|
155
|
+
//# sourceMappingURL=conditions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../src/types/conditions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAA;IACf,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAA;IACf,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAA;IACf,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,gBAAgB,CAAA;IACtB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,qBAAqB,CAAA;IAC3B,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAA;IACxB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,YAAY,CAAA;IAClB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,cAAc,CAAA;IACpB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,aAAa,CAAA;IACnB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,kBAAkB,CAAA;IACxB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,mBAAmB,CAAA;IACzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,mBAAmB,CAAA;IACzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAA;IACd,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,uBAAuB,GACvB,4BAA4B,GAC5B,yBAAyB,GACzB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,yBAAyB,GACzB,0BAA0B,GAC1B,0BAA0B,GAC1B,eAAe,GACf,eAAe,CAAA"}
|