Skip to content

Commit

Permalink
feat(Game): Game option for no sheriff. Closes #102
Browse files Browse the repository at this point in the history
  • Loading branch information
antoinezanardi committed Jan 31, 2021
1 parent 8ef9ae5 commit 7b2c781
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 20 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* [#96](https://github.com/antoinezanardi/werewolves-assistant-web/issues/96) - Implement the Vile Father Of Wolves role.
* [#99](https://github.com/antoinezanardi/werewolves-assistant-web/issues/99) - Display revealed players
* [#100](https://github.com/antoinezanardi/werewolves-assistant-web/issues/100) - Implement the Ancient role.
* [#102](https://github.com/antoinezanardi/werewolves-assistant-web/issues/102) - Game option for no sheriff.
* [#103](https://github.com/antoinezanardi/werewolves-assistant-web/issues/103) - Implement the Scapegoat role.
* [#104](https://github.com/antoinezanardi/werewolves-assistant-web/issues/104) - Implement the Idiot role.
* [#111](https://github.com/antoinezanardi/werewolves-assistant-web/issues/111) - Add game sides in modal for smaller screens.
Expand Down Expand Up @@ -48,7 +49,7 @@
* `@vue/cli-plugin-vuex` updated to version `4.5.11`.
* `@vue/cli-service` updated to version `4.5.11`.
* `bootstrap` updated to version `4.6.0`.
* `eslint` updated to version `7.18.0`.
* `eslint` updated to version `7.19.0`.
* `eslint-plugin-vue` updated to version `7.5.0`.
* `qs` updated to version `6.9.6`.
* `sass-loader` updated to version `10.1.1`.
Expand Down
12 changes: 6 additions & 6 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@
"@vue/eslint-config-airbnb": "^5.3.0",
"@vue/test-utils": "^1.1.2",
"chai": "^4.1.2",
"eslint": "^7.18.0",
"eslint": "^7.19.0",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-vue": "^7.5.0",
"vue-template-compiler": "^2.6.12"
Expand Down
2 changes: 1 addition & 1 deletion src/classes/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ class Game {
const oneTargetActions = ["look", "eat", "protect", "shoot", "settle-votes", "delegate", "choose-model", "use-potion"];
const twoTargetsActions = ["charm"];
const noLimitActions = ["ban-voting"];
if (oneTargetActions.includes(to)) {
if (oneTargetActions.includes(to) || to === "charm" && this.piedPiperTargets.length === 1) {
return 1;
} else if (twoTargetsActions.includes(to)) {
return 2;
Expand Down
2 changes: 1 addition & 1 deletion src/components/Game/GameContent/GameContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ export default {
}
},
generateGamePhaseEvent() {
if (this.game.tick === 2) {
if (!this.game.options.roles.sheriff.enabled && this.game.tick === 1 || this.game.options.roles.sheriff.enabled && this.game.tick === 2) {
return this.events.push(new GameEvent({ type: "night-falls" }));
} else if (this.game.history.length &&
(this.game.phase !== this.game.history[0].phase || this.game.turn !== this.game.history[0].turn)) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
<template>
<div id="elect-sheriff-play-field">
<PlayerVotes class="h-100" :play="play" @player-votes="playerVotes"/>
<PlayerVotes class="h-100" :play="play" :targetable-players="game.alivePlayers" @player-votes="playerVotes"/>
</div>
</template>

<script>
import { mapGetters } from "vuex";
import PlayerVotes from "@/components/shared/Game/PlayerVotes/PlayerVotes";
export default {
Expand All @@ -16,6 +17,7 @@ export default {
required: true,
},
},
computed: { ...mapGetters("game", { game: "game" }) },
methods: {
playerVotes(vote) {
this.$emit("player-votes", vote);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<script>
import { mapGetters } from "vuex";
import { insertIf } from "@/helpers/functions/Array";
import { getProp } from "@/helpers/functions/Class";
export default {
name: "GamePlayFieldTutorial",
Expand Down Expand Up @@ -46,7 +47,7 @@ export default {
{ header, target: "#werewolf-players", content: this.$t(`GamePlayFieldTutorial.werewolves.eat.werewolvesPointAtVictim`) },
...insertIf(!!vileFatherOfWolvesPlayer && vileFatherOfWolvesPlayer.isAlive, {
header,
target: `#werewolf-player-${vileFatherOfWolvesPlayer._id}`,
target: `#werewolf-player-${getProp(vileFatherOfWolvesPlayer, "_id")}`,
content: this.$t("GamePlayFieldTutorial.werewolves.eat.vileFatherOfWolvesCanInfect"),
}),
...insertIf(!!vileFatherOfWolvesPlayer && vileFatherOfWolvesPlayer.isAlive, {
Expand Down Expand Up @@ -93,17 +94,17 @@ export default {
{ header, target: "#player-votes", content: this.$t("GamePlayFieldTutorial.all.vote.eachPlayerVote") },
...insertIf(!!scapegoatPlayer && scapegoatPlayer.isAlive, {
header,
target: `#player-vote-${scapegoatPlayer._id}`,
target: `#player-vote-${getProp(scapegoatPlayer, "_id")}`,
content: this.$t("GamePlayFieldTutorial.all.vote.scapegoatWillDieIfTie"),
}),
...insertIf(!!idiotPlayer && idiotPlayer.isAlive, {
header,
target: `#player-vote-${idiotPlayer._id}`,
target: `#player-vote-${getProp(idiotPlayer, "_id")}`,
content: this.$t("GamePlayFieldTutorial.all.vote.idiotWillBeForgiven"),
}),
...insertIf(!!ancientPlayer && ancientPlayer.isAlive, {
header,
target: `#player-vote-${ancientPlayer._id}`,
target: `#player-vote-${getProp(ancientPlayer, "_id")}`,
content: this.$t("GamePlayFieldTutorial.all.vote.ancientWillHaveHisRevenge"),
}),
{ header, target: "#vote-play-requirements", content: this.$t("GamePlayFieldTutorial.all.vote.toValidateAVote") },
Expand Down
8 changes: 5 additions & 3 deletions src/components/shared/Game/GameResult/GameResult.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import dead from "@/assets/svg/attributes/dead.svg";
import eaten from "@/assets/svg/attributes/eaten.svg";
import inLove from "@/assets/svg/attributes/in-love.svg";
import villager from "@/assets/svg/roles/villager.svg";
import charmed from "@/assets/svg/attributes/charmed.svg";
export default {
name: "GameResult",
Expand All @@ -24,9 +25,10 @@ export default {
...mapGetters("game", { game: "game" }),
winnersIcon() {
const winners = {
werewolves: eaten,
villagers: villager,
lovers: inLove,
"werewolves": eaten,
"villagers": villager,
"lovers": inLove,
"pied-piper": charmed,
};
return winners[this.game.won.by] ? winners[this.game.won.by] : dead;
},
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/vue-i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,7 @@
"werewolves": "Partie gagnée par le seul Loup-Garou | Partie gagnée par les Loups-Garous",
"villagers": "Partie gagnée par le seul Villageois | Partie gagnée par les Villageois",
"lovers": "Partie gagnée par les Amoureux",
"pied-piper": "Partie gagnée par le Joueur de Flûte",
"nobody": "Match nul ! Aucun survivant dans le village..."
}
},
Expand Down Expand Up @@ -1000,7 +1001,7 @@
"Son but est d'éliminer les Loups-Garous.",
"Ce personnage peut préserver les villageois de la morsure des Loups-Garous... Chaque nuit, le Salvateur est appelé avant les Loups-Garous.",
"Le Salvateur désigne alors un joueur au meneur de jeu. (Il est de tradition que le Salvateur reproduise d'abord avec ses mains la figure dessinée sur la carte).",
"Le joueur ainsi désigné sera protégé sera protégé la nuit durant (et celle-ci seulement) contre les Loups-Garous. Même désigné par eux, il ne sera pas éliminé du jeu.",
"Le joueur ainsi désigné sera protégé la nuit durant (et celle-ci seulement) contre les Loups-Garous. Même désigné par eux, il ne sera pas éliminé du jeu.",
"Le Salvateur a le droit de s'auto-protégé. Il n'a pas le droit de protéger 2 nuits de suite le même joueur.",
"La protection du Salvateur ne donne aucun résultat sur la Petite Fille. (Elle est en pleine crise de préadolescence et rien ne saurait lui éviter d'avoir des ennuis).",
"Le Salvateur ne protège ni du Joueur de Flûte ni de l'infection par l'Infect Père des Loups."
Expand Down Expand Up @@ -1070,7 +1071,7 @@
"big-bad-wolf": [
"Son but est d'éliminer les Villageois.",
"À Thiercelieux, les petits cochons ne sont pas les seuls à redouter le Grand-Méchant-Loup. Il est énorme et son appétit est gigantesque. À cause de lui, des villages entiers furent rayés de la carte !",
"Chaque nuit, il se réveille et dévore avec les autres Loups-Garous. Mais tant qu'aucun Loup-Garou, Chien-Sauvage devenu loup ou Enfant Sauvage ayant perdu son modèle n'est éliminé, il se réveille seul une deuxième fois et dévore une autre victime.",
"Chaque nuit, il se réveille et dévore avec les autres Loups-Garous. Mais tant qu'aucun Loup-Garou, Chien-Loup devenu loup ou Enfant Sauvage ayant perdu son modèle n'est éliminé, il se réveille seul une deuxième fois et dévore une autre victime.",
"Il ne peut pas dévorer de Loup-Garou."
],
"vile-father-of-wolves": [
Expand Down

0 comments on commit 7b2c781

Please sign in to comment.