@ticktockbent/rogue-ts 0.1.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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -0
  3. package/dist/armor.d.ts +18 -0
  4. package/dist/armor.d.ts.map +1 -0
  5. package/dist/armor.js +84 -0
  6. package/dist/armor.js.map +1 -0
  7. package/dist/chase.d.ts +15 -0
  8. package/dist/chase.d.ts.map +1 -0
  9. package/dist/chase.js +152 -0
  10. package/dist/chase.js.map +1 -0
  11. package/dist/command.d.ts +12 -0
  12. package/dist/command.d.ts.map +1 -0
  13. package/dist/command.js +761 -0
  14. package/dist/command.js.map +1 -0
  15. package/dist/curses.d.ts +102 -0
  16. package/dist/curses.d.ts.map +1 -0
  17. package/dist/curses.js +47 -0
  18. package/dist/curses.js.map +1 -0
  19. package/dist/daemon.d.ts +43 -0
  20. package/dist/daemon.d.ts.map +1 -0
  21. package/dist/daemon.js +116 -0
  22. package/dist/daemon.js.map +1 -0
  23. package/dist/daemons.d.ts +47 -0
  24. package/dist/daemons.d.ts.map +1 -0
  25. package/dist/daemons.js +194 -0
  26. package/dist/daemons.js.map +1 -0
  27. package/dist/fight.d.ts +52 -0
  28. package/dist/fight.d.ts.map +1 -0
  29. package/dist/fight.js +508 -0
  30. package/dist/fight.js.map +1 -0
  31. package/dist/globals.d.ts +387 -0
  32. package/dist/globals.d.ts.map +1 -0
  33. package/dist/globals.js +935 -0
  34. package/dist/globals.js.map +1 -0
  35. package/dist/index.d.ts +11 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +9 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/init.d.ts +30 -0
  40. package/dist/init.d.ts.map +1 -0
  41. package/dist/init.js +159 -0
  42. package/dist/init.js.map +1 -0
  43. package/dist/io.d.ts +48 -0
  44. package/dist/io.d.ts.map +1 -0
  45. package/dist/io.js +248 -0
  46. package/dist/io.js.map +1 -0
  47. package/dist/list.d.ts +37 -0
  48. package/dist/list.d.ts.map +1 -0
  49. package/dist/list.js +109 -0
  50. package/dist/list.js.map +1 -0
  51. package/dist/main.d.ts +23 -0
  52. package/dist/main.d.ts.map +1 -0
  53. package/dist/main.js +207 -0
  54. package/dist/main.js.map +1 -0
  55. package/dist/misc.d.ts +53 -0
  56. package/dist/misc.d.ts.map +1 -0
  57. package/dist/misc.js +296 -0
  58. package/dist/misc.js.map +1 -0
  59. package/dist/monsters.d.ts +55 -0
  60. package/dist/monsters.d.ts.map +1 -0
  61. package/dist/monsters.js +211 -0
  62. package/dist/monsters.js.map +1 -0
  63. package/dist/move.d.ts +23 -0
  64. package/dist/move.d.ts.map +1 -0
  65. package/dist/move.js +270 -0
  66. package/dist/move.js.map +1 -0
  67. package/dist/new_level.d.ts +17 -0
  68. package/dist/new_level.d.ts.map +1 -0
  69. package/dist/new_level.js +173 -0
  70. package/dist/new_level.js.map +1 -0
  71. package/dist/pack.d.ts +47 -0
  72. package/dist/pack.d.ts.map +1 -0
  73. package/dist/pack.js +359 -0
  74. package/dist/pack.js.map +1 -0
  75. package/dist/passages.d.ts +23 -0
  76. package/dist/passages.d.ts.map +1 -0
  77. package/dist/passages.js +277 -0
  78. package/dist/passages.js.map +1 -0
  79. package/dist/potions.d.ts +13 -0
  80. package/dist/potions.d.ts.map +1 -0
  81. package/dist/potions.js +239 -0
  82. package/dist/potions.js.map +1 -0
  83. package/dist/rings.d.ts +13 -0
  84. package/dist/rings.d.ts.map +1 -0
  85. package/dist/rings.js +173 -0
  86. package/dist/rings.js.map +1 -0
  87. package/dist/rip.d.ts +22 -0
  88. package/dist/rip.d.ts.map +1 -0
  89. package/dist/rip.js +216 -0
  90. package/dist/rip.js.map +1 -0
  91. package/dist/rooms.d.ts +62 -0
  92. package/dist/rooms.d.ts.map +1 -0
  93. package/dist/rooms.js +432 -0
  94. package/dist/rooms.js.map +1 -0
  95. package/dist/save.d.ts +25 -0
  96. package/dist/save.d.ts.map +1 -0
  97. package/dist/save.js +565 -0
  98. package/dist/save.js.map +1 -0
  99. package/dist/scrolls.d.ts +13 -0
  100. package/dist/scrolls.d.ts.map +1 -0
  101. package/dist/scrolls.js +305 -0
  102. package/dist/scrolls.js.map +1 -0
  103. package/dist/sticks.d.ts +9 -0
  104. package/dist/sticks.d.ts.map +1 -0
  105. package/dist/sticks.js +379 -0
  106. package/dist/sticks.js.map +1 -0
  107. package/dist/things.d.ts +28 -0
  108. package/dist/things.d.ts.map +1 -0
  109. package/dist/things.js +307 -0
  110. package/dist/things.js.map +1 -0
  111. package/dist/types.d.ts +113 -0
  112. package/dist/types.d.ts.map +1 -0
  113. package/dist/types.js +10 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/util.d.ts +36 -0
  116. package/dist/util.d.ts.map +1 -0
  117. package/dist/util.js +198 -0
  118. package/dist/util.js.map +1 -0
  119. package/dist/weapons.d.ts +22 -0
  120. package/dist/weapons.d.ts.map +1 -0
  121. package/dist/weapons.js +185 -0
  122. package/dist/weapons.js.map +1 -0
  123. package/package.json +31 -0
package/dist/save.js ADDED
@@ -0,0 +1,565 @@
1
+ /**
2
+ * Save and restore game state.
3
+ * JSON-based serialization (not binary-compatible with C Rogue).
4
+ *
5
+ * The main challenges are:
6
+ * 1. Linked lists (mlist, lvl_obj, t_pack) → serialized as arrays
7
+ * 2. Cross-references (cur_armor, cur_weapon, cur_ring → pack items;
8
+ * Place.p_monst → mlist monsters; t_room → rooms[]) → resolved via IDs
9
+ * 3. Daemon function references → mapped to/from string names
10
+ * 4. CursesWindow handles → not serialized; re-obtained on restore
11
+ */
12
+ import { state, pot_info, scr_info, ring_info, ws_info, } from "./globals.js";
13
+ const funcRegistry = new Map();
14
+ const funcNames = new Map();
15
+ export function registerDaemonFunc(name, func) {
16
+ funcRegistry.set(name, func);
17
+ funcNames.set(func, name);
18
+ }
19
+ const SAVE_VERSION = 1;
20
+ // ─── Serialize ─────────────────────────────────────────
21
+ let nextId = 1;
22
+ let objMap;
23
+ let monsterMap;
24
+ function assignId(thing) {
25
+ const id = nextId++;
26
+ if (thing._kind === "monster") {
27
+ monsterMap.set(thing, id);
28
+ }
29
+ else {
30
+ objMap.set(thing, id);
31
+ }
32
+ return id;
33
+ }
34
+ function getThingId(thing) {
35
+ if (thing === null)
36
+ return -1;
37
+ return (thing._kind === "monster" ? monsterMap.get(thing) : objMap.get(thing)) ?? -1;
38
+ }
39
+ function serializeCoord(c) {
40
+ return { x: c.x, y: c.y };
41
+ }
42
+ function serializeStats(s) {
43
+ return {
44
+ s_str: s.s_str, s_exp: s.s_exp, s_lvl: s.s_lvl, s_arm: s.s_arm,
45
+ s_hpt: s.s_hpt, s_dmg: s.s_dmg, s_maxhp: s.s_maxhp,
46
+ };
47
+ }
48
+ function roomIndex(room) {
49
+ if (room === null)
50
+ return -1;
51
+ const idx = state.rooms.indexOf(room);
52
+ if (idx >= 0)
53
+ return idx;
54
+ const pidx = state.passages.indexOf(room);
55
+ if (pidx >= 0)
56
+ return 100 + pidx; // offset to distinguish from rooms
57
+ return -1;
58
+ }
59
+ function serializeRoom(r) {
60
+ return {
61
+ r_pos: serializeCoord(r.r_pos),
62
+ r_max: serializeCoord(r.r_max),
63
+ r_gold: serializeCoord(r.r_gold),
64
+ r_goldval: r.r_goldval,
65
+ r_flags: r.r_flags,
66
+ r_nexits: r.r_nexits,
67
+ r_exit: r.r_exit.map(serializeCoord),
68
+ };
69
+ }
70
+ function serializeObj(obj, id) {
71
+ return {
72
+ id,
73
+ o_type: obj.o_type,
74
+ o_pos: serializeCoord(obj.o_pos),
75
+ o_text: obj.o_text,
76
+ o_launch: obj.o_launch,
77
+ o_packch: obj.o_packch,
78
+ o_damage: obj.o_damage,
79
+ o_hurldmg: obj.o_hurldmg,
80
+ o_count: obj.o_count,
81
+ o_which: obj.o_which,
82
+ o_hplus: obj.o_hplus,
83
+ o_dplus: obj.o_dplus,
84
+ o_arm: obj.o_arm,
85
+ o_flags: obj.o_flags,
86
+ o_group: obj.o_group,
87
+ o_label: obj.o_label,
88
+ };
89
+ }
90
+ function serializeMonster(mon, id) {
91
+ // Collect pack item IDs
92
+ const packIds = [];
93
+ let item = mon.t_pack;
94
+ while (item !== null) {
95
+ packIds.push(getThingId(item));
96
+ item = item.l_next;
97
+ }
98
+ return {
99
+ id,
100
+ t_pos: serializeCoord(mon.t_pos),
101
+ t_turn: mon.t_turn,
102
+ t_type: mon.t_type,
103
+ t_disguise: mon.t_disguise,
104
+ t_oldch: mon.t_oldch,
105
+ t_dest: mon.t_dest ? serializeCoord(mon.t_dest) : null,
106
+ t_flags: mon.t_flags,
107
+ t_stats: serializeStats(mon.t_stats),
108
+ t_room_idx: roomIndex(mon.t_room),
109
+ t_pack: packIds,
110
+ t_reserved: mon.t_reserved,
111
+ };
112
+ }
113
+ /**
114
+ * Collect all Things from a linked list into an array.
115
+ */
116
+ function collectList(head) {
117
+ const result = [];
118
+ let item = head;
119
+ while (item !== null) {
120
+ result.push(item);
121
+ item = item.l_next;
122
+ }
123
+ return result;
124
+ }
125
+ /**
126
+ * saveGame: Serialize the entire game state to a JSON string.
127
+ */
128
+ export function saveGame() {
129
+ nextId = 1;
130
+ objMap = new Map();
131
+ monsterMap = new Map();
132
+ // Phase 1: Assign IDs to all things
133
+ // Player
134
+ const playerId = assignId(state.player);
135
+ // Player pack
136
+ const playerPackItems = collectList(state.player.t_pack);
137
+ for (const item of playerPackItems) {
138
+ assignId(item);
139
+ }
140
+ // Monster list
141
+ const monsterList = collectList(state.mlist).filter((t) => t._kind === "monster");
142
+ for (const mon of monsterList) {
143
+ assignId(mon);
144
+ // Monster packs
145
+ const monPack = collectList(mon.t_pack);
146
+ for (const item of monPack) {
147
+ assignId(item);
148
+ }
149
+ }
150
+ // Level objects
151
+ const lvlObjList = collectList(state.lvl_obj).filter((t) => t._kind === "object");
152
+ for (const obj of lvlObjList) {
153
+ assignId(obj);
154
+ }
155
+ // Phase 2: Serialize everything
156
+ const allObjs = [];
157
+ // Serialize player pack objects
158
+ for (const item of playerPackItems) {
159
+ if (item._kind === "object") {
160
+ allObjs.push(serializeObj(item, getThingId(item)));
161
+ }
162
+ }
163
+ // Serialize monster pack objects
164
+ for (const mon of monsterList) {
165
+ const monPack = collectList(mon.t_pack);
166
+ for (const item of monPack) {
167
+ if (item._kind === "object") {
168
+ allObjs.push(serializeObj(item, getThingId(item)));
169
+ }
170
+ }
171
+ }
172
+ // Serialize level objects
173
+ const savedLvlObjs = [];
174
+ for (const obj of lvlObjList) {
175
+ const saved = serializeObj(obj, getThingId(obj));
176
+ savedLvlObjs.push(saved);
177
+ allObjs.push(saved);
178
+ }
179
+ // Serialize monsters
180
+ const savedMonsters = monsterList.map(mon => serializeMonster(mon, getThingId(mon)));
181
+ // Serialize player
182
+ const savedPlayer = serializeMonster(state.player, playerId);
183
+ // Serialize places
184
+ const savedPlaces = state.places.map(p => ({
185
+ p_ch: p.p_ch,
186
+ p_flags: p.p_flags,
187
+ p_monst_id: p.p_monst !== null ? getThingId(p.p_monst) : -1,
188
+ }));
189
+ // Serialize daemons
190
+ const savedDaemons = state.d_list.map(d => ({
191
+ d_type: d.d_type,
192
+ d_func_name: d.d_func !== null ? (funcNames.get(d.d_func) ?? null) : null,
193
+ d_arg: d.d_arg,
194
+ d_time: d.d_time,
195
+ }));
196
+ // Scalar flags
197
+ const flags = {
198
+ after: state.after,
199
+ again: state.again,
200
+ noscore: state.noscore,
201
+ seenstairs: state.seenstairs,
202
+ amulet: state.amulet,
203
+ door_stop: state.door_stop,
204
+ fight_flush: state.fight_flush,
205
+ firstmove: state.firstmove,
206
+ has_hit: state.has_hit,
207
+ inv_describe: state.inv_describe,
208
+ jump: state.jump,
209
+ kamikaze: state.kamikaze,
210
+ lower_msg: state.lower_msg,
211
+ move_no_pickup: state.move_no_pickup,
212
+ move_on: state.move_on,
213
+ msg_esc: state.msg_esc,
214
+ passgo: state.passgo,
215
+ playing: state.playing,
216
+ q_comm: state.q_comm,
217
+ running: state.running,
218
+ save_msg: state.save_msg,
219
+ see_floor: state.see_floor,
220
+ stat_msg: state.stat_msg,
221
+ terse: state.terse,
222
+ to_death: state.to_death,
223
+ tombstone: state.tombstone,
224
+ wizard: state.wizard,
225
+ dir_ch: state.dir_ch,
226
+ file_name: state.file_name,
227
+ huh: state.huh,
228
+ runch: state.runch,
229
+ take: state.take,
230
+ whoami: state.whoami,
231
+ fruit: state.fruit,
232
+ home: state.home,
233
+ l_last_comm: state.l_last_comm,
234
+ l_last_dir: state.l_last_dir,
235
+ last_comm: state.last_comm,
236
+ last_dir: state.last_dir,
237
+ n_objs: state.n_objs,
238
+ ntraps: state.ntraps,
239
+ hungry_state: state.hungry_state,
240
+ inpack: state.inpack,
241
+ inv_type: state.inv_type,
242
+ level: state.level,
243
+ max_hit: state.max_hit,
244
+ max_level: state.max_level,
245
+ mpos: state.mpos,
246
+ no_food: state.no_food,
247
+ count: state.count,
248
+ food_left: state.food_left,
249
+ lastscore: state.lastscore,
250
+ no_command: state.no_command,
251
+ no_move: state.no_move,
252
+ purse: state.purse,
253
+ quiet: state.quiet,
254
+ vf_hit: state.vf_hit,
255
+ dnum: state.dnum,
256
+ seed: state.seed,
257
+ total: state.total,
258
+ between: state.between,
259
+ group: state.group,
260
+ };
261
+ // Item knowledge
262
+ const saveObjInfoState = (info) => info.map(i => ({ oi_guess: i.oi_guess, oi_know: i.oi_know }));
263
+ const saved = {
264
+ version: SAVE_VERSION,
265
+ flags,
266
+ pack_used: [...state.pack_used],
267
+ string_arrays: {
268
+ p_colors: [...state.p_colors],
269
+ r_stones: [...state.r_stones],
270
+ s_names: [...state.s_names],
271
+ ws_made: [...state.ws_made],
272
+ ws_type: [...state.ws_type],
273
+ },
274
+ delta: serializeCoord(state.delta),
275
+ oldpos: serializeCoord(state.oldpos),
276
+ stairs: serializeCoord(state.stairs),
277
+ nh: serializeCoord(state.nh),
278
+ places: savedPlaces,
279
+ player: savedPlayer,
280
+ max_stats: serializeStats(state.max_stats),
281
+ cur_armor_id: getThingId(state.cur_armor),
282
+ cur_weapon_id: getThingId(state.cur_weapon),
283
+ cur_ring_ids: [getThingId(state.cur_ring[0]), getThingId(state.cur_ring[1])],
284
+ monsters: savedMonsters,
285
+ lvl_objs: savedLvlObjs.map(o => ({ ...o })),
286
+ all_objs: allObjs,
287
+ rooms: state.rooms.map(serializeRoom),
288
+ passages: state.passages.map(serializeRoom),
289
+ oldrp_idx: roomIndex(state.oldrp),
290
+ d_list: savedDaemons,
291
+ pot_info_state: saveObjInfoState(pot_info),
292
+ scr_info_state: saveObjInfoState(scr_info),
293
+ ring_info_state: saveObjInfoState(ring_info),
294
+ ws_info_state: saveObjInfoState(ws_info),
295
+ };
296
+ return JSON.stringify(saved);
297
+ }
298
+ // ─── Deserialize ───────────────────────────────────────
299
+ function restoreCoord(s, target) {
300
+ target.x = s.x;
301
+ target.y = s.y;
302
+ }
303
+ function restoreStats(s, target) {
304
+ target.s_str = s.s_str;
305
+ target.s_exp = s.s_exp;
306
+ target.s_lvl = s.s_lvl;
307
+ target.s_arm = s.s_arm;
308
+ target.s_hpt = s.s_hpt;
309
+ target.s_dmg = s.s_dmg;
310
+ target.s_maxhp = s.s_maxhp;
311
+ }
312
+ function restoreRoom(s, target) {
313
+ restoreCoord(s.r_pos, target.r_pos);
314
+ restoreCoord(s.r_max, target.r_max);
315
+ restoreCoord(s.r_gold, target.r_gold);
316
+ target.r_goldval = s.r_goldval;
317
+ target.r_flags = s.r_flags;
318
+ target.r_nexits = s.r_nexits;
319
+ target.r_exit = s.r_exit.map(e => ({ x: e.x, y: e.y }));
320
+ }
321
+ function resolveRoom(idx) {
322
+ if (idx === -1)
323
+ return null;
324
+ if (idx >= 100)
325
+ return state.passages[idx - 100] ?? null;
326
+ return state.rooms[idx] ?? null;
327
+ }
328
+ function createGameObj(s) {
329
+ return {
330
+ _kind: "object",
331
+ l_next: null,
332
+ l_prev: null,
333
+ o_type: s.o_type,
334
+ o_pos: { x: s.o_pos.x, y: s.o_pos.y },
335
+ o_text: s.o_text,
336
+ o_launch: s.o_launch,
337
+ o_packch: s.o_packch,
338
+ o_damage: s.o_damage,
339
+ o_hurldmg: s.o_hurldmg,
340
+ o_count: s.o_count,
341
+ o_which: s.o_which,
342
+ o_hplus: s.o_hplus,
343
+ o_dplus: s.o_dplus,
344
+ o_arm: s.o_arm,
345
+ o_flags: s.o_flags,
346
+ o_group: s.o_group,
347
+ o_label: s.o_label,
348
+ };
349
+ }
350
+ function createMonster(s) {
351
+ return {
352
+ _kind: "monster",
353
+ l_next: null,
354
+ l_prev: null,
355
+ t_pos: { x: s.t_pos.x, y: s.t_pos.y },
356
+ t_turn: s.t_turn,
357
+ t_type: s.t_type,
358
+ t_disguise: s.t_disguise,
359
+ t_oldch: s.t_oldch,
360
+ t_dest: s.t_dest ? { x: s.t_dest.x, y: s.t_dest.y } : null,
361
+ t_flags: s.t_flags,
362
+ t_stats: {
363
+ s_str: s.t_stats.s_str, s_exp: s.t_stats.s_exp, s_lvl: s.t_stats.s_lvl,
364
+ s_arm: s.t_stats.s_arm, s_hpt: s.t_stats.s_hpt, s_dmg: s.t_stats.s_dmg,
365
+ s_maxhp: s.t_stats.s_maxhp,
366
+ },
367
+ t_room: null, // resolved later
368
+ t_pack: null, // resolved later
369
+ t_reserved: s.t_reserved,
370
+ };
371
+ }
372
+ /**
373
+ * Build a linked list from an array of Things, in order.
374
+ */
375
+ function buildLinkedList(items) {
376
+ if (items.length === 0)
377
+ return null;
378
+ for (let i = 0; i < items.length; i++) {
379
+ items[i].l_prev = i > 0 ? items[i - 1] : null;
380
+ items[i].l_next = i < items.length - 1 ? items[i + 1] : null;
381
+ }
382
+ return items[0];
383
+ }
384
+ function restoreObjInfoState(saved, target) {
385
+ for (let i = 0; i < saved.length && i < target.length; i++) {
386
+ target[i].oi_guess = saved[i].oi_guess;
387
+ target[i].oi_know = saved[i].oi_know;
388
+ }
389
+ }
390
+ /**
391
+ * restoreGame: Deserialize a saved game JSON string into the global state.
392
+ * Call this AFTER resetState() and before re-entering the game loop.
393
+ * Returns true on success, false on error.
394
+ */
395
+ export function restoreGame(jsonStr) {
396
+ let saved;
397
+ try {
398
+ saved = JSON.parse(jsonStr);
399
+ }
400
+ catch {
401
+ return false;
402
+ }
403
+ if (saved.version !== SAVE_VERSION)
404
+ return false;
405
+ // ─── Restore scalar state ───
406
+ const f = saved.flags;
407
+ state.after = f.after;
408
+ state.again = f.again;
409
+ state.noscore = f.noscore;
410
+ state.seenstairs = f.seenstairs;
411
+ state.amulet = f.amulet;
412
+ state.door_stop = f.door_stop;
413
+ state.fight_flush = f.fight_flush;
414
+ state.firstmove = f.firstmove;
415
+ state.has_hit = f.has_hit;
416
+ state.inv_describe = f.inv_describe;
417
+ state.jump = f.jump;
418
+ state.kamikaze = f.kamikaze;
419
+ state.lower_msg = f.lower_msg;
420
+ state.move_no_pickup = f.move_no_pickup;
421
+ state.move_on = f.move_on;
422
+ state.msg_esc = f.msg_esc;
423
+ state.passgo = f.passgo;
424
+ state.playing = f.playing;
425
+ state.q_comm = f.q_comm;
426
+ state.running = f.running;
427
+ state.save_msg = f.save_msg;
428
+ state.see_floor = f.see_floor;
429
+ state.stat_msg = f.stat_msg;
430
+ state.terse = f.terse;
431
+ state.to_death = f.to_death;
432
+ state.tombstone = f.tombstone;
433
+ state.wizard = f.wizard;
434
+ state.dir_ch = f.dir_ch;
435
+ state.file_name = f.file_name;
436
+ state.huh = f.huh;
437
+ state.runch = f.runch;
438
+ state.take = f.take;
439
+ state.whoami = f.whoami;
440
+ state.fruit = f.fruit;
441
+ state.home = f.home;
442
+ state.l_last_comm = f.l_last_comm;
443
+ state.l_last_dir = f.l_last_dir;
444
+ state.last_comm = f.last_comm;
445
+ state.last_dir = f.last_dir;
446
+ state.n_objs = f.n_objs;
447
+ state.ntraps = f.ntraps;
448
+ state.hungry_state = f.hungry_state;
449
+ state.inpack = f.inpack;
450
+ state.inv_type = f.inv_type;
451
+ state.level = f.level;
452
+ state.max_hit = f.max_hit;
453
+ state.max_level = f.max_level;
454
+ state.mpos = f.mpos;
455
+ state.no_food = f.no_food;
456
+ state.count = f.count;
457
+ state.food_left = f.food_left;
458
+ state.lastscore = f.lastscore;
459
+ state.no_command = f.no_command;
460
+ state.no_move = f.no_move;
461
+ state.purse = f.purse;
462
+ state.quiet = f.quiet;
463
+ state.vf_hit = f.vf_hit;
464
+ state.dnum = f.dnum;
465
+ state.seed = f.seed;
466
+ state.total = f.total;
467
+ state.between = f.between;
468
+ state.group = f.group;
469
+ // Pack used
470
+ for (let i = 0; i < saved.pack_used.length && i < state.pack_used.length; i++) {
471
+ state.pack_used[i] = saved.pack_used[i];
472
+ }
473
+ // String arrays
474
+ const sa = saved.string_arrays;
475
+ for (let i = 0; i < sa.p_colors.length; i++)
476
+ state.p_colors[i] = sa.p_colors[i];
477
+ for (let i = 0; i < sa.r_stones.length; i++)
478
+ state.r_stones[i] = sa.r_stones[i];
479
+ for (let i = 0; i < sa.s_names.length; i++)
480
+ state.s_names[i] = sa.s_names[i];
481
+ for (let i = 0; i < sa.ws_made.length; i++)
482
+ state.ws_made[i] = sa.ws_made[i];
483
+ for (let i = 0; i < sa.ws_type.length; i++)
484
+ state.ws_type[i] = sa.ws_type[i];
485
+ // Coordinates
486
+ restoreCoord(saved.delta, state.delta);
487
+ restoreCoord(saved.oldpos, state.oldpos);
488
+ restoreCoord(saved.stairs, state.stairs);
489
+ restoreCoord(saved.nh, state.nh);
490
+ // Rooms and passages
491
+ for (let i = 0; i < saved.rooms.length && i < state.rooms.length; i++) {
492
+ restoreRoom(saved.rooms[i], state.rooms[i]);
493
+ }
494
+ for (let i = 0; i < saved.passages.length && i < state.passages.length; i++) {
495
+ restoreRoom(saved.passages[i], state.passages[i]);
496
+ }
497
+ state.oldrp = resolveRoom(saved.oldrp_idx);
498
+ // ─── Reconstruct all Things ───
499
+ // Build ID→Thing maps
500
+ const idToObj = new Map();
501
+ const idToMon = new Map();
502
+ // Create all GameObj instances
503
+ for (const savedObj of saved.all_objs) {
504
+ const obj = createGameObj(savedObj);
505
+ idToObj.set(savedObj.id, obj);
506
+ }
507
+ // Create all Monster instances
508
+ for (const savedMon of saved.monsters) {
509
+ const mon = createMonster(savedMon);
510
+ mon.t_room = resolveRoom(savedMon.t_room_idx);
511
+ // Rebuild monster pack
512
+ const packItems = savedMon.t_pack.map(id => idToObj.get(id)).filter(Boolean);
513
+ mon.t_pack = buildLinkedList(packItems);
514
+ idToMon.set(savedMon.id, mon);
515
+ }
516
+ // Restore player
517
+ const playerMon = createMonster(saved.player);
518
+ playerMon.t_room = resolveRoom(saved.player.t_room_idx);
519
+ // Player pack
520
+ const playerPackItems = saved.player.t_pack.map(id => idToObj.get(id)).filter(Boolean);
521
+ playerMon.t_pack = buildLinkedList(playerPackItems);
522
+ // Copy player into state.player (reuse the existing object to preserve references)
523
+ Object.assign(state.player, playerMon);
524
+ // ─── Restore linked lists ───
525
+ // Monster list
526
+ const monsterInstances = saved.monsters.map(sm => idToMon.get(sm.id)).filter(Boolean);
527
+ state.mlist = buildLinkedList(monsterInstances);
528
+ // Level objects list
529
+ const lvlObjInstances = saved.lvl_objs.map(so => idToObj.get(so.id)).filter(Boolean);
530
+ state.lvl_obj = buildLinkedList(lvlObjInstances);
531
+ // ─── Restore equipment references ───
532
+ state.cur_armor = saved.cur_armor_id >= 0 ? (idToObj.get(saved.cur_armor_id) ?? null) : null;
533
+ state.cur_weapon = saved.cur_weapon_id >= 0 ? (idToObj.get(saved.cur_weapon_id) ?? null) : null;
534
+ state.cur_ring[0] = saved.cur_ring_ids[0] >= 0 ? (idToObj.get(saved.cur_ring_ids[0]) ?? null) : null;
535
+ state.cur_ring[1] = saved.cur_ring_ids[1] >= 0 ? (idToObj.get(saved.cur_ring_ids[1]) ?? null) : null;
536
+ // Max stats
537
+ restoreStats(saved.max_stats, state.max_stats);
538
+ // ─── Restore places ───
539
+ for (let i = 0; i < saved.places.length && i < state.places.length; i++) {
540
+ const sp = saved.places[i];
541
+ state.places[i].p_ch = sp.p_ch;
542
+ state.places[i].p_flags = sp.p_flags;
543
+ state.places[i].p_monst = sp.p_monst_id >= 0 ? (idToMon.get(sp.p_monst_id) ?? null) : null;
544
+ }
545
+ // ─── Restore daemons ───
546
+ for (let i = 0; i < saved.d_list.length && i < state.d_list.length; i++) {
547
+ const sd = saved.d_list[i];
548
+ state.d_list[i].d_type = sd.d_type;
549
+ state.d_list[i].d_arg = sd.d_arg;
550
+ state.d_list[i].d_time = sd.d_time;
551
+ state.d_list[i].d_func = sd.d_func_name !== null
552
+ ? (funcRegistry.get(sd.d_func_name) ?? null)
553
+ : null;
554
+ }
555
+ // ─── Restore item knowledge ───
556
+ restoreObjInfoState(saved.pot_info_state, pot_info);
557
+ restoreObjInfoState(saved.scr_info_state, scr_info);
558
+ restoreObjInfoState(saved.ring_info_state, ring_info);
559
+ restoreObjInfoState(saved.ws_info_state, ws_info);
560
+ // Internal flags
561
+ state._newLevel = false;
562
+ state._result = null;
563
+ return true;
564
+ }
565
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../src/save.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Scroll functions.
3
+ * Ported from scrolls.c
4
+ */
5
+ /**
6
+ * read_scroll: Read a scroll.
7
+ */
8
+ export declare function read_scroll(): Promise<void>;
9
+ /**
10
+ * aggravate: Aggravate all the monsters on this level.
11
+ */
12
+ export declare function aggravate(): void;
13
+ //# sourceMappingURL=scrolls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrolls.d.ts","sourceRoot":"","sources":["../src/scrolls.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6BH;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA0QjD;AAmCD;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAShC"}