pugnale
This commit is contained in:
parent
0a50379447
commit
c69e599554
@ -178,6 +178,21 @@ class Sombrero(Cappello):
|
||||
self.name = 'Sombrero'
|
||||
self.icon = '👒'
|
||||
|
||||
class Pugnale(Pugno):
|
||||
def __init__(self, suit, number):
|
||||
super().__init__(suit, number)
|
||||
self.name = 'Pugnale'
|
||||
self.icon = '🗡'
|
||||
self.usable_next_turn = True
|
||||
self.can_be_used_now = False
|
||||
|
||||
def play_card(self, player, against, _with=None):
|
||||
if self.can_be_used_now:
|
||||
return super().play_card(player, against=against)
|
||||
else:
|
||||
player.equipment.append(self)
|
||||
return True
|
||||
|
||||
def get_starting_deck() -> List[Card]:
|
||||
return [
|
||||
#TODO: aggiungere anche le carte normalmente presenti https://bang.dvgiochi.com/cardslist.php?id=3
|
||||
@ -212,5 +227,5 @@ def get_starting_deck() -> List[Card]:
|
||||
PlaccaDiFerro(Suit.DIAMONDS, 'A'),
|
||||
PlaccaDiFerro(Suit.SPADES, 'Q'),
|
||||
Sombrero(Suit.CLUBS, 7),
|
||||
|
||||
Pugnale(Suit.HEARTS, 8),
|
||||
]
|
||||
|
@ -249,22 +249,27 @@ class Player:
|
||||
return s
|
||||
|
||||
def play_card(self, hand_index: int, against=None, _with=None):
|
||||
if not (0 <= hand_index < len(self.hand)):
|
||||
if not (0 <= hand_index < len(self.hand) + len(self.equipment)):
|
||||
print('illegal')
|
||||
return
|
||||
card: cs.Card = self.hand.pop(hand_index)
|
||||
card: cs.Card = self.hand.pop(hand_index) if hand_index < len(self.hand) else self.equipment.pop(hand_index-len(self.hand))
|
||||
withCard: cs.Card = None
|
||||
if _with != None:
|
||||
withCard = self.hand.pop(_with) if hand_index > _with else self.hand.pop(_with - 1)
|
||||
print(self.name, 'is playing ', card, ' against:', against, ' with:', _with)
|
||||
did_play_card = card.play_card(self, against, withCard)
|
||||
if not card.is_equipment:
|
||||
if not card.is_equipment and not card.usable_next_turn:
|
||||
if did_play_card:
|
||||
self.game.deck.scrap(card)
|
||||
else:
|
||||
self.hand.insert(hand_index, card)
|
||||
if withCard:
|
||||
self.hand.insert(_with, withCard)
|
||||
elif card.usable_next_turn and card.can_be_used_now:
|
||||
if did_play_card:
|
||||
self.game.deck.scrap(card)
|
||||
else:
|
||||
self.equipment.insert(hand_index-len(self.hand), card)
|
||||
self.notify_self()
|
||||
|
||||
def choose(self, card_index):
|
||||
|
@ -12,7 +12,9 @@
|
||||
<span v-for="(n, i) in (max_lives-lives)" v-bind:key="n" :alt="i">💀</span>
|
||||
</transition-group>
|
||||
<transition-group v-if="lives > 0" name="list" tag="div" style="margin: 0 0 0 10pt; display:flex;">
|
||||
<Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card" @pointerenter.native="desc=card.desc" @pointerleave.native="desc=''" />
|
||||
<Card v-for="card in equipment" v-bind:key="card.name+card.number" :card="card"
|
||||
@pointerenter.native="desc=card.desc" @pointerleave.native="desc=''"
|
||||
@click.native="play_card(card, true)" />
|
||||
</transition-group>
|
||||
</div>
|
||||
<transition name="list">
|
||||
@ -22,7 +24,7 @@
|
||||
<span>{{$t('hand')}}</span>
|
||||
<transition-group name="list" tag="div" class="hand">
|
||||
<Card v-for="card in hand" v-bind:key="card.name+card.number" :card="card"
|
||||
@click.native="play_card(card)"
|
||||
@click.native="play_card(card, false)"
|
||||
@pointerenter.native="hint=card.desc" @pointerleave.native="hint=''"/>
|
||||
</transition-group>
|
||||
</div>
|
||||
@ -223,7 +225,9 @@ export default {
|
||||
scrap(c) {
|
||||
this.$socket.emit('scrap', this.hand.indexOf(c))
|
||||
},
|
||||
play_card(card) {
|
||||
play_card(card, from_equipment) {
|
||||
if (from_equipment && (!card.usable_next_turn || !card.can_be_used_now)) return;
|
||||
else if (card.usable_next_turn && !card.can_be_used_now) return this.really_play_card(card, null);
|
||||
let calamity_special = (card.name === 'Mancato!' && this.character.name === 'Calamity Janet')
|
||||
let cant_play_bang = (this.has_played_bang && this.equipment.filter(x => x.name == 'Volcanic').length == 0)
|
||||
if (this.pending_action == 2) {
|
||||
@ -276,8 +280,13 @@ export default {
|
||||
this.card_with = null
|
||||
},
|
||||
really_play_card(card, against) {
|
||||
let res = this.hand.indexOf(card)
|
||||
if (res === -1) {
|
||||
res = this.equipment.indexOf(card)
|
||||
if (res !== -1) res += this.hand.length
|
||||
}
|
||||
let card_data = {
|
||||
index: this.hand.indexOf(card),
|
||||
index: res,
|
||||
against: against,
|
||||
with: this.hand.indexOf(this.card_with) > -1 ? this.hand.indexOf(this.card_with):null,
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user