Merge branch 'dev' into main
This commit is contained in:
commit
744759f224
@ -53,6 +53,12 @@ class Game:
|
|||||||
self.is_replay = False
|
self.is_replay = False
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
for p in self.players:
|
||||||
|
if (p.sid == p.name):
|
||||||
|
p.is_bot = True
|
||||||
|
if (self.is_replay):
|
||||||
|
self.is_replay = False
|
||||||
|
print('replay ended')
|
||||||
print(f'{self.name}: resetting lobby')
|
print(f'{self.name}: resetting lobby')
|
||||||
self.players.extend(self.spectators)
|
self.players.extend(self.spectators)
|
||||||
self.spectators = []
|
self.spectators = []
|
||||||
@ -84,7 +90,9 @@ class Game:
|
|||||||
for i in range(len(log)-1):
|
for i in range(len(log)-1):
|
||||||
print('replay:', i, 'of', len(log)-3, '->', log[i])
|
print('replay:', i, 'of', len(log)-3, '->', log[i])
|
||||||
if (log[i] == "@@@"):
|
if (log[i] == "@@@"):
|
||||||
break
|
if self.is_replay:
|
||||||
|
self.reset()
|
||||||
|
return
|
||||||
cmd = log[i].split(';')
|
cmd = log[i].split(';')
|
||||||
if cmd[1] == 'players':
|
if cmd[1] == 'players':
|
||||||
self.expansions = json.loads(cmd[4].replace("'",'"'))
|
self.expansions = json.loads(cmd[4].replace("'",'"'))
|
||||||
@ -124,6 +132,10 @@ class Game:
|
|||||||
# if cmd[1] == 'chat_message':
|
# if cmd[1] == 'chat_message':
|
||||||
# chat_message(None, cmd[2], player)
|
# chat_message(None, cmd[2], player)
|
||||||
eventlet.sleep(max(self.replay_speed, 0.1))
|
eventlet.sleep(max(self.replay_speed, 0.1))
|
||||||
|
eventlet.sleep(6)
|
||||||
|
if self.is_replay:
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
|
||||||
def notify_room(self, sid=None):
|
def notify_room(self, sid=None):
|
||||||
if len([p for p in self.players if p.character == None]) != 0 or sid:
|
if len([p for p in self.players if p.character == None]) != 0 or sid:
|
||||||
@ -659,7 +671,7 @@ class Game:
|
|||||||
attacker_role = None
|
attacker_role = None
|
||||||
if player.attacker and player.attacker in self.players:
|
if player.attacker and player.attacker in self.players:
|
||||||
attacker_role = player.attacker.role
|
attacker_role = player.attacker.role
|
||||||
winners = [p for p in self.players if p.role != None and p.role.on_player_death(self.get_alive_players(), initial_players=self.initial_players, dead_role=player.role, attacker_role=attacker_role)]
|
winners = [p for p in self.players if p.role != None and p.role.on_player_death([p for p in self.get_alive_players() if not p.is_ghost], initial_players=self.initial_players, dead_role=player.role, attacker_role=attacker_role)]
|
||||||
if not self.attack_in_progress and len(winners) > 0 and not self.someone_won:
|
if not self.attack_in_progress and len(winners) > 0 and not self.someone_won:
|
||||||
return self.announces_winners(winners)
|
return self.announces_winners(winners)
|
||||||
elif len(winners) > 0 and not self.someone_won: # non tutti hanno risposto, ma ci sono vincitori.
|
elif len(winners) > 0 and not self.someone_won: # non tutti hanno risposto, ma ci sono vincitori.
|
||||||
@ -695,12 +707,6 @@ class Game:
|
|||||||
vulture[0].hand[-1].reset_card()
|
vulture[0].hand[-1].reset_card()
|
||||||
vulture[0].notify_self()
|
vulture[0].notify_self()
|
||||||
|
|
||||||
#se Vulture Sam è uno sceriffo e ha appena ucciso il suo Vice, deve scartare le carte che ha pescato con la sua abilità
|
|
||||||
if player.attacker and player.attacker in self.get_alive_players() and isinstance(player.attacker.role, roles.Sheriff) and isinstance(player.role, roles.Vice):
|
|
||||||
for i in range(len(player.attacker.hand)):
|
|
||||||
self.deck.scrap(player.attacker.hand.pop(), True)
|
|
||||||
player.attacker.notify_self()
|
|
||||||
|
|
||||||
greg = [p for p in self.get_alive_players() if p.character.check(self, chd.GregDigger)]
|
greg = [p for p in self.get_alive_players() if p.character.check(self, chd.GregDigger)]
|
||||||
for i in range(len(greg)):
|
for i in range(len(greg)):
|
||||||
greg[i].lives = min(greg[i].lives+2, greg[i].max_lives)
|
greg[i].lives = min(greg[i].lives+2, greg[i].max_lives)
|
||||||
@ -709,6 +715,13 @@ class Game:
|
|||||||
herb[i].hand.append(self.deck.draw(True))
|
herb[i].hand.append(self.deck.draw(True))
|
||||||
herb[i].hand.append(self.deck.draw(True))
|
herb[i].hand.append(self.deck.draw(True))
|
||||||
herb[i].notify_self()
|
herb[i].notify_self()
|
||||||
|
|
||||||
|
#se Vulture Sam o Herb Hounter è uno sceriffo e ha appena ucciso il suo Vice, deve scartare le carte che ha pescato con la sua abilità
|
||||||
|
if player.attacker and player.attacker in self.get_alive_players() and isinstance(player.attacker.role, roles.Sheriff) and isinstance(player.role, roles.Vice):
|
||||||
|
for i in range(len(player.attacker.hand)):
|
||||||
|
self.deck.scrap(player.attacker.hand.pop(), True)
|
||||||
|
player.attacker.notify_self()
|
||||||
|
|
||||||
|
|
||||||
self.is_handling_death = False
|
self.is_handling_death = False
|
||||||
if corpse.is_my_turn:
|
if corpse.is_my_turn:
|
||||||
|
@ -600,5 +600,12 @@ def get_goldrushcards(sid):
|
|||||||
cards = [cards_dict[i] for i in cards_dict]
|
cards = [cards_dict[i] for i in cards_dict]
|
||||||
sio.emit('goldrushcards_info', room=sid, data=json.dumps(cards, default=lambda o: o.__dict__))
|
sio.emit('goldrushcards_info', room=sid, data=json.dumps(cards, default=lambda o: o.__dict__))
|
||||||
|
|
||||||
|
def pool_metrics():
|
||||||
|
sio.sleep(60)
|
||||||
|
Metrics.send_metric('lobbies', points=[len(games)])
|
||||||
|
Metrics.send_metric('online_players', points=[online_players])
|
||||||
|
pool_metrics()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
sio.start_background_task(pool_metrics)
|
||||||
eventlet.wsgi.server(eventlet.listen(('', 5001)), app)
|
eventlet.wsgi.server(eventlet.listen(('', 5001)), app)
|
||||||
|
Loading…
Reference in New Issue
Block a user