2911 lines
130 KiB
Python
2911 lines
130 KiB
Python
import logging
|
|
from typing import Literal
|
|
import discord
|
|
import random
|
|
|
|
import pydantic
|
|
|
|
from helpers import INFIELD_X_CHART, OUTFIELD_X_CHART
|
|
from in_game.gameplay_models import Game, Play, PositionRating, Team
|
|
|
|
logger = logging.getLogger('discord_app')
|
|
|
|
|
|
class DiceRoll(pydantic.BaseModel):
|
|
model_config = pydantic.ConfigDict(arbitrary_types_allowed=True)
|
|
roll_message: str | None = None
|
|
embeds: list[discord.Embed] | None = None
|
|
|
|
is_chaos: bool = False
|
|
d_six_one: int | None = None
|
|
d_six_two: int | None = None
|
|
d_twenty: int | None = None
|
|
|
|
|
|
class AbRoll(DiceRoll):
|
|
d_six_three: int | None = None
|
|
|
|
|
|
class JumpRoll(DiceRoll):
|
|
pass
|
|
|
|
|
|
class FieldingRoll(DiceRoll):
|
|
d_six_three: int | None = None
|
|
hit_result: Literal['SI1', 'SI2', 'DO2', 'DO3', 'TR', 'G1', 'G2', 'G3', 'G1#', 'G2#', 'G3#', 'F1', 'F2', 'F3', 'SPD', 'PO', 'FO'] | None = None
|
|
error_result: Literal[1, 2, 3] | None = None
|
|
|
|
|
|
class FrameRoll(DiceRoll):
|
|
is_walk: bool = False
|
|
|
|
|
|
class DTwentyRoll(DiceRoll):
|
|
pass
|
|
|
|
|
|
def get_dice_embed(team: Team = None, embed_title: str = None):
|
|
if team:
|
|
embed = discord.Embed(
|
|
color=int(team.color, 16)
|
|
)
|
|
else:
|
|
embed = discord.Embed(
|
|
color=int('0x000000', 16)
|
|
)
|
|
|
|
if embed_title:
|
|
embed.title = embed_title
|
|
|
|
return embed
|
|
|
|
|
|
def sa_fielding_roll_legacy(pos_code: str, team: dict) -> list[discord.Embed]:
|
|
"""
|
|
Make a Super Advanced fielding check.
|
|
"""
|
|
d_twenty = random.randint(1, 20)
|
|
d_six_one = random.randint(1, 6)
|
|
d_six_two = random.randint(1, 6)
|
|
d_six_three = random.randint(1, 6)
|
|
error_dice = d_six_one + d_six_two + d_six_three
|
|
x_chart = None
|
|
error_chart = 'https://sombaseball.ddns.net/static/images/season04/error-'
|
|
range_note = None
|
|
error_note = None
|
|
error_note1 = None
|
|
error_note2 = None
|
|
symbol_link = 'https://docs.google.com/document/d/1wu63XSgfQE2wadiegWaaDda11QvqkN0liRurKm0vcTs/edit' \
|
|
'#heading=h.7oj0v3t1kc6o'
|
|
|
|
if pos_code in ['1B', '2B', '3B', 'SS']:
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-infield.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1p8Y2On0301C1yq4ktyPxE4lXxrIALYaF1vbW6RkRpII/edit' \
|
|
'#heading=h.qgqyxe5xb77m'
|
|
|
|
# Build range note
|
|
if d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3# SI1 ----SI2----\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# SI1 ----SI2----\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# G3# SI1 --SI2--\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 --G3#-- SI1 SI2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2# G3# SI1 SI2\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 --G3#-- SI1\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 G3 --G3#--\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3#--\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 G3 G3#\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3---\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- --G2--- G3\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- G2 G3\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 17:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G3\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------G1---------\n' \
|
|
'```\n\n'
|
|
|
|
if pos_code == '1B':
|
|
error_chart += 'first-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e3 -> e12, e19 -> e28\n' \
|
|
'1-base error for e1, e2, e30'
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e13 -> e28\n' \
|
|
'1-base error for e1, e5, e8, e9, e29'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e29, e30\n' \
|
|
'1-base error for e2, e8, e16, e19, e23'
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e3, e8, e10 -> e12, e19, e20, e26, e30'
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e4, e5, e9, e15, e18, e22, e24 -> e28'
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e6, e13, e24, e26 -> e28, e30'
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e14 -> e18, e21 -> e26, e28 -> e30'
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e10, e13, e16 -> e20, e23 -> e25, e27 -> e30'
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e19 -> e21, e23, e29'
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e7, e12, e14, e21, e25, e26, e29'
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e11, e27'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e9, e15, e22, e27, e28'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e11, e12, e17, e20'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = 'No error'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e8 -> e12, e24 -> e28\n' \
|
|
'1-base error for e2, e3, e6, e7, e14, e16, e17, e21'
|
|
if pos_code == '2B':
|
|
error_chart += 'second-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e19, e28 -> e41, e53 -> e65\n' \
|
|
'1-base error for e22, e24, e25, e27, e44, e50'
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e20 -> e41, e68, e71\n' \
|
|
'1-base error for e3, e4, e8 -> e12, e15, e16, e19'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e53 -> 71\n' \
|
|
'1-base error for e5 -> 10, e14, e16, e29, e37'
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e11, e12, e14, e16, e17, e19, e26 -> e28, e30, e32, e37, ' \
|
|
'e50 -> e62, e71'
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e13, e15, e34, e47, e65'
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e18, e20, e21, e26 -> e28, e39, e41, e50, e56, e59, e65, e71'
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e22, e30, e34, e39, e44, e47, e53, e56, e62, e68, e71'
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e23 -> e25, e29, e32, e37, e41, e50, e53, e59, e62, e68'
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e68'
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e44'
|
|
elif error_dice == 8:
|
|
error_note = 'No error'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e47, e65'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e17, e19, e56 -> 62'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e10, e21'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e12 -> e19, e37 -> e41, e59 -> e65\n' \
|
|
'1-base error for e2 -> e4, e6, e20, e25, e28, e29'
|
|
if pos_code == '3B':
|
|
error_chart += 'third-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e1, e2, e8, e10, e13 -> e16, e21 -> e24, e27, e30 -> e33, e50, ' \
|
|
'e56, e62, e65\n' \
|
|
'1-base error for e39'
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e3 -> e10, e17, e18, e25 -> e27, e34 -> e37, e44, e47\n' \
|
|
'1-base error for e11, e19, e32, e56'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e11 -> e18, e32, e33, e37, e53, e62, e65\n' \
|
|
'1-base error for e4, e8, e19, e21, e22, e27, e41'
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e19 -> 27, e32, e33, e37, e39, e44, e50, e59\n' \
|
|
'1-base error for e5 -> e8, e11, e14, e15, e17, e18, e28 -> e31, e34'
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e28 -> e31, e34, e35, e50\n' \
|
|
'1-base error for e14, e16, e19, e20, e22, e32, e39, e44, e56, e62'
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e41, e47, e53, e59\n' \
|
|
'1-base error for e10, e15, e23, e25, e28, e30, e32, e33, e35, e44, e65'
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e62\n' \
|
|
'1-base error for e12, e17, e22, e24, e27, e29, e34 -> e50, e56 -> e59, e65'
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e56, e65\n' \
|
|
'1-base error for e13, e18, e20, e21, e23, e26, e28, e31 -> e33, e35, e37, ' \
|
|
'e41 -> e53, e59, e65'
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e26, e31, e41, e53 -> 65'
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e24, e27, e29, e34, e37, e39, e47 -> e65'
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e25, e30, e33, e47, e53, e56, e62, e65'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e16, e19, e39, e59 -> e65'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e21, e25, e30, e34, e53'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e2, e3, e6, e14, e16, e44'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e10, e15, e16, e23, e24, e56\n' \
|
|
'1-base error for e1 -> e4, e8, e14'
|
|
if pos_code == 'SS':
|
|
error_chart += 'shortstop.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e12, e22 -> e32, e40 -> e48, e64, e68\n' \
|
|
'1-base error for e1, e18, e34, e52, e56'
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e14 -> 32, e52, e56, e72 -> e84\n' \
|
|
'1-base error for e3 -> e5, e8 ,e10, e36'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e33 -> 56, e72\n' \
|
|
'1-base error for e6 -> e10, e17, e18, e20, e28, e31, e88'
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e60 -> e68, e76 -> 84\n' \
|
|
'1-base error for e12, e14, e17, e18, e20 -> e22, e24, e28, e31 -> 36, e40, ' \
|
|
'e48, e72'
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e16, e19, e38, e42, e60, e68'
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e23, e25, e32 -> 38, e44, e52, e72 -> 84'
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e26, e27, e30, e42, e48, e56, e64, e68, e76 -> e88'
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e29, e40, e52 -> e60, e72, e80 -> e88'
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e84'
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e64, e68, e76, e88'
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e44'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e60'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e21, e22, e24, e28, e31, e48, e64, e72'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e72\n' \
|
|
'1-base error for e14, e19, e20, e24, e25, e30, e31, e80'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e10, e12, e28 -> e32, e48, e84\n' \
|
|
'1-base error for e2, e5, e7, e23, e27'
|
|
|
|
elif pos_code in ['LF', 'CF', 'RF']:
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-outfield.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1p8Y2On0301C1yq4ktyPxE4lXxrIALYaF1vbW6RkRpII/edit' \
|
|
'#heading=h.drrzdsvu0ij0'
|
|
|
|
# Build range note
|
|
if d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F1 DO2 DO3 --TR3--\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 SI2 DO2 DO3 TR3\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 3:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 SI2 --DO2-- DO3\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 F1 SI2 DO2 DO3\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- --SI2-- DO2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 7:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- F1 SI2 DO2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- F1 --SI2--\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 11:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F2----- --SI2--\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F2----- F1 SI2\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 15:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F3 ----F2----- SI2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F3--- --F2--- F1\n' \
|
|
'```\n\n'
|
|
elif d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F3----- F2 F1\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------F3------- F2\n' \
|
|
'```\n\n'
|
|
elif d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------F3---------\n' \
|
|
'```\n\n'
|
|
|
|
if pos_code in ['LF', 'RF']:
|
|
error_chart += 'corner-outfield.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '3-base error for e4 -> e12, e19 -> e25\n' \
|
|
'2-base error for e18\n' \
|
|
'1-base error for e2, e3, e15'
|
|
elif error_dice == 17:
|
|
error_note = '3-base error for e13 -> e25\n' \
|
|
'2-base error for e1, e6, e8, e10'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e2\n' \
|
|
'1-base error for e7 -> 12, e22, e24, e25'
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e3, e4, e7, e8, e10, e11, e13, e20, e21'
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e5, e6, e10, e12, e14, e15, e22, e23'
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e11, e12, e16, e20, e24, e25'
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e13 -> e18, e21 -> e23, e25'
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e9, e18 -> e21, e23 -> e25'
|
|
elif error_dice == 10:
|
|
error_note = '2-base error for e19'
|
|
elif error_dice == 9:
|
|
error_note = '2-base error for e22'
|
|
elif error_dice == 8:
|
|
error_note = '2-base error for e24'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e19 -> e21, e23'
|
|
elif error_dice == 6:
|
|
error_note = '2-base error for e7, e8\n' \
|
|
'1-base error for e13 -> e18, e22, e24, e25'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!'
|
|
error_note1 = f'**F1**: {OUTFIELD_X_CHART["f1"]["rp"]}\n' \
|
|
f'**F2**: {OUTFIELD_X_CHART["f2"]["rp"]}\n' \
|
|
f'**F3**: {OUTFIELD_X_CHART["f3"]["rp"]}\n'
|
|
error_note2 = f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n' \
|
|
f'**DO2**: {OUTFIELD_X_CHART["do2"]["rp"]}\n' \
|
|
f'**DO3**: {OUTFIELD_X_CHART["do3"]["rp"]}\n' \
|
|
f'**TR3**: {OUTFIELD_X_CHART["tr3"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e13, e16, e20, e23 -> e25\n' \
|
|
'1-base error for e4 -> e6, e10 -> 12, e16 -> e18'
|
|
elif error_dice == 3:
|
|
error_note = '3-base error for e8 -> e12, e24, e25\n' \
|
|
'2-base error for e19\n' \
|
|
'1-base error for e1 -> e3, e6, e14, e15, e18, e20 -> e22'
|
|
else:
|
|
error_chart += 'center-field.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '3-base error for e4 -> 19\n' \
|
|
'2-base error for e2, e25\n' \
|
|
'1-base error for e3, e23'
|
|
elif error_dice == 17:
|
|
error_note = '3-base error for e20 -> e25\n' \
|
|
'2-base error for e1, e2, e5, e7, e9, e13 -> e15, e17'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e3 -> e5, e8, e23\n' \
|
|
'1-base error for e10 -> e18'
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e6 -> e8, e12, e13, e19'
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e9, e10, e16 -> e18, e20 -> e23'
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e11, e18, e20, e23 -> e25'
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e14, e15, e21, e22, e24'
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e19, e25'
|
|
elif error_dice >= 8:
|
|
error_note = 'No error'
|
|
elif error_dice == 7:
|
|
error_note = '2-base error for e16, e17'
|
|
elif error_dice == 6:
|
|
error_note = '2-base error for e12, e13\n' \
|
|
'1-base error for e19 -> e25'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!'
|
|
error_note1 = f'**F1**: {OUTFIELD_X_CHART["f1"]["rp"]}\n' \
|
|
f'**F2**: {OUTFIELD_X_CHART["f2"]["rp"]}\n' \
|
|
f'**F3**: {OUTFIELD_X_CHART["f3"]["rp"]}\n'
|
|
error_note2 = f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n' \
|
|
f'**DO2**: {OUTFIELD_X_CHART["do2"]["rp"]}\n' \
|
|
f'**DO3**: {OUTFIELD_X_CHART["do3"]["rp"]}\n' \
|
|
f'**TR3**: {OUTFIELD_X_CHART["tr3"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e10, e12, e13, e20, e22, e23\n' \
|
|
'1-base error for e3 -> e9, e15 -> e18'
|
|
elif error_dice == 3:
|
|
error_note = '3-base error for e12 -> e19\n' \
|
|
'2-base error for e6, e10, e11\n' \
|
|
'1-base error for e2, e3, e7 -> e9, e21 -> e23'
|
|
|
|
elif pos_code == 'C':
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season07/range-catcher.png'
|
|
error_chart += 'catcher.png'
|
|
|
|
# Build range note
|
|
if d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3 ------SI1------\n' \
|
|
'```\n'
|
|
elif d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3 SPD ----SI1----\n' \
|
|
'```\n'
|
|
elif d_twenty == 3:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G3--- SPD --SI1--\n' \
|
|
'```\n'
|
|
elif d_twenty == 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 G3 --SPD-- SI1\n' \
|
|
'```\n'
|
|
elif d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 --G3--- --SPD--\n' \
|
|
'```\n'
|
|
elif d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G2--- G3 --SPD--\n' \
|
|
'```\n'
|
|
elif d_twenty == 7:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'PO G2 G3 --SPD--\n' \
|
|
'```\n'
|
|
elif d_twenty == 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'PO --G2--- G3 SPD\n' \
|
|
'```\n'
|
|
elif d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--PO--- G2 G3 SPD\n' \
|
|
'```\n'
|
|
elif d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'FO PO G2 G3 SPD\n' \
|
|
'```\n'
|
|
elif d_twenty == 11:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'FO --PO--- G2 G3\n' \
|
|
'```\n'
|
|
elif d_twenty == 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--FO--- PO G2 G3\n' \
|
|
'```\n'
|
|
elif d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 FO PO G2 G3\n' \
|
|
'```\n'
|
|
elif d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 --FO--- PO G2\n' \
|
|
'```\n'
|
|
elif d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- FO PO G2\n' \
|
|
'```\n'
|
|
elif d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- FO PO\n' \
|
|
'```\n'
|
|
elif d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- --FO---\n' \
|
|
'```\n'
|
|
elif d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- FO\n' \
|
|
'```\n'
|
|
|
|
# Build error note
|
|
# error_dice = 5
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> 16\n1-base error for e2, e3'
|
|
elif error_dice == 17:
|
|
error_note = '1-base error for e1, e2, e4, e5, e12 -> e14, e16'
|
|
elif error_dice == 16:
|
|
error_note = '1-base error for e3 -> e5, e7, e12 -> e14, e16'
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e7, e8, e12, e13, e15'
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e6'
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e9'
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e10, e14'
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e11, e15'
|
|
elif 8 <= error_dice <= 10:
|
|
error_note = 'No error'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e16'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e12, e13'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play! Ignore range chart above and consult ranges below\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**PO**: {INFIELD_X_CHART["po"]["rp"]}\n' \
|
|
f'**FO**: {INFIELD_X_CHART["fo"]["rp"]}\n' \
|
|
f'**SPD**: {INFIELD_X_CHART["spd"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e5, e13'
|
|
else:
|
|
error_note = '2-base error for e12 -> e16\n1-base error for e2, e3, e7, e11'
|
|
elif pos_code == 'P':
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-pitcher.png'
|
|
error_chart += 'pitcher.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1a_g6apg74ixcwJapNrbOJZAx7gVxGjeNm79c5XLjSF0/edit' \
|
|
'#heading=h.fpjqmiv10r8l'
|
|
|
|
# Build range note
|
|
if d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3# ------SI1------\n' \
|
|
'```\n'
|
|
elif d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# ------SI1------\n' \
|
|
'```\n'
|
|
elif d_twenty <= 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# G3# ----SI1----\n' \
|
|
'```\n'
|
|
elif d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 --G3#-- --SI1--\n' \
|
|
'```\n'
|
|
elif d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2# G3# --SI1--\n' \
|
|
'```\n'
|
|
elif d_twenty <= 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 --G3#-- SI1\n' \
|
|
'```\n'
|
|
elif d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 G3 --G3#--\n' \
|
|
'```\n'
|
|
elif d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3#--\n' \
|
|
'```\n'
|
|
elif d_twenty <= 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 G3 G3#\n' \
|
|
'```\n'
|
|
elif d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3---\n' \
|
|
'```\n'
|
|
elif d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- --G2--- G3\n' \
|
|
'```\n'
|
|
elif d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- G2 G3\n' \
|
|
'```\n'
|
|
elif d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G3\n' \
|
|
'```\n'
|
|
elif d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G2\n' \
|
|
'```\n'
|
|
elif d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------G1---------\n' \
|
|
'```\n'
|
|
|
|
# Build error note
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e12, e19 -> e28, e34 -> e43, e46 -> e48'
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e13 -> e28, e44 -> e50'
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e30 -> e48, e50, e51\n' \
|
|
'1-base error for e8, e11, e16, e23'
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e50, e51\n' \
|
|
'1-base error for e10 -> e12, e19, e20, e24, e26, e30, e35, e38, e40, e46, e47'
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e4, e14, e18, e21, e22, e26, e31, e35, e42, e43, e48 -> e51'
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e6, e13, e14, e21, e22, e26, e27, e30 -> 34, e38 -> e51'
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e7, e11, e12, e15 -> e19, e22 -> e51'
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e10, e13, e15, e17, e18, e20, e21, e23, e24, e27 -> 38, e40, e42, ' \
|
|
'e44 -> e51'
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e20, e23, e24, e27 -> e51'
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e16, e19, e26, e28, e34 -> e36, e39 -> e51'
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e22, e33, e38, e39, e43 -> e51'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e14, e21, e36, e39, e42 -> e44, e47 -> e51'
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e22, e38, e39, e43 -> e51'
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n'
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e15, e16, e40'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e8 -> e12, e26 -> e28, e39 -> e43\n' \
|
|
'1-base error for e6, e7, e17, e30, e33, e44'
|
|
|
|
roll_message = f'```md\n' \
|
|
f'# {str(d_twenty)},{str(d_six_one + d_six_two + d_six_three)}\n' \
|
|
f'Details:[1d20;3d6 ({d_twenty} - {d_six_one} {d_six_two} {d_six_three})]```'
|
|
|
|
roll_embed = get_dice_embed(team)
|
|
roll_embed.add_field(name=f'SA Fielding roll for {team["gmname"]}', value=roll_message)
|
|
|
|
chart_embed = get_dice_embed(team, f'{pos_code} Fielding Check Summary')
|
|
chart_embed.add_field(name='Range Result', value=range_note, inline=False)
|
|
chart_embed.add_field(name='Error Result', value=error_note, inline=False)
|
|
chart_embed.add_field(name='Help Commands',
|
|
value=f'Run `!<result>` for full chart readout (e.g. `!g1` or `!do3`)')
|
|
# chart_embed.add_field(name='Range Chart', value=x_chart, inline=False)
|
|
# chart_embed.add_field(name='Error Chart', value=error_chart, inline=False)
|
|
# chart_embed.add_field(name='Result Reference', value=symbol_link, inline=False)
|
|
reference_string = f'[Range Chart]({x_chart}) / [Error Chart]({error_chart}) / [Result Reference]({symbol_link})'
|
|
chart_embed.add_field(name='References', value=reference_string, inline=False)
|
|
|
|
error1_embed, error2_embed = None, None
|
|
if error_note1:
|
|
error1_embed = get_dice_embed(team)
|
|
error1_embed.add_field(name='Error Results', value=error_note1)
|
|
if error_note2:
|
|
error2_embed = get_dice_embed(team)
|
|
error2_embed.add_field(name='Error Results', value=error_note2)
|
|
|
|
return [roll_embed, chart_embed, error1_embed, error2_embed]
|
|
|
|
|
|
def sa_fielding_roll(this_team: Team, this_play: Play, pos_code: str, def_rating: PositionRating) -> FieldingRoll:
|
|
x_chart = None
|
|
error_chart = 'https://sombaseball.ddns.net/static/images/season04/error-'
|
|
range_note = None
|
|
error_note = None
|
|
error_note1 = None
|
|
error_note2 = None
|
|
symbol_link = 'https://docs.google.com/document/d/1wu63XSgfQE2wadiegWaaDda11QvqkN0liRurKm0vcTs/edit#heading=h.7oj0v3t1kc6o'
|
|
|
|
this_roll = FieldingRoll(
|
|
d_six_one = random.randint(1, 6),
|
|
d_six_two = random.randint(1, 6),
|
|
d_six_three = random.randint(1, 6),
|
|
d_twenty = random.randint(1, 20)
|
|
)
|
|
error_dice = this_roll.d_six_one + this_roll.d_six_two + this_roll.d_six_three
|
|
this_roll.roll_message = f'```md\n' \
|
|
f'# {str(this_roll.d_twenty)},{str(this_roll.d_six_one + this_roll.d_six_two + this_roll.d_six_three)}\n' \
|
|
f'Details:[1d20;3d6 ({this_roll.d_twenty} - {this_roll.d_six_one} {this_roll.d_six_two} {this_roll.d_six_three})]```'
|
|
|
|
if pos_code in ['1B', '2B', '3B', 'SS']:
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-infield.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1p8Y2On0301C1yq4ktyPxE4lXxrIALYaF1vbW6RkRpII/edit' \
|
|
'#heading=h.qgqyxe5xb77m'
|
|
|
|
# Build range note
|
|
if this_roll.d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3# SI1 ----SI2----\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# SI1 ----SI2----\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty <= 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# G3# SI1 --SI2--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 --G3#-- SI1 SI2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2# G3# SI1 SI2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty <= 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 --G3#-- SI1\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 G3 --G3#--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3#--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty <= 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 G3 G3#\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3---\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- --G2--- G3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- G2 G3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 17:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty <= 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G2'
|
|
|
|
elif this_roll.d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------G1---------\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G1'
|
|
|
|
|
|
if pos_code == '1B':
|
|
error_chart += 'first-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e3 -> e12, e19 -> e28\n' \
|
|
'1-base error for e1, e2, e30'
|
|
if def_rating.error in [*range(3, 13), *range(19, 29)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [1, 2, 30]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e13 -> e28\n' \
|
|
'1-base error for e1, e5, e8, e9, e29'
|
|
if def_rating.error in [*range(13, 29)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [1, 5, 8, 9, 29]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e29, e30\n' \
|
|
'1-base error for e2, e8, e16, e19, e23'
|
|
if def_rating.error in [29, 30]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 8, 16, 19, 23]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e3, e8, e10 -> e12, e19, e20, e26, e30'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [3, 8, 10, 11, 12, 19, 20, 26, 30]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e4, e5, e9, e15, e18, e22, e24 -> e28'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [4, 5, 9, 15, 18, 22, 24]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e6, e13, e24, e26 -> e28, e30'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [6, 13, 24, 26, 27, 28, 30]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e14 -> e18, e21 -> e26, e28 -> e30'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(14, 18), *range(21, 27), 28, 29, 30]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e10, e13, e16 -> e20, e23 -> e25, e27 -> e30'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [10, 13, *range(16, 21), 23, 24, 25, *range(27, 31)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e19 -> e21, e23, e29'
|
|
error_note = '1-base error for e10, e13, e16 -> e20, e23 -> e25, e27 -> e30'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [10, 13, *range(16, 21), 23, 24, 25, *range(27, 31)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e7, e12, e14, e21, e25, e26, e29'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [7, 12, 14, 21, 25, 26, 29]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e11, e27'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [11, 27]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e9, e15, e22, e27, e28'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [9, 15, 22, 27, 28]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e11, e12, e17, e20'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [8, 11, 12, 17, 20]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = 'No error'
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e8 -> e12, e24 -> e28\n' \
|
|
'1-base error for e2, e3, e6, e7, e14, e16, e17, e21'
|
|
if def_rating.error in [*range(8, 13), *range(24, 29)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 3, 6, 7, 14, 16, 17, 21]:
|
|
this_roll.error_result = 1
|
|
|
|
if pos_code == '2B':
|
|
error_chart += 'second-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e19, e28 -> e41, e53 -> e65\n' \
|
|
'1-base error for e22, e24, e25, e27, e44, e50'
|
|
if def_rating.error in [*range(4, 20), *range(28, 42), *range(53, 66)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [22, 24, 25, 27, 44, 50]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e20 -> e41, e68, e71\n' \
|
|
'1-base error for e3, e4, e8 -> e12, e15, e16, e19'
|
|
if def_rating.error in [*range(20, 42), 68, 71]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [3, 4, *range(8, 13), 15, 16, 19]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e53 -> 71\n' \
|
|
'1-base error for e5 -> 10, e14, e16, e29, e37'
|
|
if def_rating.error in [*range(53, 72)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(5, 11), 14, 16, 29, 37]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e11, e12, e14, e16, e17, e19, e26 -> e28, e30, e32, e37, ' \
|
|
'e50 -> e62, e71'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [11, 12, 14, 16, 17, 19, 26, 27, 28, 30, 32, 37, *range(50, 63), 71]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e13, e15, e34, e47, e65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [13, 15, 34, 47, 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e18, e20, e21, e26 -> e28, e39, e41, e50, e56, e59, e65, e71'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [18, 20, 21, 26, 27, 28, 39, 41, 50, 56, 59, 65, 71]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e22, e30, e34, e39, e44, e47, e53, e56, e62, e68, e71'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [22, 30, 34, 39, 44, 47, 53, 56, 62, 68, 71]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e23 -> e25, e29, e32, e37, e41, e50, e53, e59, e62, e68'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(23, 26), 29, 32, 37, 41, 50, 53, 59, 62, 68]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e68'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [68]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e44'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [44]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 8:
|
|
error_note = 'No error'
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e47, e65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [47, 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e17, e19, e56 -> 62'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [17, 19, *range(56, 63)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e10, e21'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [10, 21]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e12 -> e19, e37 -> e41, e59 -> e65\n' \
|
|
'1-base error for e2 -> e4, e6, e20, e25, e28, e29'
|
|
if def_rating.error in [*range(12, 20), *range(37, 42), *range(59, 66)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(2, 5), 6, 20, 25, 28, 29]:
|
|
this_roll.error_result = 1
|
|
|
|
if pos_code == '3B':
|
|
error_chart += 'third-base.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e1, e2, e8, e10, e13 -> e16, e21 -> e24, e27, e30 -> e33, e50, ' \
|
|
'e56, e62, e65\n' \
|
|
'1-base error for e39'
|
|
if def_rating.error in [1, 2, 8, 10, *range(13, 17), *range(21, 25), 27, *range(30, 34), 50, 56, 62, 65]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [39]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e3 -> e10, e17, e18, e25 -> e27, e34 -> e37, e44, e47\n' \
|
|
'1-base error for e11, e19, e32, e56'
|
|
if def_rating.error in [*range(3, 11), 17, 18, *range(25, 28), *range(34, 38), 44, 47]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [11, 19, 32, 56]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e11 -> e18, e32, e33, e37, e53, e62, e65\n' \
|
|
'1-base error for e4, e8, e19, e21, e22, e27, e41'
|
|
if def_rating.error in [*range(11, 19), 32, 33, 37, 53, 62, 65]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [4, 8, 19, 21, 22, 27, 41]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e19 -> 27, e32, e33, e37, e39, e44, e50, e59\n' \
|
|
'1-base error for e5 -> e8, e11, e14, e15, e17, e18, e28 -> e31, e34'
|
|
if def_rating.error in [*range(19, 28), 32, 33, 37, 39, 44, 50, 59]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(5, 9), 11, 14, 15, 17, 18, *range(28, 32), 34]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e28 -> e31, e34, e35, e50\n' \
|
|
'1-base error for e14, e16, e19, e20, e22, e32, e39, e44, e56, e62'
|
|
if def_rating.error in [*range(28, 32), 34, 35, 50]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [14, 16, 19, 20, 22, 32, 39, 44, 56, 62]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e41, e47, e53, e59\n' \
|
|
'1-base error for e10, e15, e23, e25, e28, e30, e32, e33, e35, e44, e65'
|
|
if def_rating.error in [41, 47, 53, 59]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [10, 15, 23, 25, 28, 30, 32, 33, 35, 44, 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e62\n' \
|
|
'1-base error for e12, e17, e22, e24, e27, e29, e34 -> e50, e56 -> e59, e65'
|
|
if def_rating.error in [62]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [12, 17, 22, 24, 27, 29, *range(34, 51), *range(56, 60), 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e56, e65\n' \
|
|
'1-base error for e13, e18, e20, e21, e23, e26, e28, e31 -> e33, e35, e37, ' \
|
|
'e41 -> e53, e59, e65'
|
|
if def_rating.error in [56, 65]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [13, 18, 20, 21, 23, 26, 28, *range(31, 34), 35, 37, *range(41, 54), 59, 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e26, e31, e41, e53 -> 65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [26, 31, 41, *range(53, 66)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e24, e27, e29, e34, e37, e39, e47 -> e65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [24, 27, 29, 34, 37, 39, *range(47, 66)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e25, e30, e33, e47, e53, e56, e62, e65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [25, 30, 33, 47, 53, 56, 62, 65]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e16, e19, e39, e59 -> e65'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [16, 19, 39, *range(59, 66)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e21, e25, e30, e34, e53'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [21, 25, 30, 34, 53]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e2, e3, e6, e14, e16, e44'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 3, 6, 14, 16, 44]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e10, e15, e16, e23, e24, e56\n' \
|
|
'1-base error for e1 -> e4, e8, e14'
|
|
if def_rating.error in [10, 15, 16, 23, 24, 56]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(1, 5), 8, 14]:
|
|
this_roll.error_result = 1
|
|
|
|
if pos_code == 'SS':
|
|
error_chart += 'shortstop.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e12, e22 -> e32, e40 -> e48, e64, e68\n' \
|
|
'1-base error for e1, e18, e34, e52, e56'
|
|
if def_rating.error in [*range(4, 13), *range(22, 33), *range(40, 49), 64, 68]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [1, 18, 34, 52, 56]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e14 -> 32, e52, e56, e72 -> e84\n' \
|
|
'1-base error for e3 -> e5, e8 ,e10, e36'
|
|
if def_rating.error in [*range(14, 33), 52, 56, *range(72, 85)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(3, 6), 8, 10, 36]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e33 -> 56, e72\n' \
|
|
'1-base error for e6 -> e10, e17, e18, e20, e28, e31, e88'
|
|
if def_rating.error in [*range(33, 57), 72]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(6, 11), 17, 18, 20, 28, 31, 88]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e60 -> e68, e76 -> 84\n' \
|
|
'1-base error for e12, e14, e17, e18, e20 -> e22, e24, e28, e31 -> 36, e40, ' \
|
|
'e48, e72'
|
|
if def_rating.error in [*range(60, 69), *range(76, 85)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [12, 14, 17, 18, *range(20, 23), 24, 28, *range(31, 37), 40, 48, 72]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e16, e19, e38, e42, e60, e68'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [16, 19, 38, 42, 60, 68]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e23, e25, e32 -> 38, e44, e52, e72 -> 84'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [23, 25, *range(32, 39), 44, 52, *range(72, 85)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e26, e27, e30, e42, e48, e56, e64, e68, e76 -> e88'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [26, 27, 30, 42, 48, 56, 64, 68, *range(76, 89)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e29, e40, e52 -> e60, e72, e80 -> e88'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [29, 40, *range(52, 61), 72, *range(80, 89)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e84'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [84]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e64, e68, e76, e88'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [64, 68, 76, 88]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e44'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [44]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e60'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [60]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e21, e22, e24, e28, e31, e48, e64, e72'
|
|
if def_rating.error in [None]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [21, 22, 24, 28, 31, 48, 64, 72]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n' \
|
|
f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e72\n' \
|
|
'1-base error for e14, e19, e20, e24, e25, e30, e31, e80'
|
|
if def_rating.error in [72]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [14, 19, 20, 24, 25, 30, 31, 80]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e10, e12, e28 -> e32, e48, e84\n' \
|
|
'1-base error for e2, e5, e7, e23, e27'
|
|
if def_rating.error in [10, 12, *range(28, 33), 48, 84]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 5, 7, 23, 27]:
|
|
this_roll.error_result = 1
|
|
|
|
elif pos_code in ['LF', 'CF', 'RF']:
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-outfield.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1p8Y2On0301C1yq4ktyPxE4lXxrIALYaF1vbW6RkRpII/edit' \
|
|
'#heading=h.drrzdsvu0ij0'
|
|
|
|
# Build range note
|
|
if this_roll.d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F1 DO2 DO3 --TR3--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'DO2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'DO3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'TR'
|
|
else:
|
|
this_roll.hit_result = 'TR'
|
|
elif this_roll.d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 SI2 DO2 DO3 TR3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'DO2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'DO3'
|
|
else:
|
|
this_roll.hit_result = 'TR'
|
|
|
|
elif this_roll.d_twenty == 3:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 SI2 --DO2-- DO3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'DO2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'DO2'
|
|
else:
|
|
this_roll.hit_result = 'DO3'
|
|
|
|
elif this_roll.d_twenty == 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F2 F1 SI2 DO2 DO3\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'DO2'
|
|
else:
|
|
this_roll.hit_result = 'DO3'
|
|
|
|
elif this_roll.d_twenty <= 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- --SI2-- DO2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'DO2'
|
|
|
|
elif this_roll.d_twenty == 7:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- F1 SI2 DO2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'DO2'
|
|
|
|
elif this_roll.d_twenty == 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F2--- F1 --SI2--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty <= 11:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F2----- --SI2--\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty <= 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F2----- F1 SI2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F1'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty <= 15:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'F3 ----F2----- SI2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F2'
|
|
else:
|
|
this_roll.hit_result = 'SI2'
|
|
|
|
elif this_roll.d_twenty == 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--F3--- --F2--- F1\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F2'
|
|
else:
|
|
this_roll.hit_result = 'F1'
|
|
|
|
elif this_roll.d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----F3----- F2 F1\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F2'
|
|
else:
|
|
this_roll.hit_result = 'F1'
|
|
|
|
elif this_roll.d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------F3------- F2\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F3'
|
|
else:
|
|
this_roll.hit_result = 'F2'
|
|
|
|
elif this_roll.d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------F3---------\n' \
|
|
'```\n\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'F3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'F3'
|
|
else:
|
|
this_roll.hit_result = 'F3'
|
|
|
|
if pos_code in ['LF', 'RF']:
|
|
error_chart += 'corner-outfield.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '3-base error for e4 -> e12, e19 -> e25\n' \
|
|
'2-base error for e18\n' \
|
|
'1-base error for e2, e3, e15'
|
|
if def_rating.error in [*range(4, 13), *range(19, 26)]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error in [18]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 3, 15]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '3-base error for e13 -> e25\n' \
|
|
'2-base error for e1, e6, e8, e10'
|
|
if def_rating.error in [*range(13, 26)]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error in [1, 6, 8, 10]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e2\n' \
|
|
'1-base error for e7 -> 12, e22, e24, e25'
|
|
if def_rating.error in [2]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(7, 13), 22, 24, 25]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e3, e4, e7, e8, e10, e11, e13, e20, e21'
|
|
if def_rating.error in [3, 4, 7, 8, 10, 11, 13, 20, 21]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e5, e6, e10, e12, e14, e15, e22, e23'
|
|
if def_rating.error in [5, 6, 10, 12, 14, 15, 22, 23]:
|
|
this_roll.error_result = 2
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e11, e12, e16, e20, e24, e25'
|
|
if def_rating.error in [11, 12, 16, 20, 24, 25]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e13 -> e18, e21 -> e23, e25'
|
|
if def_rating.error in [*range(13, 19), *range(21, 24), 25]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e9, e18 -> e21, e23 -> e25'
|
|
if def_rating.error in [9, *range(18, 22), *range(23, 26)]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 10:
|
|
error_note = '2-base error for e19'
|
|
if def_rating.error in [19]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 9:
|
|
error_note = '2-base error for e22'
|
|
if def_rating.error in [22]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 8:
|
|
error_note = '2-base error for e24'
|
|
if def_rating.error in [24]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e19 -> e21, e23'
|
|
if def_rating.error in [*range(19, 22), 23]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '2-base error for e7, e8\n' \
|
|
'1-base error for e13 -> e18, e22, e24, e25'
|
|
if def_rating.error in [7, 8]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(13, 19), 22, 24, 25]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!'
|
|
error_note1 = f'**F1**: {OUTFIELD_X_CHART["f1"]["rp"]}\n' \
|
|
f'**F2**: {OUTFIELD_X_CHART["f2"]["rp"]}\n' \
|
|
f'**F3**: {OUTFIELD_X_CHART["f3"]["rp"]}\n'
|
|
error_note2 = f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n' \
|
|
f'**DO2**: {OUTFIELD_X_CHART["do2"]["rp"]}\n' \
|
|
f'**DO3**: {OUTFIELD_X_CHART["do3"]["rp"]}\n' \
|
|
f'**TR3**: {OUTFIELD_X_CHART["tr3"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e13, e16, e20, e23 -> e25\n' \
|
|
'1-base error for e4 -> e6, e10 -> 12, e16 -> e18'
|
|
if def_rating.error in [13, 16, 20, *range(23, 26)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(4, 7), *range(10, 13), *range(16, 19)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '3-base error for e8 -> e12, e24, e25\n' \
|
|
'2-base error for e19\n' \
|
|
'1-base error for e1 -> e3, e6, e14, e15, e18, e20 -> e22'
|
|
if def_rating.error in [*range(8, 13), 24, 25]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error == 19:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(1, 4), 6, 14, 15, 18, *range(20, 23)]:
|
|
this_roll.error_result = 1
|
|
|
|
else:
|
|
error_chart += 'center-field.png'
|
|
|
|
if error_dice == 18:
|
|
error_note = '3-base error for e4 -> 19\n' \
|
|
'2-base error for e2, e25\n' \
|
|
'1-base error for e3, e23'
|
|
if def_rating.error in [*range(4, 20)]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error in [2, 25]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [3, 23]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '3-base error for e20 -> e25\n' \
|
|
'2-base error for e1, e2, e5, e7, e9, e13 -> e15, e17'
|
|
if def_rating.error in [*range(20, 26)]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error in [1, 2, 5, 7, 9, *range(13, 16), 17]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e3 -> e5, e8, e23\n' \
|
|
'1-base error for e10 -> e18'
|
|
if def_rating.error in [*range(3, 6), 8, 23]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(10, 19)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e6 -> e8, e12, e13, e19'
|
|
if def_rating.error in [*range(6, 9), 12, 13, 19]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 14:
|
|
error_note = '2-base error for e9, e10, e16 -> e18, e20 -> e23'
|
|
if def_rating.error in [9, 10, *range(16, 19), *range(20, 24)]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 13:
|
|
error_note = '2-base error for e11, e18, e20, e23 -> e25'
|
|
if def_rating.error in [11, 18, 20, *range(23, 26)]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 12:
|
|
error_note = '2-base error for e14, e15, e21, e22, e24'
|
|
if def_rating.error in [14, 15, 21, 22, 24]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 11:
|
|
error_note = '2-base error for e19, e25'
|
|
if def_rating.error in [19, 25]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice >= 8:
|
|
error_note = 'No error'
|
|
elif error_dice == 7:
|
|
error_note = '2-base error for e16, e17'
|
|
if def_rating.error in [16, 17]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 6:
|
|
error_note = '2-base error for e12, e13\n' \
|
|
'1-base error for e19 -> e25'
|
|
if def_rating.error in [12, 13]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(19, 26)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!'
|
|
error_note1 = f'**F1**: {OUTFIELD_X_CHART["f1"]["rp"]}\n' \
|
|
f'**F2**: {OUTFIELD_X_CHART["f2"]["rp"]}\n' \
|
|
f'**F3**: {OUTFIELD_X_CHART["f3"]["rp"]}\n'
|
|
error_note2 = f'**SI2**: {OUTFIELD_X_CHART["si2"]["rp"]}\n' \
|
|
f'**DO2**: {OUTFIELD_X_CHART["do2"]["rp"]}\n' \
|
|
f'**DO3**: {OUTFIELD_X_CHART["do3"]["rp"]}\n' \
|
|
f'**TR3**: {OUTFIELD_X_CHART["tr3"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '2-base error for e10, e12, e13, e20, e22, e23\n' \
|
|
'1-base error for e3 -> e9, e15 -> e18'
|
|
if def_rating.error in [10, 12, 13, 20, 22, 23]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(3, 10), *range(15, 19)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '3-base error for e12 -> e19\n' \
|
|
'2-base error for e6, e10, e11\n' \
|
|
'1-base error for e2, e3, e7 -> e9, e21 -> e23'
|
|
if def_rating.error in [*range(12, 20)]:
|
|
this_roll.error_result = 3
|
|
elif def_rating.error in [6, 10, 11]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(2, 4), *range(7, 10), *range(21, 24)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif pos_code == 'C':
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season07/range-catcher.png'
|
|
error_chart += 'catcher.png'
|
|
|
|
# Build range note
|
|
if this_roll.d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3 ------SI1------\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3 SPD ----SI1----\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SPD'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 3:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G3--- SPD --SI1--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SPD'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 G3 --SPD-- SI1\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SPD'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SPD'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 --G3--- --SPD--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SPD'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G2--- G3 --SPD--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SPD'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 7:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'PO G2 G3 --SPD--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SPD'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'PO --G2--- G3 SPD\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--PO--- G2 G3 SPD\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'FO PO G2 G3 SPD\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'SPD'
|
|
|
|
elif this_roll.d_twenty == 11:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'FO --PO--- G2 G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--FO--- PO G2 G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 FO PO G2 G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'PO'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 --FO--- PO G2\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'PO'
|
|
else:
|
|
this_roll.hit_result = 'G2'
|
|
|
|
elif this_roll.d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- FO PO G2\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'FO'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'PO'
|
|
else:
|
|
this_roll.hit_result = 'G2'
|
|
|
|
elif this_roll.d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- FO PO\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'FO'
|
|
else:
|
|
this_roll.hit_result = 'PO'
|
|
|
|
elif this_roll.d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- --FO---\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'FO'
|
|
else:
|
|
this_roll.hit_result = 'FO'
|
|
|
|
elif this_roll.d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- FO\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'FO'
|
|
|
|
# Build error note
|
|
# error_dice = 5
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> 16\n1-base error for e2, e3'
|
|
if def_rating.error in [*range(4, 17)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 3]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 17:
|
|
error_note = '1-base error for e1, e2, e4, e5, e12 -> e14, e16'
|
|
if def_rating.error in [1, 2, 4, 5, *range(12, 15), 16]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 16:
|
|
error_note = '1-base error for e3 -> e5, e7, e12 -> e14, e16'
|
|
if def_rating.error in [*range(3, 6), 7, *range(12, 15), 16]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '1-base error for e7, e8, e12, e13, e15'
|
|
if def_rating.error in [7, 8, 12, 13, 15]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e6'
|
|
if def_rating.error in [6]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e9'
|
|
if def_rating.error in [9]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e10, e14'
|
|
if def_rating.error in [10, 14]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e11, e15'
|
|
if def_rating.error in [11, 15]:
|
|
this_roll.error_result = 1
|
|
|
|
elif 8 <= error_dice <= 10:
|
|
error_note = 'No error'
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e16'
|
|
if def_rating.error in [16]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e12, e13'
|
|
if def_rating.error in [8, 12, 13]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play! Ignore range chart above and consult ranges below\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**PO**: {INFIELD_X_CHART["po"]["rp"]}\n' \
|
|
f'**FO**: {INFIELD_X_CHART["fo"]["rp"]}\n' \
|
|
f'**SPD**: {INFIELD_X_CHART["spd"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e5, e13'
|
|
if def_rating.error in [5, 13]:
|
|
this_roll.error_result = 1
|
|
|
|
else:
|
|
error_note = '2-base error for e12 -> e16\n1-base error for e2, e3, e7, e11'
|
|
if def_rating.error in [*range(12, 17)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [2, 3, 7, 11]:
|
|
this_roll.error_result = 1
|
|
|
|
elif pos_code == 'P':
|
|
x_chart = 'https://sombaseball.ddns.net/static/images/season04/range-pitcher.png'
|
|
error_chart += 'pitcher.png'
|
|
symbol_link = 'https://docs.google.com/document/d/1a_g6apg74ixcwJapNrbOJZAx7gVxGjeNm79c5XLjSF0/edit' \
|
|
'#heading=h.fpjqmiv10r8l'
|
|
|
|
# Build range note
|
|
if this_roll.d_twenty == 1:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G3# ------SI1------\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 2:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# ------SI1------\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty <= 4:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2# G3# ----SI1----\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'SI1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 5:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G2 --G3#-- --SI1--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 6:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2# G3# --SI1--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2#'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'SI1'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty <= 8:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 --G3#-- SI1\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3#'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'SI1'
|
|
|
|
elif this_roll.d_twenty == 9:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'G1 G2 G3 --G3#--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G3'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty == 10:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3#--\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3#'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty <= 12:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 G3 G3#\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'G3#'
|
|
|
|
elif this_roll.d_twenty == 13:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- G2 --G3---\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G3'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 14:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--G1--- --G2--- G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G2'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty <= 16:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'----G1----- G2 G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G2'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty <= 18:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G3\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G3'
|
|
|
|
elif this_roll.d_twenty == 19:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'------G1------- G2\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G2'
|
|
|
|
elif this_roll.d_twenty == 20:
|
|
range_note = '```\n' \
|
|
' 1 | 2 | 3 | 4 | 5\n' \
|
|
'--------G1---------\n' \
|
|
'```\n'
|
|
if def_rating.range == 1:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 2:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 3:
|
|
this_roll.hit_result = 'G1'
|
|
elif def_rating.range == 4:
|
|
this_roll.hit_result = 'G1'
|
|
else:
|
|
this_roll.hit_result = 'G1'
|
|
|
|
# Build error note
|
|
if error_dice == 18:
|
|
error_note = '2-base error for e4 -> e12, e19 -> e28, e34 -> e43, e46 -> e48'
|
|
if def_rating.error in [*range(4, 13), *range(19, 29), *range(34, 44), *range(46, 49)]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 17:
|
|
error_note = '2-base error for e13 -> e28, e44 -> e50'
|
|
if def_rating.error in [*range(13, 29), *range(44, 51)]:
|
|
this_roll.error_result = 2
|
|
|
|
elif error_dice == 16:
|
|
error_note = '2-base error for e30 -> e48, e50, e51\n' \
|
|
'1-base error for e8, e11, e16, e23'
|
|
if def_rating.error in [*range(30, 49), 50, 51]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [8, 11, 16, 23]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 15:
|
|
error_note = '2-base error for e50, e51\n' \
|
|
'1-base error for e10 -> e12, e19, e20, e24, e26, e30, e35, e38, e40, e46, e47'
|
|
if def_rating.error in [50, 51]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [*range(10, 13), 19, 20, 24, 26, 30, 35, 38, 40, 46, 47]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 14:
|
|
error_note = '1-base error for e4, e14, e18, e21, e22, e26, e31, e35, e42, e43, e48 -> e51'
|
|
if def_rating.error in [4, 14, 18, 21, 22, 26, 31, 35, 42, 43]:
|
|
this_roll.error_result = 1
|
|
elif def_rating.error in [*range(48, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 13:
|
|
error_note = '1-base error for e6, e13, e14, e21, e22, e26, e27, e30 -> 34, e38 -> e51'
|
|
if def_rating.error in [6, 13, 14, 21, 22, 26, 27, range(30, 35), range(38, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 12:
|
|
error_note = '1-base error for e7, e11, e12, e15 -> e19, e22 -> e51'
|
|
if def_rating.error in [6, 13, 14, 21, 22, 26, 27, range(30, 35), range(38, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 11:
|
|
error_note = '1-base error for e10, e13, e15, e17, e18, e20, e21, e23, e24, e27 -> 38, e40, e42, ' \
|
|
'e44 -> e51'
|
|
if def_rating.error in [10, 13, 15, 17, 18, 20, 21, 23, 24, range(27, 39), 40, 42, range(44, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 10:
|
|
error_note = '1-base error for e20, e23, e24, e27 -> e51'
|
|
if def_rating.error in [20, 23, 24, range(27, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 9:
|
|
error_note = '1-base error for e16, e19, e26, e28, e34 -> e36, e39 -> e51'
|
|
if def_rating.error in [16, 19, 26, 28, range(34, 37), range(39, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 8:
|
|
error_note = '1-base error for e22, e33, e38, e39, e43 -> e51'
|
|
if def_rating.error in [22, 33, 38, 39, range(43, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 7:
|
|
error_note = '1-base error for e14, e21, e36, e39, e42 -> e44, e47 -> e51'
|
|
if def_rating.error in [14, 21, 36, 39, range(42, 45), range(47, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 6:
|
|
error_note = '1-base error for e8, e22, e38, e39, e43 -> e51'
|
|
if def_rating.error in [8, 22, 38, 39, range(42, 52)]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 5:
|
|
error_note = f'Rare play!\n\n' \
|
|
f'**G3**: {INFIELD_X_CHART["g3"]["rp"]}\n' \
|
|
f'**G2**: {INFIELD_X_CHART["g2"]["rp"]}\n' \
|
|
f'**G1**: {INFIELD_X_CHART["g1"]["rp"]}\n' \
|
|
f'**SI1**: {INFIELD_X_CHART["si1"]["rp"]}\n'
|
|
this_roll.is_chaos = True
|
|
|
|
elif error_dice == 4:
|
|
error_note = '1-base error for e15, e16, e40'
|
|
if def_rating.error in [15, 16, 40]:
|
|
this_roll.error_result = 1
|
|
|
|
elif error_dice == 3:
|
|
error_note = '2-base error for e8 -> e12, e26 -> e28, e39 -> e43\n' \
|
|
'1-base error for e6, e7, e17, e30, e33, e44'
|
|
if def_rating.error in [range(8, 13), range(26, 29), range(39, 44)]:
|
|
this_roll.error_result = 2
|
|
elif def_rating.error in [6, 7, 17, 30, 33, 44]:
|
|
this_roll.error_result = 1
|
|
|
|
roll_embed = get_dice_embed(this_team)
|
|
roll_embed.add_field(name=f'SA Fielding roll for {this_team.gmname}', value=this_roll.roll_message)
|
|
|
|
chart_embed = get_dice_embed(this_team, f'{pos_code} Fielding Check Summary')
|
|
chart_embed.add_field(name='Range Result', value=range_note, inline=False)
|
|
chart_embed.add_field(name='Error Result', value=error_note, inline=False)
|
|
chart_embed.add_field(
|
|
name='Help Commands',
|
|
value=f'Run `!<result>` for full chart readout (e.g. `!g1` or `!do3`)'
|
|
)
|
|
reference_string = f'[Range Chart]({x_chart}) / [Error Chart]({error_chart}) / [Result Reference]({symbol_link})'
|
|
chart_embed.add_field(name='References', value=reference_string, inline=False)
|
|
|
|
this_roll.embeds = [roll_embed, chart_embed]
|
|
|
|
if error_note1:
|
|
error1_embed = get_dice_embed(this_team)
|
|
error1_embed.add_field(name='Error Results', value=error_note1)
|
|
this_roll.embeds.append(error1_embed)
|
|
if error_note2:
|
|
error2_embed = get_dice_embed(this_team)
|
|
error2_embed.add_field(name='Error Results', value=error_note2)
|
|
this_roll.embeds.append(error1_embed)
|
|
|
|
logger.info(f'Game {this_play.game.id} | Team {this_team.id} ({this_team.abbrev}) Roll Message: {this_roll.roll_message}')
|
|
return this_roll
|
|
|
|
|
|
def frame_plate_check(team: Team, this_game: Game) -> FrameRoll:
|
|
tens_digit = (this_game.id // 10) % 10
|
|
half_tens = round(tens_digit / 2)
|
|
d_twenty = random.randint(1, 20)
|
|
roll_message = f'```md\n' \
|
|
f'# {str(d_twenty)}\n' \
|
|
f'Details:[1d20 ({d_twenty})]```'
|
|
|
|
umps = [
|
|
{'name': 'Angel Fernando', 'walk_d20': 2 + tens_digit + half_tens},
|
|
{'name': 'Ron Koopa', 'walk_d20': 6 + tens_digit},
|
|
{'name': 'Hunter Enderstedt', 'walk_d20': 2 + half_tens},
|
|
{'name': 'D.C. Bucknor', 'walk_d20': 8 + half_tens},
|
|
{'name': 'Joe East', 'walk_d20': 14 + half_tens},
|
|
{'name': 'Last Diaz', 'walk_d20': 10 + half_tens},
|
|
]
|
|
this_ump = umps[half_tens]
|
|
|
|
ump_message = f'```md\n' \
|
|
f' WALK: 1 - {this_ump["walk_d20"]}\n' \
|
|
f'STRIKEOUT: {this_ump["walk_d20"] + 1} - 20\n' \
|
|
f'```'
|
|
|
|
result_message = f'**{"WALK" if d_twenty <= this_ump["walk_d20"] else "STRIKEOUT"}**'
|
|
|
|
roll_embed = get_dice_embed()
|
|
roll_embed.add_field(name=f'Pitch Framing roll for {team.gmname}', value=roll_message)
|
|
roll_embed.add_field(name=f'Umpire: {this_ump["name"]}', value=ump_message)
|
|
roll_embed.add_field(name='Result', value=result_message, inline=False)
|
|
roll_embed.set_footer(text="This result will be logged automatically")
|
|
|
|
this_roll = FrameRoll(
|
|
embeds=[roll_embed],
|
|
d_twenty=d_twenty,
|
|
is_walk=d_twenty<=this_ump["walk_d20"]
|
|
)
|
|
return this_roll
|
|
|
|
return {'embed': roll_embed, 'is_walk': d_twenty <= this_ump['walk_d20']}
|
|
|
|
|
|
def ab_roll(this_team: Team, this_game: Game, allow_chaos: bool = True) -> AbRoll:
|
|
"""
|
|
Make an AB roll
|
|
"""
|
|
d_twenty = random.randint(1, 20)
|
|
d_twenty_two = random.randint(1, 20)
|
|
flag = None
|
|
|
|
if allow_chaos:
|
|
if d_twenty == 1:
|
|
logger.info(f'Game {this_game.id} - Wild Pitch Check')
|
|
flag = 'wild pitch'
|
|
elif d_twenty == 2:
|
|
if random.randint(1, 2) == 1:
|
|
logger.info(f'Game {this_game.id} - Balk Check')
|
|
flag = 'balk'
|
|
else:
|
|
logger.info(f'Game {this_game.id} - Passed Ball Check')
|
|
flag = 'passed ball'
|
|
|
|
if flag:
|
|
logger.info(f'Creating chaos roll')
|
|
this_roll = AbRoll(
|
|
d_twenty=d_twenty_two,
|
|
roll_message=f'```md\n# {d_twenty_two}\nDetails: [1d20 ({d_twenty_two})]```\n'
|
|
)
|
|
logger.info(f'Getting dice embed for this_roll: {this_roll}')
|
|
embed = get_dice_embed(this_team)
|
|
logger.info(f'embed: {embed}')
|
|
embed.add_field(
|
|
name=f'{flag.title()} roll for the {this_team.sname}',
|
|
value=this_roll.roll_message
|
|
)
|
|
logger.info(f'embed post roll message: {embed}')
|
|
this_roll.embeds = [embed]
|
|
return this_roll
|
|
|
|
this_roll = AbRoll(
|
|
d_six_one=random.randint(1, 6),
|
|
d_six_two=random.randint(1, 6),
|
|
d_six_three=random.randint(1, 6),
|
|
d_twenty=random.randint(1, 20)
|
|
)
|
|
|
|
this_roll.roll_message = f'```md\n# {this_roll.d_six_one},{this_roll.d_six_two + this_roll.d_six_three},{this_roll.d_twenty}\nDetails:[1d6;2d6;1d20 ({this_roll.d_six_one} - {this_roll.d_six_two} {this_roll.d_six_three} - {this_roll.d_twenty})]```'
|
|
|
|
logger.info(f'AB roll with message: {this_roll}')
|
|
|
|
embed = get_dice_embed(this_team)
|
|
embed.add_field(
|
|
name=f'At bat roll for the {this_team.sname}',
|
|
value=this_roll.roll_message
|
|
)
|
|
|
|
this_roll.embeds = [embed]
|
|
|
|
logger.info(f'Game {this_game.id} | Team {this_team.id} ({this_team.abbrev}): {this_roll.roll_message}')
|
|
return this_roll
|
|
|
|
|
|
def d_twenty_roll(this_team: Team, this_game: Game) -> DTwentyRoll:
|
|
logger.info(f'Rolling a d20 for {this_team.sname} in Game {this_game.id}')
|
|
this_roll = DTwentyRoll(
|
|
d_twenty=random.randint(1, 20)
|
|
)
|
|
|
|
this_roll.roll_message = f'```md\n# {this_roll.d_twenty}\nDetails:[1d20 ({this_roll.d_twenty})]\n```'
|
|
logger.info(f'D20 roll with message: {this_roll}')
|
|
|
|
embed = get_dice_embed(this_team)
|
|
embed.add_field(
|
|
name=f'D20 roll for the {this_team.sname}',
|
|
value=this_roll.roll_message
|
|
)
|
|
|
|
this_roll.embeds = [embed]
|
|
|
|
logger.info(f'Game {this_game.id} | Team {this_team.id} ({this_team.abbrev}): {this_roll.roll_message}')
|
|
return this_roll
|
|
|
|
def jump_roll(this_team: Team, this_game: Game) -> JumpRoll:
|
|
"""
|
|
Check for a baserunner's jump before stealing
|
|
"""
|
|
d_twenty = random.randint(1, 20)
|
|
flag = None
|
|
|
|
if d_twenty == 1:
|
|
flag = 'pickoff'
|
|
elif d_twenty == 2:
|
|
flag = 'balk'
|
|
|
|
this_roll = JumpRoll(
|
|
is_chaos=flag != None,
|
|
d_six_one=random.randint(1, 6),
|
|
d_six_two=random.randint(1, 6),
|
|
d_twenty=random.randint(1, 20)
|
|
)
|
|
|
|
if not flag:
|
|
this_roll.roll_message = f'```md\n# {this_roll.d_six_one + this_roll.d_six_two}\n'\
|
|
f'Details:[2d6 ({this_roll.d_six_one} {this_roll.d_six_two})]```'
|
|
else:
|
|
this_roll.roll_message = f'```md\nCheck {flag}```\n' \
|
|
f'{flag.title()} roll```md\n# {this_roll.d_twenty_two}\nDetails: [1d20 ({this_roll.d_twenty_two})]```'
|
|
|
|
logger.info(f'AB roll with message: {this_roll}')
|
|
|
|
embed = get_dice_embed(this_team)
|
|
embed.add_field(
|
|
name=f'Jump check for the {this_team.sname}',
|
|
value=this_roll.roll_message
|
|
)
|
|
|
|
this_roll.embeds = [embed]
|
|
|
|
logger.info(f'Game {this_game.id} | Team {this_team.id} ({this_team.abbrev}): {this_roll.roll_message}')
|
|
return this_roll
|
|
|
|
|