diff --git a/party/static/party/spion-fixtures.js b/party/static/party/spion-fixtures.js index 17956a6..4669c1f 100644 --- a/party/static/party/spion-fixtures.js +++ b/party/static/party/spion-fixtures.js @@ -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; diff --git a/party/static/party/spion.js b/party/static/party/spion.js index 9e8d6a0..67b2cda 100644 --- a/party/static/party/spion.js +++ b/party/static/party/spion.js @@ -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 ' + esc(r.word || '') + '' + (mine ? '
+' + WPP.fmt(mine) + ' point' : ''), 'res', 'pop'); }; function playStale(state, u) { return false; } @@ -179,7 +183,7 @@ '' + c.votes + '' + (aud[c.player_id] ? '+' + aud[c.player_id] + ' publikum' : '') + ''; }).join(''); var shown = verdictRevealed(state); - var stamp = !v.accused ? '
Ingen anklaget: spionen slipper!
' + var stamp = !v.accused ? '
Ingen anklaget: ' + (state.spies === 2 ? 'spionerne slipper!' : 'spionen slipper!') + '
' : !shown ? '
Er det spionen?
' : '
' + (v.accused_is_spy ? 'SPION!' : 'Uskyldig!') + '
'; @@ -202,8 +206,9 @@ return '
  • ' + chipOf(players, id) + '+' + WPP.fmt(r.deltas[id]) + '
  • '; }).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 '

    ' + head + '

    ' + '

    ' + ((r.spies || []).length > 1 ? 'Spionerne var' : 'Spionen var') + '

    ' + spies + '
    ' + '

    Ordet var

    ' + esc(r.word || '') + '
    ' + g + '
    ' + diff --git a/spionen/engine.py b/spionen/engine.py index a79fb2a..5f55d88 100644 --- a/spionen/engine.py +++ b/spionen/engine.py @@ -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,