@provable-games/dm-engine 0.5.1 → 0.6.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 (44) hide show
  1. package/dist/constants/game.d.ts +2 -0
  2. package/dist/constants/game.d.ts.map +1 -1
  3. package/dist/constants/game.js +2 -0
  4. package/dist/constants/game.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/packing.d.ts +51 -3
  10. package/dist/packing.d.ts.map +1 -1
  11. package/dist/packing.js +99 -8
  12. package/dist/packing.js.map +1 -1
  13. package/dist/protocol.d.ts +8 -0
  14. package/dist/protocol.d.ts.map +1 -1
  15. package/dist/protocol.js +9 -1
  16. package/dist/protocol.js.map +1 -1
  17. package/dist/replay.d.ts +22 -9
  18. package/dist/replay.d.ts.map +1 -1
  19. package/dist/replay.js +170 -45
  20. package/dist/replay.js.map +1 -1
  21. package/dist/rules/boosts.d.ts +39 -0
  22. package/dist/rules/boosts.d.ts.map +1 -0
  23. package/dist/rules/boosts.js +105 -0
  24. package/dist/rules/boosts.js.map +1 -0
  25. package/dist/rules/game.d.ts +19 -3
  26. package/dist/rules/game.d.ts.map +1 -1
  27. package/dist/rules/game.js +66 -42
  28. package/dist/rules/game.js.map +1 -1
  29. package/dist/rules/gameSimulation.d.ts +22 -6
  30. package/dist/rules/gameSimulation.d.ts.map +1 -1
  31. package/dist/rules/gameSimulation.js +89 -44
  32. package/dist/rules/gameSimulation.js.map +1 -1
  33. package/dist/rules/loot.d.ts +39 -4
  34. package/dist/rules/loot.d.ts.map +1 -1
  35. package/dist/rules/loot.js +75 -142
  36. package/dist/rules/loot.js.map +1 -1
  37. package/dist/transcript.d.ts +6 -1
  38. package/dist/transcript.d.ts.map +1 -1
  39. package/dist/transcript.js.map +1 -1
  40. package/dist/view.d.ts +7 -2
  41. package/dist/view.d.ts.map +1 -1
  42. package/dist/view.js +10 -4
  43. package/dist/view.js.map +1 -1
  44. package/package.json +1 -1
@@ -3,10 +3,11 @@
3
3
  * Pure functions porting Cairo contract formulas for use in useGameCore.
4
4
  */
5
5
  import { BEAST_NAMES, BEAST_SPECIAL_NAME_LEVEL_UNLOCK } from "../constants/beast.js";
6
- import { MAX_ADVENTURER_HEALTH, MAX_ADVENTURER_XP, MAX_GOLD, MIN_DAMAGE_FROM_OBSTACLES, } from "../constants/game.js";
6
+ import { MAX_ADVENTURER_HEALTH, MAX_ADVENTURER_XP, MAX_GOLD, MAX_STAT_UPGRADES_AVAILABLE, MAX_STAT_VALUE, MIN_DAMAGE_FROM_OBSTACLES, } from "../constants/game.js";
7
7
  import { ItemId, SUFFIX_UNLOCK_GREATNESS } from "../constants/loot.js";
8
8
  import { getBeastName, getBeastTier, getBeastType } from "./beast.js";
9
- import { calculateAttackDamage, calculateBeastDamage, calculateLevel, elementalAdjustedDamage, } from "./game.js";
9
+ import { addToBag, bagIsFull, removeFromBag } from "../packing.js";
10
+ import { calculateAttackDamage, calculateBeastDamage, calculateLevel, elementalAdjustedDamage, jewelryArmorBonus, } from "./game.js";
10
11
  import { getMaxHealth } from "./health.js";
11
12
  import { isPinned, ItemUtils, Tier } from "./loot.js";
12
13
  import { generateStartingStatsFromSeed } from "./processFutures.js";
@@ -274,7 +275,7 @@ export const generateObstacle = (adventurerLevel, rolls) => {
274
275
  return { id, level, tier, type };
275
276
  };
276
277
  // ─── Obstacle damage ─────────────────────────────────────────────
277
- export const calculateObstacleDamage = (obstacle, armor, adventurerLevel, baseDamageReduction, rolls) => {
278
+ export const calculateObstacleDamage = (obstacle, armor, adventurerLevel, baseDamageReduction, rolls, neck = { id: 0, xp: 0 }) => {
278
279
  const slot = getAttackLocation(rolls?.attackLocationRnd);
279
280
  const attackPower = obstacle.level * getTierMultiplier(obstacle.tier);
280
281
  const armorType = getArmorType(armor.id);
@@ -289,6 +290,13 @@ export const calculateObstacleDamage = (obstacle, armor, adventurerLevel, baseDa
289
290
  adjustedAttack *= 2;
290
291
  }
291
292
  let damage = Math.max(MIN_DAMAGE_FROM_OBSTACLES, adjustedAttack - armorPower);
293
+ // A matching necklace reduces obstacle damage exactly as it reduces a beast's:
294
+ // `get_obstacle_damage` applies `jewelry_armor_bonus` and re-floors, and this used to be
295
+ // missing here entirely even though the beast path had it.
296
+ const neckReduction = jewelryArmorBonus(armor, neck);
297
+ if (neckReduction > 0) {
298
+ damage = Math.max(MIN_DAMAGE_FROM_OBSTACLES, damage - neckReduction);
299
+ }
292
300
  // The clamp above is Cairo's: `get_obstacle_damage` passes MINIMUM_DAMAGE_FROM_OBSTACLES into
293
301
  // `calculate_damage`. `_obstacle_encounter` then reduces what came back and does NOT re-apply
294
302
  // it, so neither does this — same seam as the ambush path above.
@@ -347,9 +355,13 @@ export const increaseXp = (adventurer, amount) => {
347
355
  adventurer.xp = Math.min(MAX_ADVENTURER_XP, adventurer.xp + amount);
348
356
  const newLevel = calculateLevel(adventurer.xp);
349
357
  if (newLevel > previousLevel) {
350
- adventurer.stat_upgrades_available += newLevel - previousLevel;
358
+ grantStatUpgrades(adventurer, newLevel - previousLevel);
351
359
  }
352
360
  };
361
+ /** `ImplAdventurer::increase_stat_upgrades_available` -- saturates at 15, the field's width. */
362
+ export const grantStatUpgrades = (adventurer, amount) => {
363
+ adventurer.stat_upgrades_available = Math.min(MAX_STAT_UPGRADES_AVAILABLE, adventurer.stat_upgrades_available + amount);
364
+ };
353
365
  export const canExplore = (adventurer) => {
354
366
  return (adventurer.health > 0 &&
355
367
  adventurer.beast_health === 0 &&
@@ -384,7 +396,9 @@ export const getLootDiscoveryGoldConversion = (adventurer, bag, itemId) => {
384
396
  const slot = ItemUtils.getItemSlot(itemId);
385
397
  const slotKey = slot.toLowerCase();
386
398
  const slotFree = equipment[slotKey]?.id === 0;
387
- const bagFull = bag.length >= 15;
399
+ // `ImplBag::is_full` counts OCCUPIED slots. `bag.length` is 15 for every bag now that holes are
400
+ // carried, so reading the length here would convert every discovery to gold.
401
+ const bagFull = bagIsFull(bag);
388
402
  let reason;
389
403
  if (equipped || inBag) {
390
404
  reason = "owned";
@@ -429,8 +443,8 @@ export const processLootDiscovery = (adventurer, bag, itemId) => {
429
443
  equipment[slotKey].xp = newItem.xp;
430
444
  }
431
445
  else {
432
- // Add to bag
433
- bag.push(newItem);
446
+ // The first EMPTY slot, which after a drop is not the end of the bag.
447
+ addToBag(bag, newItem);
434
448
  }
435
449
  return null;
436
450
  };
@@ -456,14 +470,14 @@ export const isCriticalHit = (luck, criticalHitRnd) => {
456
470
  * Delegates to calculateAttackDamage from game.ts which includes weapon specials,
457
471
  * ring name-match bonus, and ring critical hit bonus.
458
472
  */
459
- export const calculateAdventurerAttackDamage = (adventurer, beast, specialsOverride = 0n) => {
460
- const { baseDamage, criticalDamage } = calculateAttackDamage(adventurer.equipment.weapon, adventurer, beast, specialsOverride);
473
+ export const calculateAdventurerAttackDamage = (adventurer, beast, adventurerId, specialsOverride = 0n) => {
474
+ const { baseDamage, criticalDamage } = calculateAttackDamage(adventurer.equipment.weapon, adventurer, beast, adventurerId, specialsOverride);
461
475
  return { normal: baseDamage, crit: criticalDamage };
462
476
  };
463
- export const calculateBeastCounterAttack = (beast, adventurer, baseDamageReduction, isAmbush = false, rolls, specialsOverride = 0n) => {
477
+ export const calculateBeastCounterAttack = (beast, adventurer, baseDamageReduction, isAmbush = false, rolls, adventurerId, specialsOverride = 0n) => {
464
478
  const slot = getAttackLocation(rolls?.attackLocationRnd);
465
479
  const armor = getArmorAtSlot(adventurer, slot);
466
- const beastDmg = calculateBeastDamage(beast, adventurer, armor, specialsOverride);
480
+ const beastDmg = calculateBeastDamage(beast, adventurer, armor, adventurerId, specialsOverride);
467
481
  // Level-based crit check for beasts
468
482
  const adventurerLevel = calculateLevel(adventurer.xp);
469
483
  const critChance = Math.min(adventurerLevel, 100);
@@ -487,14 +501,19 @@ export const calculateBeastCounterAttack = (beast, adventurer, baseDamageReducti
487
501
  * 12 random point allocations across 6 stats.
488
502
  */
489
503
  // ─── Inventory: equip / drop ─────────────────────────────────────
490
- /** Get suffix name for an item if its greatness unlocks specials. */
491
- const getItemSuffix = (item, salt, specialsOverride) => {
504
+ /**
505
+ * The suffix an item is currently granting, or null below greatness 15.
506
+ *
507
+ * Takes the DERIVED `getItemSpecialsSeed(salt, adventurer_id)`, never the raw salt -- the two
508
+ * name different specials for every one of the 101 items.
509
+ */
510
+ const getItemSuffix = (item, itemSpecialsSeed, specialsOverride) => {
492
511
  if (item.id === 0)
493
512
  return null;
494
513
  const greatness = getItemGreatness(item);
495
514
  if (greatness < SUFFIX_UNLOCK_GREATNESS)
496
515
  return null;
497
- const specials = ItemUtils.getSpecials(item.id, greatness, salt, specialsOverride);
516
+ const specials = ItemUtils.getSpecials(item.id, greatness, itemSpecialsSeed, specialsOverride);
498
517
  return specials.special1;
499
518
  };
500
519
  /** Apply suffix boost to stats (matches contract apply_suffix_boost). */
@@ -676,7 +695,7 @@ export const grantXpToEquippedItems = (adventurer, xpAmount, adventurerId, itemS
676
695
  if (newLevel <= previousLevel || itemSpecialsRnd === undefined)
677
696
  continue;
678
697
  if (newLevel === ITEM_MAX_GREATNESS) {
679
- adventurer.stat_upgrades_available += MAX_GREATNESS_STAT_BONUS;
698
+ grantStatUpgrades(adventurer, MAX_GREATNESS_STAT_BONUS);
680
699
  }
681
700
  const { suffixUnlocked, prefixesUnlocked } = unlockedSpecials(previousLevel, newLevel);
682
701
  if (!suffixUnlocked && !prefixesUnlocked)
@@ -751,17 +770,11 @@ const removeBagBoost = (stats, suffix) => {
751
770
  * Equip a single item from bag into the correct equipment slot.
752
771
  * If the slot is occupied, the displaced item moves to the bag.
753
772
  */
754
- export const equipItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
755
- const salt = adventurer.item_specials_salt;
756
- // Find and remove item from bag (preserve XP)
757
- const bagIndex = bag.findIndex((i) => i.id === itemId);
758
- let item;
759
- if (bagIndex >= 0) {
760
- item = bag.splice(bagIndex, 1)[0];
761
- }
762
- else {
763
- item = { id: itemId, xp: 0 };
764
- }
773
+ export const equipItem = (adventurer, bag, itemId, adventurerId, specialsOverride = 0n) => {
774
+ const seed = ItemUtils.getItemSpecialsSeed(adventurer.item_specials_salt, adventurerId);
775
+ // Find and remove item from bag (preserve XP). The slot it leaves stays empty, and the
776
+ // displaced item below fills the first hole -- which is that one, exactly as `equip_item` does.
777
+ const item = removeFromBag(bag, itemId) ?? { id: itemId, xp: 0 };
765
778
  // Determine target slot
766
779
  const slotName = ItemUtils.getItemSlot(itemId);
767
780
  const slotKey = slotName.toLowerCase();
@@ -769,17 +782,17 @@ export const equipItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
769
782
  // Displace current item to bag if it exists
770
783
  if (current && current.id !== 0) {
771
784
  // Remove suffix boost for displaced item (contract: remove_suffix_boost)
772
- const displacedSuffix = getItemSuffix(current, salt, specialsOverride);
785
+ const displacedSuffix = getItemSuffix(current, seed, specialsOverride);
773
786
  if (displacedSuffix) {
774
787
  removeSuffixBoost(adventurer.stats, displacedSuffix);
775
788
  }
776
- bag.push({ ...current });
789
+ addToBag(bag, current);
777
790
  }
778
791
  // Equip new item
779
792
  adventurer.equipment[slotKey].id = item.id;
780
793
  adventurer.equipment[slotKey].xp = item.xp;
781
794
  // Apply suffix boost for newly equipped item (contract: apply_suffix_boost)
782
- const newSuffix = getItemSuffix(item, salt, specialsOverride);
795
+ const newSuffix = getItemSuffix(item, seed, specialsOverride);
783
796
  if (newSuffix) {
784
797
  applySuffixBoost(adventurer.stats, newSuffix);
785
798
  }
@@ -787,8 +800,13 @@ export const equipItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
787
800
  /**
788
801
  * Drop a single item from equipment or bag.
789
802
  */
790
- export const dropItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
791
- const salt = adventurer.item_specials_salt;
803
+ /**
804
+ * `Inventory::_drop` for one item. Returns false when the adventurer does not own it, which the
805
+ * contract answers with a `'Item not owned by adventurer'` panic -- so a caller replaying a
806
+ * transcript has to treat false as a refused action, not a no-op.
807
+ */
808
+ export const dropItem = (adventurer, bag, itemId, adventurerId, specialsOverride = 0n) => {
809
+ const seed = ItemUtils.getItemSpecialsSeed(adventurer.item_specials_salt, adventurerId);
792
810
  // Check equipment first
793
811
  for (const slotKey of [
794
812
  "weapon",
@@ -802,10 +820,12 @@ export const dropItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
802
820
  ]) {
803
821
  const item = adventurer.equipment[slotKey];
804
822
  if (item.id === itemId) {
805
- // Remove suffix boost for equipped item (contract: remove_suffix_boost)
806
- const suffix = getItemSuffix(item, salt, specialsOverride);
823
+ // An equipped item was granting BOTH halves of its suffix, so both come off. The bag half
824
+ // used to be missing here, which left vitality and charisma permanently inflated.
825
+ const suffix = getItemSuffix(item, seed, specialsOverride);
807
826
  if (suffix) {
808
827
  removeSuffixBoost(adventurer.stats, suffix);
828
+ removeBagBoost(adventurer.stats, suffix);
809
829
  }
810
830
  item.id = 0;
811
831
  item.xp = 0;
@@ -813,26 +833,51 @@ export const dropItem = (adventurer, bag, itemId, specialsOverride = 0n) => {
813
833
  const maxHp = getMaxHealth(adventurer.stats.vitality);
814
834
  if (adventurer.health > maxHp)
815
835
  adventurer.health = maxHp;
816
- return;
836
+ return true;
817
837
  }
818
838
  }
819
839
  // Check bag
820
- const bagIndex = bag.findIndex((i) => i.id === itemId);
821
- if (bagIndex >= 0) {
822
- const bagItem = bag[bagIndex];
823
- // Remove bag boost for bag item (contract: remove_bag_boost)
824
- const suffix = getItemSuffix(bagItem, salt, specialsOverride);
825
- if (suffix) {
826
- removeBagBoost(adventurer.stats, suffix);
827
- }
828
- bag.splice(bagIndex, 1);
829
- }
840
+ const bagItem = bag.find((i) => i.id === itemId && i.id !== 0);
841
+ if (!bagItem)
842
+ return false;
843
+ // Remove bag boost for bag item (contract: remove_bag_boost)
844
+ const suffix = getItemSuffix(bagItem, seed, specialsOverride);
845
+ if (suffix) {
846
+ removeBagBoost(adventurer.stats, suffix);
847
+ }
848
+ removeFromBag(bag, itemId);
830
849
  // Clamp health
831
850
  const maxHp = getMaxHealth(adventurer.stats.vitality);
832
851
  if (adventurer.health > maxHp)
833
852
  adventurer.health = maxHp;
853
+ return true;
834
854
  };
835
855
  // ─── Combat: Starting stats ─────────────────────────────────────
856
+ /**
857
+ * `ImplStats::apply_random_stats` -- deal `count` points onto stats that are ALREADY there.
858
+ *
859
+ * Point by point, each one saturating at `MAX_STAT_VALUE`. Dealing them into a fresh delta and
860
+ * adding it afterwards is not the same thing: the contract clamps against the running total, so a
861
+ * stat that is already at 31 -- which an overridden start or a boosted one can be -- swallows the
862
+ * point instead of overflowing the 5-bit field.
863
+ */
864
+ export const applyRandomStats = (stats, seed, count) => {
865
+ const order = [
866
+ "strength",
867
+ "dexterity",
868
+ "vitality",
869
+ "intelligence",
870
+ "wisdom",
871
+ "charisma",
872
+ ];
873
+ let entropy = seed & ((1n << 64n) - 1n);
874
+ for (let i = 0; i < count; i += 1) {
875
+ const key = order[Number(entropy % 6n)];
876
+ if (stats[key] < MAX_STAT_VALUE)
877
+ stats[key] += 1;
878
+ entropy /= 6n;
879
+ }
880
+ };
836
881
  export const generateStartingStats = (levelSeed, count = 12) => {
837
882
  // Seeded, this is `ImplStats::apply_random_stats`: the same points, dealt by repeated
838
883
  // `divmod 6` over the seed instead of by that many independent random draws.
@@ -1 +1 @@
1
- {"version":3,"file":"gameSimulation.js","sourceRoot":"","sources":["../../src/rules/gameSimulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gameSimulation.js","sourceRoot":"","sources":["../../src/rules/gameSimulation.ts"],"names":[],"mappings":"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"}
@@ -117,6 +117,14 @@ export declare const ItemUtils: {
117
117
  getItemBasePrice: (tier: Tier) => number;
118
118
  getCharismaAdjustedItemPrice: (basePrice: number, charisma: number) => number;
119
119
  getItemPrice: (tier: Tier, charisma: number) => number;
120
+ /**
121
+ * `ImplAdventurer::get_item_specials_seed` -- `poseidon([salt, adventurer_id]) % 2^16`.
122
+ *
123
+ * Memoised because it sits under `getSpecials`, which the damage helpers call once per armour
124
+ * slot per sample: a Monte Carlo combat estimate hashes tens of thousands of times otherwise,
125
+ * for one answer that is fixed for the whole run. The salt is write-once and the id is a
126
+ * constant, so the pair is a safe cache key; a run only ever contributes one entry.
127
+ */
120
128
  getItemSpecialsSeed: (salt: number, adventurerId: string | bigint) => number;
121
129
  getSpecialsSeed: (itemId: number, entropy: number) => number;
122
130
  /**
@@ -148,12 +156,39 @@ export declare const ItemUtils: {
148
156
  imageUrl: string;
149
157
  };
150
158
  getTierColor: (tier: Tier) => string;
151
- isNameMatch: (itemId: number, itemLevel: number, itemSeed: number, beast: Beast, specialsOverride?: bigint) => boolean;
159
+ /**
160
+ * `itemSpecialsSeed` is `getItemSpecialsSeed(item_specials_salt, adventurer_id)`, NOT the raw
161
+ * salt -- the two name different specials, so a caller that passes the salt reports the wrong
162
+ * matches.
163
+ */
164
+ isNameMatch: (itemId: number, itemLevel: number, itemSpecialsSeed: number, beast: Beast, specialsOverride?: bigint) => boolean;
152
165
  getStatBonus: (special1: string) => "+3 STR" | "+3 VIT" | "+2 STR +1 CHA" | "+3 DEX" | "+1 STR +1 DEX +1 VIT" | "+3 INT" | "+3 WIS" | "+2 VIT +1 DEX" | "+2 STR +1 DEX" | "+1 STR +1 CHA +1 WIS" | "+1 VIT +1 CHA +1 INT" | "+2 INT +1 WIS" | "+2 DEX +1 CHA" | "+2 WIS +1 DEX" | "+1 INT +2 WIS" | "+3 CHA" | undefined;
153
- removeItemBoosts: (item: Item, item_specials_salt: number, stats: Stats, specialsOverride?: bigint) => Stats;
154
- addItemBoosts: (item: Item, item_specials_salt: number, stats: Stats, specialsOverride?: bigint) => Stats;
166
+ /**
167
+ * The stat delta one item grants: `apply_suffix_boost` + `apply_bag_boost`
168
+ * (`stats.cairo:139` and `:215`), which is exactly what `fullItemBoost` already computes.
169
+ *
170
+ * There used to be two tables here. This one -- applied by the client store on an optimistic
171
+ * equip -- omitted every vitality and charisma component and carried a bespoke silver-ring
172
+ * `luck` term the contract does not have, while `fullItemBoost` below, which every stat read
173
+ * went through, had the vit/cha and no luck. A store that equipped `of Giant` could therefore
174
+ * never agree with the comparison that read it. One table now, and `luck` is not in it: it is
175
+ * derived from the whole loadout by `calculateLuck`, never accumulated per item.
176
+ */
177
+ addItemBoosts: (item: Item, itemSpecialsSeed: number, stats: Stats, specialsOverride?: bigint) => Stats;
178
+ /** `remove_suffix_boost` + `remove_bag_boost` -- the exact inverse of `addItemBoosts`. */
179
+ removeItemBoosts: (item: Item, itemSpecialsSeed: number, stats: Stats, specialsOverride?: bigint) => Stats;
155
180
  fullItemBoost: (item: Item, item_specials_salt: number, stats: Stats, specialsOverride?: bigint) => Stats;
156
- getEquippedItemStats: (adventurer: Adventurer, bag: Item[], specialsOverride?: bigint) => Stats;
181
+ /**
182
+ * `Equipment::get_stat_boosts` + `Bag::get_stat_boosts` -- the stat half of `add_stat_boosts`.
183
+ *
184
+ * Equipment grants the whole suffix (`apply_suffix_boost` AND `apply_bag_boost`); a bagged item
185
+ * grants only the bag half, which is vitality and charisma. `luck` is NOT here -- it is derived
186
+ * from jewellery by `calculateLuck` in `rules/boosts.ts` and assigned, not summed.
187
+ *
188
+ * `adventurerId` is required because the seed every specials lookup takes is
189
+ * `poseidon([item_specials_salt, adventurer_id]) % 2^16`, not the salt itself.
190
+ */
191
+ getEquippedItemStats: (adventurer: Adventurer, bag: readonly Item[], adventurerId: string | bigint, specialsOverride?: bigint) => Stats;
157
192
  getJewelryEffect: (id: number) => string;
158
193
  getCurrentJewelryEffect: (id: number, level: number) => string;
159
194
  };
@@ -1 +1 @@
1
- {"version":3,"file":"loot.d.ts","sourceRoot":"","sources":["../../src/rules/loot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loot.d.ts","sourceRoot":"","sources":["../../src/rules/loot.ts"],"names":[],"mappings":"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"}