implemented heat wave and leagueseasonreset command
This commit is contained in:
parent
53b857bf2c
commit
36fb248a11
21
games.py
21
games.py
|
@ -191,7 +191,7 @@ class team(object):
|
||||||
def set_pitcher(self, rotation_slot = None, use_lineup = False):
|
def set_pitcher(self, rotation_slot = None, use_lineup = False):
|
||||||
temp_rotation = self.rotation.copy()
|
temp_rotation = self.rotation.copy()
|
||||||
if use_lineup:
|
if use_lineup:
|
||||||
for batter in self.rotation:
|
for batter in self.lineup:
|
||||||
temp_rotation.append(batter)
|
temp_rotation.append(batter)
|
||||||
if rotation_slot is None:
|
if rotation_slot is None:
|
||||||
self.pitcher = random.choice(temp_rotation)
|
self.pitcher = random.choice(temp_rotation)
|
||||||
|
@ -638,6 +638,25 @@ class game(object):
|
||||||
offense_team.lineup_position += 1 #put next batter up
|
offense_team.lineup_position += 1 #put next batter up
|
||||||
if self.outs >= 3:
|
if self.outs >= 3:
|
||||||
self.flip_inning()
|
self.flip_inning()
|
||||||
|
if self.weather.name == "Heat Wave":
|
||||||
|
if self.top_of_inning:
|
||||||
|
self.weather.home_pitcher = self.get_pitcher()
|
||||||
|
if self.inning >= self.weather.counter_home:
|
||||||
|
self.weather.counter_home = self.weather.counter_home - (self.weather.counter_home % 5) + 5 + random.randint(1,4) #rounds down to last 5, adds up to next 5. then adds a random number 2<=x<=5 to determine next pitcher
|
||||||
|
tries = 0
|
||||||
|
while self.get_pitcher() == self.weather.home_pitcher and tries < 3:
|
||||||
|
self.teams["home"].set_pitcher(use_lineup = True)
|
||||||
|
tries += 1
|
||||||
|
|
||||||
|
|
||||||
|
else:
|
||||||
|
self.weather.away_pitcher = self.get_pitcher()
|
||||||
|
if self.inning >= self.weather.counter_away:
|
||||||
|
self.weather.counter_away = self.weather.counter_away - (self.weather.counter_away % 5) + 5 + random.randint(1,4)
|
||||||
|
tries = 0
|
||||||
|
while self.get_pitcher() == self.weather.away_pitcher and tries < 3:
|
||||||
|
self.teams["away"].set_pitcher(use_lineup = True)
|
||||||
|
tries += 1
|
||||||
|
|
||||||
|
|
||||||
return (result, scores_to_add) #returns ab information and scores
|
return (result, scores_to_add) #returns ab information and scores
|
||||||
|
|
|
@ -168,6 +168,13 @@ def season_save(league):
|
||||||
if "." in item.name:
|
if "." in item.name:
|
||||||
os.rename(os.path.join(data_dir, league_dir, league.name, item.name), os.path.join(new_dir, item.name))
|
os.rename(os.path.join(data_dir, league_dir, league.name, item.name), os.path.join(new_dir, item.name))
|
||||||
|
|
||||||
|
def season_restart(league):
|
||||||
|
if league_exists(league.name):
|
||||||
|
with os.scandir(os.path.join(data_dir, league_dir, league.name)) as folder:
|
||||||
|
for item in folder:
|
||||||
|
if "." in item.name:
|
||||||
|
os.remove(os.path.join(data_dir, league_dir, league.name, item.name))
|
||||||
|
|
||||||
def get_past_standings(league_name, season_num):
|
def get_past_standings(league_name, season_num):
|
||||||
if league_exists(league_name):
|
if league_exists(league_name):
|
||||||
with os.scandir(os.path.join(data_dir, league_dir, league_name)) as folder:
|
with os.scandir(os.path.join(data_dir, league_dir, league_name)) as folder:
|
||||||
|
|
|
@ -175,6 +175,10 @@ def update_loop():
|
||||||
if this_game.weather.name == "Drizzle":
|
if this_game.weather.name == "Drizzle":
|
||||||
state["update_emoji"] = "🌧"
|
state["update_emoji"] = "🌧"
|
||||||
state["update_text"] += f' Due to inclement weather, {this_game.teams["away"].lineup[(this_game.teams["away"].lineup_position-1) % len(this_game.teams["away"].lineup)].name} is placed on second base.'
|
state["update_text"] += f' Due to inclement weather, {this_game.teams["away"].lineup[(this_game.teams["away"].lineup_position-1) % len(this_game.teams["away"].lineup)].name} is placed on second base.'
|
||||||
|
elif this_game.weather.name == "Heat Wave" and hasattr(this_game.weather, "home_pitcher") and this_game.weather.home_pitcher.name != state["pitcher"]:
|
||||||
|
state["update_emoji"] = "🌄"
|
||||||
|
state["update_text"] += f' {this_game.weather.home_pitcher} is exhausted from the heat. {state["pitcher"]} is forced to pitch!'
|
||||||
|
|
||||||
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:
|
||||||
|
@ -183,6 +187,9 @@ def update_loop():
|
||||||
if this_game.weather.name == "Drizzle":
|
if this_game.weather.name == "Drizzle":
|
||||||
state["update_emoji"] = "🌧"
|
state["update_emoji"] = "🌧"
|
||||||
state["update_text"] += f' Due to inclement weather, {this_game.teams["home"].lineup[(this_game.teams["home"].lineup_position-1) % len(this_game.teams["home"].lineup)].name} is placed on second base.'
|
state["update_text"] += f' Due to inclement weather, {this_game.teams["home"].lineup[(this_game.teams["home"].lineup_position-1) % len(this_game.teams["home"].lineup)].name} is placed on second base.'
|
||||||
|
elif this_game.weather.name == "Heat Wave" and hasattr(this_game.weather, "away_pitcher") and this_game.weather.away_pitcher.name != state["pitcher"]:
|
||||||
|
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 test_string != "Game not started.":
|
||||||
if "steals" in this_game.last_update[0].keys():
|
if "steals" in this_game.last_update[0].keys():
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime
|
import discord, json, math, os, roman, games, asyncio, random, main_controller, threading, time, urllib, leagues, datetime
|
||||||
import database as db
|
import database as db
|
||||||
import onomancer as ono
|
import onomancer as ono
|
||||||
from league_storage import league_exists, season_save
|
from league_storage import league_exists, season_save, season_restart
|
||||||
from the_draft import Draft, DRAFT_ROUNDS
|
from the_draft import Draft, DRAFT_ROUNDS
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
@ -1045,6 +1045,19 @@ class LeagueTeamScheduleCommand(Command):
|
||||||
else:
|
else:
|
||||||
await msg.channel.send("We can't find that league. Typo?")
|
await msg.channel.send("We can't find that league. Typo?")
|
||||||
|
|
||||||
|
class LeagueRegenerateScheduleCommand(Command):
|
||||||
|
name = "leagueseasonreset"
|
||||||
|
template = "m;leagueseasonreset [league name]"
|
||||||
|
description = "Completely scraps the given league's current season, resetting everything to day 1 of the current season. Requires ownership."
|
||||||
|
|
||||||
|
async def execute(self, msg, command):
|
||||||
|
league_name = command.split("\n")[0].strip()
|
||||||
|
if league_exists(league_name):
|
||||||
|
league = leagues.load_league_file(league_name)
|
||||||
|
if (league.owner is not None and msg.author.id in league.owner) or (league.owner is not None and msg.author.id in config()["owners"]):
|
||||||
|
season_restart(league)
|
||||||
|
league.season -= 1
|
||||||
|
league.season_reset()
|
||||||
|
|
||||||
commands = [
|
commands = [
|
||||||
IntroduceCommand(),
|
IntroduceCommand(),
|
||||||
|
@ -1077,6 +1090,7 @@ commands = [
|
||||||
LeagueWildcardCommand(),
|
LeagueWildcardCommand(),
|
||||||
LeagueScheduleCommand(),
|
LeagueScheduleCommand(),
|
||||||
LeagueTeamScheduleCommand(),
|
LeagueTeamScheduleCommand(),
|
||||||
|
LeagueRegenerateScheduleCommand(),
|
||||||
CreditCommand(),
|
CreditCommand(),
|
||||||
RomanCommand(),
|
RomanCommand(),
|
||||||
HelpCommand(),
|
HelpCommand(),
|
||||||
|
@ -1344,6 +1358,9 @@ def prepare_game(newgame, league = None, weather_name = None):
|
||||||
if newgame.weather.name == "Heavy Snow":
|
if newgame.weather.name == "Heavy Snow":
|
||||||
newgame.weather.counter_away = random.randint(0,len(newgame.teams['away'].lineup)-1)
|
newgame.weather.counter_away = random.randint(0,len(newgame.teams['away'].lineup)-1)
|
||||||
newgame.weather.counter_home = random.randint(0,len(newgame.teams['home'].lineup)-1)
|
newgame.weather.counter_home = random.randint(0,len(newgame.teams['home'].lineup)-1)
|
||||||
|
elif newgame.weather.name == "Heat Wave":
|
||||||
|
newgame.weather.counter_away = random.randint(2,4)
|
||||||
|
newgame.weather.counter_home = random.randint(2,4)
|
||||||
return newgame, state_init
|
return newgame, state_init
|
||||||
|
|
||||||
async def start_tournament_round(channel, tourney, seeding = None):
|
async def start_tournament_round(channel, tourney, seeding = None):
|
||||||
|
|
Loading…
Reference in a new issue