From f7e8897c0e18c7fc0f22285832fa610742ad71a2 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Mon, 23 Nov 2020 11:58:33 +0100 Subject: [PATCH] characters fix, sheriff visibility --- backend/characters.py | 6 +++--- backend/game.py | 22 +++++++++++----------- backend/players.py | 2 +- frontend/src/components/Player.vue | 12 ++++++++++-- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/backend/characters.py b/backend/characters.py index 62a186a..345ef53 100644 --- a/backend/characters.py +++ b/backend/characters.py @@ -5,9 +5,9 @@ class Character(ABC): super().__init__() self.name = name self.max_lives = max_lives - self.sight_mod = 0 - self.visibility_mod = 0 - self.pick_mod = 0 + self.sight_mod = sight_mod + self.visibility_mod = visibility_mod + self.pick_mod = pick_mod self.desc = desc self.icon = '🤷‍♂️' self.number = ''.join(['❤️']*self.max_lives) diff --git a/backend/game.py b/backend/game.py index bfe5527..b777d3f 100644 --- a/backend/game.py +++ b/backend/game.py @@ -70,16 +70,6 @@ class Game: self.players[i].notify_self() self.play_turn() - def get_visible_players(self, player:Player): - i = self.players.index(player) - sight = player.get_sight() - return [{ - 'name': self.players[j].name, - 'dist': min(abs(i - j), (i+ abs(j-len(self.players))), (j+ abs(i-len(self.players)))) + self.players[j].get_visibility(), - 'lives': self.players[j].lives, - 'max_lives': self.players[j].max_lives, - } for j in range(len(self.players)) if i != j] - def attack_others(self, attacker:Player): attacker.pending_action = players.PendingAction.WAIT attacker.notify_self() @@ -217,6 +207,17 @@ class Game: if died_in_his_turn: self.next_turn() + def get_visible_players(self, player:Player): + i = self.players.index(player) + sight = player.get_sight() + return [{ + 'name': self.players[j].name, + 'dist': min(abs(i - j), (i+ abs(j-len(self.players))), (j+ abs(i-len(self.players)))) + self.players[j].get_visibility(), + 'lives': self.players[j].lives, + 'max_lives': self.players[j].max_lives, + 'is_sheriff': isinstance(self.players[j].role, roles.Sheriff), + } for j in range(len(self.players)) if i != j] + def notify_all(self): data = [{ 'name': p.name, @@ -231,7 +232,6 @@ class Game: self.sio.emit('players_update', room=self.name, data=data) - # game = Game() # p1 = players.Player('p1') # game.add_player(p1) diff --git a/backend/players.py b/backend/players.py index 51db0c2..c1a824a 100644 --- a/backend/players.py +++ b/backend/players.py @@ -313,7 +313,7 @@ class Player: def get_banged(self, attacker): self.attacker = attacker - if len([c for c in self.hand if isinstance(c, cards.Mancato)]) == 0 and len([c for c in self.equipment if isinstance(c, cards.Barile)]) == 0: + if len([c for c in self.hand if isinstance(c, cards.Mancato)]) == 0 and len([c for c in self.equipment if isinstance(c, cards.Barile)]) == 0 and not isinstance(self.character, characters.Jourdonnais): print('Cant defend') self.take_damage_response() return False diff --git a/frontend/src/components/Player.vue b/frontend/src/components/Player.vue index f0ced57..34a332f 100644 --- a/frontend/src/components/Player.vue +++ b/frontend/src/components/Player.vue @@ -65,6 +65,7 @@ export default { win_status: undefined, range: 1, sight: 1, + can_target_sheriff: true, show_role: false, }), sockets: { @@ -103,11 +104,17 @@ export default { computed:{ visiblePlayers() { this.range; - return this.playersDistances.filter(x=> x.dist <= this.range).map(player => { + + return this.playersDistances.filter(x => { + if (!this.can_target_sheriff && x.is_sheriff) + return false + else + return x.dist <= this.range + }).map(player => { return { name: player.name, number: player.dist !== undefined ? `${player.dist}⛰` : '', - icon: '🤠', + icon: player.is_sheriff ? '⭐' : '🤠', is_character: true, }}) }, @@ -150,6 +157,7 @@ export default { this.range = this.sight else this.range = 999 + this.can_target_sheriff = (card.name !== 'Prigione') if (this.visiblePlayers.length == 0 && this.hand.length > this.lives) { this.really_play_card(card, null) }