@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/rip.js ADDED
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Death and scoring.
3
+ * Ported from rip.c
4
+ */
5
+ import { state, monsters as monsterTemplates, AMULET, NUMLINES, POTION, SCROLL, WEAPON, ARMOR, RING, STICK, FOOD, GOLD, pot_info, scr_info, weap_info, arm_info, ring_info, ws_info, } from "./globals.js";
6
+ import { getBackend, wait_for } from "./io.js";
7
+ import { inv_name } from "./things.js";
8
+ // Kill-name table
9
+ const killNames = {
10
+ s: "starvation",
11
+ a: "arrow",
12
+ b: "bolt",
13
+ d: "dart",
14
+ f: "flame",
15
+ };
16
+ // ASCII tombstone art — ported from rip.c
17
+ const tombstone = [
18
+ " __________",
19
+ " / \\",
20
+ " / REST \\",
21
+ " / IN \\",
22
+ " / PEACE \\",
23
+ " / \\",
24
+ " | |",
25
+ " | |",
26
+ " | |",
27
+ " | |",
28
+ " | |",
29
+ " | |",
30
+ " *| * * |*",
31
+ " ________)|//\\//\\///\\//\\//\\//|(________",
32
+ ];
33
+ /**
34
+ * killname: Get the name of the thing that killed the player.
35
+ */
36
+ export function killname(monType) {
37
+ if (killNames[monType]) {
38
+ return killNames[monType];
39
+ }
40
+ const idx = monType.charCodeAt(0) - "A".charCodeAt(0);
41
+ if (idx >= 0 && idx < 26) {
42
+ return monsterTemplates[idx].m_name;
43
+ }
44
+ return "mysterious force";
45
+ }
46
+ /**
47
+ * center: Center a string in a field of given width.
48
+ */
49
+ function center(str, width) {
50
+ const padding = Math.max(0, Math.floor((width - str.length) / 2));
51
+ return " ".repeat(padding) + str;
52
+ }
53
+ /**
54
+ * draw_tombstone: Draw the ASCII tombstone on the screen.
55
+ */
56
+ async function draw_tombstone(killer) {
57
+ const backend = getBackend();
58
+ backend.clear();
59
+ // Draw the tombstone art
60
+ for (let row = 0; row < tombstone.length; row++) {
61
+ backend.mvaddstr(row, 0, tombstone[row]);
62
+ }
63
+ // Fill in player details on the tombstone
64
+ // Name (row 6), killed by (row 7), gold (row 8), level (row 9)
65
+ const nameStr = center(state.whoami, 20);
66
+ backend.mvaddstr(6, 18, nameStr);
67
+ const goldStr = center(`${state.purse} Au`, 20);
68
+ backend.mvaddstr(7, 18, goldStr);
69
+ const killedStr = center(`killed by`, 20);
70
+ backend.mvaddstr(8, 18, killedStr);
71
+ const killerStr = center(killer, 20);
72
+ backend.mvaddstr(9, 18, killerStr);
73
+ const levelStr = center(`on level ${state.level}`, 20);
74
+ backend.mvaddstr(10, 18, levelStr);
75
+ backend.refresh();
76
+ await wait_for(" ");
77
+ }
78
+ /**
79
+ * death: The player has died. Record the result and exit.
80
+ */
81
+ export async function death(monType) {
82
+ state.playing = false;
83
+ const killer = killname(monType);
84
+ if (state.tombstone) {
85
+ await draw_tombstone(killer);
86
+ }
87
+ // C original: death penalty — purse halved
88
+ const result = {
89
+ outcome: "death",
90
+ gold: Math.floor(state.purse / 2),
91
+ level: state.level,
92
+ killer,
93
+ };
94
+ // Store result so main loop can return it
95
+ state._result = result;
96
+ // Throw to unwind the call stack back to the game loop
97
+ const { RogueExit } = await import("./types.js");
98
+ throw new RogueExit(0);
99
+ }
100
+ /**
101
+ * quit: The player wants to quit.
102
+ */
103
+ export async function quit() {
104
+ state.playing = false;
105
+ const result = {
106
+ outcome: "quit",
107
+ gold: state.purse,
108
+ level: state.level,
109
+ };
110
+ state._result = result;
111
+ const { RogueExit } = await import("./types.js");
112
+ throw new RogueExit(0);
113
+ }
114
+ /**
115
+ * item_worth: Calculate the value of an item.
116
+ */
117
+ function item_worth(obj) {
118
+ const typeChar = String.fromCharCode(obj.o_type);
119
+ let worth = 0;
120
+ switch (typeChar) {
121
+ case POTION:
122
+ worth = pot_info[obj.o_which]?.oi_worth || 0;
123
+ break;
124
+ case SCROLL:
125
+ worth = scr_info[obj.o_which]?.oi_worth || 0;
126
+ break;
127
+ case FOOD:
128
+ worth = 2;
129
+ break;
130
+ case WEAPON: {
131
+ // C original: worth = base * (3*(hplus+dplus) + count)
132
+ const base = weap_info[obj.o_which]?.oi_worth || 0;
133
+ const enchant = 3 * (obj.o_hplus + obj.o_dplus);
134
+ worth = base * (enchant > 0 ? enchant + obj.o_count : obj.o_count);
135
+ return Math.max(0, worth);
136
+ }
137
+ case ARMOR: {
138
+ // C original: worth = base + enchant bonus
139
+ const aBase = arm_info[obj.o_which]?.oi_worth || 0;
140
+ // arm_info[].a_class gives the base AC; lower o_arm = better = more valuable
141
+ const aClass = arm_info[obj.o_which]?.oi_prob || 0; // placeholder
142
+ // Enchantment: difference from base AC
143
+ const enchant = (arm_info[obj.o_which]?.oi_prob || 0) - obj.o_arm;
144
+ worth = aBase + enchant * 100;
145
+ break;
146
+ }
147
+ case RING:
148
+ worth = (ring_info[obj.o_which]?.oi_worth || 0);
149
+ if (obj.o_arm > 0)
150
+ worth += obj.o_arm * 100;
151
+ break;
152
+ case STICK:
153
+ worth = (ws_info[obj.o_which]?.oi_worth || 0);
154
+ worth += 20 * obj.o_arm; // remaining charges
155
+ break;
156
+ case GOLD:
157
+ worth = obj.o_arm;
158
+ break;
159
+ case AMULET:
160
+ worth = 1000;
161
+ break;
162
+ }
163
+ if (worth < 0)
164
+ worth = 0;
165
+ return worth * obj.o_count;
166
+ }
167
+ /**
168
+ * total_winner: The player has won — found the amulet and escaped.
169
+ * Display inventory with item values.
170
+ */
171
+ export async function total_winner() {
172
+ state.playing = false;
173
+ const backend = getBackend();
174
+ backend.clear();
175
+ backend.mvaddstr(0, 0, " @ @ @ @ @ @ @ @");
176
+ backend.mvaddstr(1, 0, " @ @ @ @ @ @ @ @ @ @");
177
+ backend.mvaddstr(2, 0, " @ Langstrumpf 3 @");
178
+ backend.mvaddstr(3, 0, " The Strider of the");
179
+ backend.mvaddstr(4, 0, " Dungeons of Doom");
180
+ backend.mvaddstr(5, 0, " @ @ @ @ @ @ @ @ @ @");
181
+ backend.mvaddstr(6, 0, " @ @ @ @ @ @ @ @");
182
+ backend.mvaddstr(8, 0, ` You made it out of the Dungeons of Doom with the Amulet of Yendor!`);
183
+ // Calculate inventory worth
184
+ let totalWorth = state.purse;
185
+ let row = 10;
186
+ let item = state.player.t_pack;
187
+ backend.mvaddstr(row++, 0, " Pack contents:");
188
+ while (item !== null) {
189
+ if (item._kind === "object") {
190
+ const worth = item_worth(item);
191
+ totalWorth += worth;
192
+ const line = ` ${inv_name(item, false)} (${worth} gold)`;
193
+ if (row < NUMLINES - 2) {
194
+ backend.mvaddstr(row, 0, line);
195
+ row++;
196
+ }
197
+ }
198
+ item = item.l_next;
199
+ }
200
+ if (row < NUMLINES - 2) {
201
+ row++;
202
+ backend.mvaddstr(row, 0, ` Total value: ${totalWorth} gold pieces`);
203
+ }
204
+ backend.mvaddstr(NUMLINES - 1, 0, "--Press space to continue--");
205
+ backend.refresh();
206
+ await wait_for(" ");
207
+ const result = {
208
+ outcome: "victory",
209
+ gold: totalWorth,
210
+ level: state.level,
211
+ };
212
+ state._result = result;
213
+ const { RogueExit } = await import("./types.js");
214
+ throw new RogueExit(0);
215
+ }
216
+ //# sourceMappingURL=rip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rip.js","sourceRoot":"","sources":["../src/rip.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Room creation and layout.
3
+ * Ported from rooms.c
4
+ */
5
+ import type { Coord, Room } from "./types.js";
6
+ /**
7
+ * rnd_room: Pick a random room that isn't gone.
8
+ */
9
+ export declare function rnd_room(): number;
10
+ /**
11
+ * do_rooms: Create rooms and corridors with a connectivity graph.
12
+ * Monster/item placement is stubbed — filled in by later phases.
13
+ */
14
+ export declare function do_rooms(): void;
15
+ /**
16
+ * draw_room: Draw a box around a room and lay down the floor.
17
+ * For maze rooms, draw the maze.
18
+ */
19
+ export declare function draw_room(rp: Room): void;
20
+ /**
21
+ * vert: Draw a vertical line (wall).
22
+ */
23
+ export declare function vert(rp: Room, startx: number): void;
24
+ /**
25
+ * horiz: Draw a horizontal line (wall).
26
+ */
27
+ export declare function horiz(rp: Room, starty: number): void;
28
+ /**
29
+ * do_maze: Dig a maze in a room.
30
+ */
31
+ export declare function do_maze(rp: Room): void;
32
+ /**
33
+ * putpass: Add a passage character at coordinates.
34
+ */
35
+ export declare function putpass(cp: Coord): void;
36
+ /**
37
+ * rnd_pos: Pick a random spot in a room.
38
+ */
39
+ export declare function rnd_pos(rp: Room, cp: Coord): void;
40
+ /**
41
+ * find_floor: Find a valid floor spot in a room.
42
+ * If rp is null, pick a new room each iteration.
43
+ */
44
+ export declare function find_floor(rpIn: Room | null, cp: Coord, limit: number | boolean, monst: boolean): boolean;
45
+ /**
46
+ * enter_room: Code executed when you appear in a room.
47
+ * Full implementation requires Phase 4+ dependencies (see_monst, etc.)
48
+ */
49
+ export declare function enter_room(cp: Coord): void;
50
+ /**
51
+ * leave_room: Code for when we exit a room.
52
+ */
53
+ export declare function leave_room(cp: Coord): void;
54
+ /**
55
+ * door_open: Open all the doors in a room.
56
+ */
57
+ export declare function door_open(rp: Room): void;
58
+ /**
59
+ * roomin: Find what room a coordinate is in.
60
+ */
61
+ export declare function roomin(cp: Coord): Room | null;
62
+ //# sourceMappingURL=rooms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rooms.d.ts","sourceRoot":"","sources":["../src/rooms.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAgB,MAAM,YAAY,CAAC;AA2C5D;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAMjC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAwG/B;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAgBxC;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAInD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIpD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CActC;AAqED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAQvC;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAGjD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,MAAM,GAAG,OAAO,EACvB,KAAK,EAAE,OAAO,GACb,OAAO,CA+BT;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAiC1C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAmC1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAoBxC;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI,CAsB7C"}