implemented smog

This commit is contained in:
Sakimori 2021-06-30 17:01:19 -04:00
parent f73e0590f4
commit 9959348322
3 changed files with 59 additions and 11 deletions

View file

@ -219,6 +219,7 @@ class game(object):
def __init__(self, team1, team2, length=None): def __init__(self, team1, team2, length=None):
self.over = False self.over = False
self.random_weather_flag = False
self.teams = {"away" : team1, "home" : team2} self.teams = {"away" : team1, "home" : team2}
self.inning = 1 self.inning = 1
self.outs = 0 self.outs = 0
@ -693,6 +694,9 @@ class game(object):
self.top_of_inning = not self.top_of_inning self.top_of_inning = not self.top_of_inning
if self.random_weather_flag and self.top_of_inning:
setattr(self, "weather", random.choice(list(weather.safe_weathers().values()))(self))
self.weather.on_flip_inning(self) self.weather.on_flip_inning(self)
self.choose_next_batter() self.choose_next_batter()
@ -701,6 +705,7 @@ class game(object):
self.inning += 1 self.inning += 1
if self.inning > self.max_innings and self.teams["home"].score != self.teams["away"].score: #game over if self.inning > self.max_innings and self.teams["home"].score != self.teams["away"].score: #game over
self.over = True self.over = True
try: #if something goes wrong with OBL don't erase game
if self.max_innings >= 9 or self.weather.name in ["Leaf Eddies", "Torrential Downpour"]: if self.max_innings >= 9 or self.weather.name in ["Leaf Eddies", "Torrential Downpour"]:
if self.teams["home"].score == 16: if self.teams["home"].score == 16:
this_xvi_team = self.teams["home"] this_xvi_team = self.teams["home"]
@ -709,6 +714,9 @@ class game(object):
else: else:
this_xvi_team = None this_xvi_team = None
db.save_obl_results(self.teams["home"] if self.teams["home"].score > self.teams["away"].score else self.teams["away"], self.teams["home"] if self.teams["home"].score < self.teams["away"].score else self.teams["away"], xvi_team=this_xvi_team) db.save_obl_results(self.teams["home"] if self.teams["home"].score > self.teams["away"].score else self.teams["away"], self.teams["home"] if self.teams["home"].score < self.teams["away"].score else self.teams["away"], xvi_team=this_xvi_team)
except:
pass
def end_of_game_report(self): def end_of_game_report(self):

View file

@ -190,15 +190,19 @@ def update_loop():
else: else:
if this_game.top_of_inning: if this_game.top_of_inning:
state["update_text"] = f"Top of {this_game.inning}. {this_game.teams['away'].name} batting!" state["update_text"] = f"Top of {this_game.inning}. {this_game.teams['away'].name} batting!"
this_game.weather.modify_top_of_inning_message(this_game, state)
if this_game.random_weather_flag:
this_game.weather.weather_report(this_game, state)
else: else:
if this_game.inning >= this_game.max_innings: if this_game.inning >= this_game.max_innings:
if this_game.teams["home"].score > this_game.teams["away"].score: if this_game.teams["home"].score > this_game.teams["away"].score:
this_game.victory_lap = True this_game.victory_lap = True
state["update_text"] = f"Bottom of {this_game.inning}. {this_game.teams['home'].name} batting!" state["update_text"] = f"Bottom of {this_game.inning}. {this_game.teams['home'].name} batting!"
this_game.weather.modify_top_of_inning_message(this_game, state) this_game.weather.modify_top_of_inning_message(this_game, state)
elif state["update_pause"] != 1 and this_game.play_has_begun: elif state["update_pause"] != 1 and this_game.play_has_begun:
if "twopart" in this_game.last_update[0].keys(): if "twopart" in this_game.last_update[0].keys():
@ -256,4 +260,4 @@ def update_loop():
socket_thread = threading.Thread(target=socketio.emit, args=("states_update", game_states)) socket_thread = threading.Thread(target=socketio.emit, args=("states_update", game_states))
socket_thread.start() socket_thread.start()
#socketio.emit("states_update", game_states) #socketio.emit("states_update", game_states)
time.sleep(8) time.sleep(3)

View file

@ -57,6 +57,11 @@ class Weather:
def modify_game_end_message(self, game, state): def modify_game_end_message(self, game, state):
pass pass
def weather_report(self, game, state):
game.weather = random.choice(list(safe_weathers().values()))(game)
state["update_emoji"] = "🚌"
state["update_text"] += f" Weather report: {game.weather.name} {game.weather.emoji}"
class Supernova(Weather): class Supernova(Weather):
name = "Supernova" name = "Supernova"
@ -545,6 +550,18 @@ class LeafEddies(Weather):
if game.inning == 1: if game.inning == 1:
state["weather_text"] = self.name state["weather_text"] = self.name
class Smog(Weather):
name = "Smog"
emoji = "🚌"
duration_range = [1,1]
def __init__(self, game):
game.random_weather_flag = True
setattr(game, "weather", random.choice(list(safe_weathers().values()))(game))
pass
def all_weathers(): def all_weathers():
weathers_dic = { weathers_dic = {
"Supernova" : Supernova, "Supernova" : Supernova,
@ -562,7 +579,26 @@ def all_weathers():
"Tornado" : Tornado, "Tornado" : Tornado,
"Torrential Downpour" : Downpour, "Torrential Downpour" : Downpour,
"Summer Mist" : SummerMist, "Summer Mist" : SummerMist,
"Leaf Eddies" : LeafEddies "Leaf Eddies" : LeafEddies,
"Smog" : Smog
}
return weathers_dic
def safe_weathers():
"""weathers safe to swap in mid-game"""
weathers_dic = {
"Supernova" : Supernova,
"Midnight": Midnight,
"Slight Tailwind": SlightTailwind,
"Twilight" : Twilight,
"Thinned Veil" : ThinnedVeil,
"Drizzle" : Drizzle,
"Breezy": Breezy,
"Starlight" : Starlight,
"Meteor Shower" : MeteorShower,
"Hurricane" : Hurricane,
"Tornado" : Tornado,
"Summer Mist" : SummerMist
} }
return weathers_dic return weathers_dic