characters fix, sheriff visibility
This commit is contained in:
parent
74cfb47347
commit
f7e8897c0e
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user