@rpgm-tools/neo-angband-core 0.24.0 → 0.26.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 (64) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/entity-views.d.ts +62 -0
  3. package/dist/agent/entity-views.d.ts.map +1 -0
  4. package/dist/agent/entity-views.js +195 -0
  5. package/dist/agent/entity-views.js.map +1 -0
  6. package/dist/agent/index.d.ts +5 -1
  7. package/dist/agent/index.d.ts.map +1 -1
  8. package/dist/agent/index.js +2 -0
  9. package/dist/agent/index.js.map +1 -1
  10. package/dist/agent/loadout.d.ts +97 -0
  11. package/dist/agent/loadout.d.ts.map +1 -0
  12. package/dist/agent/loadout.js +312 -0
  13. package/dist/agent/loadout.js.map +1 -0
  14. package/dist/agent/perceive.d.ts.map +1 -1
  15. package/dist/agent/perceive.js +16 -162
  16. package/dist/agent/perceive.js.map +1 -1
  17. package/dist/agent/types.d.ts +167 -2
  18. package/dist/agent/types.d.ts.map +1 -1
  19. package/dist/agent/types.js +10 -1
  20. package/dist/agent/types.js.map +1 -1
  21. package/dist/game/context.d.ts +15 -0
  22. package/dist/game/context.d.ts.map +1 -1
  23. package/dist/game/context.js.map +1 -1
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/mod/registry-host.d.ts +97 -0
  29. package/dist/mod/registry-host.d.ts.map +1 -1
  30. package/dist/mod/registry-host.js +7 -0
  31. package/dist/mod/registry-host.js.map +1 -1
  32. package/dist/mod/save-blocks.d.ts +1 -1
  33. package/dist/player/calcs.d.ts +9 -0
  34. package/dist/player/calcs.d.ts.map +1 -1
  35. package/dist/player/calcs.js +13 -1
  36. package/dist/player/calcs.js.map +1 -1
  37. package/dist/player/loadout.d.ts +178 -0
  38. package/dist/player/loadout.d.ts.map +1 -0
  39. package/dist/player/loadout.js +172 -0
  40. package/dist/player/loadout.js.map +1 -0
  41. package/dist/player/spell.d.ts +21 -1
  42. package/dist/player/spell.d.ts.map +1 -1
  43. package/dist/player/spell.js +53 -14
  44. package/dist/player/spell.js.map +1 -1
  45. package/dist/session/game.d.ts +39 -0
  46. package/dist/session/game.d.ts.map +1 -1
  47. package/dist/session/game.js +201 -31
  48. package/dist/session/game.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +1 -1
  52. package/src/agent/entity-views.ts +227 -0
  53. package/src/agent/index.ts +9 -0
  54. package/src/agent/loadout.ts +400 -0
  55. package/src/agent/perceive.ts +22 -168
  56. package/src/agent/types.ts +166 -2
  57. package/src/game/context.ts +18 -0
  58. package/src/index.ts +1 -0
  59. package/src/mod/registry-host.ts +108 -0
  60. package/src/player/calcs.ts +22 -1
  61. package/src/player/loadout.ts +331 -0
  62. package/src/player/spell.ts +67 -16
  63. package/src/session/game.ts +287 -35
  64. package/src/version.ts +1 -1
@@ -0,0 +1,178 @@
1
+ /**
2
+ * The derived-stat surface of a loadout, and the difference between two of them.
3
+ *
4
+ * WHAT THIS IS FOR. `calc_bonuses` answers "what is this character, wearing
5
+ * this". Two questions need the answer for a loadout the character is NOT
6
+ * wearing: an autoplayer deciding whether to wear, buy or sell a thing, and a
7
+ * player asking what an item would do for them. Both want the SAME answer, and
8
+ * the way to guarantee that is for both to read one derive rather than each
9
+ * summing the item's own bonuses. `PlayerState` is that derive; this module is
10
+ * the readable, serializable, diffable projection of it.
11
+ *
12
+ * WHY IT IS THE WHOLE SURFACE AND NOT A SCORE. An autoplayer collapses the
13
+ * answer to one number, so it would have been cheaper to return that number.
14
+ * A number cannot be shown to a player, cannot say WHICH resist was lost, and
15
+ * cannot be extended without changing what every caller receives. So every
16
+ * field of player_state is here, named, with the vector fields kept as vectors
17
+ * and the flag sets kept as code names.
18
+ *
19
+ * SPEED IS NOT A FIELD OF player_state ALONE. maxHp comes from calc_hitpoints
20
+ * over the derived CON index and maxSp from calc_mana over the derived stat
21
+ * indices and the worn armour weight; both change when a ring of CON or a heavy
22
+ * cuirass goes on, and a comparison that omitted them would show a plain
23
+ * upgrade for gear that costs a caster half their mana. They are carried here
24
+ * beside the state's own fields, and the caller supplies them.
25
+ */
26
+ import type { PlayerState } from "./calcs.js";
27
+ /**
28
+ * The facts about a loadout that do not come out of calc_bonuses, which the
29
+ * caller derives from the same state (see the module header).
30
+ */
31
+ export interface DerivedStatsExtras {
32
+ /** calc_hitpoints over the derived CON index: p->mhp for this loadout. */
33
+ maxHp: number;
34
+ /** calc_mana over the derived stat indices and worn armour: p->msp. */
35
+ maxSp: number;
36
+ /** state->cumber_armor, which calc_mana owns rather than calc_bonuses. */
37
+ cumberArmor: boolean;
38
+ /** p->upkeep->total_weight for this loadout, in tenth pounds. */
39
+ totalWeight: number;
40
+ /** weight_limit(state): the STR-derived carrying capacity, tenth pounds. */
41
+ weightLimit: number;
42
+ }
43
+ /**
44
+ * Every derived fact about a character wearing one particular loadout: the whole
45
+ * of upstream's player_state, plus the four values calc_bonuses does not own.
46
+ * Plain data throughout (arrays and code names, no FlagSet), so it crosses a
47
+ * worker boundary and can be shown to a player as it stands.
48
+ */
49
+ export interface DerivedStatsView {
50
+ /** state->speed (110 = normal, 0..199 after the weight penalty). */
51
+ speed: number;
52
+ /** state->ac: the base armour of the worn pieces. */
53
+ baseAc: number;
54
+ /** state->to_a: the armour BONUS (magical plusses, DEX, timed effects). */
55
+ toA: number;
56
+ /** The armour class as the character sheet prints it: state->ac + to_a. */
57
+ ac: number;
58
+ /** state->to_h, excluding the wielded weapon's own plus (applied at attack). */
59
+ toH: number;
60
+ /** state->to_d, on the same terms as toH. */
61
+ toD: number;
62
+ /** state->num_blows, in HUNDREDTHS of a blow (100 == one blow). */
63
+ blows: number;
64
+ /** state->num_shots, in TENTHS of a shot (10 == one shot). */
65
+ shots: number;
66
+ /** state->num_moves: extra movement actions. */
67
+ moves: number;
68
+ /** state->ammo_mult: the launcher's multiplier. */
69
+ ammoMult: number;
70
+ /** state->ammo_tval: the ammunition the launcher takes (0 = none). */
71
+ ammoTval: number;
72
+ /** state->dam_red: flat damage reduction. */
73
+ damRed: number;
74
+ /** state->perc_dam_red: percentage damage reduction. */
75
+ percDamRed: number;
76
+ /** state->see_infra: infravision range in grids. */
77
+ seeInfra: number;
78
+ /** state->cur_light: light radius (calc_light). */
79
+ light: number;
80
+ /** adj_str_hold[STR]: the weapon weight this character carries comfortably. */
81
+ hold: number;
82
+ /** state->heavy_wield: the wielded weapon is too heavy for this STR. */
83
+ heavyWield: boolean;
84
+ /** state->heavy_shoot: the launcher is too heavy for this STR. */
85
+ heavyShoot: boolean;
86
+ /** state->bless_wield: a PF_BLESS_WEAPON class is content with its weapon. */
87
+ blessWield: boolean;
88
+ /** state->cumber_armor: worn armour over the class allowance costs mana. */
89
+ cumberArmor: boolean;
90
+ /** state->stat_add[], STAT order: the equipment's stat modifiers. */
91
+ statAdd: number[];
92
+ /** state->stat_use[], STAT order: the stats in play. */
93
+ statUse: number[];
94
+ /** state->stat_top[], STAT order: the same before drain. */
95
+ statTop: number[];
96
+ /** state->stat_ind[], STAT order: the adj_* table indices. */
97
+ statInd: number[];
98
+ /** state->skills[], SKILL order. */
99
+ skills: number[];
100
+ /** el_info[].res_level per element, ELEM order (see resistElements). */
101
+ resists: number[];
102
+ /** The element name for each entry of `resists`, in the same order. */
103
+ resistElements: string[];
104
+ /** OF_* code names set in state->flags. */
105
+ objectFlags: string[];
106
+ /** PF_* code names set in state->pflags. */
107
+ playerFlags: string[];
108
+ /** calc_hitpoints for this loadout. */
109
+ maxHp: number;
110
+ /** calc_mana for this loadout. */
111
+ maxSp: number;
112
+ /** p->upkeep->total_weight for this loadout, tenth pounds. */
113
+ totalWeight: number;
114
+ /** weight_limit(state), tenth pounds. */
115
+ weightLimit: number;
116
+ }
117
+ /**
118
+ * Project a derived PlayerState (plus the four values calc_bonuses does not
119
+ * own) into plain data. Copies every array, so the result cannot alias a live
120
+ * derive that a later refresh replaces.
121
+ */
122
+ export declare function derivedStatsView(state: PlayerState, extras: DerivedStatsExtras): DerivedStatsView;
123
+ /**
124
+ * What changes between two loadouts.
125
+ *
126
+ * NUMBERS ONLY, plus the flag names gained and lost. A boolean has no
127
+ * difference - "heavy_wield went from false to true" is two facts, not one
128
+ * number - so the four boolean fields are read from the before and after views
129
+ * instead of appearing here. That is a deliberate shape: a three-state
130
+ * `true | false | null` field reads as a number that happens to be a boolean and
131
+ * is wrong at every call site that forgets the null.
132
+ */
133
+ export interface DerivedStatsDelta {
134
+ speed: number;
135
+ baseAc: number;
136
+ toA: number;
137
+ ac: number;
138
+ toH: number;
139
+ toD: number;
140
+ blows: number;
141
+ shots: number;
142
+ moves: number;
143
+ ammoMult: number;
144
+ damRed: number;
145
+ percDamRed: number;
146
+ seeInfra: number;
147
+ light: number;
148
+ hold: number;
149
+ maxHp: number;
150
+ maxSp: number;
151
+ totalWeight: number;
152
+ weightLimit: number;
153
+ /** Per-stat differences, STAT order. */
154
+ statAdd: number[];
155
+ statUse: number[];
156
+ statTop: number[];
157
+ statInd: number[];
158
+ /** Per-skill differences, SKILL order. */
159
+ skills: number[];
160
+ /** Per-element res_level differences, ELEM order. */
161
+ resists: number[];
162
+ /** OF_* codes the after loadout has and the before one did not. */
163
+ objectFlagsGained: string[];
164
+ /** OF_* codes the before loadout had and the after one does not. */
165
+ objectFlagsLost: string[];
166
+ /** PF_* codes gained / lost, on the same terms. */
167
+ playerFlagsGained: string[];
168
+ playerFlagsLost: string[];
169
+ /**
170
+ * Whether anything in this delta is nonzero or non-empty. False means the two
171
+ * loadouts derive identically, which is the honest answer for a swap between
172
+ * two items with the same properties.
173
+ */
174
+ changed: boolean;
175
+ }
176
+ /** after - before, over the whole derived surface (see DerivedStatsDelta). */
177
+ export declare function diffDerivedStats(before: DerivedStatsView, after: DerivedStatsView): DerivedStatsDelta;
178
+ //# sourceMappingURL=loadout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadout.d.ts","sourceRoot":"","sources":["../../src/player/loadout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * The derived-stat surface of a loadout, and the difference between two of them.
3
+ *
4
+ * WHAT THIS IS FOR. `calc_bonuses` answers "what is this character, wearing
5
+ * this". Two questions need the answer for a loadout the character is NOT
6
+ * wearing: an autoplayer deciding whether to wear, buy or sell a thing, and a
7
+ * player asking what an item would do for them. Both want the SAME answer, and
8
+ * the way to guarantee that is for both to read one derive rather than each
9
+ * summing the item's own bonuses. `PlayerState` is that derive; this module is
10
+ * the readable, serializable, diffable projection of it.
11
+ *
12
+ * WHY IT IS THE WHOLE SURFACE AND NOT A SCORE. An autoplayer collapses the
13
+ * answer to one number, so it would have been cheaper to return that number.
14
+ * A number cannot be shown to a player, cannot say WHICH resist was lost, and
15
+ * cannot be extended without changing what every caller receives. So every
16
+ * field of player_state is here, named, with the vector fields kept as vectors
17
+ * and the flag sets kept as code names.
18
+ *
19
+ * SPEED IS NOT A FIELD OF player_state ALONE. maxHp comes from calc_hitpoints
20
+ * over the derived CON index and maxSp from calc_mana over the derived stat
21
+ * indices and the worn armour weight; both change when a ring of CON or a heavy
22
+ * cuirass goes on, and a comparison that omitted them would show a plain
23
+ * upgrade for gear that costs a caster half their mana. They are carried here
24
+ * beside the state's own fields, and the caller supplies them.
25
+ */
26
+ import { ELEMENT_ENTRIES, OBJECT_FLAG_ENTRIES, PLAYER_FLAG_ENTRIES } from "../generated/index.js";
27
+ /** OF_* code names for the set flags in an object-flag set (OF is 1-indexed). */
28
+ function objectFlagCodes(flags) {
29
+ const out = [];
30
+ for (const f of flags) {
31
+ const entry = OBJECT_FLAG_ENTRIES[f - 1];
32
+ if (entry)
33
+ out.push(entry.name);
34
+ }
35
+ return out;
36
+ }
37
+ /** PF_* code names for the set flags in a player-flag set (entry index == PF). */
38
+ function playerFlagCodes(flags) {
39
+ const out = [];
40
+ for (const f of flags) {
41
+ const entry = PLAYER_FLAG_ENTRIES[f];
42
+ if (entry)
43
+ out.push(entry.name);
44
+ }
45
+ return out;
46
+ }
47
+ /**
48
+ * Project a derived PlayerState (plus the four values calc_bonuses does not
49
+ * own) into plain data. Copies every array, so the result cannot alias a live
50
+ * derive that a later refresh replaces.
51
+ */
52
+ export function derivedStatsView(state, extras) {
53
+ return {
54
+ speed: state.speed,
55
+ baseAc: state.ac,
56
+ toA: state.toA,
57
+ ac: state.ac + state.toA,
58
+ toH: state.toH,
59
+ toD: state.toD,
60
+ blows: state.numBlows,
61
+ shots: state.numShots,
62
+ moves: state.numMoves,
63
+ ammoMult: state.ammoMult,
64
+ ammoTval: state.ammoTval,
65
+ damRed: state.damRed,
66
+ percDamRed: state.percDamRed,
67
+ seeInfra: state.seeInfra,
68
+ light: state.curLight,
69
+ hold: state.hold,
70
+ heavyWield: state.heavyWield,
71
+ heavyShoot: state.heavyShoot,
72
+ blessWield: state.blessWield,
73
+ cumberArmor: extras.cumberArmor,
74
+ statAdd: [...state.statAdd],
75
+ statUse: [...state.statUse],
76
+ statTop: [...state.statTop],
77
+ statInd: [...state.statInd],
78
+ skills: [...state.skills],
79
+ resists: state.elInfo.map((el) => el.resLevel),
80
+ resistElements: state.elInfo.map((_el, i) => ELEMENT_ENTRIES[i]?.name ?? String(i)),
81
+ objectFlags: objectFlagCodes(state.flags),
82
+ playerFlags: playerFlagCodes(state.pflags),
83
+ maxHp: extras.maxHp,
84
+ maxSp: extras.maxSp,
85
+ totalWeight: extras.totalWeight,
86
+ weightLimit: extras.weightLimit,
87
+ };
88
+ }
89
+ /** Element-wise difference of two equal-length numeric vectors. */
90
+ function diffVector(before, after) {
91
+ const n = Math.max(before.length, after.length);
92
+ const out = new Array(n).fill(0);
93
+ for (let i = 0; i < n; i++)
94
+ out[i] = (after[i] ?? 0) - (before[i] ?? 0);
95
+ return out;
96
+ }
97
+ /** The names in `after` that are absent from `before`. */
98
+ function gained(before, after) {
99
+ const had = new Set(before);
100
+ return after.filter((name) => !had.has(name));
101
+ }
102
+ /** after - before, over the whole derived surface (see DerivedStatsDelta). */
103
+ export function diffDerivedStats(before, after) {
104
+ const delta = {
105
+ speed: after.speed - before.speed,
106
+ baseAc: after.baseAc - before.baseAc,
107
+ toA: after.toA - before.toA,
108
+ ac: after.ac - before.ac,
109
+ toH: after.toH - before.toH,
110
+ toD: after.toD - before.toD,
111
+ blows: after.blows - before.blows,
112
+ shots: after.shots - before.shots,
113
+ moves: after.moves - before.moves,
114
+ ammoMult: after.ammoMult - before.ammoMult,
115
+ damRed: after.damRed - before.damRed,
116
+ percDamRed: after.percDamRed - before.percDamRed,
117
+ seeInfra: after.seeInfra - before.seeInfra,
118
+ light: after.light - before.light,
119
+ hold: after.hold - before.hold,
120
+ maxHp: after.maxHp - before.maxHp,
121
+ maxSp: after.maxSp - before.maxSp,
122
+ totalWeight: after.totalWeight - before.totalWeight,
123
+ weightLimit: after.weightLimit - before.weightLimit,
124
+ statAdd: diffVector(before.statAdd, after.statAdd),
125
+ statUse: diffVector(before.statUse, after.statUse),
126
+ statTop: diffVector(before.statTop, after.statTop),
127
+ statInd: diffVector(before.statInd, after.statInd),
128
+ skills: diffVector(before.skills, after.skills),
129
+ resists: diffVector(before.resists, after.resists),
130
+ objectFlagsGained: gained(before.objectFlags, after.objectFlags),
131
+ objectFlagsLost: gained(after.objectFlags, before.objectFlags),
132
+ playerFlagsGained: gained(before.playerFlags, after.playerFlags),
133
+ playerFlagsLost: gained(after.playerFlags, before.playerFlags),
134
+ changed: false,
135
+ };
136
+ delta.changed =
137
+ delta.speed !== 0 ||
138
+ delta.baseAc !== 0 ||
139
+ delta.toA !== 0 ||
140
+ delta.toH !== 0 ||
141
+ delta.toD !== 0 ||
142
+ delta.blows !== 0 ||
143
+ delta.shots !== 0 ||
144
+ delta.moves !== 0 ||
145
+ delta.ammoMult !== 0 ||
146
+ delta.damRed !== 0 ||
147
+ delta.percDamRed !== 0 ||
148
+ delta.seeInfra !== 0 ||
149
+ delta.light !== 0 ||
150
+ delta.hold !== 0 ||
151
+ delta.maxHp !== 0 ||
152
+ delta.maxSp !== 0 ||
153
+ delta.totalWeight !== 0 ||
154
+ delta.weightLimit !== 0 ||
155
+ after.ammoTval !== before.ammoTval ||
156
+ after.heavyWield !== before.heavyWield ||
157
+ after.heavyShoot !== before.heavyShoot ||
158
+ after.blessWield !== before.blessWield ||
159
+ after.cumberArmor !== before.cumberArmor ||
160
+ delta.statAdd.some((v) => v !== 0) ||
161
+ delta.statUse.some((v) => v !== 0) ||
162
+ delta.statTop.some((v) => v !== 0) ||
163
+ delta.statInd.some((v) => v !== 0) ||
164
+ delta.skills.some((v) => v !== 0) ||
165
+ delta.resists.some((v) => v !== 0) ||
166
+ delta.objectFlagsGained.length > 0 ||
167
+ delta.objectFlagsLost.length > 0 ||
168
+ delta.playerFlagsGained.length > 0 ||
169
+ delta.playerFlagsLost.length > 0;
170
+ return delta;
171
+ }
172
+ //# sourceMappingURL=loadout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadout.js","sourceRoot":"","sources":["../../src/player/loadout.ts"],"names":[],"mappings":"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"}
@@ -116,10 +116,30 @@ export declare function calcSpells(player: Player, statInd: readonly number[], m
116
116
  * the encumbrance messages diff against.
117
117
  */
118
118
  export declare function cumberArmorFrom(player: Player, armorWeight: number): boolean;
119
+ /**
120
+ * The worn-armor weight calc_mana penalizes: every equipped slot except the
121
+ * weapon, launcher and jewellery ones (player-calcs.c:1509-1522). `equipment` is
122
+ * indexed by body slot, matching CalcBonusesOptions.equipment.
123
+ *
124
+ * Exported because calc_mana has two kinds of caller now - the live refresh and
125
+ * a hypothetical loadout - and a second copy of the slot-type list is a second
126
+ * thing to keep in step with the body definition.
127
+ */
128
+ export declare function wornArmorWeight(player: Player, equipment: readonly (GameObject | null)[]): number;
129
+ /**
130
+ * The maximum-mana ARITHMETIC of calc_mana (player-calcs.c:1489-1532), with no
131
+ * write to the player: effective levels times the casting stat's adj_mag_mana
132
+ * entry, less the armour-weight penalty when the worn armour cumbers.
133
+ *
134
+ * Split out of calcMana so a caller asking "what would my mana be" - a
135
+ * hypothetical loadout - gets the same number the live calc produces instead of
136
+ * a second copy of the formula. calcMana itself is this plus the msp/csp write.
137
+ */
138
+ export declare function maxManaFrom(player: Player, statInd: readonly number[], armorWeight: number): number;
119
139
  /**
120
140
  * calc_mana (player-calcs.c L1480): maximum mana from effective levels and
121
141
  * the casting stat, penalized by heavy armor over the class allowance.
122
- * `armorWeight` is the summed weight of worn body armor (the caller sums
142
+ * `armorWeight` is the summed weight of worn body armor (wornArmorWeight sums
123
143
  * the non-weapon/bow/ring/amulet/light slots). Updates msp and clamps csp.
124
144
  *
125
145
  * Returns state->cumber_armor (L1503, L1528) - true when the worn armour is
@@ -1 +1 @@
1
- {"version":3,"file":"spell.d.ts","sourceRoot":"","sources":["../../src/player/spell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAO1C,kCAAkC;AAClC,eAAO,MAAM,QAAQ;;;;CAA4D,CAAC;AAElF,+EAA+E;AAC/E,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAGzC,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAGzC,CAAC;AA0BF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,IAAI,CA+GN;AAMD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,EAAE,CAS/D;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,SAAS,GAAG,IAAI,CAKlB;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,GACZ,UAAU,GAAG,IAAI,CAUnB;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,MAAM,EAAE,CAIV;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,GACjD,MAAM,CAIR;AAED,0BAA0B;AAC1B;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtE;AAED,2BAA2B;AAC3B,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E;AAED,4BAA4B;AAC5B,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAG7E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAKvE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAKpE;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CAOR;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,cAAmB,GACvB,MAAM,CAgDR;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CAsBN;AAMD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,IAAI,CA2FN;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,QAAQ,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,WAAW,EAAE,MAAM,GAClB,OAAO,CAmCT;AAcD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC3B,OAAO,CAOT"}
1
+ {"version":3,"file":"spell.d.ts","sourceRoot":"","sources":["../../src/player/spell.ts"],"names":[],"mappings":"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"}
@@ -461,10 +461,61 @@ export function cumberArmorFrom(player, armorWeight) {
461
461
  return false;
462
462
  return Math.trunc((armorWeight - player.cls.magic.spellWeight) / 10) > 0;
463
463
  }
464
+ /**
465
+ * The worn-armor weight calc_mana penalizes: every equipped slot except the
466
+ * weapon, launcher and jewellery ones (player-calcs.c:1509-1522). `equipment` is
467
+ * indexed by body slot, matching CalcBonusesOptions.equipment.
468
+ *
469
+ * Exported because calc_mana has two kinds of caller now - the live refresh and
470
+ * a hypothetical loadout - and a second copy of the slot-type list is a second
471
+ * thing to keep in step with the body definition.
472
+ */
473
+ export function wornArmorWeight(player, equipment) {
474
+ let weight = 0;
475
+ for (let i = 0; i < player.body.count; i++) {
476
+ const slotType = player.body.slots[i]?.type ?? "";
477
+ if (slotType === "WEAPON" ||
478
+ slotType === "BOW" ||
479
+ slotType === "RING" ||
480
+ slotType === "AMULET" ||
481
+ slotType === "LIGHT") {
482
+ continue;
483
+ }
484
+ const worn = equipment[i];
485
+ if (worn)
486
+ weight += worn.weight;
487
+ }
488
+ return weight;
489
+ }
490
+ /**
491
+ * The maximum-mana ARITHMETIC of calc_mana (player-calcs.c:1489-1532), with no
492
+ * write to the player: effective levels times the casting stat's adj_mag_mana
493
+ * entry, less the armour-weight penalty when the worn armour cumbers.
494
+ *
495
+ * Split out of calcMana so a caller asking "what would my mana be" - a
496
+ * hypothetical loadout - gets the same number the live calc produces instead of
497
+ * a second copy of the formula. calcMana itself is this plus the msp/csp write.
498
+ */
499
+ export function maxManaFrom(player, statInd, armorWeight) {
500
+ if (!player.cls.magic.totalSpells)
501
+ return 0;
502
+ /* Extract "effective" player level. */
503
+ const levels = player.lev - player.cls.magic.spellFirst + 1;
504
+ let msp = 0;
505
+ if (levels > 0) {
506
+ msp = 1;
507
+ msp += Math.trunc((at(adj_mag_mana, averageSpellStat(player.cls, statInd)) * levels) / 100);
508
+ }
509
+ /* Heavy armor penalizes mana (L1524-1532). */
510
+ if (cumberArmorFrom(player, armorWeight)) {
511
+ msp -= Math.trunc((armorWeight - player.cls.magic.spellWeight) / 10);
512
+ }
513
+ return msp < 0 ? 0 : msp;
514
+ }
464
515
  /**
465
516
  * calc_mana (player-calcs.c L1480): maximum mana from effective levels and
466
517
  * the casting stat, penalized by heavy armor over the class allowance.
467
- * `armorWeight` is the summed weight of worn body armor (the caller sums
518
+ * `armorWeight` is the summed weight of worn body armor (wornArmorWeight sums
468
519
  * the non-weapon/bow/ring/amulet/light slots). Updates msp and clamps csp.
469
520
  *
470
521
  * Returns state->cumber_armor (L1503, L1528) - true when the worn armour is
@@ -483,20 +534,8 @@ export function calcMana(player, statInd, armorWeight) {
483
534
  * before the armour weigh-in). */
484
535
  return false;
485
536
  }
486
- /* Extract "effective" player level. */
487
- const levels = player.lev - player.cls.magic.spellFirst + 1;
488
- let msp = 0;
489
- if (levels > 0) {
490
- msp = 1;
491
- msp += Math.trunc((at(adj_mag_mana, averageSpellStat(player.cls, statInd)) * levels) / 100);
492
- }
493
- /* Heavy armor penalizes mana (L1524-1532). */
494
- const over = Math.trunc((armorWeight - player.cls.magic.spellWeight) / 10);
537
+ const msp = maxManaFrom(player, statInd, armorWeight);
495
538
  const cumberArmor = cumberArmorFrom(player, armorWeight);
496
- if (cumberArmor)
497
- msp -= over;
498
- if (msp < 0)
499
- msp = 0;
500
539
  if (player.msp !== msp) {
501
540
  player.msp = msp;
502
541
  if (player.csp >= msp) {
@@ -1 +1 @@
1
- {"version":3,"file":"spell.js","sourceRoot":"","sources":["../../src/player/spell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spell.js","sourceRoot":"","sources":["../../src/player/spell.ts"],"names":[],"mappings":"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"}
@@ -195,6 +195,18 @@ export interface StartedGame {
195
195
  * The caller clears state.generateLevel and refreshes FOV/render.
196
196
  */
197
197
  changeLevel: (depth: number) => void;
198
+ /**
199
+ * reincarnate_borg (borg/borg-reincarnate.c): wipe the live player, roll a new
200
+ * one from the real birth pipeline, and carry on in the SAME session - no new
201
+ * savefile, no return to a menu. Race and class are rolled unless pinned. See
202
+ * makeReincarnate for what it does and what it deliberately leaves alone.
203
+ *
204
+ * A HOST-SIDE CALL, by construction. `AgentCommand` is `PlayerCommand`, an
205
+ * in-game turn command, and birth has no representation there - so an autoplayer
206
+ * mod cannot ask for this through its per-turn return value and the host's own
207
+ * death handling has to be what calls it.
208
+ */
209
+ reincarnate: (opts?: ReincarnateOptions) => ReincarnateResult;
198
210
  /**
199
211
  * The wizard/debug engine bundles (WP-14 / gap 15.2): effect interpreter,
200
212
  * ExpDeps, TrapDeps, live MonPlaceDeps and MakeDeps for the interactive debug
@@ -240,6 +252,33 @@ export interface StartedGame {
240
252
  * markNoscore hook and the pure registry data (races/artifacts/curses).
241
253
  */
242
254
  export type WizardBundle = Pick<WizardDeps, "makeDeps" | "expDeps" | "effect" | "trapDeps" | "monPlace">;
255
+ /**
256
+ * What a caller may pin about the character a reincarnation rolls. Every field is
257
+ * optional, and every omission means "roll it", which is upstream's own default:
258
+ * `borg_cfg[BORG_RESPAWN_RACE]` and `[BORG_RESPAWN_CLASS]` are -1 unless a config
259
+ * file sets them, and -1 means `player_id2race(randint0(MAX_RACES))`.
260
+ */
261
+ export interface ReincarnateOptions {
262
+ /** A race by name. Absent, or a name no pack defines, rolls one. */
263
+ raceName?: string;
264
+ /** A class by name. Absent, or a name no pack defines, rolls one. */
265
+ className?: string;
266
+ /**
267
+ * Cheat bits to OR onto the new character (game/wizard.ts NOSCORE). The mark is
268
+ * one-way - markNoscore never clears a bit and nothing else writes the field -
269
+ * so a character that came out of this loop stays marked for the rest of its
270
+ * life and across every save. Upstream's tail is the same line:
271
+ * `if (!(player->noscore & NOSCORE_BORG)) player->noscore |= NOSCORE_BORG`.
272
+ */
273
+ noscore?: number;
274
+ /** The new character's `full_name`. Absent leaves the blank birth value. */
275
+ fullName?: string;
276
+ }
277
+ /** Which character a reincarnation rolled. */
278
+ export interface ReincarnateResult {
279
+ raceName: string;
280
+ className: string;
281
+ }
243
282
  /**
244
283
  * Assemble a runnable GameState from a pack: generate a level, birth a
245
284
  * character, derive its bonuses, and register the placed monsters. The