fix distance with sight_mod card
also handled the hangover event
This commit is contained in:
parent
767febb512
commit
1c95327b83
@ -713,11 +713,10 @@ class Game:
|
||||
pls = self.get_alive_players()
|
||||
if len(pls) == 0 or player not in pls: return []
|
||||
i = pls.index(player)
|
||||
sight = player.get_sight()
|
||||
mindist = 99 if not self.check_event(ce.Agguato) else 1
|
||||
return [{
|
||||
'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,
|
||||
'max_lives': pls[j].max_lives,
|
||||
'is_sheriff': isinstance(pls[j].role, roles.Sheriff),
|
||||
|
@ -1145,9 +1145,11 @@ class Player:
|
||||
if self.mancato_needed <= 0:
|
||||
self.attacker = None
|
||||
|
||||
def get_sight(self, countWeapon=True):
|
||||
def get_sight(self, countWeapon=True): #come vedo io gli altri
|
||||
if not self.character:
|
||||
return 0
|
||||
if self.game.check_event(ce.Lazo):
|
||||
return 1 + self.character.sight_mod
|
||||
aim = 0
|
||||
range = 0
|
||||
for card in self.equipment:
|
||||
@ -1155,19 +1157,18 @@ class Player:
|
||||
range += card.range
|
||||
else:
|
||||
aim += card.sight_mod
|
||||
if self.game.check_event(ce.Lazo):
|
||||
return 1 + self.character.sight_mod
|
||||
return max(1, range) + aim + self.character.sight_mod
|
||||
return max(1,range) + aim + (self.character.sight_mod if not self.game.check_event(ceh.Sbornia) else 0)
|
||||
|
||||
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:
|
||||
return 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):
|
||||
return self.character.visibility_mod
|
||||
return ch_vis_mod
|
||||
for card in self.equipment:
|
||||
covers += card.vis_mod
|
||||
return self.character.visibility_mod + covers
|
||||
return ch_vis_mod + covers
|
||||
|
||||
def scrap(self, card_index):
|
||||
if self.is_my_turn or self.character.check(self.game, chars.SidKetchum):
|
||||
@ -1230,9 +1231,9 @@ class Player:
|
||||
return True
|
||||
elif isinstance(card, cs.Mancato) or (card.need_with and len(self.hand) < 2):
|
||||
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
|
||||
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
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user