diff --git a/games.py b/games.py index e6f5c7e..4c3d58f 100644 --- a/games.py +++ b/games.py @@ -214,8 +214,8 @@ class game(object): self.outs = 0 self.top_of_inning = True self.last_update = ({},0) #this is a ({outcome}, runs) tuple + self.play_has_begun = False self.owner = None - self.ready = False self.victory_lap = False if length is not None: self.max_innings = length @@ -653,37 +653,20 @@ class game(object): def gamestate_update_full(self): + self.play_has_begun = True attempts = self.thievery_attempts() if attempts == False: self.last_update = self.batterup() + print(self.last_update[0]) ############# DEBUG REMOVE ME ################# else: self.last_update = attempts return self.gamestate_display_full() def gamestate_display_full(self): - if "steals" in self.last_update[0].keys(): + if not self.over: return "Still in progress." else: - try: - punc = "" - if self.last_update[0]["defender"] != "": - punc = "." - if not self.over: - if self.top_of_inning: - inningtext = "top" - else: - inningtext = "bottom" - - updatestring = "this isn't used but i don't want to break anything" - - return "this isn't used but i don't want to break anything" - else: - return f"""Game over! Final score: **{self.teams['away'].score} - {self.teams['home'].score}** - Last update: {self.last_update[0]['batter']} {self.last_update[0]['text'].value} {self.last_update[0]['defender']}{punc}""" - except TypeError: - return "Game not started." - except KeyError: - return "Game not started." + return f"""Game over! Final score: **{self.teams['away'].score} - {self.teams['home'].score}**""" def add_stats(self): players = self.get_stats() diff --git a/main_controller.py b/main_controller.py index 251e1c3..8f9964e 100644 --- a/main_controller.py +++ b/main_controller.py @@ -141,7 +141,7 @@ def update_loop(): state["away_score"] = this_game.teams["away"].score #top_of_inning = True state["home_score"] = this_game.teams["home"].score #update_pause = 0 #victory_lap = False - if test_string == "Game not started.": #weather_emoji + if not this_game.play_has_begun: #weather_emoji state["update_emoji"] = "🍿" #weather_text state["update_text"] = "Play blall!" #they also need a timestamp state["start_delay"] -= 1 @@ -192,7 +192,11 @@ def update_loop(): state["update_emoji"] = "🌄" state["update_text"] += f' {this_game.weather.away_pitcher} is exhausted from the heat. {state["pitcher"]} is forced to pitch!' - elif state["update_pause"] != 1 and test_string != "Game not started.": + elif state["update_pause"] != 1 and this_game.play_has_begun: + + if "weather_message" in this_game.last_update[0].keys(): + state["update_emoji"] = this_game.weather.emoji + if "steals" in this_game.last_update[0].keys(): updatestring = "" for attempt in this_game.last_update[0]["steals"]: @@ -207,21 +211,16 @@ def update_loop(): if this_game.last_update[0]["defender"] != "": punc = ", " - state["update_emoji"] = "🏌️‍♀️" state["update_text"] = f"{this_game.last_update[0]['batter']} would have gone out, but they took a mulligan!" - elif "snow_atbat" in this_game.last_update[0].keys(): - state["update_emoji"] = "❄" + elif "text_only" in this_game.last_update[0].keys(): state["update_text"] = this_game.last_update[0]["text"] - else: updatestring = "" punc = "" if this_game.last_update[0]["defender"] != "": punc = ". " - - if "fc_out" in this_game.last_update[0].keys(): name, out_at_base_string = this_game.last_update[0]['fc_out'] updatestring = f"{this_game.last_update[0]['batter']} {this_game.last_update[0]['text'].value.format(name, out_at_base_string)} {this_game.last_update[0]['defender']}{punc}" @@ -233,11 +232,9 @@ def update_loop(): state["update_emoji"] = "🏏" state["update_text"] = updatestring - if "veil" in this_game.last_update[0].keys(): - state["update_emoji"] = "🌌" + if "veil" in this_game.last_update[0].keys(): state["update_text"] += f" {this_game.last_update[0]['batter']}'s will manifests on {base_string(this_game.last_update[1])} base." elif "error" in this_game.last_update[0].keys(): - state["update_emoji"] = "👻" state["update_text"] = f"{this_game.last_update[0]['batter']}'s hit goes ethereal, and {this_game.last_update[0]['defender']} can't catch it! {this_game.last_update[0]['batter']} reaches base safely." if this_game.last_update[1] > 0: updatestring += f"{this_game.last_update[1]} runs scored!" diff --git a/weather.py b/weather.py index a38f478..40e12bf 100644 --- a/weather.py +++ b/weather.py @@ -65,6 +65,7 @@ class SlightTailwind(Weather): mulligan_roll_target = -((((self.get_batter().stlats["batting_stars"])-5)/6)**2)+1 if random.random() > mulligan_roll_target and self.get_batter().stlats["batting_stars"] <= 5: result["mulligan"] = True + result["weather_message"] = True class HeavySnow(Weather): def __init__(self, game): @@ -84,9 +85,9 @@ class HeavySnow(Weather): if weather_count == offense_team.lineup_position and "snow_atbat" not in game.last_update[0].keys(): result.clear() result.update({ - "snow_atbat": True, "text": f"{offense_team.lineup[offense_team.lineup_position % len(offense_team.lineup)].name}'s hands are too cold! {game.get_batter().name} is forced to bat!", "text_only": True, + "weather_message": True, }) def on_flip_inning(self, game): @@ -111,15 +112,13 @@ class Twilight(Weather): def __init__(self,game): self.name = "Twilight" self.emoji = "👻" + "\uFE00" - def activate(self, game, result): - pass - def modify_atbat_roll(self, outcome, roll, defender): error_line = - (math.log(defender.stlats["defense_stars"] + 1)/50) + 1 error_roll = random.random() if error_roll > error_line: outcome["error"] = True + outcome["weather_message"] = True outcome["defender"] = defender roll["pb_system_stat"] = 0.1 @@ -132,6 +131,7 @@ class ThinnedVeil(Weather): if result["ishit"]: if result["text"] == appearance_outcomes.homerun or result["text"] == appearance_outcomes.grandslam: result["veil"] = True + result["weather_message"] = True class HeatWave(Weather): def __init__(self,game): @@ -198,9 +198,10 @@ class Sun2(Weather): class NameSwappyWeather(Weather): def __init__(self, game): self.name = "Literacy" + self.emoji = "📚" self.activation_chance = 0.01 - def activate(self, game): + def activate(self, game, result): if random.random() < self.activation_chance: teamtype = random.choice(["away","home"]) team = game.teams[teamtype] @@ -210,32 +211,37 @@ class NameSwappyWeather(Weather): names = player.name.split(" ") first_first_letter = names[0][0] last_first_letter = names[-1][0] - names[0][0] = last_first_letter - names[-1][0] = first_first_letter + names[0] = last_first_letter + names[0][1:] + names[-1] = first_first_letter + names[-1][1:] player.name = ' '.join(names) else: #name is one word, so turn 'bartholemew' into 'martholebew' first_letter = player.name[0] last_letter = player.name[-1] - player.name[0] = last_letter - player.name[-1] = first_letter + player.name = last_letter + player.name[1:-1] + last_letter + + book_adjectives = ["action-packed", "historical", "friendly", "rude", "mystery", "thriller", "horror", "sci-fi", "fantasy", "spooky","romantic"] + book_types = ["novel","novella","poem","anthology","fan fiction","tablet","carving", "autobiography"] + book = "{} {}".format(random.choice(book_adjectives),random.choice(book_types)) result.clear() result.update({ - "text": "{} is Literate! {} is now {}!".format(old_player_name,old_player_name, player.name), + "text": "{} stopped to read a {} and became Literate! {} is now {}!".format(old_player_name, book, old_player_name, player.name), "text_only": True, + "weather_message": True }) + class Feedback(Weather): def __init__(self, game): self.name = "Feedback" - self.activation_chance = 0.01 + self.emoji = "🎤" + self.activation_chance = 0.25 self.swap_batter_vs_pitcher_chance = 0.8 def activate(self, game, result): if random.random() < self.activation_chance: # feedback time - result = {} player1 = None player2 = None if random.random() < self.swap_batter_vs_pitcher_chance: @@ -260,6 +266,7 @@ class Feedback(Weather): result.update({ "text": "{} and {} switched teams in the feedback!".format(player1.name,player2.name), "text_only": True, + "weather_message": True, }) def all_weathers(): @@ -267,14 +274,14 @@ def all_weathers(): #"Supernova" : Supernova, #"Midnight": Midnight, #"Slight Tailwind": SlightTailwind, - "Heavy Snow": HeavySnow, +# "Heavy Snow": HeavySnow, # "Twilight" : Twilight, # works - # "Thinned Veil" : ThinnedVeil, # works - "Heat Wave" : HeatWave, - "Drizzle" : Drizzle, # works -# Sun2, -# Feedback, -# NameSwappyWeather, + "Thinned Veil" : ThinnedVeil, # works +# "Heat Wave" : HeatWave, +# "Drizzle" : Drizzle, # works +# "Sun 2": Sun2, +# "Feedback": Feedback, + "Literacy": NameSwappyWeather, } return weathers_dic