add info about which card is attacking you

This commit is contained in:
Alberto Xamin 2022-12-28 13:38:40 +00:00
parent f9d2d48d8a
commit cc8cd52c6b
5 changed files with 22 additions and 13 deletions

View File

@ -226,7 +226,7 @@ class Bang(Card):
player.has_played_bang = True if not player.game.check_event(ceh.Sparatoria) else player.bang_used > 1
if player.character.check(player.game, chars.WillyTheKid):
player.has_played_bang = False
player.game.attack(player, against, double=player.character.check(player.game, chars.SlabTheKiller))
player.game.attack(player, against, double=player.character.check(player.game, chars.SlabTheKiller), card_name=self.name)
return True
return False
@ -350,7 +350,7 @@ class Gatling(Card):
def play_card(self, player, against, _with=None):
super().play_card(player, against=against)
player.game.attack_others(player)
player.game.attack_others(player, card_name=self.name)
return True
@ -385,7 +385,7 @@ class Mancato(Card):
data=f'_special_calamity|{player.name}|{self.name}|{against}')
player.bang_used += 1
player.has_played_bang = True if not player.game.check_event(ceh.Sparatoria) else player.bang_used > 1
player.game.attack(player, against)
player.game.attack(player, against, card_name=self.name)
return True
return False

View File

@ -25,7 +25,7 @@ class Pugno(Card):
def play_card(self, player, against, _with=None):
if against != None:
super().play_card(player, against=against)
player.game.attack(player, against)
player.game.attack(player, against, card_name=self.name)
return True
return False
@ -106,7 +106,7 @@ class SpringField(Card):
if against != None and _with != None:
player.game.deck.scrap(_with)
super().play_card(player, against=against)
player.game.attack(player, against)
player.game.attack(player, against, card_name=self.name)
return True
return False
@ -367,7 +367,7 @@ class Pepperbox(Bang):
if self.can_be_used_now:
if against != None:
Card.play_card(self, player, against=against)
player.game.attack(player, against)
player.game.attack(player, against, card_name=self.name)
return True
return False
else:
@ -392,7 +392,7 @@ class FucileDaCaccia(Card):
if self.can_be_used_now:
if against != None:
super().play_card(player, against=against)
player.game.attack(player, against)
player.game.attack(player, against, card_name=self.name)
return True
return False
else:

View File

@ -303,7 +303,7 @@ class Game:
self.players[i].notify_self()
self.notify_event_card()
def attack_others(self, attacker: pl.Player):
def attack_others(self, attacker: pl.Player, card_name:str=None):
self.attack_in_progress = True
attacker.pending_action = pl.PendingAction.WAIT
attacker.notify_self()
@ -311,7 +311,7 @@ class Game:
self.ready_count = 0
for p in self.get_alive_players():
if p != attacker:
if p.get_banged(attacker=attacker):
if p.get_banged(attacker=attacker, card_name=card_name):
self.waiting_for += 1
p.notify_self()
if self.waiting_for == 0:
@ -339,8 +339,8 @@ class Game:
if self.pending_winners and not self.someone_won:
return self.announces_winners()
def attack(self, attacker: pl.Player, target_username:str, double:bool=False):
if self.get_player_named(target_username).get_banged(attacker=attacker, double=double):
def attack(self, attacker: pl.Player, target_username:str, double:bool=False, card_name:str=None):
if self.get_player_named(target_username).get_banged(attacker=attacker, double=double, card_name=card_name):
self.ready_count = 0
self.waiting_for = 1
attacker.pending_action = pl.PendingAction.WAIT

View File

@ -57,6 +57,7 @@ class Player:
self.on_failed_response_cb = None
self.event_type: str = None
self.expected_response = []
self.attacking_card = None
self.attacker: Player = None
self.target_p: str = None
self.is_drawing = False
@ -960,8 +961,9 @@ class Player:
self.on_failed_response_cb = self.take_no_damage_response
self.notify_self()
def get_banged(self, attacker, double=False, no_dmg=False, card_index=None):
def get_banged(self, attacker, double=False, no_dmg=False, card_index=None, card_name=None):
self.attacker = attacker
self.attacking_card = card_name
print(f'attacker -> {attacker}')
self.mancato_needed = 1 if not double else 2
if card_index != None:
@ -1016,6 +1018,7 @@ class Player:
def get_indians(self, attacker):
self.attacker = attacker
self.attacking_card = "Indiani!"
if self.character.check(self.game, chd.ApacheKid) or len([c for c in self.gold_rush_equipment if isinstance(c, grc.Calumet)]) > 0: return False
if not self.game.is_competitive and len([c for c in self.hand if isinstance(c, cs.Bang) or (self.character.check(self.game, chars.CalamityJanet) and isinstance(c, cs.Mancato))]) == 0:
print('Cant defend')
@ -1033,6 +1036,7 @@ class Player:
def get_dueled(self, attacker):
self.attacker = attacker
self.attacking_card = "Duello"
if (self.game.check_event(ceh.Sermone) and self.is_my_turn) or (not self.game.is_competitive and len([c for c in self.hand if isinstance(c, cs.Bang) or (self.character.check(self.game, chars.CalamityJanet) and isinstance(c, cs.Mancato))]) == 0):
print('Cant defend')
self.take_damage_response()
@ -1086,6 +1090,7 @@ class Player:
self.heal_if_needed()
self.mancato_needed = 0
self.expected_response = []
self.attacking_card = None
self.event_type = ''
self.notify_self()
self.attacker = None
@ -1096,6 +1101,7 @@ class Player:
self.dmg_card_index = -1
self.mancato_needed = 0
self.expected_response = []
self.attacking_card = None
self.event_type = ''
self.notify_self()
self.attacker = None

View File

@ -115,6 +115,7 @@ export default {
can_target_sheriff: true,
show_role: false,
attacker: undefined,
attacking_card: undefined,
notifycard: null,
desc: '',
scrapHand: [],
@ -175,6 +176,7 @@ export default {
this.sight = self.sight
this.sight_extra = self.sight_extra
this.attacker = self.attacker
this.attacking_card = self.attacking_card
this.mancato_needed = self.mancato_needed
this.is_ghost = self.is_ghost
if (this.pending_action == 5 && self.target_p) {
@ -215,7 +217,8 @@ export default {
},
computed:{
respondText() {
return `${this.$t('choose_response')}${this.attacker?(this.$t('choose_response_to')+this.attacker):''}${(this.mancato_needed>1)?(` (${this.$t('choose_response_needed')} ` + this.mancato_needed + ')'):''}`
let attCard = this.attacking_card ? ' ('+this.$t('cards.'+this.attacking_card+'.name')+')' : '';
return `${this.$t('choose_response')}${this.attacker?(this.$t('choose_response_to')+this.attacker+attCard):''}${(this.mancato_needed>1)?(` (${this.$t('choose_response_needed')} ` + this.mancato_needed + ')'):''}`
},
showScrapScreen() {
return this.isEndingTurn && !this.canEndTurn && this.is_my_turn;