The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
4/8
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
The Guild's Leather Dice Pouch & Tray
4/8

The Guild's Leather Dice Pouch & Tray

$19.99
$39.99
ColorDouble Dragon
Please select a color
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

Take your game session anywhere with this handy leather dice pouch and tray!

Handmade with genuine leather,  this drawstring dice pouch is designed to be easily unfolded to create a dice tray on the go, and to be folded back up into a bag when you're done. A clasp makes it easy to secure the strings to your liking.

Durable cowhide is used, allowing players to use them for years to come. The soft inner lining protects your dice from damage when rolling, while the tray design prevents them from flying off the table. 

Or, you can choose to use the bag for other uses, such as holding coins, keys and other small items. The drawstring and clasp design secures the pouch, and a leather loop allows the pouch to be hung from a belt or bag,

The perfect accessory for any LARPer or tabletop adventurer!