@bscotch/gcdata 0.21.2 → 0.22.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.
Files changed (58) hide show
  1. package/dist/cl2.character.d.ts +4 -0
  2. package/dist/cl2.character.d.ts.map +1 -0
  3. package/dist/cl2.character.js +4 -0
  4. package/dist/cl2.character.js.map +1 -0
  5. package/dist/cl2.character.parse.d.ts +7 -0
  6. package/dist/cl2.character.parse.d.ts.map +1 -0
  7. package/dist/cl2.character.parse.js +352 -0
  8. package/dist/cl2.character.parse.js.map +1 -0
  9. package/dist/cl2.character.stringify.d.ts +4 -0
  10. package/dist/cl2.character.stringify.d.ts.map +1 -0
  11. package/dist/cl2.character.stringify.js +44 -0
  12. package/dist/cl2.character.stringify.js.map +1 -0
  13. package/dist/cl2.character.types.d.ts +31 -0
  14. package/dist/cl2.character.types.d.ts.map +1 -0
  15. package/dist/cl2.character.types.js +31 -0
  16. package/dist/cl2.character.types.js.map +1 -0
  17. package/dist/cl2.comfort.parse.d.ts.map +1 -1
  18. package/dist/cl2.comfort.parse.js +1 -0
  19. package/dist/cl2.comfort.parse.js.map +1 -1
  20. package/dist/cl2.quest.parse.d.ts.map +1 -1
  21. package/dist/cl2.quest.parse.js +2 -1
  22. package/dist/cl2.quest.parse.js.map +1 -1
  23. package/dist/cl2.quest.stringify.d.ts.map +1 -1
  24. package/dist/cl2.quest.stringify.js +4 -17
  25. package/dist/cl2.quest.stringify.js.map +1 -1
  26. package/dist/cl2.quest.types.d.ts.map +1 -1
  27. package/dist/cl2.quest.types.js +3 -6
  28. package/dist/cl2.quest.types.js.map +1 -1
  29. package/dist/cl2.shared.parse.d.ts +2 -1
  30. package/dist/cl2.shared.parse.d.ts.map +1 -1
  31. package/dist/cl2.shared.parse.js +11 -3
  32. package/dist/cl2.shared.parse.js.map +1 -1
  33. package/dist/cl2.shared.stringify.d.ts +8 -0
  34. package/dist/cl2.shared.stringify.d.ts.map +1 -0
  35. package/dist/cl2.shared.stringify.js +26 -0
  36. package/dist/cl2.shared.stringify.js.map +1 -0
  37. package/dist/cl2.shared.types.d.ts +13 -5
  38. package/dist/cl2.shared.types.d.ts.map +1 -1
  39. package/dist/cl2.shared.types.js +15 -2
  40. package/dist/cl2.shared.types.js.map +1 -1
  41. package/dist/cl2.storyline.parse.d.ts.map +1 -1
  42. package/dist/cl2.storyline.parse.js +1 -0
  43. package/dist/cl2.storyline.parse.js.map +1 -1
  44. package/dist/cl2.storyline.types.js +2 -2
  45. package/dist/cl2.storyline.types.js.map +1 -1
  46. package/dist/cl3.quest.stringify.d.ts +5 -0
  47. package/dist/cl3.quest.stringify.d.ts.map +1 -0
  48. package/dist/cl3.quest.stringify.js +154 -0
  49. package/dist/cl3.quest.stringify.js.map +1 -0
  50. package/dist/cl3.quest.types.d.ts +84 -0
  51. package/dist/cl3.quest.types.d.ts.map +1 -0
  52. package/dist/cl3.quest.types.js +33 -0
  53. package/dist/cl3.quest.types.js.map +1 -0
  54. package/dist/index.d.ts +1 -0
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +1 -0
  57. package/dist/index.js.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,154 @@
1
+ import { assert } from './assert.js';
2
+ import { bsArrayToArray, toArrayTag, toMoteTag } from './helpers.js';
3
+ import { capitalize, cleanGameChangerString } from './util.js';
4
+ export function stringifyQuest(mote, packed) {
5
+ // METADATA
6
+ const storyline = packed.working.getMote(mote.data.storyline);
7
+ const blocks = [
8
+ `Name: ${packed.working.getMoteName(mote)}`,
9
+ `Storyline: ` +
10
+ (storyline
11
+ ? `${packed.working.getMoteName(storyline)}${toMoteTag(storyline)}`
12
+ : ''),
13
+ ];
14
+ if (mote.data.wip?.staging) {
15
+ blocks.push(`Stage: ${mote.data.wip.staging}\n`);
16
+ }
17
+ else {
18
+ blocks.push('');
19
+ }
20
+ // NOTES
21
+ if (mote.data.wip?.notes) {
22
+ const comments = bsArrayToArray(mote.data.wip.notes);
23
+ if (comments.length) {
24
+ blocks.push(...bsArrayToArray(mote.data.wip.notes).map((c) => `//${toArrayTag(c.id)} ${c.element.text}`), '');
25
+ }
26
+ }
27
+ if (mote.data.quest_giver || mote.data.quest_receiver) {
28
+ blocks.push('');
29
+ }
30
+ for (const momentType of ['start', 'end']) {
31
+ // REQUIREMENTS
32
+ blocks.push(`${capitalize(momentType)} Requirements:`);
33
+ const reqsFieldName = `quest_${momentType}_requirements`;
34
+ const reqsData = mote.data[reqsFieldName];
35
+ if (reqsData) {
36
+ const reqs = bsArrayToArray(reqsData);
37
+ for (const req of reqs) {
38
+ if (req.element.style === 'Quest') {
39
+ const quest = packed.working.getMote(req.element.quest);
40
+ blocks.push(`?${toArrayTag(req)} ${req.element.style} ${req.element.quest_status}: ${packed.working.getMoteName(quest)}${toMoteTag(quest)}\n`);
41
+ }
42
+ else {
43
+ blocks.push(`?${toArrayTag(req)} ${req.element.style}\n`);
44
+ }
45
+ }
46
+ }
47
+ else {
48
+ blocks.push('');
49
+ }
50
+ if (momentType === 'start') {
51
+ // GIVER
52
+ if (mote.data.quest_giver) {
53
+ const giver = packed.working.getMote(mote.data.quest_giver.item);
54
+ blocks.push(`Giver: ${packed.working.getMoteName(giver)}${toMoteTag(giver)}`);
55
+ }
56
+ }
57
+ else {
58
+ // RECEIVER
59
+ if (mote.data.quest_receiver) {
60
+ const receiver = packed.working.getMote(mote.data.quest_receiver.item);
61
+ blocks.push(`Receiver: ${packed.working.getMoteName(receiver)}${toMoteTag(receiver)}`);
62
+ }
63
+ }
64
+ // MOMENTS
65
+ blocks.push(`${capitalize(momentType)} Moments:`);
66
+ const fieldName = `quest_${momentType}_moments`;
67
+ const data = mote.data[fieldName];
68
+ if (data) {
69
+ /**
70
+ * Track the last speaker so we can collapse sequential dialog
71
+ * from the same speaker
72
+ */
73
+ let lastSpeaker;
74
+ const momentContainers = bsArrayToArray(data);
75
+ for (const momentContainer of momentContainers) {
76
+ const moment = momentContainer.element;
77
+ let line = '';
78
+ if (moment.style !== 'Dialogue') {
79
+ lastSpeaker = undefined;
80
+ }
81
+ if (moment.style === 'Dialogue') {
82
+ // Speaker and dialog line
83
+ if (moment.speech.speaker !== lastSpeaker) {
84
+ line += `\t${characterString(moment.speech.speaker)}\n`;
85
+ }
86
+ const emojiStr = emojiString(moment.speech.emotion);
87
+ line += `>${toArrayTag(momentContainer)} ${emojiStr ? emojiStr + ' ' : ''}${moment.speech.text.text}`;
88
+ lastSpeaker = moment.speech.speaker;
89
+ }
90
+ else if (moment.style === 'Emote') {
91
+ const emojiLines = [`:)${toArrayTag(momentContainer)}`];
92
+ for (const emote of bsArrayToArray(moment.emotes)) {
93
+ if (!emote.element?.key)
94
+ continue;
95
+ emojiLines.push(`!${toArrayTag(emote)} ${characterString(emote.element?.key)} ${emojiString(emote.element?.value)}`);
96
+ }
97
+ line += emojiLines.join('\n');
98
+ }
99
+ else {
100
+ line += `?${toArrayTag(momentContainer)} ${moment.style}`;
101
+ }
102
+ blocks.push(line + '\n');
103
+ }
104
+ }
105
+ else {
106
+ blocks.push('');
107
+ }
108
+ if (momentType === 'start') {
109
+ // Start Log
110
+ if (mote.data.quest_start_log) {
111
+ blocks.push(`Log: ${cleanGameChangerString(mote.data.quest_start_log.text)}`, '');
112
+ }
113
+ // Clues
114
+ if (mote.data.clues) {
115
+ const clueGroups = bsArrayToArray(mote.data.clues);
116
+ for (const clueGroup of clueGroups) {
117
+ if (!clueGroup.element?.phrases || !clueGroup.element.speaker)
118
+ continue;
119
+ const speaker = packed.working.getMote(clueGroup.element.speaker);
120
+ let clueString = `Clue${toArrayTag(clueGroup)}: ${packed.working.getMoteName(speaker)}${toMoteTag(clueGroup.element.speaker)}`;
121
+ for (const phraseContainer of bsArrayToArray(clueGroup.element.phrases)) {
122
+ const clue = phraseContainer.element;
123
+ let line = `\n>${toArrayTag(phraseContainer)} `;
124
+ const emoji = clue?.phrase.emoji;
125
+ if (emoji) {
126
+ line += `(${emoji}) `;
127
+ }
128
+ line += clue?.phrase.text.text || '';
129
+ clueString += line;
130
+ }
131
+ blocks.push(clueString);
132
+ }
133
+ if (clueGroups.length) {
134
+ blocks.push('');
135
+ }
136
+ }
137
+ }
138
+ }
139
+ function emojiString(emojiId) {
140
+ if (!emojiId)
141
+ return '';
142
+ const emoji = packed.working.getMote(emojiId);
143
+ const name = packed.working.getMoteName(emoji) || emoji?.id || 'UNKNOWN';
144
+ return name ? `(${name})` : '';
145
+ }
146
+ function characterString(characterId) {
147
+ assert(characterId, 'Character ID must be defined');
148
+ const character = packed.working.getMote(characterId);
149
+ const name = packed.working.getMoteName(character) || character?.id || 'UNKNOWN';
150
+ return name ? `${name.toUpperCase()}${toMoteTag(characterId)}` : '';
151
+ }
152
+ return blocks.join('\n') + '\n';
153
+ }
154
+ //# sourceMappingURL=cl3.quest.stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl3.quest.stringify.js","sourceRoot":"","sources":["../src/cl3.quest.stringify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { Gcdata } from './GameChanger.js';
2
+ import { ParserResult, QuestMote } from './cl2.shared.types.js';
3
+ import type { Crashlands2 } from './cl2.types.auto.js';
4
+ import type { Mote } from './types.js';
5
+ export declare function listQuests(gcData: Gcdata): QuestMote[];
6
+ export declare function isQuestMote(mote: any): mote is Mote<Crashlands2.Quest>;
7
+ export interface ParsedClue {
8
+ /** arrayId */
9
+ id: string | undefined;
10
+ /** Speaker MoteId */
11
+ speaker: string | undefined;
12
+ phrases: {
13
+ /** arrayId */
14
+ id: string | undefined;
15
+ /** MoteId for the Emoji */
16
+ emoji?: string;
17
+ text: string;
18
+ }[];
19
+ }
20
+ export interface ParsedEmote {
21
+ /** arrayId */
22
+ id: string | undefined;
23
+ /** MoteId for the Emoji */
24
+ emoji: string | undefined;
25
+ /** MoteId for the speaker */
26
+ speaker: string | undefined;
27
+ }
28
+ export interface ParsedEmoteGroup {
29
+ kind: 'emote';
30
+ /** arrayId */
31
+ id: string | undefined;
32
+ emotes: ParsedEmote[];
33
+ }
34
+ export interface ParsedOtherMoment {
35
+ kind: 'other';
36
+ id: string | undefined;
37
+ style: string | undefined;
38
+ }
39
+ export interface ParsedDialog {
40
+ kind: 'dialogue';
41
+ /** arrayId */
42
+ id: string | undefined;
43
+ speaker: string | undefined;
44
+ /** MoteId for the Emoji */
45
+ emoji?: string;
46
+ text: string;
47
+ }
48
+ export interface ParsedRequirementQuest {
49
+ kind: 'quest';
50
+ id: string | undefined;
51
+ /** The MoteId of the required quest */
52
+ quest: string | undefined;
53
+ status: Crashlands2.QuestStatus;
54
+ style: 'Quest';
55
+ }
56
+ export interface ParsedRequirementOther {
57
+ kind: 'other';
58
+ id: string | undefined;
59
+ style: string;
60
+ }
61
+ type ParsedMoment = ParsedEmoteGroup | ParsedDialog | ParsedOtherMoment;
62
+ type ParsedRequirement = ParsedRequirementQuest | ParsedRequirementOther;
63
+ export type QuestMomentsLabel = `quest_${'start' | 'end'}_moments`;
64
+ export type QuestRequirementsLabel = `quest_${'start' | 'end'}_requirements`;
65
+ export interface QuestUpdateResult extends ParserResult<{
66
+ /** The moteId for the storyline */
67
+ storyline?: string;
68
+ /** The moteId for the quest giver */
69
+ quest_giver?: string;
70
+ /** The moteId for the quest receiver */
71
+ quest_receiver?: string;
72
+ clues: ParsedClue[];
73
+ quest_start_log?: string;
74
+ } & {
75
+ [K in QuestMomentsLabel]: ParsedMoment[];
76
+ } & {
77
+ [K in QuestRequirementsLabel]: ParsedRequirement[];
78
+ }> {
79
+ }
80
+ export type Section = (typeof sections)[number];
81
+ export declare const sections: readonly ["start moments", "end moments"];
82
+ export declare const linePatterns: string[];
83
+ export {};
84
+ //# sourceMappingURL=cl3.quest.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl3.quest.types.d.ts","sourceRoot":"","sources":["../src/cl3.quest.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { arrayTagPattern, questSchemaId, } from './cl2.shared.types.js';
2
+ export function listQuests(gcData) {
3
+ return gcData.listMotesBySchema(questSchemaId);
4
+ }
5
+ export function isQuestMote(mote) {
6
+ return mote.schema_id === questSchemaId;
7
+ }
8
+ export const sections = ['start moments', 'end moments'];
9
+ const moteTagPattern = '(?:@(?<moteTag>[a-z0-9_]+))';
10
+ const moteNamePattern = "(?<moteName>[A-Za-z0-9:&?! ',()/-]+)";
11
+ const emojiGroupPattern = '(?<emojiGroup>\\(\\s*(?<emojiName>[^)]*?)\\s*\\))';
12
+ export const linePatterns = [
13
+ /** Label:Text */
14
+ `^(?<labelGroup>(?<label>Name|Log|Stage)\\s*:)\\s*(?<text>.*?)\\s*$`,
15
+ /** Labeled Mote */
16
+ `^(?<labelGroup>(?<label>[\\w ]+)${arrayTagPattern}?\\s*:)\\s*(${moteNamePattern}${moteTagPattern}?)?\\s*$`,
17
+ /** Dialogue Speaker */
18
+ `^(?<indicator>\\t)(${moteNamePattern}${moteTagPattern}?)?\\s*$`,
19
+ /** Dialogue Text */
20
+ `^(?<indicator>>)\\s*?${arrayTagPattern}?(\\s+${emojiGroupPattern}?(\\s*(?<text>.*)))?\\s*$`,
21
+ /** Comment Line */
22
+ `^(?<indicator>//)\\s*?${arrayTagPattern}?\\s*(?<text>.*?)\\s*$`,
23
+ /** Emote Declaration */
24
+ `^(?<indicator>:\\))\\s*${arrayTagPattern}?\\s*$`,
25
+ /** Emote */
26
+ `^(?<indicator>!)\\s*?${arrayTagPattern}?(?<sep>\\s+)(${moteNamePattern}${moteTagPattern}\\s+${emojiGroupPattern})?\\s*$`,
27
+ /** Requirement: Quest */
28
+ // for e.g. `?#qpzc Quest Complete: Square Shaped@q_petget1_rc_c0_n5_2d`
29
+ `^(?<indicator>\\?)\\s*${arrayTagPattern}?\\s+(?<style>Quest)\\s+(?<status>Complete|Started|Not Started)\\s*:(?<sep>\\s+)(${moteNamePattern}${moteTagPattern}?)?$`,
30
+ /** Non-Dialog Moment */
31
+ `^(?<indicator>\\?)\\s*?${arrayTagPattern}?(?<sep>\\s+)(?<style>.*?)?\\s*$`,
32
+ ];
33
+ //# sourceMappingURL=cl3.quest.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cl3.quest.types.js","sourceRoot":"","sources":["../src/cl3.quest.types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAIf,aAAa,GACd,MAAM,uBAAuB,CAAC;AAI/B,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,OAAO,MAAM,CAAC,iBAAiB,CAAY,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAS;IACnC,OAAO,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC;AAC1C,CAAC;AAyFD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,aAAa,CAAU,CAAC;AAElE,MAAM,cAAc,GAAG,6BAA6B,CAAC;AACrD,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAC/D,MAAM,iBAAiB,GAAG,mDAAmD,CAAC;AAE9E,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,oEAAoE;IACpE,mBAAmB;IACnB,mCAAmC,eAAe,eAAe,eAAe,GAAG,cAAc,UAAU;IAC3G,uBAAuB;IACvB,sBAAsB,eAAe,GAAG,cAAc,UAAU;IAChE,oBAAoB;IACpB,wBAAwB,eAAe,SAAS,iBAAiB,2BAA2B;IAC5F,mBAAmB;IACnB,yBAAyB,eAAe,wBAAwB;IAChE,wBAAwB;IACxB,0BAA0B,eAAe,QAAQ;IACjD,YAAY;IACZ,wBAAwB,eAAe,iBAAiB,eAAe,GAAG,cAAc,OAAO,iBAAiB,SAAS;IACzH,yBAAyB;IACzB,wEAAwE;IACxE,yBAAyB,eAAe,oFAAoF,eAAe,GAAG,cAAc,MAAM;IAClK,wBAAwB;IACxB,0BAA0B,eAAe,kCAAkC;CAC5E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './cl2.character.js';
1
2
  export * from './cl2.comfort.js';
2
3
  export * from './cl2.quest.js';
3
4
  export * from './cl2.shared.types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './cl2.character.js';
1
2
  export * from './cl2.comfort.js';
2
3
  export * from './cl2.quest.js';
3
4
  export * from './cl2.shared.types.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bscotch/gcdata",
3
- "version": "0.21.2",
3
+ "version": "0.22.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",