fix no players in range
This commit is contained in:
parent
005ec8dd3c
commit
d3f70454be
@ -1,8 +1,13 @@
|
|||||||
|
from __future__ import annotations
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from bang.expansions import *
|
from bang.expansions import *
|
||||||
from typing import List
|
from typing import List, TYPE_CHECKING
|
||||||
from globals import G
|
from globals import G
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from bang.players import Player
|
||||||
|
from bang.game import Game
|
||||||
|
|
||||||
class Character(ABC):
|
class Character(ABC):
|
||||||
def __init__(self, name: str, max_lives: int, sight_mod: int = 0, visibility_mod: int = 0, pick_mod: int = 0, desc: str = ''):
|
def __init__(self, name: str, max_lives: int, sight_mod: int = 0, visibility_mod: int = 0, pick_mod: int = 0, desc: str = ''):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
@ -16,13 +21,13 @@ class Character(ABC):
|
|||||||
self.icon = '🤷♂️'
|
self.icon = '🤷♂️'
|
||||||
self.number = ''.join(['❤️']*self.max_lives)
|
self.number = ''.join(['❤️']*self.max_lives)
|
||||||
|
|
||||||
def check(self, game, character):
|
def check(self, game:Game, character:Character):
|
||||||
import bang.expansions.high_noon.card_events as ceh
|
import bang.expansions.high_noon.card_events as ceh
|
||||||
if game.check_event(ceh.Sbornia):
|
if game.check_event(ceh.Sbornia):
|
||||||
return False
|
return False
|
||||||
return isinstance(self, character)
|
return isinstance(self, character)
|
||||||
|
|
||||||
def special(self, player, data):
|
def special(self, player:Player, data):
|
||||||
import bang.expansions.high_noon.card_events as ceh
|
import bang.expansions.high_noon.card_events as ceh
|
||||||
if player.game.check_event(ceh.Sbornia):
|
if player.game.check_event(ceh.Sbornia):
|
||||||
return False
|
return False
|
||||||
|
@ -59,6 +59,8 @@ class Bottiglia(ShopCard):
|
|||||||
def play_card(self, player, against=None, _with=None):
|
def play_card(self, player, against=None, _with=None):
|
||||||
# bang, birra, panico
|
# bang, birra, panico
|
||||||
player.available_cards = [Bang(4,42), Birra(4,42), Panico(4,42)]
|
player.available_cards = [Bang(4,42), Birra(4,42), Panico(4,42)]
|
||||||
|
if not any((player.get_sight() >= p['dist'] for p in player.game.get_visible_players(player))):
|
||||||
|
player.available_cards.pop(0)
|
||||||
for i in range(len(player.available_cards)):
|
for i in range(len(player.available_cards)):
|
||||||
player.available_cards[i].must_be_used = True
|
player.available_cards[i].must_be_used = True
|
||||||
player.choose_text = 'choose_bottiglia'
|
player.choose_text = 'choose_bottiglia'
|
||||||
|
@ -44,7 +44,7 @@ class Lemat(Card):
|
|||||||
player.equipment.append(self)
|
player.equipment.append(self)
|
||||||
player.notify_self()
|
player.notify_self()
|
||||||
return True
|
return True
|
||||||
elif not player.has_played_bang:
|
elif not player.has_played_bang and any((player.get_sight() >= p['dist'] for p in player.game.get_visible_players(player))):
|
||||||
from bang.players import PendingAction
|
from bang.players import PendingAction
|
||||||
player.available_cards = player.hand.copy()
|
player.available_cards = player.hand.copy()
|
||||||
player.pending_action = PendingAction.CHOOSE
|
player.pending_action = PendingAction.CHOOSE
|
||||||
|
@ -11,7 +11,7 @@ class BlackFlower(Character):
|
|||||||
def special(self, player, data): #fiori = suit.Clubs
|
def special(self, player, data): #fiori = suit.Clubs
|
||||||
if player.special_use_count > 0 or not any((c.suit == cs.Suit.CLUBS for c in player.hand)):
|
if player.special_use_count > 0 or not any((c.suit == cs.Suit.CLUBS for c in player.hand)):
|
||||||
return False
|
return False
|
||||||
if super().special(player, data):
|
if any((player.get_sight() >= p['dist'] for p in player.game.get_visible_players(player))) and super().special(player, data):
|
||||||
from bang.players import PendingAction
|
from bang.players import PendingAction
|
||||||
player.available_cards = [c for c in player.hand if c.suit == cs.Suit.CLUBS]
|
player.available_cards = [c for c in player.hand if c.suit == cs.Suit.CLUBS]
|
||||||
player.special_use_count += 1
|
player.special_use_count += 1
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from __future__ import annotations
|
||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
import json
|
import json
|
||||||
from random import random, randrange, sample, uniform
|
from random import random, randrange, sample, uniform
|
||||||
@ -14,11 +15,14 @@ import bang.expansions.gold_rush.shop_cards as grc
|
|||||||
import bang.expansions.gold_rush.characters as grch
|
import bang.expansions.gold_rush.characters as grch
|
||||||
import bang.expansions.the_valley_of_shadows.cards as tvosc
|
import bang.expansions.the_valley_of_shadows.cards as tvosc
|
||||||
import bang.expansions.the_valley_of_shadows.characters as tvosch
|
import bang.expansions.the_valley_of_shadows.characters as tvosch
|
||||||
from typing import List
|
from typing import List, TYPE_CHECKING
|
||||||
from metrics import Metrics
|
from metrics import Metrics
|
||||||
from globals import G
|
from globals import G
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from bang.game import Game
|
||||||
|
|
||||||
robot_pictures = [
|
robot_pictures = [
|
||||||
'https://i.imgur.com/40rAFIb.jpg',
|
'https://i.imgur.com/40rAFIb.jpg',
|
||||||
'https://i.imgur.com/gG77VRR.jpg',
|
'https://i.imgur.com/gG77VRR.jpg',
|
||||||
@ -78,7 +82,6 @@ class Player:
|
|||||||
print(r)
|
print(r)
|
||||||
|
|
||||||
def __init__(self, name, sid, bot=False, discord_token=None):
|
def __init__(self, name, sid, bot=False, discord_token=None):
|
||||||
import bang.game as g
|
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.name = name
|
self.name = name
|
||||||
self.sid = sid
|
self.sid = sid
|
||||||
@ -90,7 +93,7 @@ class Player:
|
|||||||
self.avatar = robot_pictures[randrange(len(robot_pictures))]
|
self.avatar = robot_pictures[randrange(len(robot_pictures))]
|
||||||
if self.discord_token:
|
if self.discord_token:
|
||||||
G.sio.start_background_task(self._get_avatar)
|
G.sio.start_background_task(self._get_avatar)
|
||||||
self.game: g = None
|
self.game: Game = None
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user