Merge branch 'dev' into main
This commit is contained in:
commit
25aeee6354
@ -59,7 +59,12 @@ class Card(ABC):
|
||||
self.must_be_used = False
|
||||
|
||||
def play_card(self, player, against=None, _with=None):#self --> carta
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if (player.game.check_event(ce.IlGiudice)) and self.usable_next_turn and not self.can_be_used_now:
|
||||
return False
|
||||
if self.is_equipment:
|
||||
if (player.game.check_event(ce.IlGiudice)):
|
||||
return False
|
||||
if self.is_weapon:
|
||||
has_weapon = False
|
||||
for i in range(len(player.equipment)):
|
||||
@ -98,8 +103,6 @@ class Card(ABC):
|
||||
return Suit.SPADES in accepted
|
||||
return self.suit in accepted
|
||||
|
||||
|
||||
|
||||
class Barile(Card):
|
||||
def __init__(self, suit, number):
|
||||
super().__init__(suit, 'Barile', number, is_equipment=True)
|
||||
@ -146,6 +149,9 @@ class Prigione(Card):
|
||||
self.alt_text = "♥️= 🆓"
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if (player.game.check_event(ce.IlGiudice)):
|
||||
return False
|
||||
if against != None and not isinstance(player.game.get_player_named(against).role, r.Sheriff):
|
||||
self.reset_card()
|
||||
player.sio.emit('chat_message', room=player.game.name,
|
||||
|
@ -149,11 +149,12 @@ class Bibbia(Schivata):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
pass
|
||||
return False
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -170,12 +171,13 @@ class Cappello(Mancato):
|
||||
self.alt_text = "😅"
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
pass
|
||||
return False
|
||||
else:
|
||||
self.reset_card()
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -203,11 +205,12 @@ class Pugnale(Pugno):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
return super().play_card(player, against=against)
|
||||
else:
|
||||
self.reset_card()
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -224,11 +227,12 @@ class Derringer(Pugnale):
|
||||
# self.desc_eng += ' and then draw a card.'
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
player.hand.append(player.game.deck.draw(True))
|
||||
return super().play_card(player, against=against)
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -250,13 +254,14 @@ class Borraccia(Card):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
super().play_card(player, against)
|
||||
player.lives = min(player.lives+1, player.max_lives)
|
||||
player.notify_self()
|
||||
return True
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -273,10 +278,11 @@ class PonyExpress(WellsFargo):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
return super().play_card(player, against)
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -293,10 +299,11 @@ class Howitzer(Gatling):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
return super().play_card(player, against)
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -313,11 +320,12 @@ class CanCan(CatBalou):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
player.sio.emit('chat_message', room=player.game.name, data=f'_play_card_against|{player.name}|{self.name}|{against}')
|
||||
return super().play_card(player, against)
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -336,10 +344,11 @@ class Conestoga(Panico):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
return super().play_card(player, against)
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -356,6 +365,7 @@ class Pepperbox(Bang):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
if against != None:
|
||||
Card.play_card(self, player, against=against)
|
||||
@ -363,7 +373,7 @@ class Pepperbox(Bang):
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
@ -381,6 +391,7 @@ class FucileDaCaccia(Card):
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
import bang.expansions.fistful_of_cards.card_events as ce
|
||||
if self.can_be_used_now:
|
||||
if against != None:
|
||||
super().play_card(player, against=against)
|
||||
@ -388,7 +399,7 @@ class FucileDaCaccia(Card):
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
if not self.is_duplicate_card(player):
|
||||
if not self.is_duplicate_card(player) and not player.game.check_event(ce.IlGiudice):
|
||||
self.reset_card()
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
|
@ -455,7 +455,7 @@ class Game:
|
||||
self.dd_api.Metric.send(metric='player_win', points=[(int(time.time()), 1)], tags=["server:backend", f"host:{os.environ['HOST']}", f"char:{p.character.name}", f"role:{p.role.name}"])
|
||||
p.notify_self()
|
||||
if hasattr(self.sio, 'is_fake'):
|
||||
print('announces_winners(): Running for tests, you will have to pytcall reset manually!')
|
||||
print('announces_winners(): Running for tests, you will have to call reset manually!')
|
||||
return
|
||||
for i in range(5):
|
||||
self.sio.emit('chat_message', room=self.name, data=f'_lobby_reset|{5-i}')
|
||||
|
@ -359,7 +359,7 @@ class Player:
|
||||
self.game.rpc_log.append(f'{self.name};choose;{0}')
|
||||
|
||||
|
||||
def play_turn(self, can_play_vendetta = True, again = False, can_play_again_don_bell=True):
|
||||
def play_turn(self, can_play_vendetta = True, again = False):
|
||||
if (self.lives == 0 or self.is_dead) and not self.is_ghost:
|
||||
return self.end_turn(forced=True)
|
||||
self.scrapped_cards = 0
|
||||
@ -367,7 +367,6 @@ class Player:
|
||||
self.can_play_ranch = True
|
||||
self.is_playing_ranch = False
|
||||
self.can_play_vendetta = can_play_vendetta
|
||||
self.can_play_again_don_bell = can_play_again_don_bell
|
||||
if not again:
|
||||
self.sio.emit('chat_message', room=self.game.name,
|
||||
data=f'_turn|{self.name}')
|
||||
@ -1274,8 +1273,9 @@ class Player:
|
||||
if not forced and self.character.check(self.game, grch.DonBell) and self.can_play_again_don_bell:
|
||||
picked: cs.Card = self.game.deck.pick_and_scrap()
|
||||
self.sio.emit('chat_message', room=self.game.name, data=f'_flipped|{self.name}|{picked.name}|{picked.num_suit()}')
|
||||
self.can_play_again_don_bell = False
|
||||
if picked.check_suit(self.game, [cs.Suit.HEARTS, cs.Suit.DIAMONDS]):
|
||||
self.play_turn(can_play_vendetta=False, can_play_again_don_bell=False)
|
||||
self.play_turn(can_play_vendetta=False)
|
||||
return
|
||||
##Ghost##
|
||||
if self.is_dead and self.is_ghost and self.game.check_event(ceh.CittaFantasma):
|
||||
@ -1285,6 +1285,7 @@ class Player:
|
||||
for i in range(len(self.equipment)):
|
||||
self.game.deck.scrap(self.equipment.pop(), True)
|
||||
self.is_my_turn = False
|
||||
self.can_play_again_don_bell = True
|
||||
self.committed_suit_manette = None
|
||||
self.pending_action = PendingAction.WAIT
|
||||
self.notify_self()
|
||||
|
Loading…
Reference in New Issue
Block a user