Close Menu
Truth Republican
  • Home
  • News
  • Politics
  • Business
  • Guns & Gear
  • Healthy Tips
  • Prepping & Survival
  • Videos
Facebook X (Twitter) Instagram
Truth Republican
  • Home
  • News
  • Politics
  • Business
  • Guns & Gear
  • Healthy Tips
  • Prepping & Survival
  • Videos
Newsletter
Truth Republican
You are at:Home»News»Draw Or Holster? Test Your Split-Second Decision Skills
News

Draw Or Holster? Test Your Split-Second Decision Skills

Buddy DoyleBy Buddy DoyleAugust 15, 2025No Comments4 Mins Read
Facebook Twitter Pinterest LinkedIn Tumblr WhatsApp
Draw Or Holster? Test Your Split-Second Decision Skills
Share
Facebook Twitter LinkedIn Pinterest Email

Published August 15, 2025

Think you can spot a threat before it’s too late?

In real life, concealed carriers have only seconds to decide whether to draw their firearm or keep it holstered. This interactive game puts you in realistic, fast-paced scenarios to test your judgment under pressure.

Make the right calls, keep your score high, and see if you can climb the leaderboard. But be careful, because every wrong decision could cost you a life.

Ready? Let’s find out if you’ve got what it takes.

QR code

Scan this with your phone camera


Draw or Holster — Concealed Nation

${cfg.lives} Lives

${secs(cfg.round_time_ms)} / round

`),
section(`

React to real-world style scenarios. Choose Draw only for imminent deadly threats; choose Holster otherwise. Fast, correct answers earn bonuses.

  • Correct: +${cfg.correct_base} • Under ${secs(cfg.speed_bonus_ms)} +${cfg.speed_bonus_points}
  • Wrong: ${cfg.wrong} (${cfg.wrong_obvious} if you mishandle an obvious threat)
  • Timeout: ${cfg.timeout}


`),
section(`

Local Leaderboard

Loading…

`)
);
$(‘#playBtn’).onclick = startGame;
$(‘#howBtn’).onclick = viewHow;
renderLocalLeaderboard();
}

function viewHow(){
screen(
band(`

Train your decision-making

`),
section(`

  1. You have ${secs(cfg.round_time_ms)} per scenario.
  2. Tap Draw for imminent deadly threats.
  3. Tap Holster if force is not justified.
  4. Use cover, assess, and avoid unnecessary escalation.


`)
);
$(‘#backBtn’).onclick = viewHome;
$(‘#playBtn’).onclick = startGame;
}

function startGame(){ score=0; lives=cfg.lives; streak=0; idx=0; list=[…DATA.scenarios].sort(()=>Math.random()-0.5); nextRound(); }

function nextRound(){
if (lives=list.length) return gameOver();
const s = list[idx]; handled=false;

screen(
band(`

Round ${idx+1} / ${list.length}

Score: ${score}

Lives: ${“❤️”.repeat(lives)} (${lives})

Streak: ${streak}

`),
section(`

${s.text}


Difficulty: ${s.difficulty}

⏱ ${secs(cfg.round_time_ms)}

`)
);

$(‘#drawBtn’).onclick = ()=>answer(“draw”);
$(‘#holsterBtn’).onclick = ()=>answer(“holster”);

const total = cfg.round_time_ms;
const start = Date.now(); roundStart=start;
clearInterval(timer);
timer = setInterval(()=>{
if (handled){ clearInterval(timer); return; }
const elapsed = Date.now()-start;
const remain = Math.max(0, total-elapsed);
const bar = $(‘#bar’); if (bar) bar.style.width = (remain/total*100)+”%”;
if (remain===0){ clearInterval(timer); onTimeout(); }
}, 50);
}

function disableButtons(){ const d=$(‘#drawBtn’), h=$(‘#holsterBtn’); if(d) d.disabled=true; if(h) h.disabled=true; }
function onTimeout(){
if (handled) return; handled=true; disableButtons();
const s = list[idx]; score += cfg.timeout; lives=Math.max(0,lives-1); streak=0;
feedback(false, `⏳ Time’s up! ${cfg.timeout} pts. ${s.explanation}`);
}

function answer(choice){
if (handled) return; handled=true; clearInterval(timer); disableButtons();
const s = list[idx]; const ms = Date.now()-roundStart; const correct = (choice===s.correctAction);
let delta=0;
if (correct){ delta+=cfg.correct_base; if (msCorrect ${msWrong • ${delta} pts. ${s.explanation}`;
feedback(correct, msg);
}

function feedback(_ok, msg){
const over = lives

`;
$(‘#nextBtn’).onclick = ()=>{ over ? gameOver() : (idx++, nextRound()); };
}

/* ====== Local leaderboard ====== */
function localKey(){ return “doh_local_leaderboard”; }
function renderLocalLeaderboard(){
const lb = JSON.parse(localStorage.getItem(localKey()) || “[]”).slice(0,10);
const elb = $(‘#lb’);
elb.innerHTML = lb.length
? `

    ${lb.map((r,i)=>`

  1. ${i+1}. ${r.name||”Anon”}${r.score}
  2. `).join(“”)}

`
: “No scores yet. Play a round!”;
}
function postLocalScore(){
const nameKey = “doh_name”;
if (!name){
name = localStorage.getItem(nameKey) || prompt(“Enter a display name for the leaderboard (or leave blank):”) || “Anon”;
localStorage.setItem(nameKey, name);
}
const lb = JSON.parse(localStorage.getItem(localKey()) || “[]”);
lb.push({ name, score, ts: Date.now() });
lb.sort((a,b)=>b.score-a.score);
localStorage.setItem(localKey(), JSON.stringify(lb.slice(0,50)));
const ps = $(‘#postStatus’); if (ps) ps.textContent = “Score saved locally.”;
}

/* ====== Game Over + Sharing (toast + QR modal image) ====== */
function gameOver(){
screen(
band(`
`),
section(`

Local leaderboard (device-wide only).


Challenge your friends to beat your score!






`),
section(`

Local Leaderboard

Loading…

`)
);
$(‘#playBtn’).onclick = startGame;
$(‘#homeBtn’).onclick = viewHome;

postLocalScore();
renderLocalLeaderboard();

const url = pageUrlWithScore(score, name);
const shareText = `I scored ${score} in Concealed Nation’s “Draw or Holster” — can you beat me?`;

$(‘#shareNativeBtn’).onclick = async ()=>{
if (navigator.share) {
try { await navigator.share({ title:”Draw or Holster”, text:shareText, url }); toast(“Shared!”); }
catch(e){}
} else {
await copyToClipboard(url);
}
};
$(‘#copyLinkBtn’).onclick = ()=> copyToClipboard(url);
$(‘#tweetBtn’).onclick = ()=>{ openShare(“https://twitter.com/intent/tweet?text=”+encodeURIComponent(shareText)+”&url=”+encodeURIComponent(url)); toast(“Opening Twitter…”); };
$(‘#fbBtn’).onclick = ()=>{ openShare(“https://www.facebook.com/sharer/sharer.php?u=”+encodeURIComponent(url)); toast(“Opening Facebook…”); };
$(‘#emailBtn’).onclick = ()=>{ location.href = “https://concealednation.org/2025/08/draw-or-holster-test-your-split-second-decision-skills/mailto:?subject=”+encodeURIComponent(“My Draw or Holster score”)+”&body=”+encodeURIComponent(shareText+”nn”+url); };

// QR modal using a hosted generator image (no JS lib)
$(‘#qrBtn’).onclick = ()=>{
const img = $(‘#doh-qr-img’);
img.src = “https://api.qrserver.com/v1/create-qr-code/?size=240×240&data=” + encodeURIComponent(url);
qrModal.classList.add(‘open’);
};
}

/* ====== Helpers to render band/section ====== */
function band(html){ return `

${html}

`; }
function section(html){ return `

${html}

`; }

/* ====== Modal wiring ====== */
$(‘#doh-qr-close’).onclick = ()=> qrModal.classList.remove(‘open’);
qrModal.addEventListener(‘click’, (e)=> { if (e.target === qrModal) qrModal.classList.remove(‘open’); });
$(‘#doh-qr-copy’).onclick = ()=> copyToClipboard(pageUrlWithScore(score, name));
$(‘#doh-qr-share’).onclick = async ()=>{
const url = pageUrlWithScore(score, name);
if (navigator.share) {
try { await navigator.share({ title:”Draw or Holster”, text:`I scored ${score}!`, url }); toast(“Shared!”); }
catch(e){}
} else {
await copyToClipboard(url);
}
};

/* ====== Boot with safety net ====== */
try { viewHome(); }
catch (e) { console.error(e); showError(“Game failed to load: ” + (e && e.message ? e.message : e)); }
})();



Read the full article here

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
Previous ArticleBlue states plan new tax hikes on wealthy residents in response to Trump’s federal tax legislation
Next Article Tariffs Won’t Spawn Good Trade Deals

Related Articles

Former DACA recipient with violent criminal past flees ICE, tries balcony jump during Chicago arrest

Former DACA recipient with violent criminal past flees ICE, tries balcony jump during Chicago arrest

November 8, 2025
Traveling soon? Know how to navigate flight cancellations now

Traveling soon? Know how to navigate flight cancellations now

November 8, 2025
Seattle robber bites off 88-year-old woman’s finger during violent robbery, police say

Seattle robber bites off 88-year-old woman’s finger during violent robbery, police say

November 8, 2025
Crypto founder pardoned by Trump denies having ties to president’s family

Crypto founder pardoned by Trump denies having ties to president’s family

November 8, 2025
Colorado athletic director backs Deion Sanders amid underwhelming season

Colorado athletic director backs Deion Sanders amid underwhelming season

November 8, 2025
Miami-Dade deputy fatally shot during altercation, prompting massive police response

Miami-Dade deputy fatally shot during altercation, prompting massive police response

November 8, 2025
House Dem reveals why she hijacked Speaker Johnson’s presser with viral outburst

House Dem reveals why she hijacked Speaker Johnson’s presser with viral outburst

November 8, 2025
Dodgers’ Alex Vesia reveals death of infant daughter: ‘No words to describe the pain we’re going through’

Dodgers’ Alex Vesia reveals death of infant daughter: ‘No words to describe the pain we’re going through’

November 8, 2025
Raven-Symoné defends Bill Cosby’s legacy despite ‘horrific’ sexual assault accusations from multiple women

Raven-Symoné defends Bill Cosby’s legacy despite ‘horrific’ sexual assault accusations from multiple women

November 7, 2025
Don't Miss
Senate Dems clash over why Sec Duffy is reducing flights and air traffic ahead of Thanksgiving

Senate Dems clash over why Sec Duffy is reducing flights and air traffic ahead of Thanksgiving

Former DACA recipient with violent criminal past flees ICE, tries balcony jump during Chicago arrest

Former DACA recipient with violent criminal past flees ICE, tries balcony jump during Chicago arrest

Supreme Court blocks lower court order forcing Trump administration to fully fund SNAP program

Supreme Court blocks lower court order forcing Trump administration to fully fund SNAP program

Traveling soon? Know how to navigate flight cancellations now

Traveling soon? Know how to navigate flight cancellations now

Latest News
Seattle robber bites off 88-year-old woman’s finger during violent robbery, police say

Seattle robber bites off 88-year-old woman’s finger during violent robbery, police say

November 8, 2025
The Hitchhiker’s Guide to a potential procedrual vote on an interim spending bill

The Hitchhiker’s Guide to a potential procedrual vote on an interim spending bill

November 8, 2025
Crypto founder pardoned by Trump denies having ties to president’s family

Crypto founder pardoned by Trump denies having ties to president’s family

November 8, 2025
Federal judge rules Trump’s Portland National Guard deployment unconstitutional in permanent injunction

Federal judge rules Trump’s Portland National Guard deployment unconstitutional in permanent injunction

November 8, 2025
Colorado athletic director backs Deion Sanders amid underwhelming season

Colorado athletic director backs Deion Sanders amid underwhelming season

November 8, 2025
Copyright © 2025. Truth Republican. All rights reserved.
  • Privacy Policy
  • Terms of use
  • Contact

Type above and press Enter to search. Press Esc to cancel.