add cards of valley of shadows

This commit is contained in:
Alberto Xamin 2021-02-08 12:12:31 +01:00
parent 63515c1d5f
commit f6e8d193af
6 changed files with 140 additions and 3 deletions

View File

@ -445,7 +445,7 @@ class WellsFargo(Card):
def get_starting_deck(expansions:List[str]) -> List[Card]: def get_starting_deck(expansions:List[str]) -> List[Card]:
from bang.expansions import DodgeCity from bang.expansions import DodgeCity, TheValleyOfShadows
base_cards = [ base_cards = [
Barile(Suit.SPADES, 'Q'), Barile(Suit.SPADES, 'Q'),
Barile(Suit.SPADES, 'K'), Barile(Suit.SPADES, 'K'),
@ -530,5 +530,7 @@ def get_starting_deck(expansions:List[str]) -> List[Card]:
] ]
if 'dodge_city' in expansions: if 'dodge_city' in expansions:
base_cards.extend(DodgeCity.get_cards()) base_cards.extend(DodgeCity.get_cards())
if 'the_valley_of_shadows' in expansions:
base_cards.extend(TheValleyOfShadows.get_cards())
return base_cards return base_cards

View File

@ -145,7 +145,7 @@ class WillyTheKid(Character):
self.icon = '🎉' self.icon = '🎉'
def all_characters(expansions: List[str]): def all_characters(expansions: List[str]):
from bang.expansions import DodgeCity from bang.expansions import DodgeCity, TheValleyOfShadows
base_chars = [ base_chars = [
BartCassidy(), BartCassidy(),
BlackJack(), BlackJack(),
@ -168,4 +168,6 @@ def all_characters(expansions: List[str]):
base_chars.extend(DodgeCity.get_characters()) base_chars.extend(DodgeCity.get_characters())
if 'gold_rush' in expansions: if 'gold_rush' in expansions:
base_chars.extend(GoldRush.get_characters()) base_chars.extend(GoldRush.get_characters())
if 'the_valley_of_shadows' in expansions:
base_chars.extend(TheValleyOfShadows.get_characters())
return base_chars return base_chars

View File

@ -13,3 +13,12 @@ class GoldRush():
def get_characters(): def get_characters():
from bang.expansions.gold_rush import characters from bang.expansions.gold_rush import characters
return characters.all_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()

View File

@ -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

View File

@ -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

View File

@ -30,7 +30,7 @@ class Game:
self.initial_players = 0 self.initial_players = 0
self.password = '' self.password = ''
self.expansions: List[str] = [] 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.shutting_down = False
self.is_competitive = False self.is_competitive = False
self.disconnect_bot = True self.disconnect_bot = True