]> git.cworth.org Git - empires-server/blobdiff - empathy.js
empathy: Don't let any player give kudos to themself
[empires-server] / empathy.js
index 01836df853df89760bc33794724d3a51611c4601..d6b007b4bc3ef75d32230cde000917cdacdb7fa4 100644 (file)
@@ -348,8 +348,12 @@ class Empathy extends Game {
     for (let group of word_groups) {
 
       const words = group.words;
-      if (group.kudos)
-        this.kudos[player.name] = [...words];
+      if (group.kudos) {
+        this.kudos[player.name] = {
+          player: player,
+          words: [...words]
+        };
+      }
 
       for (let i = 0; i < words.length - 1; i++) {
         for (let j = i + 1; j < words.length; j++) {
@@ -526,12 +530,16 @@ class Empathy extends Game {
     /* Apply kudos from each player to the word maps, (using a set so
      * that no word_map can get multiple kudos from a single
      * player). */
-    for (let player of Object.keys(this.kudos)) {
-      for (let word of this.kudos[player]) {
+    for (let kudos of Object.values(this.kudos)) {
+      for (let word of kudos.words) {
         const word_canon = this.canonize(word);
         if (! word_maps[word_canon])
           continue;
-        word_maps[word_canon].kudos.add(player);
+        /* Don't let any player give kudos to a group where they
+         * submitted a word themself. That just wouldn't be right. */
+        if (! word_maps[word_canon].players.has(kudos.player)) {
+          word_maps[word_canon].kudos.add(kudos.player);
+        }
       }
     }
 
@@ -611,7 +619,7 @@ class Empathy extends Game {
         return {
           word: group.words.join('/'),
           players: Array.from(group.players).map(p => p.name),
-          kudos: Array.from(group.kudos)
+          kudos: Array.from(group.kudos).map(p => p.name)
         };
       }
     );