Spionen: skærmenes overskrifter følger, hvem der blev fanget
CI / test (push) Successful in 47s

Fra review og QA:
- Telefonen siger "Du slap væk!" til en spion, der ikke selv blev fanget
  (også når den anden spion blev det), "Du gættede ordet!" til den fangede
  spion, der gættede, og agenterne får "I fangede den ene spion", når den
  anden slap.
- Går den eneste spion i runden, siger storskærmen "Spionen forlod
  missionen" og telefonerne "Spionen forlod spillet" i stedet for, at
  spionen vandt (result.spies_left).
- Lighedsstemplet siger "spionerne slipper" med to spioner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
agw
2026-10-20 21:59:59 +02:00
co-authored by Claude Opus 5.5
parent b83a464e24
commit 7a5c37290f
3 changed files with 13 additions and 6 deletions
+1
View File
@@ -81,6 +81,7 @@
var two = phase === 'result-two';
host.result = { spies: two ? ['p2', 'p5'] : ['p2'], spy_names: two ? ['Sus', 'Kasper'] : ['Sus'], word: 'flyvemaskine',
caught: 'p2', guess: { text: 'helikopter', correct: false }, spy_won: false,
spies_left: false,
deltas: two ? { p1: 100, p3: 100, p4: 0, p5: 300, p6: 100, p2: 0 } : { p1: 100, p3: 100, p4: 100, p5: 100, p6: 0, p2: 0 } };
host.deadline = now + 8000;
break;
+10 -5
View File
@@ -103,8 +103,12 @@
};
play.result = function (state, me) {
var r = state.result || {}, mine = (r.deltas || {})[me.id];
var spy = (r.spies || []).indexOf(me.id) >= 0;
var head = me.role === 'audience' ? 'Runden er slut' : spy ? (r.spy_won ? 'Du slap væk!' : 'Du blev fanget!') : (r.spy_won ? 'Spionen vandt' : 'I fangede spionen!');
var spy = (r.spies || []).indexOf(me.id) >= 0, two = (r.spies || []).length > 1;
var guessed = !!(r.caught && r.guess && r.guess.correct);
var head = me.role === 'audience' ? 'Runden er slut'
: r.spies_left ? 'Spionen forlod spillet'
: spy ? (r.caught !== me.id ? 'Du slap væk!' : guessed ? 'Du gættede ordet!' : 'Du blev fanget!') /* om netop dig */
: two && r.caught && !guessed ? 'I fangede den ene spion' : r.spy_won ? (two ? 'Spionerne vandt' : 'Spionen vandt') : 'I fangede spionen!';
return themeTag(state) + big(head, 'Ordet var <b>' + esc(r.word || '') + '</b>' + (mine ? '<br>+' + WPP.fmt(mine) + ' point' : ''), 'res', 'pop');
};
function playStale(state, u) { return false; }
@@ -179,7 +183,7 @@
'<span class="bar"><i></i></span><b>' + c.votes + '</b>' + (aud[c.player_id] ? '<small>+' + aud[c.player_id] + ' publikum</small>' : '') + '</li>';
}).join('');
var shown = verdictRevealed(state);
var stamp = !v.accused ? '<div class="sp-stamp tie" data-k="st:tie">Ingen anklaget: spionen slipper!</div>'
var stamp = !v.accused ? '<div class="sp-stamp tie" data-k="st:tie">Ingen anklaget: ' + (state.spies === 2 ? 'spionerne slipper!' : 'spionen slipper!') + '</div>'
: !shown ? '<div class="sp-stamp wait" data-k="st:wait">Er det spionen?</div>'
: '<div class="sp-stamp ' + (v.accused_is_spy ? 'yes' : 'no') + '" data-k="st:' + (v.accused_is_spy ? 'yes' : 'no') + '">' +
(v.accused_is_spy ? 'SPION!' : 'Uskyldig!') + '</div>';
@@ -202,8 +206,9 @@
return '<li>' + chipOf(players, id) + '<b>+' + WPP.fmt(r.deltas[id]) + '</b></li>';
}).join('');
var two = (r.spies || []).length > 1;
var head = two ? (r.caught && !r.spy_won ? 'En spion er fanget, den anden slap!' : r.caught ? 'Spionen gættede ordet!' : 'Spionerne slap væk!')
: r.spy_won ? 'Spionen vandt runden!' : 'Spionen er fanget!';
var head = r.spies_left ? 'Spionen forlod missionen'
: two ? (r.caught && !r.spy_won ? 'En spion er fanget, den anden slap!' : r.caught ? 'Spionen gættede ordet!' : 'Spionerne slap væk!')
: r.spy_won ? 'Spionen vandt runden!' : 'Spionen er fanget!';
return '<h1 class="sp-h" data-k="h">' + head + '</h1>' +
'<section class="sp-reveal" data-k="rv"><p>' + ((r.spies || []).length > 1 ? 'Spionerne var' : 'Spionen var') + '</p><div class="sp-spies">' + spies + '</div>' +
'<p>Ordet var</p><div class="sp-word big">' + esc(r.word || '') + '</div>' + g + '</section>' +
+2 -1
View File
@@ -473,7 +473,8 @@ class Game:
counts = self._tally(self.votes)
self.result = {"spies": list(self.spies), "spy_names": [self.spy_names.get(s, "?") for s in self.spies],
"word": self.word, "caught": caught, "guess": self.guess,
"spy_won": caught is None or guessed, "deltas": deltas}
"spy_won": caught is None or guessed, "deltas": deltas,
"spies_left": not any(s in self.players for s in self.spies)}
self.phase = "result"
self.deadline = now + RESULT_SECONDS
self._emit("result", spies=[self.spy_names.get(s, "") for s in self.spies], word=self.word,