Klokken er 07:43. Du er it-ansvarlig i virksomheden.
Databaseserverne opfører sig underligt. Store mængder data overføres eksternt.
Du har 30 sekunder per beslutning. Ét forkert valg kan koste alt.
⌛ 6 scenarier💥 Game over ved kritiske fejl📊 Score til sidst
`;
}
function playSceneGlitch(el,done){
sndAlarm();
const gc=['\u2588','\u2593','\u2592','\u2591','?','!','#','@','$','%'];
const glitchSeed='ALARM - AKTIVT DATABRUD';
el.textContent=glitchSeed;el.style.color='#FF5E00';el.style.fontWeight='800';
let n=0;
const iv=setInterval(()=>{
if(!el.isConnected){clearInterval(iv);return;}
if(n++>10){clearInterval(iv);el.textContent='';el.style.color='';el.style.fontWeight='';if(done)done();return;}
el.textContent=[...glitchSeed].map(c=>Math.random()<.4 function startgame scenario renderscenario var cw="CHAR_W,ch=CHAR_H;" document.getelementbyid class="hdr">
Scene ${sc.prog}
\u26A1 ${S.score} point
`;
startAnim('art',sc.art);
const nEl=document.getElementById('narr');
const startTypewriter=()=>{
typewrite(nEl,sc.narrative,22,()=>{
const qEl=document.getElementById('qtext');if(!qEl)return;
qEl.style.opacity='1';
typewrite(qEl,sc.question,28,()=>{
showChoices(sc);
startTimer(sc.timer||30,()=>timerExpired(sc));
});
});
};
if(sc.id==='scene_1'){playSceneGlitch(nEl,startTypewriter);}
else{startTypewriter();}
}
function showChoices(sc){
const el=document.getElementById('choices');if(!el)return;
el.innerHTML=sc.choices.map((c,i)=>``).join('');
setTimeout(()=>el.classList.add('show'),50);
}
function pick(idx){
const sc=scene(S.scene);if(!sc)return;
stopTimer();
document.querySelectorAll('.choice').forEach(b=>b.disabled=true);
const c=sc.choices[idx];
S.score+=c.points||0;
if(c.kind!=='good')S.mistakes++;
const slEl=document.getElementById('score-live');
if(slEl)slEl.textContent='\u26A1 '+S.score+' point';
if(c.kind==='gameover'){flash('red');shake();sndBad();setTimeout(()=>go(c.next),900);return;}
if(c.kind==='good'){flash('green');sndGood();}
else if(c.kind==='ok'||c.kind==='bad'){sndOk();}
if(c.tip)showInlineFeedback(c.tip,c.kind==='good'?'good':c.kind==='bad'?'bad':'ok');
S.feedbackNext=c.next;
}
function timerExpired(sc){
const safe=sc.choices.filter(c=>c.kind!=='gameover').sort((a,b)=>(a.points||0)-(b.points||0));
if(!safe.length)return;
const worst=safe[0];
S.score+=Math.floor((worst.points||0)/2);S.mistakes++;
const slEl=document.getElementById('score-live');
if(slEl)slEl.textContent='\u26A1 '+S.score+' point';
flash('red');shake();sndBad();
showInlineFeedback('Du reagerede ikke i tide. Systemet valgte automatisk: "'+worst.text+'". Halvdelen af pointene for dette svar er fratrukket.','bad','\u231B Tid udl\u00F8bet!');
S.feedbackNext=worst.next;
}
// ── GAME OVER ────────────────────────────────────────────────
function renderGameOver(sc){
var cw=CHAR_W,ch=CHAR_H;
var artKey=sc.art||'disaster';
document.getElementById('screen').innerHTML=`
💀 ${sc.title}
${sc.text}
Hvad burde du have gjort?${sc.lesson}
`;
drawFrame(document.getElementById('art-go'),artKey,0);
flash('red');shake();sndBad();
}
function restart(){S.score=0;S.mistakes=0;go('intro');}
// ── END ──────────────────────────────────────────────────────
function renderEnd(){
const max=120,score=S.score,mistakes=S.mistakes||0;
let text;
if(score>=100){text='Imponerende. Du reagerede hurtigt, metodisk og korrekt i n\u00E6sten alle situationer. Virksomheden stod st\u00E6rkt.';}
else if(score>=70){text='Solidt h\u00E5ndteret med enkelte huller. De fleste virksomheder ville klare sig, men der er plads til forbedring.';}
else if(score>=40){text='Du undgik katastrofen, men begik fejl undervejs med potentielt store konsekvenser. Din beredskabsplan tr\u00E6nger til et eftersyn.';}
else{text='Angrebet fik lov til at eskalere un\u00F8digt. Det er tid til at tage it-sikkerhed alvorligt - inden det sker i virkeligheden.';}
const mistakeNote=mistakes===0?' Ingen fejl!':mistakes===1?' 1 fejl undervejs.':' '+mistakes+' fejl undervejs.';
document.getElementById('screen').innerHTML=`
Simulation afsluttet
Er din virksomhed forberedt?
${text}${mistakeNote}
F\u00E5 en gratis gennemgang af jeres beredskab
Vores eksperter gennemg\u00E5r jeres it-sikkerhedsberedskab og giver konkrete anbefalinger.