fix rissa
This commit is contained in:
parent
f985d84483
commit
4bed4484b5
@ -75,12 +75,18 @@ class Rissa(CatBalou):
|
|||||||
|
|
||||||
def play_card(self, player, against, _with):
|
def play_card(self, player, against, _with):
|
||||||
if _with != None:
|
if _with != None:
|
||||||
players_with_cards = [p.name for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0]
|
if len([p.name for p in player.game.players if p != player and (len(p.hand)+len(p.equipment)) > 0]) == 0:
|
||||||
if len(players_with_cards) == 0:
|
|
||||||
return False
|
return False
|
||||||
|
#se sono qui vuol dire che ci sono giocatori con carte in mano oltre a me
|
||||||
|
self.rissa_targets = []
|
||||||
|
target = player.game.get_player(player.name, next=True)
|
||||||
|
while target != player:
|
||||||
|
if len(target.hand) + len(target.equipment) > 0:
|
||||||
|
self.rissa_target.append(target)
|
||||||
|
target = player.game.get_player(target.name, next=True)
|
||||||
player.game.deck.scrap(_with)
|
player.game.deck.scrap(_with)
|
||||||
player.event_type = 'rissa'
|
player.event_type = 'rissa'
|
||||||
super().play_card(player, against=players_with_cards[0])
|
super().play_card(player, against=self.rissa_targets.pop(0))
|
||||||
player.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}')
|
player.sio.emit('chat_message', room=player.game.name, data=f'_play_card|{player.name}|{self.name}')
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
@ -396,7 +396,9 @@ class Game:
|
|||||||
{'name':nextPlayer.name,'cards': self.available_cards}, default=lambda o: o.__dict__))
|
{'name':nextPlayer.name,'cards': self.available_cards}, default=lambda o: o.__dict__))
|
||||||
nextPlayer.notify_self()
|
nextPlayer.notify_self()
|
||||||
|
|
||||||
def get_player_named(self, name:str):
|
def get_player_named(self, name:str, next=False):
|
||||||
|
if next:
|
||||||
|
return self.players[(self.players_map[name]+1) % len(self.players)]
|
||||||
return self.players[self.players_map[name]]
|
return self.players[self.players_map[name]]
|
||||||
|
|
||||||
def responders_did_respond_resume_turn(self, did_lose=False):
|
def responders_did_respond_resume_turn(self, did_lose=False):
|
||||||
|
@ -61,6 +61,7 @@ class Player:
|
|||||||
self.target_p: str = None
|
self.target_p: str = None
|
||||||
self.is_drawing = False
|
self.is_drawing = False
|
||||||
self.special_use_count = 0
|
self.special_use_count = 0
|
||||||
|
self.rissa_targets = []
|
||||||
self.committed_suit_manette = None
|
self.committed_suit_manette = None
|
||||||
self.not_chosen_character = None
|
self.not_chosen_character = None
|
||||||
try:
|
try:
|
||||||
@ -657,7 +658,7 @@ class Player:
|
|||||||
def choose(self, card_index):
|
def choose(self, card_index):
|
||||||
if self.pending_action != PendingAction.CHOOSE:
|
if self.pending_action != PendingAction.CHOOSE:
|
||||||
return
|
return
|
||||||
if self.target_p and self.target_p != '': # panico, cat balou
|
if self.target_p and self.target_p != '': # panico, cat balou, rissa
|
||||||
target = self.game.get_player_named(self.target_p)
|
target = self.game.get_player_named(self.target_p)
|
||||||
card = None
|
card = None
|
||||||
if (target.name == self.name):
|
if (target.name == self.name):
|
||||||
@ -672,15 +673,13 @@ class Player:
|
|||||||
self.hand.append(card)
|
self.hand.append(card)
|
||||||
else:
|
else:
|
||||||
self.game.deck.scrap(card, True)
|
self.game.deck.scrap(card, True)
|
||||||
if self.event_type != 'rissa' or (self.event_type == 'rissa' and (len([p.name for p in self.game.get_alive_players() if p != self and (len(p.hand)+len(p.equipment)) > 0]) == 0 or self.target_p == [p.name for p in self.game.get_alive_players() if p != self and (len(p.hand)+len(p.equipment)) > 0][-1])):
|
if self.event_type != 'rissa' or len(self.rissa_targets) == 0:
|
||||||
self.event_type = ''
|
self.event_type = ''
|
||||||
self.target_p = ''
|
self.target_p = ''
|
||||||
self.choose_action = ''
|
self.choose_action = ''
|
||||||
self.pending_action = PendingAction.PLAY
|
self.pending_action = PendingAction.PLAY
|
||||||
else:
|
else:
|
||||||
self.target_p = self.game.players[(self.game.players_map[self.target_p]+1)%len(self.game.players)].name
|
self.target_p = self.rissa_targets.pop(0).name
|
||||||
while self.target_p == self.name or len(self.game.players[self.game.players_map[self.target_p]].hand) + len(self.game.players[self.game.players_map[self.target_p]].equipment) == 0:
|
|
||||||
self.target_p = self.game.players[(self.game.players_map[self.target_p]+1)%len(self.game.players)].name
|
|
||||||
self.notify_self()
|
self.notify_self()
|
||||||
elif self.choose_text == 'choose_ricercato':
|
elif self.choose_text == 'choose_ricercato':
|
||||||
player = self.game.get_player_named(self.available_cards[card_index]['name'])
|
player = self.game.get_player_named(self.available_cards[card_index]['name'])
|
||||||
|
Loading…
Reference in New Issue
Block a user