characters fix, sheriff visibility

This commit is contained in:
Alberto Xamin 2020-11-23 11:58:33 +01:00
parent 74cfb47347
commit f7e8897c0e
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
4 changed files with 25 additions and 17 deletions

View File

@ -5,9 +5,9 @@ class Character(ABC):
super().__init__() super().__init__()
self.name = name self.name = name
self.max_lives = max_lives self.max_lives = max_lives
self.sight_mod = 0 self.sight_mod = sight_mod
self.visibility_mod = 0 self.visibility_mod = visibility_mod
self.pick_mod = 0 self.pick_mod = pick_mod
self.desc = desc self.desc = desc
self.icon = '🤷‍♂️' self.icon = '🤷‍♂️'
self.number = ''.join(['❤️']*self.max_lives) self.number = ''.join(['❤️']*self.max_lives)

View File

@ -70,16 +70,6 @@ class Game:
self.players[i].notify_self() self.players[i].notify_self()
self.play_turn() 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): def attack_others(self, attacker:Player):
attacker.pending_action = players.PendingAction.WAIT attacker.pending_action = players.PendingAction.WAIT
attacker.notify_self() attacker.notify_self()
@ -217,6 +207,17 @@ class Game:
if died_in_his_turn: if died_in_his_turn:
self.next_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): def notify_all(self):
data = [{ data = [{
'name': p.name, 'name': p.name,
@ -231,7 +232,6 @@ class Game:
self.sio.emit('players_update', room=self.name, data=data) self.sio.emit('players_update', room=self.name, data=data)
# game = Game() # game = Game()
# p1 = players.Player('p1') # p1 = players.Player('p1')
# game.add_player(p1) # game.add_player(p1)

View File

@ -313,7 +313,7 @@ class Player:
def get_banged(self, attacker): def get_banged(self, attacker):
self.attacker = 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') print('Cant defend')
self.take_damage_response() self.take_damage_response()
return False return False

View File

@ -65,6 +65,7 @@ export default {
win_status: undefined, win_status: undefined,
range: 1, range: 1,
sight: 1, sight: 1,
can_target_sheriff: true,
show_role: false, show_role: false,
}), }),
sockets: { sockets: {
@ -103,11 +104,17 @@ export default {
computed:{ computed:{
visiblePlayers() { visiblePlayers() {
this.range; 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 { return {
name: player.name, name: player.name,
number: player.dist !== undefined ? `${player.dist}` : '', number: player.dist !== undefined ? `${player.dist}` : '',
icon: '🤠', icon: player.is_sheriff ? '⭐' : '🤠',
is_character: true, is_character: true,
}}) }})
}, },
@ -150,6 +157,7 @@ export default {
this.range = this.sight this.range = this.sight
else else
this.range = 999 this.range = 999
this.can_target_sheriff = (card.name !== 'Prigione')
if (this.visiblePlayers.length == 0 && this.hand.length > this.lives) { if (this.visiblePlayers.length == 0 && this.hand.length > this.lives) {
this.really_play_card(card, null) this.really_play_card(card, null)
} }