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