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()
|
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),
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user