@bgforge/mls-server 3.2.0 → 3.3.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.
@@ -1,54 +1,42 @@
1
1
  [
2
2
  {
3
- "label": "THEN",
4
- "kind": 14,
5
- "source": "builtin",
6
- "category": "keywords"
7
- },
8
- {
9
- "label": "RESPONSE",
10
- "kind": 14,
11
- "source": "builtin",
12
- "category": "keywords"
13
- },
14
- {
15
- "label": "OR",
16
- "kind": 14,
17
- "source": "builtin",
18
- "category": "keywords"
19
- },
20
- {
21
- "label": "GLOBAL",
22
- "kind": 14,
23
- "source": "builtin",
24
- "category": "keywords"
25
- },
26
- {
27
- "label": "LOCALS",
28
- "kind": 14,
3
+ "label": "ADD_STATE_TRIGGER",
4
+ "kind": 3,
29
5
  "source": "builtin",
30
- "category": "keywords"
6
+ "category": "actions",
7
+ "documentation": {
8
+ "kind": "markdown",
9
+ "value": "```weidu-d-tooltip\nADD_STATE_TRIGGER filename stateNumber stateTriggerString [ stateNumber list ] \tdActionWhen list\n```\nThis instructs WeiDU to add the stateTriggerString to all of the states with the given stateNumbers in the file filename.DLG (which must already exist). This is handy for adding extra conditions to an existing dialogue state."
10
+ }
31
11
  },
32
12
  {
33
- "label": "MYAREA",
34
- "kind": 14,
13
+ "label": "ADD_TRANS_ACTION",
14
+ "kind": 3,
35
15
  "source": "builtin",
36
- "category": "keywords"
16
+ "category": "actions",
17
+ "documentation": {
18
+ "kind": "markdown",
19
+ "value": "```weidu-d-tooltip\nADD_TRANS_ACTION filename BEGIN stateNumber list END BEGIN transNumber list END transActionString dActionWhen list\n```\nThis instructs WeiDU to add the transActionString to all of the actions in all the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored. The transActionString is prepended to any existing action text on a per-transition, per-state basis."
20
+ }
37
21
  },
38
22
  {
39
- "label": "END",
40
- "kind": 14,
23
+ "label": "ADD_TRANS_TRIGGER",
24
+ "kind": 3,
41
25
  "source": "builtin",
42
- "category": "keywords"
26
+ "category": "actions",
27
+ "documentation": {
28
+ "kind": "markdown",
29
+ "value": "```weidu-d-tooltip\nADD_TRANS_TRIGGER filename stateNumber transTriggerString [ moreStateNumbers list ] [ DO transNumber list ] dActionWhen list\n```\nThis instructs WeiDU to add the transTriggerString to all of the transitions in all of the states with the given stateNumbers in the file filename.DLG (which must already exist). This is often used in conjunction with EXTEND_BOTTOM to make a new branch in an existing state. Use ADD_TRANS_TRIGGER to add the negation of some predicate to all of the existing transitions, then use EXTEND_BOTTOM to add a transition with that predicate to that state. If a list of transNumbers is specified, only those transitions will have transTriggerString added to them. If such a list is not specified, every transition in every specified state will be modified. Note that the \"first\" transition is number 0."
30
+ }
43
31
  },
44
32
  {
45
- "label": "BEGIN",
33
+ "label": "ALTER_TRANS",
46
34
  "kind": 3,
47
35
  "source": "builtin",
48
36
  "category": "actions",
49
37
  "documentation": {
50
38
  "kind": "markdown",
51
- "value": "```weidu-d-tooltip\nBEGIN filename [ nonPausing ] state list\n```\nBEGIN tells WeiDU that you are creating a new DLG file from scratch. Any existing DLG file with the same name will be overwritten. The new DLG file contains exactly the states in the list. If you set nonPausing to a non-zero integer, the game will not \"stop time\" while the conversation takes place. By default time stops during conversations."
39
+ "value": "```weidu-d-tooltip\nALTER_TRANS filename BEGIN stateNumber list END BEGIN transNumber list END BEGIN changeWhat changeInto list END\n```\nFine altering of a single transition. See the ALTER_TRANS tutorial."
52
40
  }
53
41
  },
54
42
  {
@@ -72,183 +60,183 @@
72
60
  }
73
61
  },
74
62
  {
75
- "label": "CHAIN",
63
+ "label": "BEGIN",
76
64
  "kind": 3,
77
65
  "source": "builtin",
78
66
  "category": "actions",
79
67
  "documentation": {
80
68
  "kind": "markdown",
81
- "value": "```weidu-d-tooltip\nCHAIN\n [ IF [ WEIGHT #weight ] stateTriggerString THEN ]\n [ IF_FILE_EXISTS ] entryFilename entryLabel\n chainText list\n chainEpilogue\n```\nThis instructs WeiDU to make a long conversation in which the PC can say nothing. This is useful when you want the NPCs to talk among themselves for a long time. It and its friends, INTERJECT and INTERJECT_COPY_TRANS can incredible time-savers when you're writing non-trivial dialogue. See the examples for ideas. CHAIN will only append to existing dialogues. You cannot use CHAIN to create a new DLG. If the entryFilename file is missing and there is IF_FILE_EXISTS, the whole CHAIN is not compiled."
69
+ "value": "```weidu-d-tooltip\nBEGIN filename [ nonPausing ] state list\n```\nBEGIN tells WeiDU that you are creating a new DLG file from scratch. Any existing DLG file with the same name will be overwritten. The new DLG file contains exactly the states in the list. If you set nonPausing to a non-zero integer, the game will not \"stop time\" while the conversation takes place. By default time stops during conversations."
82
70
  }
83
71
  },
84
72
  {
85
- "label": "INTERJECT",
73
+ "label": "CHAIN",
86
74
  "kind": 3,
87
75
  "source": "builtin",
88
76
  "category": "actions",
89
77
  "documentation": {
90
78
  "kind": "markdown",
91
- "value": "```weidu-d-tooltip\nINTERJECT entryFilename entryLabel globalVariable chainText list chainEpilogue\n```\nBehaves like CHAIN except that all of the chainText is additionally guarded by the transition predicate Global(\"globalVariable\",\"GLOBAL\",0) and accompanied by the action SetGlobal(\"globalVariable\",\"GLOBAL\",1). If you pick globalVariable to be unique, this will ensure that the chainText is only ever seen once per game. This is useful for making interjections."
79
+ "value": "```weidu-d-tooltip\nCHAIN\n [ IF [ WEIGHT #weight ] stateTriggerString THEN ]\n [ IF_FILE_EXISTS ] entryFilename entryLabel\n chainText list\n chainEpilogue\n```\nThis instructs WeiDU to make a long conversation in which the PC can say nothing. This is useful when you want the NPCs to talk among themselves for a long time. It and its friends, INTERJECT and INTERJECT_COPY_TRANS can incredible time-savers when you're writing non-trivial dialogue. See the examples for ideas. CHAIN will only append to existing dialogues. You cannot use CHAIN to create a new DLG. If the entryFilename file is missing and there is IF_FILE_EXISTS, the whole CHAIN is not compiled."
92
80
  }
93
81
  },
94
82
  {
95
- "label": "INTERJECT_COPY_TRANS",
83
+ "label": "EXTEND_BOTTOM",
96
84
  "kind": 3,
97
85
  "source": "builtin",
98
86
  "category": "actions",
99
87
  "documentation": {
100
88
  "kind": "markdown",
101
- "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis behaves just like INTERJECT except that the exitFilename and exitLabel are not present. Instead, whenever the dialogue would pass out of the chainText it follows a copy of the transitions that were at the state with stateLabel originally. This is convenient for making quick interjections from NPCs that do not actually change the true flow of the conversation. See the transition COPY_TRANS and the INTERJECT_COPY_TRANS tutorial for more information about this idea. If SAFE is specified, INTERJECT_COPY_TRANS will not warn about potentially unsafe uses (use this if you know it is safe)."
89
+ "value": "```weidu-d-tooltip\nEXTEND_BOTTOM filename stateNumber list [ #positionNumber ] transition list END\n```\nBehaves just like EXTEND_TOP but adds the transitions to the bottom of the list instead."
102
90
  }
103
91
  },
104
92
  {
105
- "label": "INTERJECT_COPY_TRANS2",
93
+ "label": "EXTEND_TOP",
106
94
  "kind": 3,
107
95
  "source": "builtin",
108
96
  "category": "actions",
109
97
  "documentation": {
110
98
  "kind": "markdown",
111
- "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS2 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis works just like INTERJECT_COPY_TRANS, except that any actions taken in the transitions of the state specified by entryFilename and entryLabel are preserved and kept with the speaker associated with entryFilename (rather than being mistakenly performed by your new speaker). See the INTERJECT_COPY_TRANS2 tutorial."
99
+ "value": "```weidu-d-tooltip\nEXTEND_TOP filename stateLabel list [ #positionNumber ] transition list END\n```\nThis instructs WeiDU to add the transitions in list to the top of the transition list for the specified states in filename.DLG (which must already exist).If a positionNumber is given, WeiDU to insert the transitions just between already-existing transitions #positionNumber and #positionNumber+1 in the given states for the given file. The first transition is number 1."
112
100
  }
113
101
  },
114
102
  {
115
- "label": "INTERJECT_COPY_TRANS3",
103
+ "label": "INTERJECT",
116
104
  "kind": 3,
117
105
  "source": "builtin",
118
106
  "category": "actions",
119
107
  "documentation": {
120
108
  "kind": "markdown",
121
- "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS3 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis works just like INTERJECT_COPY_TRANS, except that all states in chainText get a link in the entry state, rather than only the first one. Expecting documentation."
109
+ "value": "```weidu-d-tooltip\nINTERJECT entryFilename entryLabel globalVariable chainText list chainEpilogue\n```\nBehaves like CHAIN except that all of the chainText is additionally guarded by the transition predicate Global(\"globalVariable\",\"GLOBAL\",0) and accompanied by the action SetGlobal(\"globalVariable\",\"GLOBAL\",1). If you pick globalVariable to be unique, this will ensure that the chainText is only ever seen once per game. This is useful for making interjections."
122
110
  }
123
111
  },
124
112
  {
125
- "label": "INTERJECT_COPY_TRANS4",
113
+ "label": "INTERJECT_COPY_TRANS",
126
114
  "kind": 3,
127
115
  "source": "builtin",
128
116
  "category": "actions",
129
117
  "documentation": {
130
118
  "kind": "markdown",
131
- "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS4 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis is either INTERJECT_COPY_TRANS3 with INTERJECT_COPY_TRANS2-style action handling, or INTERJECT_COPY_TRANS2 with the extended INTERJECT_COPY_TRANS3 state creation rules, depending at how you look at it."
119
+ "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis behaves just like INTERJECT except that the exitFilename and exitLabel are not present. Instead, whenever the dialogue would pass out of the chainText it follows a copy of the transitions that were at the state with stateLabel originally. This is convenient for making quick interjections from NPCs that do not actually change the true flow of the conversation. See the transition COPY_TRANS and the INTERJECT_COPY_TRANS tutorial for more information about this idea. If SAFE is specified, INTERJECT_COPY_TRANS will not warn about potentially unsafe uses (use this if you know it is safe)."
132
120
  }
133
121
  },
134
122
  {
135
- "label": "EXTEND_TOP",
123
+ "label": "INTERJECT_COPY_TRANS2",
136
124
  "kind": 3,
137
125
  "source": "builtin",
138
126
  "category": "actions",
139
127
  "documentation": {
140
128
  "kind": "markdown",
141
- "value": "```weidu-d-tooltip\nEXTEND_TOP filename stateLabel list [ #positionNumber ] transition list END\n```\nThis instructs WeiDU to add the transitions in list to the top of the transition list for the specified states in filename.DLG (which must already exist).If a positionNumber is given, WeiDU to insert the transitions just between already-existing transitions #positionNumber and #positionNumber+1 in the given states for the given file. The first transition is number 1."
129
+ "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS2 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis works just like INTERJECT_COPY_TRANS, except that any actions taken in the transitions of the state specified by entryFilename and entryLabel are preserved and kept with the speaker associated with entryFilename (rather than being mistakenly performed by your new speaker). See the INTERJECT_COPY_TRANS2 tutorial."
142
130
  }
143
131
  },
144
132
  {
145
- "label": "EXTEND_BOTTOM",
133
+ "label": "INTERJECT_COPY_TRANS3",
146
134
  "kind": 3,
147
135
  "source": "builtin",
148
136
  "category": "actions",
149
137
  "documentation": {
150
138
  "kind": "markdown",
151
- "value": "```weidu-d-tooltip\nEXTEND_BOTTOM filename stateNumber list [ #positionNumber ] transition list END\n```\nBehaves just like EXTEND_TOP but adds the transitions to the bottom of the list instead."
139
+ "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS3 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis works just like INTERJECT_COPY_TRANS, except that all states in chainText get a link in the entry state, rather than only the first one. Expecting documentation."
152
140
  }
153
141
  },
154
142
  {
155
- "label": "ADD_STATE_TRIGGER",
143
+ "label": "INTERJECT_COPY_TRANS4",
156
144
  "kind": 3,
157
145
  "source": "builtin",
158
146
  "category": "actions",
159
147
  "documentation": {
160
148
  "kind": "markdown",
161
- "value": "```weidu-d-tooltip\nADD_STATE_TRIGGER filename stateNumber stateTriggerString [ stateNumber list ] \tdActionWhen list\n```\nThis instructs WeiDU to add the stateTriggerString to all of the states with the given stateNumbers in the file filename.DLG (which must already exist). This is handy for adding extra conditions to an existing dialogue state."
149
+ "value": "```weidu-d-tooltip\nINTERJECT_COPY_TRANS4 [ SAFE ] entryFilename entryLabel globalVariable chainText list\n```\nThis is either INTERJECT_COPY_TRANS3 with INTERJECT_COPY_TRANS2-style action handling, or INTERJECT_COPY_TRANS2 with the extended INTERJECT_COPY_TRANS3 state creation rules, depending at how you look at it."
162
150
  }
163
151
  },
164
152
  {
165
- "label": "ADD_TRANS_TRIGGER",
153
+ "label": "REPLACE",
166
154
  "kind": 3,
167
155
  "source": "builtin",
168
156
  "category": "actions",
169
157
  "documentation": {
170
158
  "kind": "markdown",
171
- "value": "```weidu-d-tooltip\nADD_TRANS_TRIGGER filename stateNumber transTriggerString [ moreStateNumbers list ] [ DO transNumber list ] dActionWhen list\n```\nThis instructs WeiDU to add the transTriggerString to all of the transitions in all of the states with the given stateNumbers in the file filename.DLG (which must already exist). This is often used in conjunction with EXTEND_BOTTOM to make a new branch in an existing state. Use ADD_TRANS_TRIGGER to add the negation of some predicate to all of the existing transitions, then use EXTEND_BOTTOM to add a transition with that predicate to that state. If a list of transNumbers is specified, only those transitions will have transTriggerString added to them. If such a list is not specified, every transition in every specified state will be modified. Note that the \"first\" transition is number 0."
159
+ "value": "```weidu-d-tooltip\nREPLACE filename state list END\n```\nThis instructs WeiDU to load filename.DLG and replace some of its states with the new ones described in the state list. All of the states should have numeric stateLabels (e.g., \"5\" or \"67\"). A new state with label X will replace the old state number X."
172
160
  }
173
161
  },
174
162
  {
175
- "label": "ADD_TRANS_ACTION",
163
+ "label": "REPLACE_ACTION_TEXT",
176
164
  "kind": 3,
177
165
  "source": "builtin",
178
166
  "category": "actions",
179
167
  "documentation": {
180
168
  "kind": "markdown",
181
- "value": "```weidu-d-tooltip\nADD_TRANS_ACTION filename BEGIN stateNumber list END BEGIN transNumber list END transActionString dActionWhen list\n```\nThis instructs WeiDU to add the transActionString to all of the actions in all the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored. The transActionString is prepended to any existing action text on a per-transition, per-state basis."
169
+ "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT filename oldText newText [ moreFilenames ] dActionWhen list\n```\nThis instructs WeiDU to destructively replace every occurrence of oldText (which may be a regexp) in the stateActionStrings of filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use this if you can help it."
182
170
  }
183
171
  },
184
172
  {
185
- "label": "REPLACE_TRANS_ACTION",
173
+ "label": "REPLACE_ACTION_TEXT_PROCESS",
186
174
  "kind": 3,
187
175
  "source": "builtin",
188
176
  "category": "actions",
189
177
  "documentation": {
190
178
  "kind": "markdown",
191
- "value": "```weidu-d-tooltip\nREPLACE_TRANS_ACTION filename BEGIN stateNumber list END BEGIN transNumber list END oldText newText dActionWhen list\n```\nThis instructs WeiDU to replace all instances of oldText in newText to all of the actions in all the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored."
179
+ "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT_PROCESS filename oldText newText [ moreFilenames ] dActionWhen list\n```\nThis instructs WeiDU to destructively replace every occurrence of oldText (which may be a regexp) in the stateActionStrings of filename.DLG (which must exist) with newText. However, newText is first compiled as a BAF action list. In particular, this means that replacing with commands like: ~DisplayString(Myself,@123)~ ... will do what you expect. This should only be used to patch or workaround existing dialogues. Never use this if you can help it."
192
180
  }
193
181
  },
194
182
  {
195
- "label": "REPLACE_TRANS_TRIGGER",
183
+ "label": "REPLACE_ACTION_TEXT_PROCESS_REGEXP",
196
184
  "kind": 3,
197
185
  "source": "builtin",
198
186
  "category": "actions",
199
187
  "documentation": {
200
188
  "kind": "markdown",
201
- "value": "```weidu-d-tooltip\nREPLACE_TRANS_TRIGGER filename BEGIN stateNumber list END BEGIN transNumber list END oldText newText dActionWhen list\n```\nThis instructs WeiDU to replace all instances of oldText in newText to all of the triggers in all of the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored."
189
+ "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT_PROCESS_REGEXP filenameRegexp oldText newText [ moreFilenameRegexps ] dActionWhen list\n```\nJust like REPLACE_ACTION_TEXT_PROCESS, but the filenames are regexps. The .DLG is implied. R_A_T_P_R is shorthand for REPLACE_ACTION_TEXT_PROCESS_REGEXP."
202
190
  }
203
191
  },
204
192
  {
205
- "label": "ALTER_TRANS",
193
+ "label": "REPLACE_ACTION_TEXT_REGEXP",
206
194
  "kind": 3,
207
195
  "source": "builtin",
208
196
  "category": "actions",
209
197
  "documentation": {
210
198
  "kind": "markdown",
211
- "value": "```weidu-d-tooltip\nALTER_TRANS filename BEGIN stateNumber list END BEGIN transNumber list END BEGIN changeWhat changeInto list END\n```\nFine altering of a single transition. See the ALTER_TRANS tutorial."
199
+ "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT_REGEXP filenameRegexp oldText newText [ moreFilenameRegexps ] dActionWhen list\n```\nJust like REPLACE_ACTION_TEXT but the filenames are regexps. The .DLG is implied, do not include it in your regexps."
212
200
  }
213
201
  },
214
202
  {
215
- "label": "REPLACE",
203
+ "label": "REPLACE_SAY",
216
204
  "kind": 3,
217
205
  "source": "builtin",
218
206
  "category": "actions",
219
207
  "documentation": {
220
208
  "kind": "markdown",
221
- "value": "```weidu-d-tooltip\nREPLACE filename state list END\n```\nThis instructs WeiDU to load filename.DLG and replace some of its states with the new ones described in the state list. All of the states should have numeric stateLabels (e.g., \"5\" or \"67\"). A new state with label X will replace the old state number X."
209
+ "value": "```weidu-d-tooltip\nREPLACE_SAY filename stateLabel sayText\n```\nThis instructs WeiDU to destructively change the sayText of the given state in filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use REPLACE_SAY if you can help it."
222
210
  }
223
211
  },
224
212
  {
225
- "label": "SET_WEIGHT",
213
+ "label": "REPLACE_STATE_TRIGGER",
226
214
  "kind": 3,
227
215
  "source": "builtin",
228
216
  "category": "actions",
229
217
  "documentation": {
230
218
  "kind": "markdown",
231
- "value": "```weidu-d-tooltip\nSET_WEIGHT filename stateLabel #stateWeight\n```\nThis instructs WeiDU to destructively change the WEIGHT of the given state in filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use SET_WEIGHT if you can help it."
219
+ "value": "```weidu-d-tooltip\nREPLACE_STATE_TRIGGER filename stateNumber stateTriggerString [ stateNumber list ] \tdActionWhen list\n```\nThis instructs WeiDU to destructively set the stateTriggerString of all of the states with the given stateNumbers in the file filename.DLG (which must already exist). It should be used with caution."
232
220
  }
233
221
  },
234
222
  {
235
- "label": "REPLACE_SAY",
223
+ "label": "REPLACE_TRANS_ACTION",
236
224
  "kind": 3,
237
225
  "source": "builtin",
238
226
  "category": "actions",
239
227
  "documentation": {
240
228
  "kind": "markdown",
241
- "value": "```weidu-d-tooltip\nREPLACE_SAY filename stateLabel sayText\n```\nThis instructs WeiDU to destructively change the sayText of the given state in filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use REPLACE_SAY if you can help it."
229
+ "value": "```weidu-d-tooltip\nREPLACE_TRANS_ACTION filename BEGIN stateNumber list END BEGIN transNumber list END oldText newText dActionWhen list\n```\nThis instructs WeiDU to replace all instances of oldText in newText to all of the actions in all the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored."
242
230
  }
243
231
  },
244
232
  {
245
- "label": "REPLACE_STATE_TRIGGER",
233
+ "label": "REPLACE_TRANS_TRIGGER",
246
234
  "kind": 3,
247
235
  "source": "builtin",
248
236
  "category": "actions",
249
237
  "documentation": {
250
238
  "kind": "markdown",
251
- "value": "```weidu-d-tooltip\nREPLACE_STATE_TRIGGER filename stateNumber stateTriggerString [ stateNumber list ] \tdActionWhen list\n```\nThis instructs WeiDU to destructively set the stateTriggerString of all of the states with the given stateNumbers in the file filename.DLG (which must already exist). It should be used with caution."
239
+ "value": "```weidu-d-tooltip\nREPLACE_TRANS_TRIGGER filename BEGIN stateNumber list END BEGIN transNumber list END oldText newText dActionWhen list\n```\nThis instructs WeiDU to replace all instances of oldText in newText to all of the triggers in all of the transitions in all of the states specified by the stateNumber list and the transNumber list. You may use state labels in the stateNumber list. If the transNumber list is empty, the text added to all transitions on all listed states. Note that the BEGIN and END keywords must be present, even if you specify an empty list of transNumbers. The \"first\" transition is number 0. Any out-of-bounds transNumbers are silently ignored."
252
240
  }
253
241
  },
254
242
  {
@@ -272,93 +260,146 @@
272
260
  }
273
261
  },
274
262
  {
275
- "label": "REPLACE_ACTION_TEXT",
263
+ "label": "R_A_T_P_R",
276
264
  "kind": 3,
277
265
  "source": "builtin",
278
266
  "category": "actions",
279
267
  "documentation": {
280
268
  "kind": "markdown",
281
- "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT filename oldText newText [ moreFilenames ] dActionWhen list\n```\nThis instructs WeiDU to destructively replace every occurrence of oldText (which may be a regexp) in the stateActionStrings of filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use this if you can help it."
269
+ "value": "```weidu-d-tooltip\nR_A_T_P_R filenameRegexp oldText newText [ moreFilenameRegexps ] dActionWhen list\n```\nJust like REPLACE_ACTION_TEXT_PROCESS, but the filenames are regexps. The .DLG is implied. R_A_T_P_R is shorthand for REPLACE_ACTION_TEXT_PROCESS_REGEXP (to avoid undue scrollbars in the readme on a 1024x768 monitor)."
282
270
  }
283
271
  },
284
272
  {
285
- "label": "REPLACE_ACTION_TEXT_REGEXP",
273
+ "label": "SET_WEIGHT",
286
274
  "kind": 3,
287
275
  "source": "builtin",
288
276
  "category": "actions",
289
277
  "documentation": {
290
278
  "kind": "markdown",
291
- "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT_REGEXP filenameRegexp oldText newText [ moreFilenameRegexps ] dActionWhen list\n```\nJust like REPLACE_ACTION_TEXT but the filenames are regexps. The .DLG is implied, do not include it in your regexps."
279
+ "value": "```weidu-d-tooltip\nSET_WEIGHT filename stateLabel #stateWeight\n```\nThis instructs WeiDU to destructively change the WEIGHT of the given state in filename.DLG (which must exist). This should only be used to patch or workaround existing dialogues. Never use SET_WEIGHT if you can help it."
292
280
  }
293
281
  },
294
282
  {
295
- "label": "REPLACE_ACTION_TEXT_PROCESS",
296
- "kind": 3,
283
+ "label": "COPY_TRANS",
284
+ "kind": 14,
297
285
  "source": "builtin",
298
- "category": "actions",
286
+ "category": "chain_epilogue",
299
287
  "documentation": {
300
288
  "kind": "markdown",
301
- "value": "```weidu-d-tooltip\nREPLACE_ACTION_TEXT_PROCESS filename oldText newText [ moreFilenames ] dActionWhen list\n```\nThis instructs WeiDU to destructively replace every occurrence of oldText (which may be a regexp) in the stateActionStrings of filename.DLG (which must exist) with newText. However, newText is first compiled as a BAF action list. In particular, this means that replacing with commands like: ~DisplayString(Myself,@123)~ ... will do what you expect. This should only be used to patch or workaround existing dialogues. Never use this if you can help it."
302
- }
289
+ "value": "```weidu-d-tooltip\nCOPY_TRANS [ SAFE ] filename stateNumber\n```\nAt the end of the CHAIN text, copy all transitions from the given state in the given file. This is useful for interjections (see INTERJECT). If SAFE is specified, CHAIN will not warn about potentially unsafe uses of COPY_TRANS (use this if you know it is safe)."
290
+ },
291
+ "detail": "COPY_TRANS [ SAFE ] filename stateNumber"
303
292
  },
304
293
  {
305
- "label": "R_A_T_P_R",
306
- "kind": 3,
294
+ "label": "COPY_TRANS_LATE",
295
+ "kind": 14,
307
296
  "source": "builtin",
308
- "category": "actions",
297
+ "category": "chain_epilogue",
309
298
  "documentation": {
310
299
  "kind": "markdown",
311
- "value": "```weidu-d-tooltip\nR_A_T_P_R filenameRegexp oldText newText [ moreFilenameRegexps ] dActionWhen list\n```\nJust like REPLACE_ACTION_TEXT_PROCESS, but the filenames are regexps. The .DLG is implied. R_A_T_P_R is shorthand for REPLACE_ACTION_TEXT_PROCESS_REGEXP (to avoid undue scrollbars in the readme on a 1024x768 monitor)."
312
- }
300
+ "value": "```weidu-d-tooltip\nCOPY_TRANS_LATE [ SAFE ] filename stateNumber\n```\nSame as above, but only copy after all the other D Actions have been applied."
301
+ },
302
+ "detail": "COPY_TRANS_LATE [ SAFE ] filename stateNumber"
313
303
  },
314
304
  {
315
- "label": "UNLESS",
305
+ "label": "BRANCH",
316
306
  "kind": 14,
317
307
  "source": "builtin",
318
- "category": "when",
308
+ "category": "keywords",
319
309
  "documentation": {
320
310
  "kind": "markdown",
321
- "value": "```weidu-d-tooltip\nUNLESS String\n```\nThe action is not processed if the element being altered/replaced/added to contains a substring matching against the String regexp."
311
+ "value": "```weidu-d-tooltip\nBRANCH transTriggerString BEGIN chain_speaker list END\n```\nLike chain text, except that the first transTriggerString is appended to all existing dialogue units."
322
312
  }
323
313
  },
324
314
  {
325
- "label": "EXTERN",
315
+ "label": "END",
326
316
  "kind": 14,
327
317
  "source": "builtin",
328
- "category": "chain_epilogue",
318
+ "category": "keywords",
329
319
  "documentation": {
330
320
  "kind": "markdown",
331
- "value": "```weidu-d-tooltip\nEXTERN filename stateNumber\n```\nTransfer to the given state in the given dialogue file."
321
+ "value": "```weidu-d-tooltip\nEND\n```\nBlock terminator for APPEND, EXTEND_TOP, EXTEND_BOTTOM, state, ALTER_TRANS, and other constructs.\n\n---\nChain epilogue: `END transition list` — execute the given transitions after the final state in the CHAIN."
332
322
  }
333
323
  },
334
324
  {
335
- "label": "COPY_TRANS",
325
+ "label": "GLOBAL",
336
326
  "kind": 14,
337
327
  "source": "builtin",
338
- "category": "chain_epilogue",
339
- "documentation": {
340
- "kind": "markdown",
341
- "value": "```weidu-d-tooltip\nCOPY_TRANS [ SAFE ] filename stateNumber\n```\nAt the end of the CHAIN text, copy all transitions from the given state in the given file. This is useful for interjections (see INTERJECT). If SAFE is specified, CHAIN will not warn about potentially unsafe uses of COPY_TRANS (use this if you know it is safe)."
342
- }
328
+ "category": "keywords"
343
329
  },
344
330
  {
345
- "label": "COPY_TRANS_LATE",
331
+ "label": "IF_FILE_EXISTS",
346
332
  "kind": 14,
347
333
  "source": "builtin",
348
- "category": "chain_epilogue",
334
+ "category": "keywords"
335
+ },
336
+ {
337
+ "label": "LOCALS",
338
+ "kind": 14,
339
+ "source": "builtin",
340
+ "category": "keywords"
341
+ },
342
+ {
343
+ "label": "MYAREA",
344
+ "kind": 14,
345
+ "source": "builtin",
346
+ "category": "keywords"
347
+ },
348
+ {
349
+ "label": "OR",
350
+ "kind": 14,
351
+ "source": "builtin",
352
+ "category": "keywords"
353
+ },
354
+ {
355
+ "label": "RESPONSE",
356
+ "kind": 14,
357
+ "source": "builtin",
358
+ "category": "keywords"
359
+ },
360
+ {
361
+ "label": "SAFE",
362
+ "kind": 14,
363
+ "source": "builtin",
364
+ "category": "keywords"
365
+ },
366
+ {
367
+ "label": "THEN",
368
+ "kind": 14,
369
+ "source": "builtin",
370
+ "category": "keywords"
371
+ },
372
+ {
373
+ "label": "WEIGHT",
374
+ "kind": 14,
375
+ "source": "builtin",
376
+ "category": "keywords"
377
+ },
378
+ {
379
+ "label": "nonPausing",
380
+ "kind": 14,
381
+ "source": "builtin",
382
+ "category": "keywords"
383
+ },
384
+ {
385
+ "label": "IF",
386
+ "kind": 14,
387
+ "source": "builtin",
388
+ "category": "multi",
349
389
  "documentation": {
350
390
  "kind": "markdown",
351
- "value": "```weidu-d-tooltip\nCOPY_TRANS_LATE [ SAFE ] filename stateNumber\n```\nSame as above, but only copy after all the other D Actions have been applied."
352
- }
391
+ "value": "```weidu-d-tooltip\nIF\n```\nTransition: `IF transTriggerString [ THEN ] transFeature list transNext`\n\nIf the transTriggerString evaluates to true or is empty, this transition is viable. If it contains no replyText within its transFeature list, it is immediately taken. Otherwise, the replyText is presented as an option to the user. If the transition is taken, any actions in the transFeature list are performed and the dialogue flows to the point indicated by the transNext. transitions are evaluated in \"reverse order\".\n\n---\nAction condition: `IF String`.\n\nThe action is processed if the element being altered/replaced/added to contains a substring matching against the String regexp.\n\n---\nState: `IF [ WEIGHT #weightNumber ] stateTriggerString [ THEN ] [ BEGIN ] stateLabel SAY sayText [ = sayText ... ] transition list END`\n\n[Online documentation](https://weidu.org/~thebigg/README-WeiDU.html#state)"
392
+ },
393
+ "detail": "IF"
353
394
  },
354
395
  {
355
- "label": "EXIT",
396
+ "label": "text",
356
397
  "kind": 14,
357
398
  "source": "builtin",
358
- "category": "chain_epilogue",
399
+ "category": "say_text",
359
400
  "documentation": {
360
401
  "kind": "markdown",
361
- "value": "```weidu-d-tooltip\nEXIT\n```\nAt the end of the CHAIN text, exit the dialogue."
402
+ "value": "```weidu-d-tooltip\ntext\n```\nsayText and replyText are both text."
362
403
  }
363
404
  },
364
405
  {
@@ -382,153 +423,166 @@
382
423
  }
383
424
  },
384
425
  {
385
- "label": "text",
426
+ "label": "SAY",
386
427
  "kind": 14,
387
428
  "source": "builtin",
388
- "category": "say_text",
429
+ "category": "state",
389
430
  "documentation": {
390
431
  "kind": "markdown",
391
- "value": "```weidu-d-tooltip\ntext\n```\nsayText and replyText are both text."
432
+ "value": "```weidu-d-tooltip\nSAY sayText [ = sayText ... ]\n```\nThe creature then says all of the associated sayText."
392
433
  }
393
434
  },
394
435
  {
395
- "label": "+",
436
+ "label": "^",
396
437
  "kind": 14,
397
438
  "source": "builtin",
398
- "category": "transition",
439
+ "category": "string",
399
440
  "documentation": {
400
441
  "kind": "markdown",
401
- "value": "```weidu-d-tooltip\n+ [ transTriggerString ] + replyText transFeature list transNext\n```\nThis abbreviated syntax for transitions that would contain REPLY (which is by far the most common case) allows you to save yourself some time and typing. It behaves like the full form above."
442
+ "value": "```weidu-d-tooltip\nString ^ String\n```\nString literal concatenation. The second string is appended to the first string. No whitespace is added. Thus \"hello\" ^ \"World\" is the same as \"helloWorld\"."
402
443
  }
403
444
  },
404
445
  {
405
- "label": "COPY_TRANS",
446
+ "label": "DO",
406
447
  "kind": 14,
407
448
  "source": "builtin",
408
- "category": "transition",
449
+ "category": "trans_feature",
409
450
  "documentation": {
410
451
  "kind": "markdown",
411
- "value": "```weidu-d-tooltip\nCOPY_TRANS [ SAFE ] filename stateLabel\n```\nThis instructs WeiDU to copy all of the transitions from the state with the given stateLabel in filename.DLG. This copying takes place before all other D Actions. For example, this is a valid transition list: IF ~Before()~ THEN GOTO my_state COPY_TRANS PLAYER1 33 IF ~After()~ THEN EXTERN SOLA 55 If SAFE is specified, COPY_TRANS will not warn about potentially unsafe uses (use this if you know it is safe)."
452
+ "value": "```weidu-d-tooltip\nDO stateActionString\n```\nIf this transition is taken, the stateActionString is executed."
412
453
  }
413
454
  },
414
455
  {
415
- "label": "COPY_TRANS_LATE",
456
+ "label": "FLAGS",
416
457
  "kind": 14,
417
458
  "source": "builtin",
418
- "category": "transition",
459
+ "category": "trans_feature",
419
460
  "documentation": {
420
461
  "kind": "markdown",
421
- "value": "```weidu-d-tooltip\nCOPY_TRANS_LATE [ SAFE ] filename stateLabel\n```\nSame as COPY_TRANS, but is invoked after all other D Actions."
462
+ "value": "```weidu-d-tooltip\nFLAGS integer\n```\nThis allows you to set the features associated with a transition directly using the binary format of DLG files."
422
463
  }
423
464
  },
424
465
  {
425
- "label": "REPLY",
466
+ "label": "JOURNAL",
426
467
  "kind": 14,
427
468
  "source": "builtin",
428
469
  "category": "trans_feature",
429
470
  "documentation": {
430
471
  "kind": "markdown",
431
- "value": "```weidu-d-tooltip\nREPLY replyText\n```\nIf this transition is taken, the PC says the replyText."
472
+ "value": "```weidu-d-tooltip\nJOURNAL text\n```\nIf this transition is taken, the text is added to the PC's journal."
432
473
  }
433
474
  },
434
475
  {
435
- "label": "DO",
476
+ "label": "REPLY",
436
477
  "kind": 14,
437
478
  "source": "builtin",
438
479
  "category": "trans_feature",
439
480
  "documentation": {
440
481
  "kind": "markdown",
441
- "value": "```weidu-d-tooltip\nDO stateActionString\n```\nIf this transition is taken, the stateActionString is executed."
482
+ "value": "```weidu-d-tooltip\nREPLY replyText\n```\nIf this transition is taken, the PC says the replyText."
442
483
  }
443
484
  },
444
485
  {
445
- "label": "JOURNAL",
486
+ "label": "SOLVED_JOURNAL",
446
487
  "kind": 14,
447
488
  "source": "builtin",
448
489
  "category": "trans_feature",
449
490
  "documentation": {
450
491
  "kind": "markdown",
451
- "value": "```weidu-d-tooltip\nJOURNAL text\n```\nIf this transition is taken, the text is added to the PC's journal."
492
+ "value": "```weidu-d-tooltip\nSOLVED_JOURNAL text\n```\nIf this transition is taken, the text is added to the \"solved\" section of the PC's journal."
452
493
  }
453
494
  },
454
495
  {
455
- "label": "SOLVED_JOURNAL",
496
+ "label": "UNSOLVED_JOURNAL",
456
497
  "kind": 14,
457
498
  "source": "builtin",
458
499
  "category": "trans_feature",
459
500
  "documentation": {
460
501
  "kind": "markdown",
461
- "value": "```weidu-d-tooltip\nSOLVED_JOURNAL text\n```\nIf this transition is taken, the text is added to the \"solved\" section of the PC's journal."
502
+ "value": "```weidu-d-tooltip\nUNSOLVED_JOURNAL text\n```\nIf this transition is taken, the text is added to the \"unsolved\" section of the PC's journal."
462
503
  }
463
504
  },
464
505
  {
465
- "label": "UNSOLVED_JOURNAL",
506
+ "label": "EXIT",
466
507
  "kind": 14,
467
508
  "source": "builtin",
468
- "category": "trans_feature",
509
+ "category": "trans_next",
469
510
  "documentation": {
470
511
  "kind": "markdown",
471
- "value": "```weidu-d-tooltip\nUNSOLVED_JOURNAL text\n```\nIf this transition is taken, the text is added to the \"unsolved\" section of the PC's journal."
512
+ "value": "```weidu-d-tooltip\nEXIT\n```\nThe conversation ends.\n\n---\nChain epilogue: at the end of the CHAIN text, exit the dialogue."
472
513
  }
473
514
  },
474
515
  {
475
- "label": "FLAGS",
516
+ "label": "EXTERN",
476
517
  "kind": 14,
477
518
  "source": "builtin",
478
- "category": "trans_feature",
519
+ "category": "trans_next",
479
520
  "documentation": {
480
521
  "kind": "markdown",
481
- "value": "```weidu-d-tooltip\nFLAGS integer\n```\nThis allows you to set the features associated with a transition directly using the binary format of DLG files."
522
+ "value": "```weidu-d-tooltip\nEXTERN [ IF_FILE_EXISTS ] filename stateLabel\n```\nThe dialogue continues at the state with label stateLabel in the file filename.DLG. The whole transition is not compiled if there's IF_FILE_EXISTS and the file filename doesn't exist.\n\n---\nChain epilogue: `EXTERN filename stateNumber` — transfer to the given state in the given dialogue file."
482
523
  }
483
524
  },
484
525
  {
485
526
  "label": "GOTO",
486
527
  "kind": 14,
487
528
  "source": "builtin",
488
- "category": "tran_next",
529
+ "category": "trans_next",
489
530
  "documentation": {
490
531
  "kind": "markdown",
491
532
  "value": "```weidu-d-tooltip\nGOTO stateLabel\n```\nThe dialogue continues at the state with label stateLabel in the same DLG file as the current state."
492
533
  }
493
534
  },
494
535
  {
495
- "label": "EXTERN",
536
+ "label": "+",
496
537
  "kind": 14,
497
538
  "source": "builtin",
498
- "category": "tran_next",
539
+ "category": "transition",
499
540
  "documentation": {
500
541
  "kind": "markdown",
501
- "value": "```weidu-d-tooltip\nEXTERN [ IF_FILE_EXISTS ] filename stateLabel\n```\nThe dialogue continues at the state with label stateLabel in the file filename.DLG. The whole transition is not compiled if there's IF_FILE_EXISTS and the file filename doesn't exist."
542
+ "value": "```weidu-d-tooltip\n+ [ transTriggerString ] + replyText transFeature list transNext\n```\nThis abbreviated syntax for transitions that would contain REPLY (which is by far the most common case) allows you to save yourself some time and typing. It behaves like the full form above."
502
543
  }
503
544
  },
504
545
  {
505
- "label": "EXIT",
546
+ "label": "COPY_TRANS",
506
547
  "kind": 14,
507
548
  "source": "builtin",
508
- "category": "tran_next",
549
+ "category": "transition",
509
550
  "documentation": {
510
551
  "kind": "markdown",
511
- "value": "```weidu-d-tooltip\nEXIT\n```\nThe conversation ends."
512
- }
552
+ "value": "```weidu-d-tooltip\nCOPY_TRANS [ SAFE ] filename stateLabel\n```\nThis instructs WeiDU to copy all of the transitions from the state with the given stateLabel in filename.DLG. This copying takes place before all other D Actions. For example, this is a valid transition list: IF ~Before()~ THEN GOTO my_state COPY_TRANS PLAYER1 33 IF ~After()~ THEN EXTERN SOLA 55 If SAFE is specified, COPY_TRANS will not warn about potentially unsafe uses (use this if you know it is safe)."
553
+ },
554
+ "detail": "COPY_TRANS [ SAFE ] filename stateLabel"
555
+ },
556
+ {
557
+ "label": "COPY_TRANS_LATE",
558
+ "kind": 14,
559
+ "source": "builtin",
560
+ "category": "transition",
561
+ "documentation": {
562
+ "kind": "markdown",
563
+ "value": "```weidu-d-tooltip\nCOPY_TRANS_LATE [ SAFE ] filename stateLabel\n```\nSame as COPY_TRANS, but is invoked after all other D Actions."
564
+ },
565
+ "detail": "COPY_TRANS_LATE [ SAFE ] filename stateLabel"
513
566
  },
514
567
  {
515
568
  "label": "IF",
516
569
  "kind": 14,
517
570
  "source": "builtin",
518
- "category": "multi",
571
+ "category": "when",
519
572
  "documentation": {
520
573
  "kind": "markdown",
521
- "value": "```weidu-d-tooltip\nIF\n```\nTransition: `IF transTriggerString [ THEN ] transFeature list transNext`\n\nIf the transTriggerString evaluates to true or is empty, this transition is viable. If it contains no replyText within its transFeature list, it is immediately taken. Otherwise, the replyText is presented as an option to the user. If the transition is taken, any actions in the transFeature list are performed and the dialogue flows to the point indicated by the transNext. transitions are evaluated in \"reverse order\".\n\n---\nAction condition: `IF String`.\n\nThe action is processed if the element being altered/replaced/added to contains a substring matching against the String regexp.\n\n---\nState: `IF [ WEIGHT #weightNumber ] stateTriggerString [ THEN ] [ BEGIN ] stateLabel SAY sayText [ = sayText ... ] transition list END`\n\n[Online documentation](https://weidu.org/~thebigg/README-WeiDU.html#state)"
522
- }
574
+ "value": "```weidu-d-tooltip\nIF String\n```\nThe action is processed if the element being altered/replaced/added to contains a substring matching against the String regexp."
575
+ },
576
+ "detail": "IF String"
523
577
  },
524
578
  {
525
- "label": "^",
579
+ "label": "UNLESS",
526
580
  "kind": 14,
527
581
  "source": "builtin",
528
- "category": "string",
582
+ "category": "when",
529
583
  "documentation": {
530
584
  "kind": "markdown",
531
- "value": "```weidu-d-tooltip\nString ^ String\n```\nString literal concatenation. The second string is appended to the first string. No whitespace is added. Thus \"hello\" ^ \"World\" is the same as \"helloWorld\"."
585
+ "value": "```weidu-d-tooltip\nUNLESS String\n```\nThe action is not processed if the element being altered/replaced/added to contains a substring matching against the String regexp."
532
586
  }
533
587
  }
534
588
  ]