@randsum/salvageunion
Version:
A flexible, type-safe dice roller for the Salvage Union system
4 lines (2 loc) • 25.1 kB
JavaScript
var Q=require("node:module");var{defineProperty:w,getOwnPropertyNames:H,getOwnPropertyDescriptor:E}=Object,W=Object.prototype.hasOwnProperty;var M=new WeakMap,G=(e)=>{var a=M.get(e),t;if(a)return a;if(a=w({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function")H(e).map((o)=>!W.call(a,o)&&w(a,o,{get:()=>e[o],enumerable:!(t=E(e,o))||t.enumerable}));return M.set(e,a),a};var z=(e,a)=>{for(var t in a)w(e,t,{get:a[t],enumerable:!0,configurable:!0,set:(o)=>a[t]=()=>o})};var J={};z(J,{rollTable:()=>j,RollTables:()=>x,RetreatTable:()=>h,ReactorOverloadTable:()=>p,PCTables:()=>m,NPMoraleTable:()=>s,NPCTables:()=>y,NPCReactionTable:()=>l,NPCActionTable:()=>n,MechSalvageTable:()=>b,GroupInitiativeTable:()=>c,CriticalInjuryTable:()=>d,CriticalDamageTable:()=>u,CoreMechanicTable:()=>C,AreaSalvageTable:()=>g,AllRollTables:()=>r});module.exports=G(J);var P={1:"Stuffed Toy",2:"Pre-War Handheld Console",3:"Dog Tags",4:"Snowglobe",5:"Bobblehead",6:"Polaroid Picture",7:"Walkman",8:"Scuffed Book",9:"Butterfly Earrings",10:"Lucky Tooth",11:"Leatherbound Journal",12:"Branded Cup",13:"Set of novelty dice",14:"Silver Pendant",15:"Heart-shaped Purse",16:"Cloth Patch",17:"22-year-old bottle of Whiskey",18:"Harmonica",19:"Pack of Smokes",20:"Peach Lipstick"},k={1:"Live and let live.",2:"The early bird gets the worm.",3:"Knowledge is power, France is Bacon.",4:"From each according to their ability, to each according to their needs.",5:"Hope for the best and prepare for the worst.",6:"Success is the best revenge.",7:"An ounce of prevention is worth a pound of cure.",8:"Do your best!",9:"Everything is impossible until it is done.",10:"Those who have a why can bear any how.",11:"Mechs are not built in a day.",12:"No job too big.",13:"Failure is the mother of success.",14:"Be kind, for everyone you meet is fighting a hard battle.",15:"It is not a bug, it is a feature.",16:"Call me, or screw it up yourself.",17:"Salvagers know nothing is truly lost.",18:"Carpe diem.",19:"The grass is greener where you water it.",20:"Feel the fear and do it anyway."},U={1:"Stocky",2:"Alluring",3:"Intimidating",4:"Fancy",5:"Sloppy",6:"Lanky",7:"Slender",8:"Muscular",9:"Quirky",10:"Plump",11:"Tattooed",12:"Wiry",13:"Thick",14:"Graceful",15:"Squat",16:"Rosy",17:"Petite",18:"Colourful",19:"Cute",20:"Quaint"},N={1:"Megalomaniacal to a fault.",2:"Asks far too many questions.",3:"Views humans as lost puppies to protect.",4:"Sees humans as dull witted meat to conquer.",5:"Utterly paranoid about losing its sentience.",6:"Anxiously questions its own morality.",7:"Dangerously pragmatic.",8:"Changes its mind constantly.",9:"Dangerously optimistic.",10:"Easily angered.",11:"Irreverent and quirky.",12:"Annoyingly sarcastic.",13:"Gloomy and miserable.",14:"Blindly obedient.",15:"Dangerously direct and honest.",16:"Ruggedly individualistic.",17:"Shrewd and conniving.",18:"Surprisingly well rounded.",19:"Loving and thoughtful.",20:"Hopeful and idealistic."},I={1:"Flashing RGB lights",2:"Fumes smoke",3:"Incredibly loud, grinding gears",4:"Makes a 'pew pew' sound when used",5:"Inexplicably always sticky",6:"Vestigial parts attached",7:"Rudimentary AI personality",8:"Drips coolant and oil",9:"Cockpit has far, far too many buttons",10:"Creaking and stiff joints",11:"Occasionally sparks electricity",12:"Secretly emits radio waves",13:"Vibrates frequently and intensely",14:"Exterior fluctuates in colour",15:"Small organic growths",16:"Smells like a wet dog",17:"Reactor emits a green glow",18:"Unusual cockpit location",19:"'Falcon Wing' door design",20:"Hydropneumatic suspension system for a smooth ride"},R={1:"Flashy, bright, vibrant, paint job",2:"Grizzly, bloody markings",3:"Rusty and dilapidated",4:"Misshapen and lumpy",5:"Garish paint job with spinning gears",6:"Furry exterior",7:"Fantastical, glowing carved runes",8:"Luminous paint job",9:"Draped in cables",10:"Covered in camo and foliage",11:"Spiky bits",12:"Grizzly, covered in skulls and viscera",13:"Covered in stylised graffiti",14:"Overgrown with plants and vines",15:"Industrial and utilitarian",16:"Animalistic with fangs, claws and wings",17:"'Steampunk', whirring gears, bronze parts",18:"Super sleek with neon lights",19:"Radioactive green exterior",20:"The Meld, sleek, oily black"},F={1:"Bullseye",2:"Moonbeam",3:"Reaper",4:"Manticore",5:"Big Daddy",6:"Hog",7:"Harlequin",8:"Blossom",9:"Giggle Bot",10:"Banana Split",11:"Reaver",12:"Warhammer",13:"Ironclad",14:"Disco Inferno",15:"Tickle Monster",16:"Hoopster",17:"Diva",18:"Ladybug",19:"Technicolour Dream Warrior",20:"Queen Bee"},A={1:"Big Smoke",2:"Juggernaut",3:"Calypso",4:"Archipelago",5:"Tin Lizzy",6:"Sanctuary",7:"Lean Viper",8:"Tranquillity",9:"New Apollo",10:"Tenacity",11:"Phobos",12:"Waste Grinder",13:"Dumpy",14:"Fat Turtle",15:"Wanderer",16:"Moocher",17:"Slogger",18:"Bastion",19:"Perseverance",20:"Junker"};var n={["Nailed It"]:{label:"Nailed It",description:"The NPC succeeds spectacularly at their action. They get an additional bonus of the Mediator’s choice. If they are making an attack, they hit, and do double damage or get another bonus of the Mediator’s choice.",hit:"Nailed It"},["Success"]:{label:"Success",description:"The NPC achieves their action successfully. An attack hits and deals standard damage.",hit:"Success"},["Tough Choice"]:{label:"Tough Choice",description:"The NPC is successful, but faces a Tough Choice. The players give the Mediator a choice between two Setbacks. In combat, a weapon attack hits, but with a choice of Setback chosen by the players.",hit:"Tough Choice"},["Failure"]:{label:"Failure",description:"The NPC has failed at their action. The players choose an appropriate Setback for failure. In combat, a weapon attack misses.",hit:"Failure"},["Cascade Failure"]:{label:"Cascade Failure",description:"The NPC has catastrophically failed at their action. They suffer a Severe Setback of the player’s choice. A weapon attack misses, with a Severe Setback chosen by the players.",hit:"Cascade Failure"}},l={["Nailed It"]:{label:"Actively Friendly and Helpful",description:"The NPCs are incredibly friendly and positive towards the group and will actively help them in any reasonable way they can.",hit:"Nailed It"},["Success"]:{label:"Friendly",description:"The NPCs are friendly and willing to talk, trade, and offer information to the group; however, they will still ask for their fair share in return.",hit:"Success"},["Tough Choice"]:{label:"Unfriendly",description:"The NPCs react in an unfriendly manner to the group; they are difficult to talk or trade with and reluctant to offer any help to the Pilots.",hit:"Tough Choice"},["Failure"]:{label:"Hostile",description:"The NPCs are actively hostile to the group. They will defend their area, make motions to attack, gesture and threaten, and be unwilling to help in any way.",hit:"Failure"},["Cascade Failure"]:{label:"Actively Hostile",description:"The NPCs will launch an attack on the group if appropriate or flee from them, barricade themselves in, and avoid contact as though they were hostile.",hit:"Cascade Failure"}},s={["Nailed It"]:{label:"Fight to the Death",description:"The NPCs see this one through to the end. They hunker down and will not retreat from this fight under any circumstance.",hit:"Nailed It"},["Success"]:{label:"Keep Fighting",description:"The NPCs continue to fight this one out for now.",hit:"Success"},["Tough Choice"]:{label:"Fighting Retreat",description:"The NPCs retreat, but do so whilst continuing to fight. They will fight for one more round and then retreat.",hit:"Tough Choice"},["Failure"]:{label:"Retreat",description:"The NPCs flee the fight as quickly and safely as possible.",hit:"Failure"},["Cascade Failure"]:{label:"Surrender",description:"The NPCs surrender to whoever is attacking them. If there is nobody to surrender to, they will recklessly flee.",hit:"Cascade Failure"}},y={["NPC Action"]:n,["Reaction"]:l,["Morale"]:s};function i({nailedIt:e,success:a,toughChoice:t,failure:o,cascadeFailure:T}){return{["Nailed It"]:{label:e.label??"Nailed It",description:e.description,hit:"Nailed It"},["Success"]:{label:a.label??"Success",description:a.description,hit:"Success"},["Tough Choice"]:{label:t.label??"Tough Choice",description:t.description,hit:"Tough Choice"},["Failure"]:{label:o.label??"Failure",description:o.description,hit:"Failure"},["Cascade Failure"]:{label:T.label??"Cascade Failure",description:T.description,hit:"Cascade Failure"}}}var c=i({nailedIt:{label:"You shot first",description:"Two Pilots chosen by the players act first. Play then passes to the NPC group and one NPC chosen by the Mediator acts next."},success:{label:"Quickdraw",description:"One Pilot chosen by the players acts first. Play then passes to the NPC group and one NPC chosen by the Mediator acts."},toughChoice:{label:"Wait and See",description:"One NPC chosen by the Mediator acts first. Play then passes to the player group and one Pilot chosen by the players acts."},failure:{label:"Fumble",description:"One NPC chosen by the players acts first. Play then passes to the player group and one Pilot chosen by the players acts."},cascadeFailure:{label:"Ambush",description:"Two NPCs chosen by the Mediator act first. Play then passes to the player group and one Pilot is chosen by the players to act next."}}),h=i({nailedIt:{label:"Perfect Escape",description:"The group makes a perfect escape from the situation to any location of their choice within the Region Map and cannot be pursued."},success:{label:"Escape",description:"The group makes a safe escape from the situation to any adjacent location of their choice within the Map and cannot be pursued."},toughChoice:{label:"Dangerous Escape",description:"The group escapes to any adjacent location of their choice within the Region Map, but at a cost. They must make a Tough Choice related to the situation."},failure:{label:"Failed Escape",description:"The group fails to retreat from the situation and are pinned down. They cannot retreat and must fight it out to the end."},cascadeFailure:{label:"Disastrous Escape",description:"The group retreat to an adjacent location of their choice within the Region Map, but at a severe cost. They suffer a Severe Setback and may be pursued."}}),u=i({nailedIt:{label:"Miraculous Survival",description:"Your Mech is somehow Intact. It has 1 SP and is still fully operational. Your Pilot is unharmed."},success:{label:"Core Damage",description:"Your Mech Chassis is damaged and inoperable until repaired. All mounted Systems and Modules remain Intact. Your Pilot is unharmed."},toughChoice:{label:"Module Destruction",description:"A Module mounted on your Mech is destroyed. This is chosen by the Mediator or at random. Your Mech Chassis is damaged and inoperable until repaired. Your Pilot is unharmed."},failure:{label:"System Destruction",description:"A System mounted on your Mech is destroyed. This is chosen by the Mediator or at random. Your Mech Chassis is damaged and inoperable until repaired. Your Pilot is unharmed."},cascadeFailure:{label:"Catastrophic Failure",description:"The Mech, as well as any mounted Systems and Modules as well as all Cargo, is destroyed. Your Pilot dies unless they have a means to escape the Mech."}}),d=i({nailedIt:{label:"Miraculous Survival",description:"You survive against the odds. You have 1 HP, remain conscious and can act normally."},success:{label:"Unconscious",description:"You are stable at 0 HP, but unconscious and cannot move or take actions until you gain at least 1 HP. You will regain consciousness naturally in 1 hour and get back up with 1 HP."},toughChoice:{label:"Minor Injury",description:"You suffer a Minor Injury such as a sprain, burns, or minor concussion. Your Max HP is reduced by 1 until healed in a Tech 3 - 4 Med Bay. In addition, you are Unconscious. Apply the result of 11 - 19."},failure:{label:"Major Injury",description:"You suffer a Major Injury such as permanent scarring, broken ribs, or internal injuries. Your Max HP is reduced by 2 until healed in a Tech 5 - 6 Med Bay. In addition, you are Unconscious. Apply the result of 11-19."},cascadeFailure:{label:"Fatal Injury",description:"Your Pilot suffers a fatal injury and dies."}}),p=i({nailedIt:{label:"Reactor Overdrive",description:"Your Mech’s reactor goes into overdrive. Your Mech can take any additional action this turn or Push their next roll within 10 minutes for free."},success:{label:"Reactor Overheat",description:"Your Mech’s reactor has overheated. Your Mech shuts down and gains the Vulnerable Trait. Your Mech will re-activate at the end of your next turn. In addition, your Mech takes an amount of SP damage equal to your current Heat."},toughChoice:{label:"Module Overload",description:"One of your Mech’s Modules chosen at random or by the Mediator is destroyed."},failure:{label:"System Overload",description:"One of your Mech’s Systems chosen at random or by the Mediator is destroyed."},cascadeFailure:{label:"Reactor Meltdown",description:"Your Mech’s reactor goes into full meltdown and explodes. Your Mech, as well as any mounted Systems, Modules, and all Cargo, is destroyed in the explosion. Everything in Close Range of your Mech takes SP damage equal to your Mech’s Maximum Heat Capacity. They may take any Turn Action or Reaction in response to try to avoid this. Your Pilot dies unless they have a means to escape. The area your Mech was in becomes Irradiated."}}),g=i({nailedIt:{label:"Jackpot!",description:"You find a Mech Chassis, System, or Module at the Tech Level of the area. It is in the Damaged Condition. This can be randomised or chosen by the Mediator."},success:{label:"Winning",description:"You find 3 Scrap of the Tech Level of the area."},toughChoice:{label:"Not Bad",description:"You find 2 Scrap of the Tech Level of the area."},failure:{label:"Better than nothing",description:"You find 1 Scrap of the Tech Level of the area."},cascadeFailure:{label:"Nothing",description:"You find nothing in this area."}}),b=i({nailedIt:{label:"Lion's Share",description:"You salvage the Mech Chassis, a System and a Module of your choice mounted on it. They both have the Damaged Condition. Anything else is considered destroyed."},success:{label:"Meat and Potatoes",description:"You salvage the Mech Chassis or a System or Module of your choice mounted on it. It has the Damaged Condition. Anything else is considered destroyed."},toughChoice:{label:"Bits and Pieces",description:"You salvage a System or Module of your choice mounted on the Mech. It has the Damaged Condition. Anything else is considered destroyed."},failure:{label:"Nuts and Bolts",description:"You salvage half of the Salvage Value of the Mech Chassis in Scrap of its Tech Level, to a minimum of 1. Everything else is considered destroyed."},cascadeFailure:{label:"Ashes and Dust",description:"The Mech is unsalvageable: its Chassis, Systems and Modules are all considered destroyed."}}),f=i({nailedIt:{description:"Your Union Crawler chugs along for now."},success:{description:"Your Union Crawler loses 5 Structure Points."},toughChoice:{description:"Choose a Bay on your Union Crawler. It becomes Damaged and inoperable. You no longer benefit from any of its functions until it is repaired to the Intact Condition."},failure:{description:"A Bay chosen at random on your Union Crawler is Damaged and inoperable. You no longer benefit from any of its functions until it is repaired to the Intact Condition."},cascadeFailure:{description:"Your Union Crawler loses 5 Structure Points and a Bay chosen at random is Damaged until repaired to the Intact Condition."}}),v=i({nailedIt:{description:"Your Union Crawler survives any significant damage this time."},success:{description:"Your Union Crawler is inoperable and grounded. Its Bays are Intact, but inoperable. You must pay your Union Crawler’s Upkeep Cost in order to repair it to be fully functioning again. Around 10% of your Union Crawler’s population are severely injured or killed."},toughChoice:{description:"Choose a Bay on your Union Crawler. It is Damaged and inoperable. You no longer benefit from any of its functions until it is repaired to the Intact Condition. Around 5% of your Union Crawler’s population are severely injured or killed."},failure:{description:"A Bay chosen at random on your Union Crawler is Damaged and inoperable. You no longer benefit from any of its functions until it is repaired to the Intact Condition. Around 5% of your Union Crawler population are severely injured or die."},cascadeFailure:{description:"Your Union Crawler is Destroyed as a mass series of malfunctions causes it to entirely collapse. Roll on the Union Crawler Destruction Table."}}),S=i({nailedIt:{description:"There is hope. Everyone on board is somewhat battered and bruised, but manages to escape the Union Crawler safely. Your Union Crawler can be rebuilt from the wreckage for its current Upgrade Cost in Scrap of its Tech Level or higher."},success:{description:"The Union Crawler is torn apart. All of its Bays are damaged. Around 25% of the Union Crawler’s population are severely injured or killed. Any Salvager Pilots on board must roll on the Critical Injury Table. The Union Crawler can be rebuilt for its current Upgrade Cost in Scrap of its Tech Level or higher."},toughChoice:{description:"You must choose between saving the Union Crawler population and saving the Union Crawler itself. If you choose the population, the Union Crawler is entirely destroyed and cannot be rebuilt. If you choose the Union Crawler, assume all Bays are damaged. It can be rebuilt for its current Upgrade Cost in Scrap of its Tech Level or higher, but you have to find new people to join it in the wastelands."},failure:{description:"The Union Crawler is destroyed, and the majority of its population are killed or severely injured. The Salvager Pilots must roll on the Critical Injury Table. Any survivors must find a way to rebuild."},cascadeFailure:{description:"The Union Crawler suffers critical damage, goes into a reactor meltdown, and explodes. The Union Crawler is destroyed beyond all recognition. It cannot be rebuilt. Everyone and everything on board and within Medium Range takes 50 Structure Points of damage, and can be assumed destroyed or killed outright."}}),m={["Group Initiative"]:c,["Retreat"]:h,["Critical Damage"]:u,["Critical Injury"]:d,["Reactor Overload"]:p,["Area Salvage"]:g,["Mech Salvage"]:b,["Crawler Deterioration"]:f,["Crawler Damage"]:v,["Crawler Destruction"]:S};var Y={1:"The Mechapult explodes and is destroyed. Deal SP damage equal to 2× the Tech Level of the Scrap to your Mech and everything within Close Range.",2:"The Mechapult overloads collapsing in on itself. Your Mech takes damage equal to the Tech Level of the Scrap and the Mechapult is damaged.",3:"The Mechapult backfires, hitting a random Ally in Range for SP damage equal to the Tech Level of the Scrap.",4:"The Mechapult swings wildly out of control. Your Mech spins in a random direction and hits a random target within Range for SP damage equal to 3× the Tech Level of the Scrap.",5:"Dense slabs of rigid plastics fire from the Mechapult into the ground around you. These act as a barricade protecting your Mech from harm. For the next 10 minutes you may use them as though they were a single Armour Plating System.",6:"A shower of pistons, gears, and mech- anisms scatters across the area wildly. Every target within Long Range, including Allies, takes SP damage equal to the Tech Level of the Scrap.",7:" The Mechapult guzzles up another piece of Scrap and fires them both. A random piece of Scrap your Mech is carrying is loaded onto the Mechapult. Roll on the Mechapult Table twice and resolve both results. If you have no other Scrap, then roll once on the Mechapult Table and resolve the result.",8:"Splat! A wasteland critter was inadvertently caught in the Mechapult when it launched and has smeared gore over the target. The target is hit for Tech Level of the Scrap and must make a Morale Check.",9:"A superheated lump of scrap is fired at the target. The target is hit for SP damage equal to 2× the Tech Level of the Scrap and this attack has the Explosive (X) and Burn (X) Trait where X is the Tech Level of the Scrap. Your Mech gains 2 Heat and must make a Heat Check.",10:"A leaky uranium shell strikes the target. It takes SP damage equal to 3× the Tech Level of the Scrap. The target and the area within Close Range of it becomes Irradiated.",11:"Heavy superconductors charged with electricity arc towards the target. The target and up to three other targets within Medium Range of the target of your choice each take SP damage equal to 2× the Tech Level of the Scrap. Each of these attacks count as having the Ion Trait.",12:"The target is struck by dense coils of wiring looms which wind around it. It takes SP damage equal to 2× the Tech Level of the Scrap and falls Prone.",13:"Streams of superheated gas lash out at the target. The attack deals SP damage equal to the 2× the Tech Level of the Scrap and the attack has the Burn (X) Trait, where X is the Tech Level of the Scrap.",14:"The Mechapult was loaded with crude oil. The target is hit for SP damage equal to 2× the Tech Level of the Scrap and the area around them is coated in slippery, flam- mable oil. This can be ignited and moving within it can cause a Mech or Creature to fall prone.",15:"A chaotic mess of circuit boards hits the target causing a static discharge. The target Mech is Shutdown for one turn.",16:"Shards of refractive glass fire at the target. It is hit for SP damage equal to 2× the Tech Level of the Scrap and the area around the target is hit by multiple rays of dazzling light, blinding the target and everything within Close Range for one round.",17:"A bundle of carbon fibre rods fire at the target. It takes SP damage equal to 3× the Tech Level of the Scrap and is skewered to the ground. It cannot move and gains the Vulnerable Trait until it takes an action to free itself.",18:"The scrap carves through the target flaying chunks off of it. A number of random Systems equal to the Tech Level of the Scrap on the target are damaged. In addition, it takes SP damage equal to the 2× Tech Level of the Scrap",19:"A heavy lump of scrap strikes the target with a devastating blow. The target is hit for SP damage equal to 4× the Tech Level of the Scrap",20:"A dense ball of concentrated scrap hits the target with catastrophic force dealing SP damage equal to 6× the Tech Level of the Scrap."};var C=i({nailedIt:{label:"Nailed It",description:"You have overcome the odds and managed an outstanding success. You may achieve an additional bonus of your choice to the action. When dealing damage, you can choose to double it or pick another appropriate bonus effect."},success:{label:"Success",description:"You have achieved your goal without any compromises. When attacking, you hit the target and deal standard damage."},toughChoice:{label:"Tough Choice",description:"You succeed in your action, but at a cost. The Mediator gives you a Tough Choice with some kind of Setback attached. When attacking, you hit, but must make a Tough Choice."},failure:{label:"Failure",description:"You have failed at what you were attempting to do. You face a Setback of the Mediator’s choice. When attacking, you miss the target."},cascadeFailure:{label:"Cascade Failure",description:"Something has gone terribly wrong. You suffer a severe consequence of the Mediator’s choice. When attacking, you miss the target and suffer a Setback chosen by the Mediator."}}),x={["Core Mechanic"]:C,pc:m,npc:y},r={["Core Mechanic"]:C,["NPC Action"]:n,["Reaction"]:l,["Morale"]:s,["Group Initiative"]:c,["Retreat"]:h,["Critical Damage"]:u,["Critical Injury"]:d,["Reactor Overload"]:p,["Area Salvage"]:g,["Mech Salvage"]:b,["Crawler Deterioration"]:f,["Crawler Damage"]:v,["Crawler Destruction"]:S,["Keepsake"]:P,["Motto"]:k,["Pilot Appearance"]:U,["AI Personality"]:N,["Quirks"]:I,["Mech Appearance"]:R,["Mech Pattern Names"]:F,["Crawler Name"]:A,["Mechapult"]:Y};var L=require("@randsum/roller");var V={1:"Cascade Failure",2:"Failure",3:"Failure",4:"Failure",5:"Failure",6:"Tough Choice",7:"Tough Choice",8:"Tough Choice",9:"Tough Choice",10:"Tough Choice",11:"Success",12:"Success",13:"Success",14:"Success",15:"Success",16:"Success",17:"Success",18:"Success",19:"Success",20:"Nailed It"},D=Object.values(V);function j(e="Core Mechanic"){if(!r[e]){let O=Object.keys(r).join(", ");throw new Error(`Invalid Salvage Union table name: "${e}". Available tables: ${O}`)}let{rolls:a,result:[t],total:o}=K(e);if(!t)throw new Error("Failed to properly roll.");let T=typeof t==="string"?t:t.label,B=typeof t==="string"?"":t.description,q=typeof t==="string"?t:t.hit;return{rolls:a,result:{hit:q,label:T,description:B,table:r[e],tableName:e,roll:o}}}function K(e){let a=r[e],t=X(a)?Object.values(a):D.map((o)=>a[o]);return L.roll({sides:t})}function X(e){return[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20].every((a)=>(a in e))}
//# debugId=621E4C2E84ABB5EB64756E2164756E21