UNPKG

@randsum/blades

Version:

Blades in the Dark compatible dice rolling implementation

4 lines (2 loc) 1.22 kB
var c=require("node:module");var{defineProperty:s,getOwnPropertyNames:m,getOwnPropertyDescriptor:p}=Object,u=Object.prototype.hasOwnProperty;var i=new WeakMap,f=(e)=>{var r=i.get(e),l;if(r)return r;if(r=s({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")m(e).map((t)=>!u.call(r,t)&&s(r,t,{get:()=>e[t],enumerable:!(l=p(e,t))||l.enumerable}));return i.set(e,r),r};var R=(e,r)=>{for(var l in r)s(e,l,{get:r[l],enumerable:!0,configurable:!0,set:(t)=>r[l]=()=>t})};var y={};R(y,{rollBlades:()=>d});module.exports=f(y);var n=require("@randsum/roller");function a({rolls:e},r){let l=e.flatMap((o)=>o.rolls);if(l.filter((o)=>o===6).length>=2&&r)return"critical";switch(l[0]){case 6:return"success";case 5:case 4:return"partial";default:return"failure"}}function d(e){if(!Number.isInteger(e))throw new Error(`Blades dice pool must be an integer, received: ${e}`);if(e<0)throw new Error(`Blades dice pool must be non-negative, received: ${e}`);if(e>10)throw new Error(`Blades dice pool is unusually large (${e}). Maximum recommended is 10.`);let r=e>0,l=n.roll({sides:6,quantity:r?e:2,...r?{}:{modifiers:{drop:{highest:1}}}});return{...l,result:a(l,r)}} //# debugId=B4D7EAD18F900EDD64756E2164756E21