@archivist-gg/dnd5e 0.2.0 → 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 (40) hide show
  1. package/dist/chunk-353WXS6S.js +25 -0
  2. package/dist/{chunk-DC74TZNA.js → chunk-4LZJXJJS.js} +7 -2
  3. package/dist/{chunk-R5SQHP2X.js → chunk-5MZSB6OM.js} +8 -11
  4. package/dist/{chunk-5WQD3WNZ.js → chunk-A4WENOUQ.js} +5 -1
  5. package/dist/{chunk-V6SOFUJW.js → chunk-AIRFC5NQ.js} +3 -1
  6. package/dist/{chunk-TQZB4OCJ.js → chunk-EMOORSQ7.js} +45 -20
  7. package/dist/{chunk-3TRGRSCH.js → chunk-LV4SNWZQ.js} +7 -1
  8. package/dist/{chunk-IXZXFFFW.js → chunk-M2EMFD6S.js} +1 -1
  9. package/dist/{chunk-UC4FE5X3.js → chunk-N6N74K6X.js} +1 -1
  10. package/dist/{chunk-J2RYSZMQ.js → chunk-VTTA2ALZ.js} +2 -2
  11. package/dist/class/class.slug.d.ts +7 -5
  12. package/dist/class/class.slug.js +1 -1
  13. package/dist/entities/base-item-resolver.d.ts +9 -0
  14. package/dist/entities/base-item-resolver.js +6 -4
  15. package/dist/entities/slug.d.ts +7 -0
  16. package/dist/entities/slug.js +3 -1
  17. package/dist/index.js +3812 -3604
  18. package/dist/item/item.actions-map.d.ts +8 -7
  19. package/dist/item/item.actions-map.js +3 -4
  20. package/dist/pc/pc.decision-engine.d.ts +0 -3
  21. package/dist/pc/pc.decision-engine.js +6 -8
  22. package/dist/pc/pc.equipment.js +5 -12
  23. package/dist/pc/pc.feature-effects.d.ts +5 -0
  24. package/dist/pc/pc.feature-effects.js +2 -11
  25. package/dist/pc/pc.parser.js +1 -1
  26. package/dist/pc/pc.pools.js +6 -6
  27. package/dist/pc/pc.recalc.d.ts +7 -0
  28. package/dist/pc/pc.recalc.js +82 -38
  29. package/dist/pc/pc.resolver.js +6 -6
  30. package/dist/pc/pc.rest.d.ts +1 -1
  31. package/dist/pc/pc.rest.js +20 -11
  32. package/dist/pc/pc.schema.d.ts +2 -0
  33. package/dist/pc/pc.schema.js +1 -1
  34. package/dist/pc/pc.slotting.js +3 -3
  35. package/dist/pc/pc.spellcasting.js +2 -2
  36. package/dist/pc/pc.types.d.ts +28 -0
  37. package/dist/spell/spell.access.js +1 -1
  38. package/dist/weapon/weapon.classify.d.ts +21 -0
  39. package/dist/weapon/weapon.classify.js +7 -0
  40. package/package.json +1 -1
@@ -120,6 +120,8 @@ export interface CharacterOverrides {
120
120
  }>;
121
121
  hp?: {
122
122
  max?: number;
123
+ rolled?: number;
124
+ modifier?: number;
123
125
  };
124
126
  ac?: number;
125
127
  speed?: number;
@@ -339,6 +341,27 @@ export interface ACTerm {
339
341
  amount: number;
340
342
  kind: "armor" | "shield" | "item" | "unarmored" | "override" | "dex" | "ability" | "feature";
341
343
  }
344
+ /** Structured max-HP math for the Max HP modal. Spec: P5 2026-07-21. */
345
+ export interface HPBreakdown {
346
+ diceSum: number;
347
+ diceSource: "rolled" | "average";
348
+ averageDiceSum: number;
349
+ conMod: number;
350
+ conLevels: number;
351
+ clampApplied: boolean;
352
+ perLevelTerms: {
353
+ label: string;
354
+ perLevel: number;
355
+ levels: number;
356
+ total: number;
357
+ }[];
358
+ modifier: number | null;
359
+ exhaustionMultiplier: number;
360
+ exhaustionLevel: number;
361
+ derivedMax: number;
362
+ override: number | null;
363
+ final: number;
364
+ }
342
365
  /** An additive on-hit damage rider (dice or flat) applied to an attack, from a
343
366
  * feature (global — all weapon attacks) or a magic item (that weapon only).
344
367
  * `amount` is a dice/flat string ("2d6", "1d8", "2"); `damage_type` optional
@@ -353,6 +376,10 @@ export interface AttackRow {
353
376
  id: string;
354
377
  name: string;
355
378
  range?: string;
379
+ /** Secondary thrown-mode range ("20/60 ft") for a throwable melee weapon.
380
+ * Display-only; rendered as a stacked muted second line in the Range cell.
381
+ * Absent otherwise. */
382
+ thrownRange?: string;
356
383
  toHit: number;
357
384
  damageDice: string;
358
385
  damageType: string;
@@ -529,6 +556,7 @@ export interface DerivedStats {
529
556
  condition_immunities: string[];
530
557
  };
531
558
  acBreakdown: ACTerm[];
559
+ hpBreakdown: HPBreakdown;
532
560
  acInformational: import("@archivist-gg/dnd5e/item/item.conditions.types").InformationalBonus[];
533
561
  /** Situational saving-throw bonuses (e.g. +1 vs spells) for save tooltips. */
534
562
  savesInformational: import("@archivist-gg/dnd5e/item/item.conditions.types").InformationalBonus[];
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  baseClassName
3
- } from "../chunk-J2RYSZMQ.js";
3
+ } from "../chunk-VTTA2ALZ.js";
4
4
 
5
5
  // src/spell/spell.access.ts
6
6
  function classSpellCandidates(registry, classSlugs, maxLevel, knownSlugs, showAll = false, query = "") {
@@ -0,0 +1,21 @@
1
+ import type { WeaponEntity } from "./weapon.types.js";
2
+ /** The two attack modes a weapon supports, derived from data the SRD pipeline
3
+ * actually preserves. The SRD runtime data miscategorizes throwable MELEE
4
+ * weapons (dagger/spear/handaxe/javelin/light hammer/trident) as `*-ranged`,
5
+ * so the melee/ranged split is reconstructed here instead of trusted:
6
+ * a category-ranged weapon is PURE ranged only when it needs ammunition or
7
+ * loading, or is one of the two genuinely-ranged thrown weapons (dart, net —
8
+ * a closed SRD set; a homebrew weapon whose bare slug is exactly "dart"/"net"
9
+ * is force-classified pure ranged). Everything else category-ranged is a
10
+ * throwable melee weapon. `reach` is 5 ft, +5 with the reach property. */
11
+ export interface WeaponRangeModes {
12
+ melee: {
13
+ reach: number;
14
+ } | null;
15
+ ranged: {
16
+ normal: number;
17
+ long: number;
18
+ thrown: boolean;
19
+ } | null;
20
+ }
21
+ export declare function classifyWeaponRange(weapon: Pick<WeaponEntity, "category" | "properties" | "range" | "slug">): WeaponRangeModes;
@@ -0,0 +1,7 @@
1
+ import {
2
+ classifyWeaponRange
3
+ } from "../chunk-353WXS6S.js";
4
+ import "../chunk-LV4SNWZQ.js";
5
+ export {
6
+ classifyWeaponRange
7
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@archivist-gg/dnd5e",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "publishConfig": {