@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.
- package/dist/constants/game.d.ts +2 -0
- package/dist/constants/game.d.ts.map +1 -1
- package/dist/constants/game.js +2 -0
- package/dist/constants/game.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/packing.d.ts +51 -3
- package/dist/packing.d.ts.map +1 -1
- package/dist/packing.js +99 -8
- package/dist/packing.js.map +1 -1
- package/dist/protocol.d.ts +8 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +9 -1
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +22 -9
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +170 -45
- package/dist/replay.js.map +1 -1
- package/dist/rules/boosts.d.ts +39 -0
- package/dist/rules/boosts.d.ts.map +1 -0
- package/dist/rules/boosts.js +105 -0
- package/dist/rules/boosts.js.map +1 -0
- package/dist/rules/game.d.ts +19 -3
- package/dist/rules/game.d.ts.map +1 -1
- package/dist/rules/game.js +66 -42
- package/dist/rules/game.js.map +1 -1
- package/dist/rules/gameSimulation.d.ts +22 -6
- package/dist/rules/gameSimulation.d.ts.map +1 -1
- package/dist/rules/gameSimulation.js +89 -44
- package/dist/rules/gameSimulation.js.map +1 -1
- package/dist/rules/loot.d.ts +39 -4
- package/dist/rules/loot.d.ts.map +1 -1
- package/dist/rules/loot.js +75 -142
- package/dist/rules/loot.js.map +1 -1
- package/dist/transcript.d.ts +6 -1
- package/dist/transcript.d.ts.map +1 -1
- package/dist/transcript.js.map +1 -1
- package/dist/view.d.ts +7 -2
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +10 -4
- package/dist/view.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { ItemId } from "../constants/loot.js";
|
|
2
|
+
import { ItemUtils } from "./loot.js";
|
|
3
|
+
/**
|
|
4
|
+
* `ImplAdventurer::add_stat_boosts` / `remove_stat_boosts` -- the bracket every action runs inside.
|
|
5
|
+
*
|
|
6
|
+
* `Replay::step` (replay.cairo:468/545) wraps EVERY dispatch in it, and `Replay::start`
|
|
7
|
+
* (replay.cairo:602/638) wraps START the same way. So on chain there are two conventions and both
|
|
8
|
+
* matter:
|
|
9
|
+
*
|
|
10
|
+
* - STORAGE holds unboosted stats. That is what `pack` writes, what `GameSettled` publishes and
|
|
11
|
+
* what `ChainCheck.packed_adventurer` reports.
|
|
12
|
+
* - The RULES always see boosted stats: equipment suffix boosts, bag boosts, and a `luck`
|
|
13
|
+
* derived from jewellery.
|
|
14
|
+
*
|
|
15
|
+
* The distinction is load-bearing rather than cosmetic. `equip_item` and `process_item_level_up`
|
|
16
|
+
* adjust `stats` mid-action, and those adjustments are net-zero against storage only because
|
|
17
|
+
* `remove_stat_boosts` recomputes from the POST-action equipment and bag. Run the same handlers
|
|
18
|
+
* without the bracket and every greatness-15 unlock leaves a permanent offset behind.
|
|
19
|
+
*/
|
|
20
|
+
/** `ImplItem::get_greatness` -- 1 at zero xp, `sqrt(xp)` after, capped at 20. */
|
|
21
|
+
function itemGreatness(item) {
|
|
22
|
+
if (!item || item.xp === 0)
|
|
23
|
+
return 1;
|
|
24
|
+
return Math.min(20, Math.floor(Math.sqrt(item.xp)));
|
|
25
|
+
}
|
|
26
|
+
/** `ImplAdventurer::jewelry_bonus_luck` -- the silver ring, and nothing else. */
|
|
27
|
+
export function jewelryBonusLuck(ring) {
|
|
28
|
+
return ring?.id === ItemId.SilverRing ? itemGreatness(ring) : 0;
|
|
29
|
+
}
|
|
30
|
+
/** `ImplBag::get_jewelry_greatness` -- every necklace and ring sitting in the bag. */
|
|
31
|
+
function bagJewelryGreatness(bag) {
|
|
32
|
+
let total = 0;
|
|
33
|
+
for (const item of bag) {
|
|
34
|
+
if (item.id === 0)
|
|
35
|
+
continue;
|
|
36
|
+
const slot = ItemUtils.getItemSlot(item.id);
|
|
37
|
+
if (slot === "Neck" || slot === "Ring")
|
|
38
|
+
total += itemGreatness(item);
|
|
39
|
+
}
|
|
40
|
+
return total;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* `Equipment::calculate_luck` -- the adventurer's crit chance, derived from jewellery.
|
|
44
|
+
*
|
|
45
|
+
* Never stored and never accumulated: `add_stat_boosts` ASSIGNS it on every action, and the packed
|
|
46
|
+
* codec drops it. An empty slot still has greatness 1, so a started adventurer always carries at
|
|
47
|
+
* least 2 -- roughly a 2.3% crit chance per attack round, which is why treating luck as zero off
|
|
48
|
+
* chain diverges from the very first fight.
|
|
49
|
+
*/
|
|
50
|
+
export function calculateLuck(equipment, bag) {
|
|
51
|
+
return (itemGreatness(equipment.neck) +
|
|
52
|
+
itemGreatness(equipment.ring) +
|
|
53
|
+
jewelryBonusLuck(equipment.ring) +
|
|
54
|
+
bagJewelryGreatness(bag));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `ImplAdventurer::get_item_specials_seed(salt, adventurer_id)`.
|
|
58
|
+
*
|
|
59
|
+
* NOT the raw `item_specials_salt`. The salt is 14 bits of packed state; the seed every specials
|
|
60
|
+
* lookup actually takes is `poseidon([salt, adventurer_id]) % 2^16`, so the same salt names
|
|
61
|
+
* different specials for different adventurers. Passing the salt where the seed belongs resolves
|
|
62
|
+
* every one of the 101 items to a different suffix.
|
|
63
|
+
*/
|
|
64
|
+
export function itemSpecialsSeed(adventurer, adventurerId) {
|
|
65
|
+
return ItemUtils.getItemSpecialsSeed(adventurer.item_specials_salt, adventurerId);
|
|
66
|
+
}
|
|
67
|
+
/** The suffix + bag boosts an adventurer's loadout is currently granting. */
|
|
68
|
+
export function loadoutBoosts(adventurer, bag, adventurerId, specialsOverride = 0n) {
|
|
69
|
+
return ItemUtils.getEquippedItemStats(adventurer, bag, adventurerId, specialsOverride);
|
|
70
|
+
}
|
|
71
|
+
const STAT_KEYS = [
|
|
72
|
+
"strength",
|
|
73
|
+
"dexterity",
|
|
74
|
+
"vitality",
|
|
75
|
+
"intelligence",
|
|
76
|
+
"wisdom",
|
|
77
|
+
"charisma",
|
|
78
|
+
];
|
|
79
|
+
/**
|
|
80
|
+
* `add_stat_boosts` -- mutates in place, exactly as the Cairo does.
|
|
81
|
+
*
|
|
82
|
+
* `luck` is ASSIGNED rather than added, which is why `remove_stat_boosts` has no matching
|
|
83
|
+
* subtraction for it.
|
|
84
|
+
*/
|
|
85
|
+
export function addStatBoosts(adventurer, bag, adventurerId, specialsOverride = 0n) {
|
|
86
|
+
const boosts = loadoutBoosts(adventurer, bag, adventurerId, specialsOverride);
|
|
87
|
+
for (const key of STAT_KEYS)
|
|
88
|
+
adventurer.stats[key] += boosts[key];
|
|
89
|
+
adventurer.stats.luck = calculateLuck(adventurer.equipment, bag);
|
|
90
|
+
return adventurer;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* `remove_stat_boosts` -- mutates in place.
|
|
94
|
+
*
|
|
95
|
+
* Computed against the state it is handed, which after an action is the POST-action equipment and
|
|
96
|
+
* bag. That is what makes an equip's mid-action `apply_suffix_boost` net out to nothing.
|
|
97
|
+
* `luck` is deliberately left alone: the codec drops it, so the chain never has to unwind it.
|
|
98
|
+
*/
|
|
99
|
+
export function removeStatBoosts(adventurer, bag, adventurerId, specialsOverride = 0n) {
|
|
100
|
+
const boosts = loadoutBoosts(adventurer, bag, adventurerId, specialsOverride);
|
|
101
|
+
for (const key of STAT_KEYS)
|
|
102
|
+
adventurer.stats[key] -= boosts[key];
|
|
103
|
+
return adventurer;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=boosts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boosts.js","sourceRoot":"","sources":["../../src/rules/boosts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AAEH,iFAAiF;AACjF,SAAS,aAAa,CAAC,IAAU;IAC/B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,OAAO,IAAI,EAAE,EAAE,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,sFAAsF;AACtF,SAAS,mBAAmB,CAAC,GAAoB;IAC/C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,SAAS;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM;YAAE,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,SAAoB,EAAE,GAAoB;IACtE,OAAO,CACL,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7B,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC;QAC7B,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC;QAChC,mBAAmB,CAAC,GAAG,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAsB,EAAE,YAA6B;IACpF,OAAO,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACpF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAC3B,UAAsB,EACtB,GAAoB,EACpB,YAA6B,EAC7B,mBAA2B,EAAE;IAE7B,OAAO,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,UAAU;IACV,WAAW;IACX,UAAU;IACV,cAAc;IACd,QAAQ;IACR,UAAU;CACF,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAsB,EACtB,GAAoB,EACpB,YAA6B,EAC7B,mBAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EACtB,GAAoB,EACpB,YAA6B,EAC7B,mBAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/dist/rules/game.d.ts
CHANGED
|
@@ -17,19 +17,35 @@ export declare const calculateNextLevelXP: (currentLevel: number, item?: boolean
|
|
|
17
17
|
export declare const calculateProgress: (xp: number, item?: boolean) => number;
|
|
18
18
|
export declare const getNewItemsEquipped: (newEquipment: Equipment, oldEquipment: Equipment) => Item[];
|
|
19
19
|
export declare const incrementBeastsCollected: (gameId: string) => void;
|
|
20
|
-
|
|
20
|
+
/**
|
|
21
|
+
* `ImplAdventurer::precompute_attack_damage` -- both outcomes of one swing.
|
|
22
|
+
*
|
|
23
|
+
* The ORDER is the thing to preserve. The contract totals elemental + strength + weapon specials,
|
|
24
|
+
* floors that against the beast's armour at `MINIMUM_DAMAGE_TO_BEASTS`, and adds the ring bonuses
|
|
25
|
+
* to the floored result. Folding the rings in before the floor -- which this used to do -- agrees
|
|
26
|
+
* everywhere the floor does not bind and silently differs everywhere it does.
|
|
27
|
+
*/
|
|
28
|
+
export declare const calculateAttackDamage: (weapon: Item, adventurer: Adventurer, beast: Beast | null, adventurerId: string | bigint, specialsOverride?: bigint) => {
|
|
21
29
|
baseDamage: number;
|
|
22
30
|
criticalDamage: number;
|
|
23
31
|
};
|
|
24
32
|
export declare const ability_based_percentage: (adventurer_xp: number, relevant_stat: number) => number;
|
|
25
33
|
export declare const ability_based_avoid_threat: (adventurer_level: number, relevant_stat: number, rnd: number) => boolean;
|
|
26
34
|
export declare const ability_based_damage_reduction: (adventurer_xp: number, relevant_stat: number) => number;
|
|
27
|
-
|
|
35
|
+
/**
|
|
36
|
+
* `Item::jewelry_armor_bonus` -- the armour a matching necklace adds, as a flat damage reduction.
|
|
37
|
+
*
|
|
38
|
+
* `base_armor * (neck.greatness * 3) / 100`, and zero unless the necklace matches the struck
|
|
39
|
+
* armour's material. Shared by the beast path here and the obstacle path in `gameSimulation.ts`,
|
|
40
|
+
* because `defend` and `get_obstacle_damage` apply the identical term.
|
|
41
|
+
*/
|
|
42
|
+
export declare const jewelryArmorBonus: (armor: Item, neck: Item) => number;
|
|
43
|
+
export declare const calculateBeastDamage: (beast: Beast, adventurer: Adventurer, armor: Item, adventurerId: string | bigint, specialsOverride?: bigint) => {
|
|
28
44
|
baseDamage: number;
|
|
29
45
|
criticalDamage: number;
|
|
30
46
|
};
|
|
31
47
|
export declare function elementalAdjustedDamage(base_attack: number, weapon_type: string, armor_type: string): number;
|
|
32
48
|
export declare function strength_dmg(damage: number, strength: number): number;
|
|
33
|
-
export declare const calculateCombatStats: (adventurer: Adventurer, bagItems: Item[], beast: Beast | null) => CombatStats;
|
|
49
|
+
export declare const calculateCombatStats: (adventurer: Adventurer, bagItems: readonly Item[], beast: Beast | null, adventurerId: string | bigint, specialsOverride?: bigint) => CombatStats;
|
|
34
50
|
export declare const calculateGoldReward: (beast: Beast, ring: Item | null) => number;
|
|
35
51
|
//# sourceMappingURL=game.d.ts.map
|
package/dist/rules/game.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/rules/game.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK9E,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,GAAG,MAAM,GAAG,SAAS,WAKpE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,WAGxC,CAAC;AAiDF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,MAAM,EAAE,OAAO,MAAM,KAAG,MAKjF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAAM,GAAG,IAaX,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAAM,GAAG,IAKX,CAAC;AAmDF,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,MASF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,OAAM,OAAe,WAM/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,OAAM,OAAe,WAKlE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,cAAc,SAAS,EAAE,cAAc,SAAS,WAgBnF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,SAGtD,CAAC;
|
|
1
|
+
{"version":3,"file":"game.d.ts","sourceRoot":"","sources":["../../src/rules/game.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK9E,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,GAAG,MAAM,GAAG,SAAS,WAKpE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,WAGxC,CAAC;AAiDF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,MAAM,EAAE,OAAO,MAAM,KAAG,MAKjF,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAAM,GAAG,IAaX,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,WAAW,MAAM,EACjB,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAAM,GAAG,IAKX,CAAC;AAmDF,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,OAAO,MAAM,EACb,QAAQ,MAAM,KACb,MASF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,OAAM,OAAe,WAM/E,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,OAAM,OAAe,WAKlE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,cAAc,SAAS,EAAE,cAAc,SAAS,WAgBnF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,SAGtD,CAAC;AAmDF;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,IAAI,EACZ,YAAY,UAAU,EACtB,OAAO,KAAK,GAAG,IAAI,EACnB,cAAc,MAAM,GAAG,MAAM,EAC7B,mBAAkB,MAAW;;;CA6D9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,eAAe,MAAM,EAAE,eAAe,MAAM,WAQpF,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,kBAAkB,MAAM,EACxB,eAAe,MAAM,EACrB,KAAK,MAAM,YAQZ,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,eAAe,MAAM,EAAE,eAAe,MAAM,WAc1F,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,IAAI,EAAE,MAAM,IAAI,KAAG,MAI3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,KAAK,EACZ,YAAY,UAAU,EACtB,OAAO,IAAI,EACX,cAAc,MAAM,GAAG,MAAM,EAC7B,mBAAkB,MAAW;;;CAgD9B,CAAC;AAyBF,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,MAAM,CAoBR;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGrE;AAGD,eAAO,MAAM,oBAAoB,GAC/B,YAAY,UAAU,EACtB,UAAU,SAAS,IAAI,EAAE,EACzB,OAAO,KAAK,GAAG,IAAI,EACnB,cAAc,MAAM,GAAG,MAAM,EAC7B,mBAAkB,MAAW,KAC5B,WAsHF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,WAUlE,CAAC"}
|
package/dist/rules/game.js
CHANGED
|
@@ -183,19 +183,25 @@ export const incrementBeastsCollected = (gameId) => {
|
|
|
183
183
|
const currentCount = parseInt(localStorage.getItem(`beast_collected_${gameId}`) || "0");
|
|
184
184
|
localStorage.setItem(`beast_collected_${gameId}`, (currentCount + 1).toString());
|
|
185
185
|
};
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
186
|
+
/**
|
|
187
|
+
* `Item::name_match_bonus_damage` / `critical_hit_bonus_damage` -- both are
|
|
188
|
+
* `base * 3 * greatness / 100` for one named ring and zero for anything else.
|
|
189
|
+
*
|
|
190
|
+
* These land OUTSIDE the minimum-damage floor on chain (`precompute_attack_damage`), which is why
|
|
191
|
+
* they are their own function rather than being folded into the terms below.
|
|
192
|
+
*/
|
|
193
|
+
const ringBonusDamage = (ring, baseDamage, ringName) => {
|
|
194
|
+
if (!ring || ItemUtils.getItemName(ring.id) !== ringName || baseDamage <= 0)
|
|
195
|
+
return 0;
|
|
196
|
+
return Math.floor((baseDamage * 3 * calculateLevel(ring.xp)) / 100);
|
|
196
197
|
};
|
|
197
|
-
|
|
198
|
-
|
|
198
|
+
/**
|
|
199
|
+
* `ImplCombat::weapon_special_bonus` -- 8x on a prefix match, 2x on a suffix match.
|
|
200
|
+
*
|
|
201
|
+
* Deliberately excludes the Platinum Ring's cut: the contract computes this bonus, floors the
|
|
202
|
+
* whole attack against the beast's armour, and only then adds `name_match_bonus_damage`.
|
|
203
|
+
*/
|
|
204
|
+
const calculateWeaponSpecialBonus = (weaponId, weaponLevel, itemSpecialsSeed, beastPrefix, beastSuffix, baseDamage, specialsOverride) => {
|
|
199
205
|
if (!beastPrefix && !beastSuffix)
|
|
200
206
|
return 0;
|
|
201
207
|
const weaponSpecials = ItemUtils.getSpecials(weaponId, weaponLevel, itemSpecialsSeed, specialsOverride);
|
|
@@ -208,14 +214,17 @@ const calculateWeaponSpecialBonus = (weaponId, weaponLevel, itemSpecialsSeed, be
|
|
|
208
214
|
if (weaponSpecials.suffix && weaponSpecials.suffix === beastSuffix) {
|
|
209
215
|
bonus += baseDamage * 2;
|
|
210
216
|
}
|
|
211
|
-
// Platinum Ring gives 3% bonus per level on special matches
|
|
212
|
-
if (ItemUtils.getItemName(ring.id) === "Platinum Ring" && bonus > 0) {
|
|
213
|
-
const ringLevel = calculateLevel(ring.xp);
|
|
214
|
-
bonus += Math.floor((bonus * 3 * ringLevel) / 100);
|
|
215
|
-
}
|
|
216
217
|
return bonus;
|
|
217
218
|
};
|
|
218
|
-
|
|
219
|
+
/**
|
|
220
|
+
* `ImplAdventurer::precompute_attack_damage` -- both outcomes of one swing.
|
|
221
|
+
*
|
|
222
|
+
* The ORDER is the thing to preserve. The contract totals elemental + strength + weapon specials,
|
|
223
|
+
* floors that against the beast's armour at `MINIMUM_DAMAGE_TO_BEASTS`, and adds the ring bonuses
|
|
224
|
+
* to the floored result. Folding the rings in before the floor -- which this used to do -- agrees
|
|
225
|
+
* everywhere the floor does not bind and silently differs everywhere it does.
|
|
226
|
+
*/
|
|
227
|
+
export const calculateAttackDamage = (weapon, adventurer, beast, adventurerId, specialsOverride = 0n) => {
|
|
219
228
|
if (!weapon)
|
|
220
229
|
return { baseDamage: MIN_DAMAGE, criticalDamage: MIN_DAMAGE }; // Minimum damage
|
|
221
230
|
const weaponLevel = calculateLevel(weapon.xp);
|
|
@@ -240,17 +249,21 @@ export const calculateAttackDamage = (weapon, adventurer, beast, specialsOverrid
|
|
|
240
249
|
if (adventurer.stats.strength > 0) {
|
|
241
250
|
strengthBonus = Math.floor((elementalDamage * adventurer.stats.strength * 10) / 100);
|
|
242
251
|
}
|
|
243
|
-
// Calculate special name bonus damage
|
|
252
|
+
// Calculate special name bonus damage. The ring's cut is added after the floor, below.
|
|
244
253
|
const ring = adventurer.equipment.ring;
|
|
245
|
-
const specialBonus = calculateWeaponSpecialBonus(weapon.id, weaponLevel, adventurer.item_specials_salt, beast.specialPrefix, beast.specialSuffix, elementalDamage,
|
|
246
|
-
//
|
|
247
|
-
const
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
const
|
|
254
|
+
const specialBonus = calculateWeaponSpecialBonus(weapon.id, weaponLevel, ItemUtils.getItemSpecialsSeed(adventurer.item_specials_salt, adventurerId), beast.specialPrefix, beast.specialSuffix, elementalDamage, specialsOverride);
|
|
255
|
+
// The floor, written the way `calculate_damage` writes it: strictly greater, or the minimum.
|
|
256
|
+
const totalNoCrit = elementalDamage + strengthBonus + specialBonus;
|
|
257
|
+
const normalBase = totalNoCrit > baseArmor + MIN_DAMAGE ? totalNoCrit - baseArmor : MIN_DAMAGE;
|
|
258
|
+
// A critical hit's bonus is one more copy of the elemental damage, inside the floor.
|
|
259
|
+
const totalCrit = totalNoCrit + elementalDamage;
|
|
260
|
+
const critBase = totalCrit > baseArmor + MIN_DAMAGE ? totalCrit - baseArmor : MIN_DAMAGE;
|
|
261
|
+
// Both ring bonuses sit outside it.
|
|
262
|
+
const nameMatchJewelry = ringBonusDamage(ring, specialBonus, "Platinum Ring");
|
|
263
|
+
const critJewelry = ringBonusDamage(ring, elementalDamage, "Titanium Ring");
|
|
251
264
|
return {
|
|
252
|
-
baseDamage,
|
|
253
|
-
criticalDamage,
|
|
265
|
+
baseDamage: normalBase + nameMatchJewelry,
|
|
266
|
+
criticalDamage: critBase + nameMatchJewelry + critJewelry,
|
|
254
267
|
};
|
|
255
268
|
};
|
|
256
269
|
export const ability_based_percentage = (adventurer_xp, relevant_stat) => {
|
|
@@ -283,7 +296,20 @@ export const ability_based_damage_reduction = (adventurer_xp, relevant_stat) =>
|
|
|
283
296
|
const smooth = 3 * r2 - 2 * r3;
|
|
284
297
|
return Math.floor((100 * smooth) / SCALE);
|
|
285
298
|
};
|
|
286
|
-
|
|
299
|
+
/**
|
|
300
|
+
* `Item::jewelry_armor_bonus` -- the armour a matching necklace adds, as a flat damage reduction.
|
|
301
|
+
*
|
|
302
|
+
* `base_armor * (neck.greatness * 3) / 100`, and zero unless the necklace matches the struck
|
|
303
|
+
* armour's material. Shared by the beast path here and the obstacle path in `gameSimulation.ts`,
|
|
304
|
+
* because `defend` and `get_obstacle_damage` apply the identical term.
|
|
305
|
+
*/
|
|
306
|
+
export const jewelryArmorBonus = (armor, neck) => {
|
|
307
|
+
if (!neck_reduction(armor, neck))
|
|
308
|
+
return 0;
|
|
309
|
+
const baseArmor = calculateLevel(armor.xp) * (6 - Number(ItemUtils.getItemTier(armor.id)));
|
|
310
|
+
return Math.floor((baseArmor * calculateLevel(neck.xp) * 3) / 100);
|
|
311
|
+
};
|
|
312
|
+
export const calculateBeastDamage = (beast, adventurer, armor, adventurerId, specialsOverride = 0n) => {
|
|
287
313
|
const baseAttack = beast.level * (6 - Number(beast.tier));
|
|
288
314
|
let baseDamage = baseAttack;
|
|
289
315
|
let critDamage = baseAttack;
|
|
@@ -297,7 +323,7 @@ export const calculateBeastDamage = (beast, adventurer, armor, specialsOverride
|
|
|
297
323
|
let damage = elementalDamage;
|
|
298
324
|
// Apply name match bonus
|
|
299
325
|
if (beast.specialPrefix && beast.specialSuffix) {
|
|
300
|
-
const itemSpecials = ItemUtils.getSpecials(armor.id, armorLevel, adventurer.item_specials_salt, specialsOverride);
|
|
326
|
+
const itemSpecials = ItemUtils.getSpecials(armor.id, armorLevel, ItemUtils.getItemSpecialsSeed(adventurer.item_specials_salt, adventurerId), specialsOverride);
|
|
301
327
|
if (itemSpecials.suffix === beast.specialSuffix) {
|
|
302
328
|
damage += elementalDamage * 2; // Suffix match
|
|
303
329
|
}
|
|
@@ -308,13 +334,9 @@ export const calculateBeastDamage = (beast, adventurer, armor, specialsOverride
|
|
|
308
334
|
critDamage = Math.max(BEAST_MIN_DAMAGE, damage + elementalDamage - armorValue);
|
|
309
335
|
baseDamage = Math.max(BEAST_MIN_DAMAGE, damage - armorValue);
|
|
310
336
|
// Check for neck armor reduction
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
const neckReduction = Math.floor((armorLevel * (6 - ItemUtils.getItemTier(armor.id)) * neckLevel * 3) / 100);
|
|
315
|
-
baseDamage -= neckReduction;
|
|
316
|
-
critDamage -= neckReduction;
|
|
317
|
-
}
|
|
337
|
+
const neckReduction = jewelryArmorBonus(armor, adventurer.equipment.neck);
|
|
338
|
+
baseDamage -= neckReduction;
|
|
339
|
+
critDamage -= neckReduction;
|
|
318
340
|
}
|
|
319
341
|
else {
|
|
320
342
|
baseDamage = Math.floor(baseAttack * 1.5);
|
|
@@ -360,8 +382,8 @@ export function strength_dmg(damage, strength) {
|
|
|
360
382
|
return (damage * strength * 10) / 100;
|
|
361
383
|
}
|
|
362
384
|
// Calculate combat stats
|
|
363
|
-
export const calculateCombatStats = (adventurer, bagItems, beast) => {
|
|
364
|
-
const { baseDamage, criticalDamage } = calculateAttackDamage(adventurer.equipment.weapon, adventurer, beast);
|
|
385
|
+
export const calculateCombatStats = (adventurer, bagItems, beast, adventurerId, specialsOverride = 0n) => {
|
|
386
|
+
const { baseDamage, criticalDamage } = calculateAttackDamage(adventurer.equipment.weapon, adventurer, beast, adventurerId, specialsOverride);
|
|
365
387
|
let protection = 0;
|
|
366
388
|
let bestProtection = 0;
|
|
367
389
|
const bestItems = [];
|
|
@@ -376,7 +398,7 @@ export const calculateCombatStats = (adventurer, bagItems, beast) => {
|
|
|
376
398
|
bagItems
|
|
377
399
|
.filter((item) => ItemUtils.getItemSlot(item.id) === "Weapon")
|
|
378
400
|
.forEach((item) => {
|
|
379
|
-
const itemDamage = calculateAttackDamage(item, adventurer, beast).baseDamage;
|
|
401
|
+
const itemDamage = calculateAttackDamage(item, adventurer, beast, adventurerId, specialsOverride).baseDamage;
|
|
380
402
|
if (itemDamage > bestDamage) {
|
|
381
403
|
bestDamage = itemDamage;
|
|
382
404
|
bestWeapon = item;
|
|
@@ -389,14 +411,14 @@ export const calculateCombatStats = (adventurer, bagItems, beast) => {
|
|
|
389
411
|
const armor = adventurer.equipment[slot];
|
|
390
412
|
let armorDefense = 0;
|
|
391
413
|
if (armor.id !== 0) {
|
|
392
|
-
const beastDmg = calculateBeastDamage(beast, adventurer, armor);
|
|
414
|
+
const beastDmg = calculateBeastDamage(beast, adventurer, armor, adventurerId, specialsOverride);
|
|
393
415
|
armorDefense = Math.max(0, maxDamage - beastDmg.baseDamage);
|
|
394
416
|
maxBeastBaseDamage = Math.max(maxBeastBaseDamage, beastDmg.baseDamage);
|
|
395
417
|
maxBeastCriticalDamage = Math.max(maxBeastCriticalDamage, beastDmg.criticalDamage);
|
|
396
418
|
}
|
|
397
419
|
else {
|
|
398
420
|
// No armor in this slot - beast does unmitigated damage
|
|
399
|
-
const beastDmg = calculateBeastDamage(beast, adventurer, armor);
|
|
421
|
+
const beastDmg = calculateBeastDamage(beast, adventurer, armor, adventurerId, specialsOverride);
|
|
400
422
|
maxBeastBaseDamage = Math.max(maxBeastBaseDamage, beastDmg.baseDamage);
|
|
401
423
|
maxBeastCriticalDamage = Math.max(maxBeastCriticalDamage, beastDmg.criticalDamage);
|
|
402
424
|
}
|
|
@@ -405,7 +427,9 @@ export const calculateCombatStats = (adventurer, bagItems, beast) => {
|
|
|
405
427
|
bagItems
|
|
406
428
|
.filter((item) => ItemUtils.getItemSlot(item.id).toLowerCase() === slot)
|
|
407
429
|
.forEach((item) => {
|
|
408
|
-
const itemDefense = Math.max(0, maxDamage -
|
|
430
|
+
const itemDefense = Math.max(0, maxDamage -
|
|
431
|
+
calculateBeastDamage(beast, adventurer, item, adventurerId, specialsOverride)
|
|
432
|
+
.baseDamage);
|
|
409
433
|
if (itemDefense > bestDefense) {
|
|
410
434
|
bestDefense = itemDefense;
|
|
411
435
|
bestItem = item;
|
package/dist/rules/game.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game.js","sourceRoot":"","sources":["../../src/rules/game.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"game.js","sourceRoot":"","sources":["../../src/rules/game.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ export interface ObstacleRolls {
|
|
|
50
50
|
levelRnd: number;
|
|
51
51
|
}
|
|
52
52
|
export declare const generateObstacle: (adventurerLevel: number, rolls?: ObstacleRolls) => GeneratedObstacle;
|
|
53
|
-
export declare const calculateObstacleDamage: (obstacle: GeneratedObstacle, armor: Item, adventurerLevel: number, baseDamageReduction: number, rolls?: BeastAttackRolls) => {
|
|
53
|
+
export declare const calculateObstacleDamage: (obstacle: GeneratedObstacle, armor: Item, adventurerLevel: number, baseDamageReduction: number, rolls?: BeastAttackRolls, neck?: Item) => {
|
|
54
54
|
damage: number;
|
|
55
55
|
location: string;
|
|
56
56
|
critical_hit: boolean;
|
|
@@ -72,6 +72,8 @@ export declare const increaseHealth: (adventurer: Adventurer, amount: number) =>
|
|
|
72
72
|
export declare const decreaseHealth: (adventurer: Adventurer, amount: number) => void;
|
|
73
73
|
export declare const increaseGold: (adventurer: Adventurer, amount: number) => void;
|
|
74
74
|
export declare const increaseXp: (adventurer: Adventurer, amount: number) => void;
|
|
75
|
+
/** `ImplAdventurer::increase_stat_upgrades_available` -- saturates at 15, the field's width. */
|
|
76
|
+
export declare const grantStatUpgrades: (adventurer: Adventurer, amount: number) => void;
|
|
75
77
|
export declare const canExplore: (adventurer: Adventurer) => boolean;
|
|
76
78
|
/**
|
|
77
79
|
* Get the armor Item at a given attack slot.
|
|
@@ -87,7 +89,7 @@ export interface LootGoldConversion {
|
|
|
87
89
|
* already owns it (equipped or in bag) or has nowhere to put it (bag full and
|
|
88
90
|
* equipment slot occupied). Returns null when the item would be kept.
|
|
89
91
|
*/
|
|
90
|
-
export declare const getLootDiscoveryGoldConversion: (adventurer: Adventurer, bag: Item[], itemId: number) => LootGoldConversion | null;
|
|
92
|
+
export declare const getLootDiscoveryGoldConversion: (adventurer: Adventurer, bag: readonly Item[], itemId: number) => LootGoldConversion | null;
|
|
91
93
|
/**
|
|
92
94
|
* Try to add a discovered loot item to equipment or bag.
|
|
93
95
|
* Returns the gold conversion if the item couldn't be added (already owned or
|
|
@@ -108,7 +110,7 @@ export declare const isCriticalHit: (luck: number, criticalHitRnd?: number) => b
|
|
|
108
110
|
* Delegates to calculateAttackDamage from game.ts which includes weapon specials,
|
|
109
111
|
* ring name-match bonus, and ring critical hit bonus.
|
|
110
112
|
*/
|
|
111
|
-
export declare const calculateAdventurerAttackDamage: (adventurer: Adventurer, beast: Beast, specialsOverride?: bigint) => {
|
|
113
|
+
export declare const calculateAdventurerAttackDamage: (adventurer: Adventurer, beast: Beast, adventurerId: string | bigint, specialsOverride?: bigint) => {
|
|
112
114
|
normal: number;
|
|
113
115
|
crit: number;
|
|
114
116
|
};
|
|
@@ -125,7 +127,7 @@ export interface BeastAttackRolls {
|
|
|
125
127
|
attackLocationRnd: number;
|
|
126
128
|
criticalHitRnd: number;
|
|
127
129
|
}
|
|
128
|
-
export declare const calculateBeastCounterAttack: (beast: Beast, adventurer: Adventurer, baseDamageReduction: number, isAmbush
|
|
130
|
+
export declare const calculateBeastCounterAttack: (beast: Beast, adventurer: Adventurer, baseDamageReduction: number, isAmbush: boolean | undefined, rolls: BeastAttackRolls | undefined, adventurerId: string | bigint, specialsOverride?: bigint) => {
|
|
129
131
|
damage: number;
|
|
130
132
|
location: string;
|
|
131
133
|
critical_hit: boolean;
|
|
@@ -148,11 +150,25 @@ export declare const grantXpToEquippedItems: (adventurer: Adventurer, xpAmount:
|
|
|
148
150
|
* Equip a single item from bag into the correct equipment slot.
|
|
149
151
|
* If the slot is occupied, the displaced item moves to the bag.
|
|
150
152
|
*/
|
|
151
|
-
export declare const equipItem: (adventurer: Adventurer, bag: Item[], itemId: number, specialsOverride?: bigint) => void;
|
|
153
|
+
export declare const equipItem: (adventurer: Adventurer, bag: Item[], itemId: number, adventurerId: string | bigint, specialsOverride?: bigint) => void;
|
|
152
154
|
/**
|
|
153
155
|
* Drop a single item from equipment or bag.
|
|
154
156
|
*/
|
|
155
|
-
|
|
157
|
+
/**
|
|
158
|
+
* `Inventory::_drop` for one item. Returns false when the adventurer does not own it, which the
|
|
159
|
+
* contract answers with a `'Item not owned by adventurer'` panic -- so a caller replaying a
|
|
160
|
+
* transcript has to treat false as a refused action, not a no-op.
|
|
161
|
+
*/
|
|
162
|
+
export declare const dropItem: (adventurer: Adventurer, bag: Item[], itemId: number, adventurerId: string | bigint, specialsOverride?: bigint) => boolean;
|
|
163
|
+
/**
|
|
164
|
+
* `ImplStats::apply_random_stats` -- deal `count` points onto stats that are ALREADY there.
|
|
165
|
+
*
|
|
166
|
+
* Point by point, each one saturating at `MAX_STAT_VALUE`. Dealing them into a fresh delta and
|
|
167
|
+
* adding it afterwards is not the same thing: the contract clamps against the running total, so a
|
|
168
|
+
* stat that is already at 31 -- which an overridden start or a boosted one can be -- swallows the
|
|
169
|
+
* point instead of overflowing the 5-bit field.
|
|
170
|
+
*/
|
|
171
|
+
export declare const applyRandomStats: (stats: Stats, seed: bigint, count: number) => void;
|
|
156
172
|
export declare const generateStartingStats: (levelSeed?: bigint, count?: number) => Stats;
|
|
157
173
|
export {};
|
|
158
174
|
//# sourceMappingURL=gameSimulation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameSimulation.d.ts","sourceRoot":"","sources":["../../src/rules/gameSimulation.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"gameSimulation.d.ts","sourceRoot":"","sources":["../../src/rules/gameSimulation.ts"],"names":[],"mappings":"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"}
|