@randsum/daggerheart
Version:
A flexible, type-safe dice roller for building Daggerheart-compatible applications
4 lines (2 loc) • 1.44 kB
JavaScript
var T=require("node:module");var{defineProperty:i,getOwnPropertyNames:y,getOwnPropertyDescriptor:h}=Object,D=Object.prototype.hasOwnProperty;var R=new WeakMap,v=(e)=>{var t=R.get(e),l;if(t)return t;if(t=i({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")y(e).map((r)=>!D.call(t,r)&&i(t,r,{get:()=>e[r],enumerable:!(l=h(e,r))||l.enumerable}));return R.set(e,t),t};var A=(e,t)=>{for(var l in t)i(e,l,{get:t[l],enumerable:!0,configurable:!0,set:(r)=>t[l]=()=>r})};var k={};A(k,{validateNotation:()=>s.validateNotation,rollDaggerheart:()=>m,roll:()=>s.roll});module.exports=v(k);var s=require("@randsum/roller");var f=require("@randsum/roller");function g(e,t){if(e===t)return"critical hope";if(e>t)return"hope";return"fear"}function m({rollingWith:e,amplifyHope:t=!1,amplifyFear:l=!1,modifier:r=0}){let o=f.roll(...[{sides:t?20:12,key:"hope"},{sides:l?20:12,key:"fear"},e?{sides:6,key:e,arithmetic:e==="Advantage"?"add":"subtract"}:void 0].filter((a)=>!!a)),n=o.rolls.find((a)=>a.parameters.key==="hope"),p=o.rolls.find((a)=>a.parameters.key==="fear"),d=o.rolls.find((a)=>e&&a.parameters.key===e);if(!n||!p)throw new Error("Failed to properly roll.");let c=d?{roll:d.appliedTotal}:void 0;return{...o,result:{total:o.total+r,type:g(n.total,p.total),details:{hope:u(n),fear:u(p),advantage:c,modifier:r}}}}function u(e){return{roll:e.total,amplified:e.parameters.sides===20}}
//# debugId=6EB504D14C76A58864756E2164756E21