UNPKG

@randsum/daggerheart

Version:

A flexible, type-safe dice roller for building Daggerheart-compatible applications

2 lines (1 loc) 1.76 kB
var y=require("node:module");var{defineProperty:s,getOwnPropertyNames:D,getOwnPropertyDescriptor:m}=Object,H=Object.prototype.hasOwnProperty;var a=new WeakMap,R=(e)=>{var t=a.get(e),r;if(t)return t;if(t=s({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")D(e).map((n)=>!H.call(t,n)&&s(t,n,{get:()=>e[n],enumerable:!(r=m(e,n))||r.enumerable}));return a.set(e,t),t};var g=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0,configurable:!0,set:(n)=>t[r]=()=>n})};var q={};g(q,{rollDH:()=>u,meetOrBeatDH:()=>c});module.exports=R(q);var i=require("@randsum/dice");function A({modifier:e=0,amplifyHope:t=!1,amplifyFear:r=!1}){if(t&&r)return[{quantity:2,sides:20,modifiers:{plus:e}}];if(t)return[{quantity:1,sides:20,modifiers:{plus:e}},{quantity:1,sides:12,modifiers:{plus:e}}];if(r)return[{quantity:1,sides:12,modifiers:{plus:e}},{quantity:1,sides:12,modifiers:{plus:e}}];return[{quantity:2,sides:12,modifiers:{plus:e}}]}function u({modifier:e=0,rollingWith:t,amplifyHope:r=!1,amplifyFear:n=!1}){let{result:[l,o],total:p}=i.roll(...A({modifier:e,amplifyHope:r,amplifyFear:n}));if(l===void 0||o===void 0)throw new Error("Failed to roll hope and fear");let[f,d]=h(p,t);return{type:v(l,o),total:f,rolls:{hope:l,advantage:d,fear:o,modifier:e}}}function v(e,t){if(e===t)return"critical hope";if(e>t)return"hope";return"fear"}function h(e,t){if(t){let r=O();if(t==="Advantage")return[e+r,r];return[e-r,-r]}return[e,void 0]}function O(){return i.roll({quantity:1,sides:6}).total}function c(e,t){let r=u(t),n={...r,success:r.type==="critical hope"?!0:r.total>=e,target:e};return{...n,description:b(n)}}function b({type:e,success:t}){if(e==="critical hope")return"Critical Success (With Hope)";if(t)return`Success with ${e}`;return`Failure with ${e}`}