diff --git a/backend/bang/cards.py b/backend/bang/cards.py index 17970d9..e8a09ab 100644 --- a/backend/bang/cards.py +++ b/backend/bang/cards.py @@ -445,7 +445,7 @@ class WellsFargo(Card): def get_starting_deck(expansions:List[str]) -> List[Card]: - from bang.expansions import DodgeCity + from bang.expansions import DodgeCity, TheValleyOfShadows base_cards = [ Barile(Suit.SPADES, 'Q'), Barile(Suit.SPADES, 'K'), @@ -530,5 +530,7 @@ def get_starting_deck(expansions:List[str]) -> List[Card]: ] if 'dodge_city' in expansions: base_cards.extend(DodgeCity.get_cards()) + if 'the_valley_of_shadows' in expansions: + base_cards.extend(TheValleyOfShadows.get_cards()) return base_cards diff --git a/backend/bang/characters.py b/backend/bang/characters.py index 47c66c4..e327a28 100644 --- a/backend/bang/characters.py +++ b/backend/bang/characters.py @@ -145,7 +145,7 @@ class WillyTheKid(Character): self.icon = '🎉' def all_characters(expansions: List[str]): - from bang.expansions import DodgeCity + from bang.expansions import DodgeCity, TheValleyOfShadows base_chars = [ BartCassidy(), BlackJack(), @@ -168,4 +168,6 @@ def all_characters(expansions: List[str]): base_chars.extend(DodgeCity.get_characters()) if 'gold_rush' in expansions: base_chars.extend(GoldRush.get_characters()) + if 'the_valley_of_shadows' in expansions: + base_chars.extend(TheValleyOfShadows.get_characters()) return base_chars \ No newline at end of file diff --git a/backend/bang/expansions/__init__.py b/backend/bang/expansions/__init__.py index 616b8c7..ebae2dd 100644 --- a/backend/bang/expansions/__init__.py +++ b/backend/bang/expansions/__init__.py @@ -13,3 +13,12 @@ class GoldRush(): def get_characters(): from bang.expansions.gold_rush import characters return characters.all_characters() + +class TheValleyOfShadows(): + def get_characters(): + from bang.expansions.the_valley_of_shadows import characters + return characters.all_characters() + + def get_cards(): + from bang.expansions.the_valley_of_shadows import cards + return cards.get_starting_deck() diff --git a/backend/bang/expansions/the_valley_of_shadows/cards.py b/backend/bang/expansions/the_valley_of_shadows/cards.py new file mode 100644 index 0000000..340f509 --- /dev/null +++ b/backend/bang/expansions/the_valley_of_shadows/cards.py @@ -0,0 +1,114 @@ +from bang.cards import * + +class Fantasma(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Fantasma', number, is_equipment=True) + self.icon = '👻️' #porta in vita i giocatori morti ma non + #TODO + +class Lemat(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Lemat', number, is_equipment=True, is_weapon=True, range=1) + self.icon = '🔫' # ogni carta può essere usata come bang + #TODO + +class SerpenteASonagli(Card): + def __init__(self, suit, number): + super().__init__(suit, 'SerpenteASonagli', number, is_equipment=True) + self.need_target = True + self.icon = '🐍️' # Ogni turno pesca se il seme picche -1hp + #TODO + +class Shotgun(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Shotgun', number, is_equipment=True, range=1) + self.icon = '🔫' # Ogni volta che colpisci un giocatore deve scartare una carta + #TODO + +class Taglia(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Taglia', number, is_equipment=True) + self.need_target = True + self.icon = '💰' # chiunque colpisca il giocatore con la taglia pesca una carta dal mazzo, si toglie solo con panico, cat balou, dalton + #TODO + +class UltimoGiro(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Ultimo Giro', number) + self.icon = '🥂' + # self.desc = 'Recupera 1 vita' + # self.desc_eng = 'Regain 1 HP' + self.alt_text = "🍺" + + def play_card(self, player, against, _with=None): + super().play_card(player, against) + player.lives = min(player.lives+1, player.max_lives) + player.notify_self() + return True + +class Tomahawk(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Tomahawk', number, range=2) + self.icon = '🪓️' + self.alt_text = "2🔎 💥" + # "Spara a un giocatore a distanza 2" + self.need_target = True + + def play_card(self, player, against, _with=None): + if against != None: + super().play_card(player, against=against) + player.game.attack(player, against) + return True + return False + +class Sventagliata(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Sventagliata', number) + self.icon = '💕️' + self.alt_text = "💥💥" # spara al target e anche, a uno a distanza 1 dal target + self.need_target = True + + def play_card(self, player, against, _with=None): + if against != None: + #TODO + # super().play_card(player, against=against) + # player.game.attack(player, against) + return True + return False + +class Salvo(Card): + def __init__(self, suit, number): + super().__init__(suit, 'Salvo!', number) + self.icon = '😇️' + self.alt_text = "👤😇️" # spara al target e anche, a uno a distanza 1 dal target + self.need_target = True + + def play_card(self, player, against, _with=None): + if against != None: + #TODO + # super().play_card(player, against=against) + # player.game.attack(player, against) + return True + return False + +def get_starting_deck() -> List[Card]: + cards = [ + Fantasma(Suit.SPADES, 9), + Fantasma(Suit.SPADES, 10), + Lemat(Suit.DIAMONDS, 4), + SerpenteASonagli(Suit.HEARTS, 7), + Shotgun(Suit.SPADES, 'K'), + Taglia(Suit.CLUBS, 9), + UltimoGiro(Suit.DIAMONDS, 8), + Tomahawk(Suit.DIAMONDS, 'A'), + Sventagliata(Suit.SPADES, 2), + Salvo(Suit.HEARTS, 5), + # Bandidos(Suit.DIAMONDS,'Q'), # gli altri giocatori scelgono se scartare 2 carte o perdere 1 punto vita + # Fuga(Suit.HEARTS, 3), # evita l'effetto di carte marroni (tipo panico cat balou) di cui sei bersaglio + # Mira(Suit.CLUBS, 6), # gioca questa con una carta bang, per fare -2hp + # Poker(Suit.HEARTS, 'J'), # tutti gli altri scartano 1 carta a scelta, se non ci sono assi allora pesca 2 dal mazzo + # RitornoDiFiamma(Suit.CLUBS, 'Q'), # un mancato che fa bang + ] + for c in cards: + c.expansion_icon = '👻️' + return cards diff --git a/backend/bang/expansions/the_valley_of_shadows/characters.py b/backend/bang/expansions/the_valley_of_shadows/characters.py new file mode 100644 index 0000000..feebfd1 --- /dev/null +++ b/backend/bang/expansions/the_valley_of_shadows/characters.py @@ -0,0 +1,10 @@ +from typing import List +from bang.characters import * + +def all_characters() -> List[Character]: + cards = [ + + ] + for c in cards: + c.expansion_icon = '👻️' + return cards diff --git a/backend/bang/game.py b/backend/bang/game.py index bb0bc09..32b99a4 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -30,7 +30,7 @@ class Game: self.initial_players = 0 self.password = '' self.expansions: List[str] = [] - self.available_expansions = ['dodge_city', 'fistful_of_cards', 'high_noon', 'gold_rush'] + self.available_expansions = ['dodge_city', 'fistful_of_cards', 'high_noon', 'gold_rush', 'the_valley_of_shadows'] self.shutting_down = False self.is_competitive = False self.disconnect_bot = True