fix distance with sight_mod card

also handled the hangover event
This commit is contained in:
Giulio 2022-03-02 23:15:32 +01:00
parent 767febb512
commit 1c95327b83
2 changed files with 11 additions and 11 deletions

View File

@ -713,11 +713,10 @@ class Game:
pls = self.get_alive_players() pls = self.get_alive_players()
if len(pls) == 0 or player not in pls: return [] if len(pls) == 0 or player not in pls: return []
i = pls.index(player) i = pls.index(player)
sight = player.get_sight()
mindist = 99 if not self.check_event(ce.Agguato) else 1 mindist = 99 if not self.check_event(ce.Agguato) else 1
return [{ return [{
'name': pls[j].name, 'name': pls[j].name,
'dist': min([abs(i - j), (i+ abs(j-len(pls))), (j+ abs(i-len(pls))), mindist]) + pls[j].get_visibility() - (player.get_sight(countWeapon=False)-1), 'dist': min([abs(i - j), (i+ abs(j-len(pls))), (j+ abs(i-len(pls))), mindist]) + pls[j].get_visibility(),
'lives': pls[j].lives, 'lives': pls[j].lives,
'max_lives': pls[j].max_lives, 'max_lives': pls[j].max_lives,
'is_sheriff': isinstance(pls[j].role, roles.Sheriff), 'is_sheriff': isinstance(pls[j].role, roles.Sheriff),

View File

@ -1145,9 +1145,11 @@ class Player:
if self.mancato_needed <= 0: if self.mancato_needed <= 0:
self.attacker = None self.attacker = None
def get_sight(self, countWeapon=True): def get_sight(self, countWeapon=True): #come vedo io gli altri
if not self.character: if not self.character:
return 0 return 0
if self.game.check_event(ce.Lazo):
return 1 + self.character.sight_mod
aim = 0 aim = 0
range = 0 range = 0
for card in self.equipment: for card in self.equipment:
@ -1155,19 +1157,18 @@ class Player:
range += card.range range += card.range
else: else:
aim += card.sight_mod aim += card.sight_mod
if self.game.check_event(ce.Lazo): return max(1,range) + aim + (self.character.sight_mod if not self.game.check_event(ceh.Sbornia) else 0)
return 1 + self.character.sight_mod
return max(1, range) + aim + self.character.sight_mod
def get_visibility(self): def get_visibility(self): #come mi vedono gli altri
if not self.character or not self.game or not self.game.players[self.game.turn].character: if not self.character or not self.game or not self.game.players[self.game.turn].character:
return 0 return 0
covers = 0 covers = 0
ch_vis_mod = self.character.visibility_mod if not self.game.check_event(ceh.Sbornia) else 0
if self.game.check_event(ce.Lazo) or self.game.players[self.game.turn].character.check(self.game, chd.BelleStar): if self.game.check_event(ce.Lazo) or self.game.players[self.game.turn].character.check(self.game, chd.BelleStar):
return self.character.visibility_mod return ch_vis_mod
for card in self.equipment: for card in self.equipment:
covers += card.vis_mod covers += card.vis_mod
return self.character.visibility_mod + covers return ch_vis_mod + covers
def scrap(self, card_index): def scrap(self, card_index):
if self.is_my_turn or self.character.check(self.game, chars.SidKetchum): if self.is_my_turn or self.character.check(self.game, chars.SidKetchum):
@ -1230,9 +1231,9 @@ class Player:
return True return True
elif isinstance(card, cs.Mancato) or (card.need_with and len(self.hand) < 2): elif isinstance(card, cs.Mancato) or (card.need_with and len(self.hand) < 2):
return True return True
elif isinstance(card, cs.Panico) and len([p for p in self.game.get_visible_players(self) if 1 >= p['dist']]) == 0 and len(self.equipment) == 0: elif isinstance(card, cs.Panico) and len([p for p in self.game.get_visible_players(self) if self.get_sight(False) >= p['dist']]) == 0 and len(self.equipment) == 0:
return True return True
elif isinstance(card, csd.Pugno) and len([p for p in self.game.get_visible_players(self) if 1 >= p['dist']]) == 0: elif isinstance(card, csd.Pugno) and len([p for p in self.game.get_visible_players(self) if self.get_sight(False) >= p['dist']]) == 0:
return True return True
elif isinstance(card, cs.Prigione) and len([p for p in self.game.get_visible_players(self) if not p['is_sheriff']]) == 0: elif isinstance(card, cs.Prigione) and len([p for p in self.game.get_visible_players(self) if not p['is_sheriff']]) == 0:
return True return True