@sdd330dev/jy-skill 0.3.0

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 (135) hide show
  1. package/AGENTS.md +148 -0
  2. package/LICENSE +21 -0
  3. package/README.md +177 -0
  4. package/SKILL.md +208 -0
  5. package/assets/characters/0.json +56 -0
  6. package/assets/characters/1.json +60 -0
  7. package/assets/characters/10.json +56 -0
  8. package/assets/characters/100.json +38 -0
  9. package/assets/characters/101.json +38 -0
  10. package/assets/characters/102.json +38 -0
  11. package/assets/characters/103.json +38 -0
  12. package/assets/characters/104.json +38 -0
  13. package/assets/characters/105.json +38 -0
  14. package/assets/characters/106.json +38 -0
  15. package/assets/characters/107.json +38 -0
  16. package/assets/characters/108.json +38 -0
  17. package/assets/characters/109.json +38 -0
  18. package/assets/characters/11.json +56 -0
  19. package/assets/characters/110.json +38 -0
  20. package/assets/characters/12.json +52 -0
  21. package/assets/characters/13.json +56 -0
  22. package/assets/characters/14.json +52 -0
  23. package/assets/characters/15.json +56 -0
  24. package/assets/characters/16.json +56 -0
  25. package/assets/characters/17.json +52 -0
  26. package/assets/characters/18.json +43 -0
  27. package/assets/characters/19.json +56 -0
  28. package/assets/characters/2.json +56 -0
  29. package/assets/characters/20.json +56 -0
  30. package/assets/characters/200.json +48 -0
  31. package/assets/characters/201.json +48 -0
  32. package/assets/characters/202.json +56 -0
  33. package/assets/characters/21.json +52 -0
  34. package/assets/characters/22.json +52 -0
  35. package/assets/characters/23.json +56 -0
  36. package/assets/characters/24.json +43 -0
  37. package/assets/characters/25.json +52 -0
  38. package/assets/characters/26.json +56 -0
  39. package/assets/characters/27.json +52 -0
  40. package/assets/characters/28.json +52 -0
  41. package/assets/characters/29.json +52 -0
  42. package/assets/characters/3.json +60 -0
  43. package/assets/characters/30.json +52 -0
  44. package/assets/characters/300.json +38 -0
  45. package/assets/characters/301.json +38 -0
  46. package/assets/characters/31.json +56 -0
  47. package/assets/characters/32.json +47 -0
  48. package/assets/characters/33.json +47 -0
  49. package/assets/characters/34.json +52 -0
  50. package/assets/characters/35.json +56 -0
  51. package/assets/characters/36.json +52 -0
  52. package/assets/characters/37.json +52 -0
  53. package/assets/characters/38.json +56 -0
  54. package/assets/characters/39.json +52 -0
  55. package/assets/characters/4.json +56 -0
  56. package/assets/characters/40.json +56 -0
  57. package/assets/characters/41.json +52 -0
  58. package/assets/characters/42.json +52 -0
  59. package/assets/characters/43.json +52 -0
  60. package/assets/characters/44.json +52 -0
  61. package/assets/characters/45.json +56 -0
  62. package/assets/characters/46.json +56 -0
  63. package/assets/characters/47.json +47 -0
  64. package/assets/characters/48.json +52 -0
  65. package/assets/characters/49.json +38 -0
  66. package/assets/characters/5.json +60 -0
  67. package/assets/characters/50.json +38 -0
  68. package/assets/characters/51.json +38 -0
  69. package/assets/characters/52.json +38 -0
  70. package/assets/characters/53.json +38 -0
  71. package/assets/characters/54.json +38 -0
  72. package/assets/characters/55.json +38 -0
  73. package/assets/characters/56.json +38 -0
  74. package/assets/characters/57.json +38 -0
  75. package/assets/characters/58.json +38 -0
  76. package/assets/characters/59.json +38 -0
  77. package/assets/characters/6.json +56 -0
  78. package/assets/characters/60.json +38 -0
  79. package/assets/characters/61.json +38 -0
  80. package/assets/characters/62.json +38 -0
  81. package/assets/characters/63.json +38 -0
  82. package/assets/characters/64.json +38 -0
  83. package/assets/characters/65.json +38 -0
  84. package/assets/characters/66.json +38 -0
  85. package/assets/characters/67.json +38 -0
  86. package/assets/characters/68.json +38 -0
  87. package/assets/characters/69.json +38 -0
  88. package/assets/characters/7.json +64 -0
  89. package/assets/characters/70.json +38 -0
  90. package/assets/characters/71.json +38 -0
  91. package/assets/characters/72.json +38 -0
  92. package/assets/characters/73.json +38 -0
  93. package/assets/characters/74.json +38 -0
  94. package/assets/characters/75.json +38 -0
  95. package/assets/characters/76.json +38 -0
  96. package/assets/characters/77.json +38 -0
  97. package/assets/characters/78.json +38 -0
  98. package/assets/characters/79.json +38 -0
  99. package/assets/characters/8.json +60 -0
  100. package/assets/characters/80.json +38 -0
  101. package/assets/characters/81.json +38 -0
  102. package/assets/characters/82.json +38 -0
  103. package/assets/characters/83.json +38 -0
  104. package/assets/characters/84.json +38 -0
  105. package/assets/characters/85.json +38 -0
  106. package/assets/characters/86.json +38 -0
  107. package/assets/characters/87.json +38 -0
  108. package/assets/characters/88.json +38 -0
  109. package/assets/characters/89.json +38 -0
  110. package/assets/characters/9.json +56 -0
  111. package/assets/characters/90.json +38 -0
  112. package/assets/characters/91.json +38 -0
  113. package/assets/characters/92.json +38 -0
  114. package/assets/characters/93.json +38 -0
  115. package/assets/characters/94.json +38 -0
  116. package/assets/characters/95.json +38 -0
  117. package/assets/characters/96.json +38 -0
  118. package/assets/characters/97.json +38 -0
  119. package/assets/characters/98.json +38 -0
  120. package/assets/characters/99.json +38 -0
  121. package/assets/characters/index.json +584 -0
  122. package/assets/game-config.json +855 -0
  123. package/assets/items.json +1060 -0
  124. package/assets/skills.json +829 -0
  125. package/assets/templates.json +127 -0
  126. package/package.json +80 -0
  127. package/references/agent-handbook.md +308 -0
  128. package/references/game-design.md +124 -0
  129. package/references/player-guide.md +176 -0
  130. package/scripts/config-loader.ts +408 -0
  131. package/scripts/game-engine.ts +617 -0
  132. package/scripts/game-logic.ts +153 -0
  133. package/scripts/game-types.ts +46 -0
  134. package/scripts/install-skill.mjs +115 -0
  135. package/scripts/persistence.ts +135 -0
@@ -0,0 +1,855 @@
1
+ {
2
+ "maps": [
3
+ {
4
+ "id": 0,
5
+ "name": "大地图",
6
+ "desc": "江湖世界",
7
+ "width": 20,
8
+ "height": 20,
9
+ "bgm": "world_map",
10
+ "tiles": [
11
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],
12
+ [3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3],
13
+ [3,0,0,0,5,0,0,4,4,0,0,0,0,0,0,0,0,0,0,3],
14
+ [3,0,0,0,5,0,0,4,4,0,0,0,0,0,0,0,0,0,0,3],
15
+ [3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3],
16
+ [3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3],
17
+ [3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3],
18
+ [3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3],
19
+ [3,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3],
20
+ [3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3],
21
+ [3,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3],
22
+ [3,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3],
23
+ [3,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3],
24
+ [3,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,3],
25
+ [3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3],
26
+ [3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3],
27
+ [3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3],
28
+ [3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3],
29
+ [3,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,3],
30
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]
31
+ ],
32
+ "npcs": [],
33
+ "connections": [
34
+ { "targetMapId": 1, "x": 4, "y": 4 },
35
+ { "targetMapId": 2, "x": 10, "y": 9 },
36
+ { "targetMapId": 3, "x": 7, "y": 14 },
37
+ { "targetMapId": 4, "x": 14, "y": 4 },
38
+ { "targetMapId": 5, "x": 10, "y": 14 }
39
+ ],
40
+ "encounters": [
41
+ { "probability": 10, "battleId": 1, "minSteps": 3 }
42
+ ],
43
+ "events": []
44
+ },
45
+ {
46
+ "id": 1,
47
+ "name": "小村",
48
+ "desc": "一个宁静的小村庄",
49
+ "width": 10,
50
+ "height": 10,
51
+ "bgm": "village",
52
+ "tiles": [
53
+ [1,1,1,1,1,1,1,1,1,1],
54
+ [1,0,0,0,5,0,0,0,0,1],
55
+ [1,0,0,0,5,0,0,0,0,1],
56
+ [1,0,0,0,5,0,0,0,0,1],
57
+ [1,5,5,5,5,5,5,5,5,1],
58
+ [1,0,0,0,5,0,0,0,0,1],
59
+ [1,0,0,0,5,0,0,0,0,1],
60
+ [1,0,0,0,5,0,0,0,0,1],
61
+ [1,0,0,0,5,0,0,0,0,1],
62
+ [1,1,1,1,1,5,1,1,1,1]
63
+ ],
64
+ "npcs": [
65
+ {
66
+ "id": 101,
67
+ "roleId": 300,
68
+ "x": 2,
69
+ "y": 2,
70
+ "direction": 1,
71
+ "dialogId": "village_elder",
72
+ "isShop": false,
73
+ "shopItems": []
74
+ },
75
+ {
76
+ "id": 102,
77
+ "roleId": 301,
78
+ "x": 7,
79
+ "y": 6,
80
+ "direction": 2,
81
+ "dialogId": "village_shop",
82
+ "isShop": true,
83
+ "shopItems": [30, 31, 33, 35]
84
+ }
85
+ ],
86
+ "connections": [
87
+ { "targetMapId": 0, "x": 5, "y": 9 }
88
+ ],
89
+ "encounters": [],
90
+ "events": [
91
+ {
92
+ "id": "village_start",
93
+ "triggerType": "auto",
94
+ "x": 5,
95
+ "y": 5,
96
+ "conditions": [{ "type": "flag", "params": { "flag": "village_visited", "value": false } }],
97
+ "actions": [
98
+ { "type": "setFlag", "params": { "flag": "village_visited", "value": true } },
99
+ { "type": "dialog", "params": { "dialogId": "village_intro" } }
100
+ ]
101
+ }
102
+ ]
103
+ },
104
+ {
105
+ "id": 2,
106
+ "name": "山洞",
107
+ "desc": "阴暗的山洞",
108
+ "width": 12,
109
+ "height": 10,
110
+ "bgm": "cave",
111
+ "tiles": [
112
+ [1,1,1,1,1,1,1,1,1,1,1,1],
113
+ [1,0,0,0,0,0,0,0,0,0,0,1],
114
+ [1,0,0,0,0,0,0,0,0,0,0,1],
115
+ [1,0,0,1,1,0,0,1,1,0,0,1],
116
+ [1,0,0,1,0,0,0,0,1,0,0,1],
117
+ [1,0,0,0,0,0,0,0,0,0,0,1],
118
+ [1,0,0,0,0,0,0,0,0,0,0,1],
119
+ [1,0,0,1,0,0,0,0,1,0,0,1],
120
+ [1,0,0,1,1,0,0,1,1,0,0,1],
121
+ [1,1,1,1,1,5,1,1,1,1,1,1]
122
+ ],
123
+ "npcs": [
124
+ {
125
+ "id": 201,
126
+ "roleId": 202,
127
+ "x": 6,
128
+ "y": 5,
129
+ "direction": 1,
130
+ "dialogId": "cave_boss",
131
+ "isShop": false,
132
+ "shopItems": []
133
+ }
134
+ ],
135
+ "connections": [
136
+ { "targetMapId": 0, "x": 5, "y": 9 }
137
+ ],
138
+ "encounters": [
139
+ { "probability": 20, "battleId": 2, "minSteps": 2 }
140
+ ],
141
+ "events": [
142
+ {
143
+ "id": "cave_treasure",
144
+ "triggerType": "interact",
145
+ "x": 6,
146
+ "y": 3,
147
+ "conditions": [{ "type": "flag", "params": { "flag": "cave_treasure", "value": false } }],
148
+ "actions": [
149
+ { "type": "setFlag", "params": { "flag": "cave_treasure", "value": true } },
150
+ { "type": "addItem", "params": { "itemId": 13, "count": 1 } }
151
+ ]
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "id": 3,
157
+ "name": "平安镇",
158
+ "desc": "热闹的城镇",
159
+ "width": 15,
160
+ "height": 12,
161
+ "bgm": "town",
162
+ "tiles": [
163
+ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
164
+ [1,0,0,0,0,0,5,0,0,0,0,0,0,0,1],
165
+ [1,0,0,0,0,0,5,0,0,0,0,0,0,0,1],
166
+ [1,0,0,0,0,0,5,0,0,0,0,0,0,0,1],
167
+ [1,5,5,5,5,5,5,5,5,5,5,5,5,5,1],
168
+ [1,0,0,0,5,0,0,0,0,0,5,0,0,0,1],
169
+ [1,0,0,0,5,0,0,0,0,0,5,0,0,0,1],
170
+ [1,0,0,0,5,0,0,0,0,0,5,0,0,0,1],
171
+ [1,5,5,5,5,5,5,5,5,5,5,5,5,5,1],
172
+ [1,0,0,0,0,0,5,0,0,0,0,0,0,0,1],
173
+ [1,0,0,0,0,0,5,0,0,0,0,0,0,0,1],
174
+ [1,1,1,1,1,1,5,1,1,1,1,1,1,1,1]
175
+ ],
176
+ "npcs": [
177
+ {
178
+ "id": 301,
179
+ "roleId": 300,
180
+ "x": 3,
181
+ "y": 6,
182
+ "direction": 1,
183
+ "dialogId": "town_guard",
184
+ "isShop": false,
185
+ "shopItems": []
186
+ },
187
+ {
188
+ "id": 302,
189
+ "roleId": 301,
190
+ "x": 10,
191
+ "y": 6,
192
+ "direction": 2,
193
+ "dialogId": "town_shop",
194
+ "isShop": true,
195
+ "shopItems": [10, 11, 20, 21, 30, 31, 33, 35]
196
+ },
197
+ {
198
+ "id": 303,
199
+ "roleId": 301,
200
+ "x": 7,
201
+ "y": 3,
202
+ "direction": 1,
203
+ "dialogId": "town_inn",
204
+ "isShop": true,
205
+ "shopItems": [30, 31, 32, 33, 34, 35, 36]
206
+ }
207
+ ],
208
+ "connections": [
209
+ { "targetMapId": 0, "x": 6, "y": 11 }
210
+ ],
211
+ "encounters": [],
212
+ "events": []
213
+ },
214
+ {
215
+ "id": 4,
216
+ "name": "华山",
217
+ "desc": "天下五绝论剑之地,山势险峻。",
218
+ "width": 14,
219
+ "height": 12,
220
+ "bgm": "mountain",
221
+ "tiles": [
222
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3],
223
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
224
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
225
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
226
+ [3,0,0,0,0,5,5,5,0,0,0,0,0,3],
227
+ [3,0,0,0,5,0,0,0,5,0,0,0,0,3],
228
+ [3,0,0,5,0,0,0,0,0,5,0,0,0,3],
229
+ [3,0,5,0,0,0,0,0,0,0,5,0,0,3],
230
+ [3,5,0,0,0,0,0,0,0,0,0,5,0,3],
231
+ [3,0,0,0,0,0,0,0,0,0,0,0,5,3],
232
+ [3,0,0,0,0,0,0,0,0,0,0,0,0,3],
233
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3]
234
+ ],
235
+ "npcs": [
236
+ {
237
+ "id": 401,
238
+ "roleId": 13,
239
+ "x": 6,
240
+ "y": 5,
241
+ "direction": 1,
242
+ "dialogId": "huashan_wangchongyang",
243
+ "isShop": false,
244
+ "shopItems": []
245
+ }
246
+ ],
247
+ "connections": [
248
+ { "targetMapId": 0, "x": 6, "y": 11 }
249
+ ],
250
+ "encounters": [
251
+ { "probability": 15, "battleId": 4, "minSteps": 3 }
252
+ ],
253
+ "events": [
254
+ {
255
+ "id": "huashan_lunjian",
256
+ "triggerType": "interact",
257
+ "x": 6,
258
+ "y": 5,
259
+ "conditions": [{ "type": "flag", "params": { "flag": "huashan_lunjian", "value": false } }],
260
+ "actions": [
261
+ { "type": "setFlag", "params": { "flag": "huashan_lunjian", "value": true } },
262
+ { "type": "dialog", "params": { "dialogId": "huashan_lunjian" } }
263
+ ]
264
+ }
265
+ ],
266
+ "source": "射雕英雄传"
267
+ },
268
+ {
269
+ "id": 5,
270
+ "name": "桃花岛",
271
+ "desc": "东海岛屿,黄药师居所。机关重重。",
272
+ "width": 12,
273
+ "height": 10,
274
+ "bgm": "island",
275
+ "tiles": [
276
+ [2,2,2,2,2,2,2,2,2,2,2,2],
277
+ [2,0,0,0,0,0,5,0,0,0,0,2],
278
+ [2,0,0,0,0,0,5,0,0,0,0,2],
279
+ [2,0,0,0,0,0,5,0,0,0,0,2],
280
+ [2,0,0,0,5,5,5,5,0,0,0,2],
281
+ [2,0,0,5,0,0,0,0,5,0,0,2],
282
+ [2,0,5,0,0,0,0,0,0,5,0,2],
283
+ [2,5,0,0,0,0,0,0,0,0,5,2],
284
+ [2,0,0,0,0,0,0,0,0,0,0,2],
285
+ [2,2,2,2,2,2,2,2,2,2,2,2]
286
+ ],
287
+ "npcs": [
288
+ {
289
+ "id": 501,
290
+ "roleId": 11,
291
+ "x": 6,
292
+ "y": 5,
293
+ "direction": 1,
294
+ "dialogId": "taohuadao_huangyaoshi",
295
+ "isShop": false,
296
+ "shopItems": []
297
+ },
298
+ {
299
+ "id": 502,
300
+ "roleId": 8,
301
+ "x": 4,
302
+ "y": 4,
303
+ "direction": 3,
304
+ "dialogId": "taohuadao_huangrong",
305
+ "isShop": false,
306
+ "shopItems": []
307
+ }
308
+ ],
309
+ "connections": [
310
+ { "targetMapId": 0, "x": 5, "y": 9 }
311
+ ],
312
+ "encounters": [
313
+ { "probability": 10, "battleId": 5, "minSteps": 2 }
314
+ ],
315
+ "events": [
316
+ {
317
+ "id": "taohuadao_enter",
318
+ "triggerType": "auto",
319
+ "x": 5,
320
+ "y": 5,
321
+ "conditions": [{ "type": "flag", "params": { "flag": "taohuadao_visited", "value": false } }],
322
+ "actions": [
323
+ { "type": "setFlag", "params": { "flag": "taohuadao_visited", "value": true } },
324
+ { "type": "dialog", "params": { "dialogId": "taohuadao_intro" } }
325
+ ]
326
+ }
327
+ ],
328
+ "source": "射雕英雄传"
329
+ },
330
+ {
331
+ "id": 6,
332
+ "name": "终南山全真教",
333
+ "desc": "道教圣地,全真教总坛。",
334
+ "width": 14,
335
+ "height": 12,
336
+ "bgm": "temple",
337
+ "tiles": [
338
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3],
339
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
340
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
341
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
342
+ [3,0,0,0,5,5,5,5,5,0,0,0,0,3],
343
+ [3,0,0,5,0,0,0,0,0,5,0,0,0,3],
344
+ [3,0,5,0,0,0,0,0,0,0,5,0,0,3],
345
+ [3,5,0,0,0,0,0,0,0,0,0,5,0,3],
346
+ [3,0,0,0,0,0,0,0,0,0,0,0,5,3],
347
+ [3,0,0,0,0,0,0,0,0,0,0,0,0,3],
348
+ [3,0,0,0,0,0,0,0,0,0,0,0,0,3],
349
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3]
350
+ ],
351
+ "npcs": [
352
+ {
353
+ "id": 601,
354
+ "roleId": 13,
355
+ "x": 6,
356
+ "y": 5,
357
+ "direction": 1,
358
+ "dialogId": "quanzhen_wangchongyang",
359
+ "isShop": false,
360
+ "shopItems": []
361
+ },
362
+ {
363
+ "id": 602,
364
+ "roleId": 16,
365
+ "x": 4,
366
+ "y": 4,
367
+ "direction": 3,
368
+ "dialogId": "quanzhen_zhoubotong",
369
+ "isShop": false,
370
+ "shopItems": []
371
+ }
372
+ ],
373
+ "connections": [
374
+ { "targetMapId": 0, "x": 6, "y": 11 }
375
+ ],
376
+ "encounters": [
377
+ { "probability": 10, "battleId": 6, "minSteps": 2 }
378
+ ],
379
+ "events": [
380
+ {
381
+ "id": "quanzhen_enter",
382
+ "triggerType": "auto",
383
+ "x": 5,
384
+ "y": 5,
385
+ "conditions": [{ "type": "flag", "params": { "flag": "quanzhen_visited", "value": false } }],
386
+ "actions": [
387
+ { "type": "setFlag", "params": { "flag": "quanzhen_visited", "value": true } },
388
+ { "type": "dialog", "params": { "dialogId": "quanzhen_intro" } }
389
+ ]
390
+ }
391
+ ],
392
+ "source": "射雕英雄传"
393
+ },
394
+ {
395
+ "id": 7,
396
+ "name": "光明顶",
397
+ "desc": "明教总坛,六大派围攻之地。",
398
+ "width": 14,
399
+ "height": 12,
400
+ "bgm": "temple",
401
+ "tiles": [
402
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3],
403
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
404
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
405
+ [3,0,0,0,0,0,5,0,0,0,0,0,0,3],
406
+ [3,0,0,0,5,5,5,5,5,0,0,0,0,3],
407
+ [3,0,0,5,0,0,0,0,0,5,0,0,0,3],
408
+ [3,0,5,0,0,0,0,0,0,0,5,0,0,3],
409
+ [3,5,0,0,0,0,0,0,0,0,0,5,0,3],
410
+ [3,0,0,0,0,0,0,0,0,0,0,0,5,3],
411
+ [3,0,0,0,0,0,0,0,0,0,0,0,0,3],
412
+ [3,0,0,0,0,0,0,0,0,0,0,0,0,3],
413
+ [3,3,3,3,3,3,3,3,3,3,3,3,3,3]
414
+ ],
415
+ "npcs": [
416
+ {
417
+ "id": 701,
418
+ "roleId": 7,
419
+ "x": 6,
420
+ "y": 5,
421
+ "direction": 1,
422
+ "dialogId": "guangmingding_zhangwuji",
423
+ "isShop": false,
424
+ "shopItems": []
425
+ }
426
+ ],
427
+ "connections": [
428
+ { "targetMapId": 0, "x": 6, "y": 11 }
429
+ ],
430
+ "encounters": [
431
+ { "probability": 20, "battleId": 7, "minSteps": 3 }
432
+ ],
433
+ "events": [
434
+ {
435
+ "id": "guangmingding_enter",
436
+ "triggerType": "auto",
437
+ "x": 5,
438
+ "y": 5,
439
+ "conditions": [{ "type": "flag", "params": { "flag": "guangmingding_visited", "value": false } }],
440
+ "actions": [
441
+ { "type": "setFlag", "params": { "flag": "guangmingding_visited", "value": true } },
442
+ { "type": "dialog", "params": { "dialogId": "guangmingding_intro" } }
443
+ ]
444
+ }
445
+ ],
446
+ "source": "倚天屠龙记"
447
+ }
448
+ ],
449
+ "battles": [
450
+ {
451
+ "id": 1,
452
+ "name": "山贼袭击",
453
+ "mapWidth": 8,
454
+ "mapHeight": 8,
455
+ "tiles": [
456
+ [0,0,0,0,0,0,0,0],
457
+ [0,0,0,0,0,0,0,0],
458
+ [0,0,0,0,0,0,0,0],
459
+ [0,0,0,0,0,0,0,0],
460
+ [0,0,0,0,0,0,0,0],
461
+ [0,0,0,0,0,0,0,0],
462
+ [0,0,0,0,0,0,0,0],
463
+ [0,0,0,0,0,0,0,0]
464
+ ],
465
+ "exp": 50,
466
+ "bgm": "battle_normal",
467
+ "teammates": [100],
468
+ "enemies": [200, 200, 200],
469
+ "autoTeammates": [],
470
+ "winCondition": { "type": "allEnemyDead" },
471
+ "loseCondition": { "type": "allTeammateDead" }
472
+ },
473
+ {
474
+ "id": 2,
475
+ "name": "山洞遭遇战",
476
+ "mapWidth": 10,
477
+ "mapHeight": 10,
478
+ "tiles": [
479
+ [0,0,0,1,1,1,1,0,0,0],
480
+ [0,0,0,0,0,0,0,0,0,0],
481
+ [0,0,0,0,0,0,0,0,0,0],
482
+ [1,0,0,0,0,0,0,0,0,1],
483
+ [1,0,0,0,0,0,0,0,0,1],
484
+ [1,0,0,0,0,0,0,0,0,1],
485
+ [1,0,0,0,0,0,0,0,0,1],
486
+ [0,0,0,0,0,0,0,0,0,0],
487
+ [0,0,0,0,0,0,0,0,0,0],
488
+ [0,0,0,1,1,1,1,0,0,0]
489
+ ],
490
+ "exp": 100,
491
+ "bgm": "battle_boss",
492
+ "teammates": [100],
493
+ "enemies": [200, 201, 200, 201],
494
+ "autoTeammates": [],
495
+ "winCondition": { "type": "allEnemyDead" },
496
+ "loseCondition": { "type": "allTeammateDead" }
497
+ },
498
+ {
499
+ "id": 3,
500
+ "name": "武林高手对决",
501
+ "mapWidth": 12,
502
+ "mapHeight": 12,
503
+ "tiles": [
504
+ [0,0,0,0,0,0,0,0,0,0,0,0],
505
+ [0,0,0,0,0,0,0,0,0,0,0,0],
506
+ [0,0,0,0,0,0,0,0,0,0,0,0],
507
+ [0,0,0,0,0,0,0,0,0,0,0,0],
508
+ [0,0,0,0,0,0,0,0,0,0,0,0],
509
+ [0,0,0,0,0,0,0,0,0,0,0,0],
510
+ [0,0,0,0,0,0,0,0,0,0,0,0],
511
+ [0,0,0,0,0,0,0,0,0,0,0,0],
512
+ [0,0,0,0,0,0,0,0,0,0,0,0],
513
+ [0,0,0,0,0,0,0,0,0,0,0,0],
514
+ [0,0,0,0,0,0,0,0,0,0,0,0],
515
+ [0,0,0,0,0,0,0,0,0,0,0,0]
516
+ ],
517
+ "exp": 300,
518
+ "bgm": "battle_boss",
519
+ "teammates": [100],
520
+ "enemies": [202, 202],
521
+ "autoTeammates": [],
522
+ "winCondition": { "type": "allEnemyDead" },
523
+ "loseCondition": { "type": "allTeammateDead" }
524
+ },
525
+ {
526
+ "id": 4,
527
+ "name": "华山论剑",
528
+ "mapWidth": 12,
529
+ "mapHeight": 12,
530
+ "tiles": [
531
+ [0,0,0,0,0,0,0,0,0,0,0,0],
532
+ [0,0,0,0,0,0,0,0,0,0,0,0],
533
+ [0,0,0,0,0,0,0,0,0,0,0,0],
534
+ [0,0,0,0,0,0,0,0,0,0,0,0],
535
+ [0,0,0,0,0,0,0,0,0,0,0,0],
536
+ [0,0,0,0,0,0,0,0,0,0,0,0],
537
+ [0,0,0,0,0,0,0,0,0,0,0,0],
538
+ [0,0,0,0,0,0,0,0,0,0,0,0],
539
+ [0,0,0,0,0,0,0,0,0,0,0,0],
540
+ [0,0,0,0,0,0,0,0,0,0,0,0],
541
+ [0,0,0,0,0,0,0,0,0,0,0,0],
542
+ [0,0,0,0,0,0,0,0,0,0,0,0]
543
+ ],
544
+ "exp": 500,
545
+ "bgm": "battle_epic",
546
+ "teammates": [100],
547
+ "enemies": [10, 11, 12],
548
+ "autoTeammates": [],
549
+ "winCondition": { "type": "allEnemyDead" },
550
+ "loseCondition": { "type": "allTeammateDead" }
551
+ },
552
+ {
553
+ "id": 5,
554
+ "name": "桃花岛试炼",
555
+ "mapWidth": 10,
556
+ "mapHeight": 10,
557
+ "tiles": [
558
+ [0,0,0,0,0,0,0,0,0,0],
559
+ [0,0,0,0,0,0,0,0,0,0],
560
+ [0,0,0,0,0,0,0,0,0,0],
561
+ [0,0,0,0,0,0,0,0,0,0],
562
+ [0,0,0,0,0,0,0,0,0,0],
563
+ [0,0,0,0,0,0,0,0,0,0],
564
+ [0,0,0,0,0,0,0,0,0,0],
565
+ [0,0,0,0,0,0,0,0,0,0],
566
+ [0,0,0,0,0,0,0,0,0,0],
567
+ [0,0,0,0,0,0,0,0,0,0]
568
+ ],
569
+ "exp": 200,
570
+ "bgm": "battle_normal",
571
+ "teammates": [100],
572
+ "enemies": [202, 202, 202],
573
+ "autoTeammates": [],
574
+ "winCondition": { "type": "allEnemyDead" },
575
+ "loseCondition": { "type": "allTeammateDead" }
576
+ },
577
+ {
578
+ "id": 6,
579
+ "name": "全真教考验",
580
+ "mapWidth": 10,
581
+ "mapHeight": 10,
582
+ "tiles": [
583
+ [0,0,0,0,0,0,0,0,0,0],
584
+ [0,0,0,0,0,0,0,0,0,0],
585
+ [0,0,0,0,0,0,0,0,0,0],
586
+ [0,0,0,0,0,0,0,0,0,0],
587
+ [0,0,0,0,0,0,0,0,0,0],
588
+ [0,0,0,0,0,0,0,0,0,0],
589
+ [0,0,0,0,0,0,0,0,0,0],
590
+ [0,0,0,0,0,0,0,0,0,0],
591
+ [0,0,0,0,0,0,0,0,0,0],
592
+ [0,0,0,0,0,0,0,0,0,0]
593
+ ],
594
+ "exp": 250,
595
+ "bgm": "battle_normal",
596
+ "teammates": [100],
597
+ "enemies": [202, 202, 202],
598
+ "autoTeammates": [],
599
+ "winCondition": { "type": "allEnemyDead" },
600
+ "loseCondition": { "type": "allTeammateDead" }
601
+ },
602
+ {
603
+ "id": 7,
604
+ "name": "光明顶之战",
605
+ "mapWidth": 12,
606
+ "mapHeight": 12,
607
+ "tiles": [
608
+ [0,0,0,0,0,0,0,0,0,0,0,0],
609
+ [0,0,0,0,0,0,0,0,0,0,0,0],
610
+ [0,0,0,0,0,0,0,0,0,0,0,0],
611
+ [0,0,0,0,0,0,0,0,0,0,0,0],
612
+ [0,0,0,0,0,0,0,0,0,0,0,0],
613
+ [0,0,0,0,0,0,0,0,0,0,0,0],
614
+ [0,0,0,0,0,0,0,0,0,0,0,0],
615
+ [0,0,0,0,0,0,0,0,0,0,0,0],
616
+ [0,0,0,0,0,0,0,0,0,0,0,0],
617
+ [0,0,0,0,0,0,0,0,0,0,0,0],
618
+ [0,0,0,0,0,0,0,0,0,0,0,0],
619
+ [0,0,0,0,0,0,0,0,0,0,0,0]
620
+ ],
621
+ "exp": 400,
622
+ "bgm": "battle_epic",
623
+ "teammates": [100],
624
+ "enemies": [202, 202, 202, 202],
625
+ "autoTeammates": [],
626
+ "winCondition": { "type": "allEnemyDead" },
627
+ "loseCondition": { "type": "allTeammateDead" }
628
+ }
629
+ ],
630
+ "dialogs": {
631
+ "village_intro": {
632
+ "id": "village_intro",
633
+ "speaker": "村长",
634
+ "text": "欢迎来到小村,年轻人。这里是你的冒险起点。",
635
+ "choices": [
636
+ { "text": "谢谢村长", "nextId": "village_intro_2" }
637
+ ]
638
+ },
639
+ "village_intro_2": {
640
+ "id": "village_intro_2",
641
+ "speaker": "村长",
642
+ "text": "村外有山贼出没,你要小心。如果准备好了,可以去镇上看看。",
643
+ "choices": [
644
+ { "text": "我知道了", "nextId": "" }
645
+ ]
646
+ },
647
+ "village_elder": {
648
+ "id": "village_elder",
649
+ "speaker": "村长",
650
+ "text": "有什么需要帮忙的吗?",
651
+ "choices": [
652
+ { "text": "请问这里有什么任务?", "nextId": "village_quest" },
653
+ { "text": "没什么事", "nextId": "" }
654
+ ]
655
+ },
656
+ "village_quest": {
657
+ "id": "village_quest",
658
+ "speaker": "村长",
659
+ "text": "村外的山洞里有宝物,但也有很多危险的怪物。你愿意去探索吗?",
660
+ "choices": [
661
+ {
662
+ "text": "我愿意去",
663
+ "nextId": "",
664
+ "actions": [{ "type": "setFlag", "params": { "flag": "cave_quest", "value": true } }]
665
+ },
666
+ { "text": "现在还不行", "nextId": "" }
667
+ ]
668
+ },
669
+ "village_shop": {
670
+ "id": "village_shop",
671
+ "speaker": "商人",
672
+ "text": "欢迎光临!看看有什么需要的吗?",
673
+ "choices": [
674
+ {
675
+ "text": "看看商品",
676
+ "nextId": "",
677
+ "actions": [{ "type": "openShop", "params": {} }]
678
+ },
679
+ { "text": "不用了", "nextId": "" }
680
+ ]
681
+ },
682
+ "cave_boss": {
683
+ "id": "cave_boss",
684
+ "speaker": "神秘人",
685
+ "text": "你终于来了。想要宝藏?先过我这关!",
686
+ "choices": [
687
+ {
688
+ "text": "来吧!",
689
+ "nextId": "",
690
+ "actions": [{ "type": "battle", "params": { "battleId": 3 } }]
691
+ }
692
+ ]
693
+ },
694
+ "town_guard": {
695
+ "id": "town_guard",
696
+ "speaker": "守卫",
697
+ "text": "这里是平安镇,欢迎来到。",
698
+ "choices": [
699
+ { "text": "谢谢", "nextId": "" }
700
+ ]
701
+ },
702
+ "town_shop": {
703
+ "id": "town_shop",
704
+ "speaker": "老板",
705
+ "text": "欢迎!本店商品齐全,应有尽有!",
706
+ "choices": [
707
+ {
708
+ "text": "看看商品",
709
+ "nextId": "",
710
+ "actions": [{ "type": "openShop", "params": {} }]
711
+ },
712
+ { "text": "告辞", "nextId": "" }
713
+ ]
714
+ },
715
+ "town_inn": {
716
+ "id": "town_inn",
717
+ "speaker": "客栈老板",
718
+ "text": "客官,要住店吗?休息一下可以恢复体力。",
719
+ "choices": [
720
+ {
721
+ "text": "休息一下",
722
+ "nextId": "inn_rest",
723
+ "actions": [{ "type": "heal", "params": {} }]
724
+ },
725
+ { "text": "不用了", "nextId": "" }
726
+ ]
727
+ },
728
+ "inn_rest": {
729
+ "id": "inn_rest",
730
+ "speaker": "客栈老板",
731
+ "text": "好的,已经为您准备好房间。休息后体力已恢复。",
732
+ "choices": [
733
+ { "text": "谢谢", "nextId": "" }
734
+ ]
735
+ },
736
+ "huashan_wangchongyang": {
737
+ "id": "huashan_wangchongyang",
738
+ "speaker": "王重阳",
739
+ "text": "华山论剑,天下英雄齐聚于此。你可有胆量一试?",
740
+ "choices": [
741
+ {
742
+ "text": "晚辈愿意一试",
743
+ "nextId": "",
744
+ "actions": [{ "type": "battle", "params": { "battleId": 4 } }]
745
+ },
746
+ { "text": "晚辈实力不足", "nextId": "" }
747
+ ]
748
+ },
749
+ "huashan_lunjian": {
750
+ "id": "huashan_lunjian",
751
+ "speaker": "旁白",
752
+ "text": "华山之巅,剑气纵横。五绝高手齐聚一堂,论剑三日三夜。",
753
+ "choices": [
754
+ { "text": "(继续)", "nextId": "" }
755
+ ]
756
+ },
757
+ "taohuadao_huangyaoshi": {
758
+ "id": "taohuadao_huangyaoshi",
759
+ "speaker": "黄药师",
760
+ "text": "何人擅闯桃花岛?",
761
+ "choices": [
762
+ { "text": "晚辈前来拜访", "nextId": "taohuadao_huangyaoshi_2" },
763
+ { "text": "晚辈告退", "nextId": "" }
764
+ ]
765
+ },
766
+ "taohuadao_huangyaoshi_2": {
767
+ "id": "taohaiduangyaoshi_2",
768
+ "speaker": "黄药师",
769
+ "text": "哼,既来之则安之。先过了我这关再说。",
770
+ "choices": [
771
+ {
772
+ "text": "请赐教",
773
+ "nextId": "",
774
+ "actions": [{ "type": "battle", "params": { "battleId": 5 } }]
775
+ }
776
+ ]
777
+ },
778
+ "taohuadao_huangrong": {
779
+ "id": "taohuadao_huangrong",
780
+ "speaker": "黄蓉",
781
+ "text": "你是来找我爹爹的吗?他在桃花林里。",
782
+ "choices": [
783
+ { "text": "多谢黄姑娘", "nextId": "" }
784
+ ]
785
+ },
786
+ "taohuadao_intro": {
787
+ "id": "taohuadao_intro",
788
+ "speaker": "旁白",
789
+ "text": "桃花岛,东海之上的世外桃源。岛上桃花盛开,机关重重。",
790
+ "choices": [
791
+ { "text": "(继续)", "nextId": "" }
792
+ ]
793
+ },
794
+ "quanzhen_wangchongyang": {
795
+ "id": "quanzhen_wangchongyang",
796
+ "speaker": "王重阳",
797
+ "text": "全真教乃天下武学正宗,你可愿入我门下?",
798
+ "choices": [
799
+ { "text": "弟子愿意", "nextId": "quanzhen_accept" },
800
+ { "text": "晚辈考虑一下", "nextId": "" }
801
+ ]
802
+ },
803
+ "quanzhen_accept": {
804
+ "id": "quanzhen_accept",
805
+ "speaker": "王重阳",
806
+ "text": "好!从今日起,你便是全真教弟子。",
807
+ "choices": [
808
+ {
809
+ "text": "多谢师父",
810
+ "nextId": "",
811
+ "actions": [
812
+ { "type": "addItem", "params": { "itemId": 41, "count": 1 } }
813
+ ]
814
+ }
815
+ ]
816
+ },
817
+ "quanzhen_zhoubotong": {
818
+ "id": "quanzhen_zhoubotong",
819
+ "speaker": "周伯通",
820
+ "text": "哈哈,又来新人了!来来来,陪老顽童玩玩!",
821
+ "choices": [
822
+ { "text": "前辈请指教", "nextId": "" }
823
+ ]
824
+ },
825
+ "quanzhen_intro": {
826
+ "id": "quanzhen_intro",
827
+ "speaker": "旁白",
828
+ "text": "终南山全真教,道教圣地。全真七子名震天下。",
829
+ "choices": [
830
+ { "text": "(继续)", "nextId": "" }
831
+ ]
832
+ },
833
+ "guangmingding_zhangwuji": {
834
+ "id": "guangmingding_zhangwuji",
835
+ "speaker": "张无忌",
836
+ "text": "光明顶危在旦夕,少侠可愿助我一臂之力?",
837
+ "choices": [
838
+ {
839
+ "text": "义不容辞",
840
+ "nextId": "",
841
+ "actions": [{ "type": "battle", "params": { "battleId": 7 } }]
842
+ },
843
+ { "text": "容我考虑", "nextId": "" }
844
+ ]
845
+ },
846
+ "guangmingding_intro": {
847
+ "id": "guangmingding_intro",
848
+ "speaker": "旁白",
849
+ "text": "光明顶,明教总坛。六大派围攻之际,群雄齐聚。",
850
+ "choices": [
851
+ { "text": "(继续)", "nextId": "" }
852
+ ]
853
+ }
854
+ }
855
+ }