add some of the cards logic

This commit is contained in:
Alberto Xamin 2021-06-15 22:26:34 +02:00
parent 445399d7b3
commit 682a9ed463
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
6 changed files with 36 additions and 26 deletions

View File

@ -341,6 +341,13 @@ def chat_message(sid, msg):
for cn in card_names:
ses.hand.append([c for c in cards if c.name == cn][0])
ses.notify_self()
elif '/getnuggets' in msg:
sio.emit('chat_message', room=ses.game.name, data={'color': f'red','text':f'🚨 {ses.name} is in debug mode and got nuggets'})
import bang.cards as cs
cmd = msg.split()
if len(cmd) == 2:
ses.gold_nuggets += int(cmd[1])
ses.notify_self()
elif '/gameinfo' in msg:
sio.emit('chat_message', room=sid, data={'color': f'','text':f'info: {ses.game.__dict__}'})
elif '/meinfo' in msg:

View File

@ -62,36 +62,37 @@ class CorsaAllOro(ShopCard):
self.icon = '🤑️'
def play_card(self, player, against, _with=None):
if against != None:
pass # termini turno, vita max, poi inizi un nuovo turno
return False
player.lives = player.max_lives
return True
class Rum(ShopCard):
def __init__(self):
super().__init__("Rum", 3, ShopCardKind.BROWN)
self.icon = '🍷️'
def play_card(self, player, against, _with=None):
if against != None:
pass # Estrai 4 carte e ottieni 1 hp per ogni seme diverso
return False
def play_card(self, player, against=None, _with=None):
# Estrai 4 carte e ottieni 1 hp per ogni seme diverso
player.lives = min(player.lives+len({player.game.deck.pick_and_scrap().suit for i in range(4)}), player.max_lives)
return True
class UnionPacific(ShopCard):
def __init__(self):
super().__init__("Union Pacific", 4, ShopCardKind.BROWN)
self.icon = '🚆️'
def play_card(self, player, against, _with=None):
if against != None:
pass # Pesca 4 carte
return False
def play_card(self, player, against=None, _with=None):
player.sio.emit('chat_message', room=player.game.name,
data=f'_UnionPacific|{player.name}|{self.name}')
for i in range(4):
player.hand.append(player.game.deck.draw())
return True
class Calumet(ShopCard):
def __init__(self):
super().__init__("Calumet", 3, ShopCardKind.BLACK)
self.icon = '🚭️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# ti rende immuni ai quadri
@ -100,7 +101,7 @@ class Cinturone(ShopCard):
super().__init__("Cinturone", 2, ShopCardKind.BLACK)
self.icon = '🥡'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# max carte a fine turno 8
@ -109,7 +110,7 @@ class FerroDiCavallo(ShopCard):
super().__init__("Ferro di Cavallo", 2, ShopCardKind.BLACK)
self.icon = '🎠'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# estrai come luky duke
@ -118,7 +119,7 @@ class Piccone(ShopCard):
super().__init__("Piccone", 4, ShopCardKind.BLACK)
self.icon = '⛏️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# peschi una carta in piu a inizio turno
@ -127,7 +128,7 @@ class Ricercato(ShopCard):
super().__init__("Ricercato", 2, ShopCardKind.BLACK)
self.icon = '🤠️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
pass
# la giochi su un altro giocatore, ricompensa di 2 carte e 1 pepita a chi lo uccide
@ -136,7 +137,7 @@ class Setaccio(ShopCard):
super().__init__("Setaccio", 3, ShopCardKind.BLACK)
self.icon = '🥘️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# paghi 1 pepita per pescare 1 carta durante il tuo turno (max 2 volte per turno)
@ -145,7 +146,7 @@ class Stivali(ShopCard):
super().__init__("Stivali", 3, ShopCardKind.BLACK)
self.icon = '🥾️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# peschi una carta ogni volta che vieni ferito
@ -154,7 +155,7 @@ class Talismano(ShopCard):
super().__init__("Talismano", 3, ShopCardKind.BLACK)
self.icon = '🧿'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# ottieni una pepita ogni volta che vieni ferito
@ -163,7 +164,7 @@ class Zaino(ShopCard):
super().__init__("Zaino", 3, ShopCardKind.BLACK)
self.icon = '🎒️'
def play_card(self, player, against, _with=None):
def play_card(self, player, against=None, _with=None):
super().play_card(player, against, _with)
# paga 2 pepite per recuperare 1 vita
@ -187,4 +188,5 @@ def get_cards() -> List[Card]:
]
for c in cards:
c.expansion_icon = '🤑️'
c.expansion = 'gold_rush'
return cards

View File

@ -993,9 +993,10 @@ class Player:
def buy_gold_rush_card(self, index):
print(f'{self.name} wants to buy gr-card index {index} in room {self.game.name}')
card = self.game.deck.shop_cards[index]
card: cs.Card = self.game.deck.shop_cards[index]
if self.pending_action == PendingAction.PLAY and self.gold_nuggets >= card.number:
self.gold_nuggets -= card.number
card.play_card(self)
self.game.deck.shop_deck.append(card)
self.game.deck.shop_cards[index] = None
self.game.deck.fill_gold_rush_shop()

View File

@ -1,5 +1,5 @@
<template>
<div :class="{ card: true, equipment: card.is_equipment, character:card.is_character, back:card.is_back, 'usable-next-turn':card.usable_next_turn, 'must-be-used':card.must_be_used}">
<div :class="{ card: true, equipment: card.is_equipment, character:card.is_character, back:card.is_back, 'usable-next-turn':card.usable_next_turn, 'must-be-used':card.must_be_used, 'gold-rush': card.expansion === 'gold_rush', 'brown':card.kind === 0, 'black':card.kind === 1,}">
<h4>{{cardName}}</h4>
<div class="emoji">{{card.icon}}</div>
<div class="alt_text">{{card.alt_text}}</div>

View File

@ -2,9 +2,9 @@
<div>
<div class="deck">
<card v-if="endTurnAction && isPlaying" :donotlocalize="true" v-show="pending_action == 2" :card="endTurnCard" class="end-turn" @click.native="endTurnAction"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 0" :key="goldRushCards[0].name" :card="goldRushCards[0]" :class="{'gold-rush':true, 'brown':goldRushCards[0].kind === 0, 'black':goldRushCards[0].kind === 1, 'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[0].number}" @click.native="() => {buy_gold_rush_card(0)}"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 1" :key="goldRushCards[1].name" :card="goldRushCards[1]" :class="{'gold-rush':true, 'brown':goldRushCards[1].kind === 0, 'black':goldRushCards[1].kind === 1, 'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[1].number}" @click.native="() => {buy_gold_rush_card(1)}"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 2" :key="goldRushCards[2].name" :card="goldRushCards[2]" :class="{'gold-rush':true, 'brown':goldRushCards[2].kind === 0, 'black':goldRushCards[2].kind === 1, 'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[2].number}" @click.native="() => {buy_gold_rush_card(2)}"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 0" :key="goldRushCards[0].name" :card="goldRushCards[0]" :class="{'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[0].number}" @click.native="() => {buy_gold_rush_card(0)}"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 1" :key="goldRushCards[1].name" :card="goldRushCards[1]" :class="{'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[1].number}" @click.native="() => {buy_gold_rush_card(1)}"/>
<card v-if="goldRushShopOpen && goldRushCards.length > 2" :key="goldRushCards[2].name" :card="goldRushCards[2]" :class="{'cant-play': pending_action !==2 || gold_nuggets < goldRushCards[2].number}" @click.native="() => {buy_gold_rush_card(2)}"/>
<div style="position:relative">
<div class="card gold-rush back" style="position:relative; bottom:-3pt;right:-3pt;"/>
<div class="card gold-rush back" style="position:absolute; bottom:-1.5pt;right:-1.5pt;"/>

View File

@ -20,7 +20,7 @@
<transition-group name="list" tag="div" class="players-table">
<Card v-if="startGameCard" key="_start_game_" :donotlocalize="true" :card="startGameCard" @click.native="startGame"/>
<div v-for="p in playersTable" v-bind:key="p.card.name" style="position:relative;">
<transition-group v-if="p.gold_nuggets && p.gold_nuggets > 0" name="list" tag="div" style="position: absolute;top: -10pt;">
<transition-group v-if="p.gold_nuggets && p.gold_nuggets > 0" name="list" tag="div" style="position: absolute;top: -10pt; font-size:9pt;">
<span v-for="(n, i) in p.gold_nuggets" v-bind:key="i" :alt="i">💵</span>
</transition-group>
<transition-group v-if="p.max_lives && !p.is_ghost" name="list" tag="div" class="tiny-health">