91³Ô¹ÏÍø

Watch CBS News

Colorado Avalanche teams up with "Dungeon Crawler Carl" author Matt Dinniman to support cat rescue

One of the biggest authors in LitRPG is joining the Colorado Avalanche this April for a special fan event during their game against the Vegas Golden Knights.

After the success of the "Fourth Wing Night," the Avs wanted to offer the fans something special. Colorado Avalanche Marketing Director Megan Boyle said that, while the team was looking for options for another book night, goaltender Scott Wedgewood suggested one of his favorite series, "Dungeon Crawler Carl," by Matt Dinniman.

In Dinniman's hit series, the apocalypse will be televised. Readers follow Carl and his ex-girlfriend's cat, Princess Donut, after an alien invasion destroys the Earth, forcing many of the survivors into a sadistic, deadly game show for an intergalactic audience. The video-game like dungeon crawl pits survivors against the clock and numerous challenges as they fight with style, hoping to attract a following and sponsors who can help them survive. But Carl is determined to break them all.

In a Reddit post, Dinniman stated that he has always been a hockey fan.

Dinniman will join the Avs on April 11 to meet fans and raise funds for a good cause. A portion of each ticket will go to support the  in Denver. The nonprofit is a free-roaming shelter that has cared for homeless cats and kittens in the Denver area for over 35 years.

The Standard Ticket Package includes:

  • A co-branded hat featuring Princess Donut
  • A hardcover DCC book with a signed bookplate
  • A ticket to the April 11 game against the Vegas Golden Knights.
colorado-avalanche-matt-dinniman-dungeon-crawler-carl-1.png
Colorado Avalanche and Dungeon Crawler Carl co-branded logo for special merchandise at book night with Matt Dinniman. Colorado Avalanche

VIP packages include these items as well as access to a book signing with Dinniman. Only 100 VIP packages are available.

Tickets go on sale at 10 a.m. on Feb. 3 and are expected to sell quickly. You can fill out a ticket interest form online .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });