Skip to content

Commit

Permalink
feat(GameOptions): Time for the Sheriff to be elected option. Closes #…
Browse files Browse the repository at this point in the history
  • Loading branch information
antoinezanardi committed Apr 26, 2021
1 parent 4e262af commit 8d60404
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 13 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
* [#164](https://github.com/antoinezanardi/werewolves-assistant-web/issues/164) - Fox not powerless if he misses a werewolf option.
* [#165](https://github.com/antoinezanardi/werewolves-assistant-web/issues/165) - Bear Tamer growls if he is infected option.
* [#166](https://github.com/antoinezanardi/werewolves-assistant-web/issues/166) - Number of vote requests for Stuttering Judge option.
* [#167](https://github.com/antoinezanardi/werewolves-assistant-web/issues/167) - Time for the Sheriff to be elected option.
* [#183](https://github.com/antoinezanardi/werewolves-assistant-web/issues/183) - Audio options in parameters modal.
* [#188](https://github.com/antoinezanardi/werewolves-assistant-web/issues/188) - Modal for helping players with roles.

Expand Down
12 changes: 12 additions & 0 deletions src/assets/scss/_vue-select.scss
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,18 @@

.vs--disabled {
background-color: $bg-color;

.vs__deselect {
cursor: not-allowed;
}
}

.vs--disabled .vs__dropdown-toggle,
.vs--disabled .vs__clear,
.vs--disabled .vs__search,
.vs--disabled .vs__selected,
.vs--disabled .vs__open-indicator {
background-color: $bg-color;
}

.vs__dropdown-option--disabled {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ export default {
mark: [
{ header, target: "#game-waiting-label", content: this.$t(`${actionStepsTextPath}.ravenMarksWhen`) },
{ header, target: "#player-targets", content: this.$t(`${actionStepsTextPath}.ravenCanMark`) },
{ header, target: "#player-targets", content: this.$t(`${actionStepsTextPath}.targetWillHavePenalty`) },
{ header, target: "#raven-player-card", content: this.$t(`${actionStepsTextPath}.ravenPointsAtTarget`) },
{ header, target: "#player-targets", content: this.$t(`${actionStepsTextPath}.gameMasterWillDropMarkCard`) },
{ header, target: "#play-submit-button", content: this.$t(`${actionStepsTextPath}.toValidateMark`) },
Expand Down Expand Up @@ -462,6 +463,7 @@ export default {
"choose-card": [
{ header, target: "#game-waiting-label", content: this.$t(`${actionStepsTextPath}.thiefChoosesCardWhen`) },
{ header, target: "#additional-cards", content: this.$t(`${actionStepsTextPath}.thiefCanChooseCard`) },
{ header, target: "#additional-cards", content: this.$t(`${actionStepsTextPath}.thiefMustChooseIfWerewolves`) },
{ header, target: "#play-submit-button", content: this.$t(`${actionStepsTextPath}.toValidateChooseCard`) },
],
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ export default {
} else if (action === "eat" && source.name === "werewolves" && targets[0].isInfected) {
return this.$t(`GameSummaryHistoryPlayLine.actions.vile-father-of-wolves.infect`);
}
return this.$t(`GameSummaryHistoryPlayLine.actions.${source.name}.${action}`);
return this.$tc(`GameSummaryHistoryPlayLine.actions.${source.name}.${action}`, source.players.length);
},
actionSource() {
const { action, source, targets } = this.gameHistoryEntry.play;
Expand All @@ -180,8 +180,8 @@ export default {
targets[0].isInfected.role.current === "pied-piper", this.$t(`${consequencesText}.piedPiperIsInfected`)),
...insertIf(action === "mark" && targets.length,
this.$t(`${consequencesText}.ravenMarked`, { markPenalty: options.roles.raven.markPenalty })),
...insertIf(action === "choose-card" && areAllAdditionalCardsWerewolves(thiefAdditionalCards),
this.$t(`${consequencesText}.thiefMustChooseCard`)),
...insertIf(action === "choose-card" && options.roles.thief.mustChooseBetweenWerewolves &&
areAllAdditionalCardsWerewolves(thiefAdditionalCards), this.$t(`${consequencesText}.thiefMustChooseCard`)),
...insertIf(action === "sniff" && targets.length && targets.some(({ player }) => player.isInWerewolvesSide),
this.$t(`${consequencesText}.foxFoundWerewolf`)),
...insertIf(action === "sniff" && targets.length && targets.every(({ player }) => player.isInVillagersSide &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export default {
return this.$t("CancelActionButton.pleaseChooseSide");
} else if (this.game.isFirstWaitingChooseCardAction) {
if (this.game.isFirstWaitingSkippableAction) {
return this.$t("CancelActionButton.chooseTCardIfNot");
return this.$t("CancelActionButton.chooseCardIfNot");
}
return this.$t("CancelActionButton.pleaseChooseCard");
} else if (this.game.isFirstWaitingSkippableAction) {
Expand Down
6 changes: 4 additions & 2 deletions src/components/shared/Game/PlayField/PlayFieldActionText.vue
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,10 @@ export default {
},
chooseCardActionText() {
if (!this.card) {
const noChosenCardTextKey = this.game.isFirstWaitingSkippableAction ? "no-choose-card" : "choose-card";
return `${this.$t(`PlayFieldActionText.thief.${noChosenCardTextKey}`)}...`;
if (this.game.isFirstWaitingSkippableAction) {
return `${this.$t(`PlayFieldActionText.thief.no-choose-card`)}`;
}
return `${this.$t(`PlayFieldActionText.thief.choose-card`)}...`;
}
return `${this.$t(`PlayFieldActionText.thief.choose-card`)} ${this.$t(`Role.a.${this.card.role}`)}`;
},
Expand Down
5 changes: 3 additions & 2 deletions src/helpers/functions/Game.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@ export function areAllAdditionalCardsWerewolves(additionalCards) {
}

export function isSkippableAction(action, source, game) {
const { additionalCards, aliveVillagerPlayers } = game;
const { additionalCards, aliveVillagerPlayers, options } = game;
const skippableActions = ["use-potion", "mark", "meet-each-other", "ban-voting", "choose-sign", "sniff"];
const areAllVillagersEaten = aliveVillagerPlayers.every(player => player.hasAttribute("eaten"));
return skippableActions.includes(action) ||
action === "eat" && (source === "white-werewolf" || source === "big-bad-wolf" && areAllVillagersEaten) ||
action === "choose-card" && additionalCards && !areAllAdditionalCardsWerewolves(additionalCards);
action === "choose-card" && additionalCards &&
(!options.roles.thief.mustChooseBetweenWerewolves || !areAllAdditionalCardsWerewolves(additionalCards));
}

export function isPreFirstNightPlay(action, turn, phase) {
Expand Down
13 changes: 8 additions & 5 deletions src/plugins/vue-i18n/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -751,7 +751,8 @@
"mark": {
"howToPlay": "Comment joueur le Corbeau ?",
"ravenMarksWhen": "Chaque nuit, s'il est vivant, le Corbeau se réveille.",
"ravenCanMark": "Le Corbeau peut, s'il le souhaite, marquer de sa plume n'importe quel joueur qui lui semble suspect. La personne visée par sa marque se verra attribuer 2 voix supplémentaires lors du prochain vote du village la journée. Il peut se désigner lui-même.",
"ravenCanMark": "Le Corbeau peut, s'il le souhaite, marquer de sa plume n'importe quel joueur qui lui semble suspect. Il peut très bien se désigner lui-même pour brouiller les pistes.",
"targetWillHavePenalty": "La personne visée par sa marque se verra attribuer 2 voix supplémentaires lors du prochain vote du village la journée. Cette pénalité peut être modifiée dans les options de la partie.",
"ravenPointsAtTarget": "S'il souhaite marquer un joueur, le Corbeau doit pointer du doigt sans bruit sa cible.",
"gameMasterWillDropMarkCard": "Le maître du jeu déposera alors la marque du Corbeau devant la personne choisie.",
"toValidateMark": "Durant son tour, le Corbeau peut désigner une cible ou passer son tour."
Expand Down Expand Up @@ -900,8 +901,9 @@
"choose-card": {
"howToPlay": "Comment jouer le Voleur ?",
"thiefChoosesCardWhen": "Au début de la partie, seulement la première nuit, le Voleur se réveille après que le maître du jeu est retourné les cartes qui sont destinées au Voleur.",
"thiefCanChooseCard": "Le Voleur peut, s'il le souhaite, échanger une de ses cartes contre la sienne, et ainsir changer de rôle jusque la fin de la partie. Attention, le Voleur sera obligé de prendre une carte si les deux rôles sont du camp des Loups-Garous.",
"toValidateChooseCard": "Pour passer à la suite, le Voleur peut passer son tour ou obligatoirement prendre une carte si les deux cartes proposées sont dans le camp des Loups-Garous."
"thiefCanChooseCard": "Le Voleur peut, s'il le souhaite, échanger une de ses cartes contre la sienne, et ainsir changer de rôle jusqu'à la fin de la partie.",
"thiefMustChooseIfWerewolves": "Attention, le Voleur sera obligé de prendre une carte si toutes les cartes proposées sont du camp des Loups-Garous. Cette obligation peut être modifiée dans les options de la partie.",
"toValidateChooseCard": "Pour passer à la suite, le Voleur peut passer son tour ou prendre une carte si les règles l'obligent."
}
},
"stuttering-judge": {
Expand Down Expand Up @@ -1089,7 +1091,7 @@
"night": "Nuit",
"actions": {
"werewolves": {
"eat": "ont décidé de manger"
"eat": "a décidé de manger | ont décidé de manger"
},
"big-bad-wolf": {
"eat": "a décidé de manger"
Expand Down Expand Up @@ -1295,7 +1297,8 @@
"chooseTargetIfNot": "Choisissez une cible dans le cas contraire",
"pleaseChooseTarget": "Veuillez choisir une cible",
"pleaseChooseSide": "Veuillez choisir un camp",
"pleaseChooseCard": "Veuillez choisir une carte"
"pleaseChooseCard": "Veuillez choisir une carte",
"chooseCardIfNot": "Choisissez une carte dans le cas contraire"
},
"SelectAllTargetsButton": {
"selectAll": "Tout sélectionner",
Expand Down

0 comments on commit 8d60404

Please sign in to comment.