New Position exception Pull scouting data with lineups More bunt types String validation on gameplay models AI Defensive alignment
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
import discord
|
|
import helpers
|
|
import logging
|
|
import random
|
|
|
|
from in_game import data_cache
|
|
from dataclasses import asdict, fields
|
|
|
|
|
|
logger = logging.getLogger('discord_app')
|
|
|
|
|
|
def get_result(pitcher: data_cache.PitchingWrapper, batter: data_cache.BattingWrapper):
|
|
which = random.choice(['pitcher', 'batter'])
|
|
logger.info(f'in_game.simulations - get_result - which: {which}')
|
|
|
|
unused_fields = ['avg', 'obp', 'slg', 'pull_rate', 'center_rate', 'slap_rate']
|
|
pit_hand = pitcher.card.hand
|
|
bat_hand = batter.card.hand
|
|
|
|
if which == 'pitcher':
|
|
logger.info(f'in_game.simulations - get_result - grabbing pitcher card chances')
|
|
ch_data = pitcher.ratings_vl if bat_hand == 'L' else pitcher.ratings_vr
|
|
logger.info(f'ch_data: {ch_data}')
|
|
# for field in fields(ch_data):
|
|
# if field.name not in unused_fields:
|
|
# ch_results.append(field.name)
|
|
# ch_probs.append(getattr(data_cache.PitchingRatings, field.name))
|
|
else:
|
|
logger.info(f'in_game.simulations - get_result - grabbing batter card chances')
|
|
ch_data = batter.ratings_vl if pit_hand == 'L' else batter.ratings_vr
|
|
logger.info(f'ch_data: {ch_data}')
|
|
# for field in fields(ch_data):
|
|
# if field.name not in unused_fields:
|
|
# ch_results.append(field.name)
|
|
# ch_probs.append(getattr(data_cache.BattingRatings, field.name))
|
|
ch_dict = {k: v for k, v in asdict(ch_data).items()}
|
|
for x in unused_fields:
|
|
if x in ch_dict:
|
|
del ch_dict[x]
|
|
|
|
ch_results = list(ch_dict.keys())
|
|
ch_probs = list(ch_dict.values())
|
|
|
|
logger.info(f'ch_results: {ch_results}')
|
|
logger.info(f'ch_probs: {ch_probs}')
|
|
result = random.choices(ch_results, ch_probs)
|
|
logger.info(f'result: {result}')
|
|
|
|
return result[0]
|
|
|
|
|
|
def get_pos_embeds(this_pitcher, this_batter, pit_card, bat_card):
|
|
pit_desc = helpers.player_desc(this_pitcher)
|
|
bat_desc = helpers.player_desc(this_batter)
|
|
embed = discord.Embed(color=int(helpers.SBA_COLOR, 16), title=f'{pit_desc} vs. {bat_desc}')
|
|
embed.set_image(url=helpers.player_pcard(this_pitcher))
|
|
embed2 = discord.Embed(color=int(helpers.SBA_COLOR, 16))
|
|
embed2.set_image(url=helpers.player_bcard(this_batter))
|
|
embed3 = discord.Embed(color=int(helpers.SBA_COLOR, 16))
|
|
|
|
result = get_result(pit_card, bat_card)
|
|
|
|
embed3.add_field(name='Pitcher', value=pit_desc)
|
|
embed3.add_field(name='Batter', value=bat_desc)
|
|
embed3.add_field(name='Result', value=result, inline=False)
|
|
|
|
return [embed, embed2, embed3]
|
|
|