stations and train info

This commit is contained in:
Alberto Xamin 2023-05-08 18:28:46 +02:00 committed by Alberto Xamin
parent f716a96334
commit 9d5ac5b166
6 changed files with 273 additions and 9 deletions

View File

@ -24,7 +24,7 @@ class StationCard:
player.lives -= 1 player.lives -= 1
card = player.hand.pop(card_index) card = player.hand.pop(card_index)
player.game.deck.scrap(card, True, player=player) player.game.deck.scrap(card, True, player=player)
player.hand.append(self.attached_train) player.equipment.append(self.attached_train)
self.attached_train = None self.attached_train = None
player.pending_action = pl.PendingAction.PLAY player.pending_action = pl.PendingAction.PLAY
@ -284,7 +284,7 @@ class VirginiaTown(StationCard):
self.price = [{}, {}] self.price = [{}, {}]
def check_price(self, player: "Player"): def check_price(self, player: "Player"):
if super().check_price(player) and len(player.hand < 2): if super().check_price(player) and len(player.hand) < 2:
return False return False
player.set_choose_action( player.set_choose_action(
"choose_buy_train", "choose_buy_train",

View File

@ -339,6 +339,7 @@ export default {
} }
.cant-play { .cant-play {
filter: brightness(0.5); filter: brightness(0.5);
cursor: not-allowed;
} }
.expansion { .expansion {
position: absolute; position: absolute;

View File

@ -12,7 +12,8 @@
</div> </div>
</div> </div>
<div v-if="currentStations.length > 0" class="deck" :style="`position:relative;border: 2px dashed #6a6a6a42;border-radius:8pt;align-items: flex-end;flex-direction:row;`" > <div v-if="currentStations.length > 0" class="deck" :style="`position:relative;border: 2px dashed #6a6a6a42;border-radius:8pt;align-items: flex-end;flex-direction:row;`" >
<station-card @click.native="()=>{buyTrain(i)}" v-for="station, i in currentStations" :key="station.name" :card="station" :price="station.price" :trainPiece="trainPieceForStation(i)"/> <station-card @click.native="()=>{buyTrain(i)}" v-for="station, i in currentStations" :key="station.name" :card="station" :price="station.price" :trainPiece="trainPieceForStation(i)"
@pointerenter.native="()=>{setStationDesc(i)}" @pointerleave.native="stationDesc = null"/>
</div> </div>
<div v-if="eventCard" style="position:relative"> <div v-if="eventCard" style="position:relative">
<div class="card fistful-of-cards" style="position:relative; bottom:-3pt;right:-3pt;"/> <div class="card fistful-of-cards" style="position:relative; bottom:-3pt;right:-3pt;"/>
@ -41,15 +42,14 @@
</div> </div>
<transition name="list"> <transition name="list">
<p v-if="eventCard" class="center-stuff"><b>{{eventDesc}}</b></p> <p v-if="eventCard" class="center-stuff"><b>{{eventDesc}}</b></p>
</transition>
<transition name="list">
<p v-if="eventCardWildWestShow && !eventCardWildWestShow.back" class="center-stuff">🎪 <b>{{eventDescWildWestShow}}</b> 🎪</p> <p v-if="eventCardWildWestShow && !eventCardWildWestShow.back" class="center-stuff">🎪 <b>{{eventDescWildWestShow}}</b> 🎪</p>
</transition>
<transition name="list">
<div v-if="goldRushDesc"> <div v-if="goldRushDesc">
<p class="center-stuff">🤑 <i>{{$t(`cards.${goldRushDesc.name}.desc`)}}</i> 🤑</p> <p class="center-stuff">🤑 <i>{{$t(`cards.${goldRushDesc.name}.desc`)}}</i> 🤑</p>
<p class="center-stuff">🤑 <b>{{goldRushDesc.number - gold_rush_discount}} 💵</b> 🤑</p> <p class="center-stuff">🤑 <b>{{goldRushDesc.number - gold_rush_discount}} 💵</b> 🤑</p>
</div> </div>
<div v-if="stationDesc">
<p class="center-stuff"><i>{{stationDesc}}</i></p>
</div>
</transition> </transition>
<div style="margin-bottom:6pt;margin-bottom: 6pt;display: flex;flex-direction: column;"> <div style="margin-bottom:6pt;margin-bottom: 6pt;display: flex;flex-direction: column;">
<button class="btn" v-if="pending_action == 2 && can_gold_rush_discard" @click="$socket.emit('gold_rush_discard')">{{$t('gold_rush_discard')}}</button> <button class="btn" v-if="pending_action == 2 && can_gold_rush_discard" @click="$socket.emit('gold_rush_discard')">{{$t('gold_rush_discard')}}</button>
@ -93,6 +93,7 @@ export default {
goldRushCards: [], goldRushCards: [],
gold_nuggets: 0, gold_nuggets: 0,
goldRushDesc: null, goldRushDesc: null,
stationDesc: null,
can_gold_rush_discard: false, can_gold_rush_discard: false,
gold_rush_discount: 0, gold_rush_discount: 0,
currentStations: [], currentStations: [],
@ -210,6 +211,14 @@ export default {
setGoldRushDesc(card) { setGoldRushDesc(card) {
this.goldRushDesc = card this.goldRushDesc = card
}, },
setStationDesc(index) {
console.log('setStationDesc', index)
this.stationDesc = this.$t(`cards.${this.currentStations[index].name}.desc`)
const trainPiece = this.trainPieceForStation(index)
if (trainPiece) {
this.stationDesc += '\n\n🚂' + this.$t(`cards.${trainPiece.name}.desc`)
}
},
}, },
mounted() { mounted() {
if (window.innerWidth < 1000) { if (window.innerWidth < 1000) {

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<div class="stationcard"> <div :class="{stationcard:true, 'cant-play':!trainPiece || trainPiece.is_locomotive}">
<h4>{{ cardName }}</h4> <h4>{{ cardName }}</h4>
<div :class="{ emoji: true, bottomed: card.avatar }">{{ emoji }}</div> <div :class="{ emoji: true, bottomed: card.avatar }">{{ emoji }}</div>
<div class="alt_text">{{ card.alt_text }}</div> <div class="alt_text">{{ card.alt_text }}</div>
@ -8,7 +8,7 @@
<card v-for="c, i in price" :key="i" :card="c"/> <card v-for="c, i in price" :key="i" :card="c"/>
</div> </div>
</div> </div>
<card v-if="trainPiece" class="train-piece" :card="trainPiece" /> <card v-if="trainPiece" :card="trainPiece" :class="{'cant-play':trainPiece.is_locomotive}"/>
</div> </div>
</template> </template>
@ -117,4 +117,10 @@ export default {
.train-piece { .train-piece {
margin: 6pt; margin: 6pt;
} }
.cant-play {
cursor: not-allowed;
}
.stationcard .card {
cursor: unset;
}
</style> </style>

View File

@ -855,6 +855,130 @@
"Wild West Show": { "Wild West Show": {
"name": "Wild West Show", "name": "Wild West Show",
"desc": "The goal for each player becomes: \"Be the last one standing!\"" "desc": "The goal for each player becomes: \"Be the last one standing!\""
},
"Boom Town": {
"name": "Boom Town",
"desc": "Discard a Bang! to rob the train"
},
"Caticor": {
"name": "Caticor",
"desc": "Discard a Cat Balou or Panico to rob the train"
},
"Creepy Creek": {
"name": "Creepy Creek",
"desc": "Discard a card of spades to rob the train"
},
"Crowns Hole": {
"name": "Crown's Hole",
"desc": "Discard a beer to rob the train"
},
"Deadwood": {
"name": "Deadwood",
"desc": "Discard an equipment card to rob the train"
},
"Dodgeville": {
"name": "Dodgeville",
"desc": "Discard a Missed! to rob the train"
},
"Fort Worth": {
"name": "Fort Worth",
"desc": "Discard a card with number 10, J, Q, K, A to rob the train"
},
"Frisco": {
"name": "Frisco",
"desc": "Discard a card of clubs to rob the train"
},
"Miners Oath": {
"name": "Miner's Oath",
"desc": "Discard a card of diamonds to rob the train"
},
"San Tafe": {
"name": "San Tafe",
"desc": "Discard a card of hearts to rob the train"
},
"Tombrock": {
"name": "Tombrock",
"desc": "Lose 1 life point to rob the train"
},
"Yooma": {
"name": "Yooma",
"desc": "Discard a card with number between 2 and 9 to rob the train"
},
"Virginia Town": {
"name": "Virginia Town",
"desc": "Discard two cards to rob the train"
},
"Ironhorse": {
"name": "Ironhorse",
"desc": "Each player, including the one who activated the effect, is targeted by a BANG!\nNo player is responsible for any loss of life points.\nIf all players are eliminated at the same time, the Outlaws win."
},
"Leland": {
"name": "Leland",
"desc": "LOCOMOTIVE: perform the effect of the Emporium, starting with the current player and proceeding clockwise."
},
"Baggage Car": {
"name": "Baggage Car",
"desc": "Discard this card to gain the effect of a Missed!, Panic!, Cat Balou, or an extra BANG! card."
},
"Caboose": {
"name": "Caboose",
"desc": "To discard one of your blue-bordered cards, include a car as if it were a Missed!"
},
"Cattle Truck": {
"name": "Cattle Truck",
"desc": "Discard this card to look at the top 3 cards of the discard pile and choose 1 to add to your hand."
},
"Circus Wagon": {
"name": "Circus Wagon",
"desc": "Discard this card. Each other player must discard a card that he has in play."
},
"Coal Hopper": {
"name": "Coal Hopper",
"desc": "Discard this card to draw a card and discard a car in play in front of any player of your choice."
},
"Dining Car": {
"name": "Dining Car",
"desc": "At the beginning of your turn, \"draw!\": if it's Hearts, regain 1 life point."
},
"Express Car": {
"name": "Express Car",
"desc": "Discard all your hand cards and take another turn."
},
"Ghost Car": {
"name": "Ghost Car",
"desc": "Play it on any player except the Sheriff. If you are eliminated, you remain in play, but cannot look at or lose any life points."
},
"Lounge Car": {
"name": "Lounge Car",
"desc": "Discard this card to draw 2 cards from the deck and put 1 of them in play in front of you and 1 in front of another player."
},
"Lumber Flatcar": {
"name": "Lumber Flatcar",
"desc": "Play this card on any player (including yourself). While this card is in play, that player sees all other players at a distance increased by 1."
},
"Mail Car": {
"name": "Mail Car",
"desc": "Discard this card to draw 3 cards and give 1 of them to another player of your choice."
},
"Observation Car": {
"name": "Observation Car",
"desc": "You see other players at a distance reduced by 1. Other players see you at a distance increased by 1."
},
"Passenger Car": {
"name": "Passenger Car",
"desc": "Discard this card to draw a card (from hand or in play) from another player."
},
"Prisoner Car": {
"name": "Prisoner Car",
"desc": "Duel and Indians! cards played by other players have no effect on you."
},
"Private Car": {
"name": "Private Car",
"desc": "If you have no cards in hand, you cannot be targeted by BANG! cards."
},
"Sleeper Car": {
"name": "Sleeper Car",
"desc": "Once per turn, you may discard another of your blue-bordered cards in play."
} }
}, },
"help": { "help": {

View File

@ -855,6 +855,130 @@
"Wild West Show": { "Wild West Show": {
"name": "Wild West Show", "name": "Wild West Show",
"desc": "L'obiettivo di ogni giocatore diventa: \"Rimani l'ultimo in gioco!\"" "desc": "L'obiettivo di ogni giocatore diventa: \"Rimani l'ultimo in gioco!\""
},
"Boom Town": {
"name": "Boom Town",
"desc": "Scarta una Bang! per derubare il treno"
},
"Caticor": {
"name": "Caticor",
"desc": "Scarta una Cat Balou o un Panico per derubare il treno"
},
"Creepy Creek": {
"name": "Creepy Creek",
"desc": "Scarta una carta di picche per derubare il treno"
},
"Crowns Hole": {
"name": "Crown's Hole",
"desc": "Scarta una birra per derubare il treno"
},
"Deadwood": {
"name": "Deadwood",
"desc": "Scarta una carta equipaggiamento per derubare il treno"
},
"Dodgeville": {
"name": "Dodgeville",
"desc": "Scarta un Mancato! per derubare il treno"
},
"Fort Worth": {
"name": "Fort Worth",
"desc": "Scarta una carta con il numero 10, J, Q, K, A per derubare il treno"
},
"Frisco": {
"name": "Frisco",
"desc": "Scarta una carta di fiori per derubare il treno"
},
"Miners Oath": {
"name": "Miner's Oath",
"desc": "Scarta una carta di quadri per derubare il treno"
},
"San Tafe": {
"name": "San Tafe",
"desc": "Scarta una carta di cuori per derubare il treno"
},
"Tombrock": {
"name": "Tombrock",
"desc": "Per derubare il treno, perdi 1 punto vita"
},
"Yooma": {
"name": "Yooma",
"desc": "Scarta una carta con un numero compreso tra 2 e 9 per derubare il treno"
},
"Virginia Town": {
"name": "Virginia Town",
"desc": "Scarta due carte per derubare il treno"
},
"Ironhorse": {
"name": "Ironhorse",
"desc": "LOCOMOTIVA: Ogni giocatore, incluso colui che ha attivato l'effetto, è bersaglio di un BANG!\nNessun giocatore è responsabile dell'eventuale perdita di punti vita.\nSe tutti i giocatori vengono eliminati allo stesso tempo, i Fuorilegge vincono."
},
"Leland": {
"name": "Leland",
"desc": "LOCOMOTIVA: svolgi l'effetto dell'Emporio, cominciando dal giocatore di turno e procedendo in senso orario."
},
"Baggage Car": {
"name": "Baggage Car",
"desc": "Scartalo: ottieni l'effetto di un Mancato!, Panico!, Cat Balou o di un BANG! extra.\nDiscard this for a Missed!Panic!, Cat Balou, or an extra BANG!"
},
"Caboose": {
"name": "Caboose",
"desc": "Pro scartare un aura tua carta bordo bin incuso un vagone come se fosse un Mancato!"
},
"Cattle Truck": {
"name": "Cattle Truck",
"desc": "Scartalo: guarda le 3 carte in cima agli scarti e pescane I"
},
"Circus Wagon": {
"name": "Circus Wagon",
"desc": "Scartalo: ogni altro giocatore deve scartare una carta che ha in gioco."
},
"Coal Hopper": {
"name": "Coal Hopper",
"desc": "Scartalo: pesca una carta e scarta un vagone in gioco davanti a un giocatore a ma scelta."
},
"Dining Car": {
"name": "Dining Car",
"desc": "A inizio turno, \"estrai!\": se è Cnori, recuperi I punto vita."
},
"Express Car": {
"name": "Express Car",
"desc": "Scarta tutte le carte in mano, poi gioca un altro turno"
},
"Ghost Car": {
"name": "Ghost Car",
"desc": "Giocalo su chiunque tranne lo Sceritfo. Se vieni eliminato, invece resti in gioco, ma non puol guada nare ne perdere punk vita."
},
"Lounge Car": {
"name": "Lounge Car",
"desc": "Scartalo: pesca 2 vagoni dal mazzo, mettine I in gioco di fronte a te e 1 di fronte a un altro giocatore."
},
"Lumber Flatcar": {
"name": "Lumber Flatcar",
"desc": "Giocalo su un qualsiasi giocatore (compreso te). Finché questa carta è in gioco, quel giocatore vede gli altri giocatori a distanza aumentata di 1."
},
"Mail Car": {
"name": "Mail Car",
"desc": "Scartalo: pesca 3 carte e dai 1 di esse a un altro giocatore a tua scelta."
},
"Observation Car": {
"name": "Observation Car",
"desc": "Tu vedi gli altri a distanza -1. Gli altri a vedono a distanza +1."
},
"Passenger Car": {
"name": "Passenger Car",
"desc": "Scartalo: pesca una carta (in mano o in gioco) da un altro giocatore"
},
"Prisoner Car": {
"name": "Prisoner Car",
"desc": "Le carte Duello e Indiani! giocate dagli altri giocatori non hanno effetto su di te."
},
"Private Car": {
"name": "Private Car",
"desc": "se non hai carte in mano. non puoi essere bersaelio di carte BANG"
},
"Sleeper Car": {
"name": "Sleeper Car",
"desc": "Una volta per turno, puoi scartare un'altra tua carta a bordo blu incluso."
} }
}, },
"help": { "help": {