From 52bdd01cf300fad868033986e619f8d694b96906 Mon Sep 17 00:00:00 2001 From: Alberto Xamin Date: Sun, 20 Dec 2020 15:18:53 +0100 Subject: [PATCH] change bot speed --- backend/__init__.py | 2 ++ backend/bang/game.py | 1 + backend/bang/players.py | 10 +++++----- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/backend/__init__.py b/backend/__init__.py index 5a9e914..1739ee7 100644 --- a/backend/__init__.py +++ b/backend/__init__.py @@ -208,6 +208,8 @@ def chat_message(sid, msg): ses.game.reset() elif '/startgame' in msg and not ses.game.started: ses.game.start_game() + elif '/setbotspeed' in msg: + ses.game.bot_speed = float(msg.split()[1]) elif '/addex' in msg and not ses.game.started: cmd = msg.split() if len(cmd) == 2: diff --git a/backend/bang/game.py b/backend/bang/game.py index 3b2a3a5..a2811c2 100644 --- a/backend/bang/game.py +++ b/backend/bang/game.py @@ -30,6 +30,7 @@ class Game: self.disconnect_bot = True self.player_bangs = 0 self.is_russian_roulette_on = False + self.bot_speed = 1.5 def notify_room(self, sid=None): if len([p for p in self.players if p.character == None]) != 0 or sid: diff --git a/backend/bang/players.py b/backend/bang/players.py index e575166..5e16c4e 100644 --- a/backend/bang/players.py +++ b/backend/bang/players.py @@ -205,7 +205,7 @@ class Player: def bot_logic(self): if self.game.shutting_down: return if self.pending_action != None and self.pending_action != PendingAction.WAIT: - eventlet.sleep(uniform(0.6, 1.5)) + eventlet.sleep(uniform(self.game.bot_speed/2-0.1, self.game.bot_speed)) else: return if self.pending_action == PendingAction.PICK: @@ -264,7 +264,7 @@ class Player: has_played = True break maxcards = self.lives if not isinstance(self.character, chd.SeanMallory) else 10 - if not has_played and len(self.hand) > maxcards: + if len(self.hand) > maxcards: self.scrap(0) else: self.end_turn() @@ -379,7 +379,7 @@ class Player: pickable_cards = 1 + self.character.pick_mod if self.is_my_turn: for i in range(len(self.equipment)): - if isinstance(self.equipment[i], cs.Dinamite): + if i < len(self.equipment) and isinstance(self.equipment[i], cs.Dinamite): while pickable_cards > 0: pickable_cards -= 1 picked: cs.Card = self.game.deck.pick_and_scrap() @@ -637,7 +637,7 @@ class Player: self.sio.emit('chat_message', room=self.game.name, data=f'_special_bart_cassidy|{self.name}') self.hand.append(self.game.deck.draw()) - elif isinstance(self.character, chars.ElGringo) and self.attacker and len(self.attacker.hand) > 0: + elif isinstance(self.character, chars.ElGringo) and self.attacker and self.attacker in self.game.players and len(self.attacker.hand) > 0: self.hand.append(self.attacker.hand.pop( randrange(0, len(self.attacker.hand)))) self.sio.emit('chat_message', room=self.game.name, @@ -688,7 +688,7 @@ class Player: self.hand.append(self.game.deck.draw()) self.molly_discarded_cards = 0 self.notify_self() - elif self.attacker and isinstance(self.attacker.character, chd.MollyStark) and self.is_my_turn: + elif self.attacker and self.attacker in self.game.players and isinstance(self.attacker.character, chd.MollyStark) and self.is_my_turn: for i in range(self.attacker.molly_discarded_cards): self.attacker.hand.append(self.attacker.game.deck.draw()) self.attacker.molly_discarded_cards = 0