Jump to content

alexfall862

Big Ten
  • Posts

    573
  • Joined

  • Last visited

  • Days Won

    30
  • Points

    1,115 [ Donate ]

Everything posted by alexfall862

  1. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  2. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  3. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  4. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  5. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  6. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  7. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  8. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  9. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  10. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  11. until
    Results are now on the interface! Interface: https://simfba-interface.azurewebsites.net/#/
  12. Deadline to execute trades for the current season. Deadline is the same as the gameplan and depth chart sync, but be advised a late trade could complicate your own ability to submit a valid depth chart.
  13. Deadline to submit gameplans and depth charts before games are run. Interface: https://simfba-interface.azurewebsites.net/#/
  14. @Ricky Campbell Non-football basketball leagues will be added for the next couple weeks.
  15. @Ezaco Go to profile and click your avater in the top left
  16. BTW, if folks see any issues with display, let me know and I can resolve.
  17. Hi! As the site has grown, avatars with a user's CFB no longer reflect the full scope of what that users may be doing, and users have given feedback that frankly it starts to get hard to track who's doing what where outside of CFB due to this. We're going to open user avatars to be whatever you like, instead of assigned from your CFB team! (tomfoolery and NSFW still not allowed). Where to Change Avatar Additionally, to make sure folks know who's who in posts, we have a feature inside of your user profile where you can add your teams! As long as no one abuses this or uses it maliciously, adding your teams to your posts/profiles is as easy as selecting them out of a drop down menu! (we'll lock it behind admin privileges if it becomes a problem) The next question is: How do you do this? (Note: FCS football teams, non-football schools in the CBB league, and the international teams in simBBA have not been added yet, but will be soon.) Special shoutout to @TuscanSota, @Kirby, @Spoof, @subsequent, and @Sarge who at various points helped make this happen! Instructions Step 1: Go to profile Step 2: Select Edit Profile Step 3: Select the appropriate teams Step 4: Save! And it should look something like this (and it should be visible on this post as well):
  18. I already have 3 great ideas for commentators that are going to make opponents hate to play me.
  19. Hi! Trying something a little bit different this week - I made a video walkthrough of the dev diary where I dive into the source code and talk through the mechanics of the features outlined below! I've not done one since the OG google sheets recruiting walkthrough - check it out here: https://www.youtube.com/watch?v=0V_d4HyeEF4 Last dev diary covering player generation we talked about the attributes tied to integers, which leaves out a couple of other aspects of player evaluation - so today is about diving into that realm! L/R Handedness ~20% of players pitch, throw, and bat left-handed, while ~60% do so right handed. The remaining group are mixed between position players listing their throwing due to positional requirements (infielders typically throw right handed) or are genuinely mixed between being lefty, righty, or switch. To capture this, at least roughly, players will be generated with a 20/60/5/5/5/5 split with all left, all right, l/r, r/l, s/l, and s/r respectively. Switch hitters historically have stabilized around 10-15% of batters in the post-2010 era, and while 10% is on the low side, I think the slight competitive advantage of not facing platoon split issues will likely have more switch hitters on MLB rosters (and someone in the sim will probably make a team of entirely switch hitter or something) I’m not going to add switch pitching to the sim at the moment as I’m not entirely sure how to handle the case where a switch pitcher and switch hitter face each other and don’t want to add recursive loops that cause my computer to melt instead of simming games. I’ll probably create some kind of position change check on throwing hands down the road, but not in the scope of the MVP for season 1. Batter Height/Weight Height impacts a couple of things in baseball: Your strike zone expands (particularly on high strikes) Your reach expands (particularly on outside balls) Heavier/taller batters hit for more power. (weirdly the study on this was published in a medical journal?!) The way we’ll work this, instead of having height/weight become a deterministic statistic is that higher power players will be more likely to have a taller height and heavier weight assigned to them. Being taller will benefit a player slightly in the size of their ‘reachable’ zone when swinging outside the strike zone, but will also hurt them as pitchers will find it slightly easier to throw strikes, particularly with breaking pitches. That doesn’t mean other players are short changed though - as the strike zone shrinks as the batter shrinks. Shorter players will have an easier time getting balls called and will be slightly more likely for breaking pitches to slip out of the zone. Height will also play a very small malus/boost in the field as well, particularly as a boost when basemen are catching (Altuve at first is a much smaller target than Morneau). Interestingly, for pitchers the common wisdom is that a taller pitcher has a faster apparent speed on their pitches due to a long step when pitching - but from a performance standpoint the outcome doesn’t change very much in any domain based on height, so pitchers are immune from this effect for now. The way that this will work under the hood is that players will be assigned a height by a normal distribution of heights from baseball players (mean height is ~6’1”), with the higher power potential players pulling from a higher mean value, and the lower power potential players pulling from a lower mean value. The player will then get a BMI assigned to them to generate a weight as well. This way the rosters and players retain some ‘real life’ logic in their construction (no 4” LBers), while retaining the capacity for smaller players to demonstrate power (Yogi Berra) and for ‘bigger’ players to show relatively low pop (Billy Butler, Pablo Sandoval) How Specific Pitches are Generated: Pitches fall into 3 broad categories, with the specific pitches showing slight : Fastball - slightly more likely to generate harder contact, but also slightly more likely to generate bad contact and misses. OffSpeed - slightly more likely to generate quality contact, but also more likely to generate misses Movement - much more likely to generate harder contact, but much more likely to generate misses and bad contact #4 - Can be any pitch in the above 3 categories #5 - Can be any pitch in the above 3 categories Players may not get 5 pitches developed to the point of being consistently effective (or effective at all), so users will select the pitches and desired approach of each pitcher (e.g. 60% pitch 1, 20% pitch 2, 20% pitch 3, 0% pitch 4, 0% pitch 5) The pitches in the sim right now are as below: Arm Slots Pitchers have a slight advantage in getting called strikes when throwing from deeper angles. The work on this isn’t sure the cause is from something like an intrinsic benefit as far as arm angle, or whether umpires/hitters are just weirded out by the novelty of a pitcher mowing the grass around the mound with his off hand. That said, the effect is real and while pitchers generally vary their arm slot pitch to pitch, most show a general tendency around 1 delivery type. Overhead, 3/4, Sidearm, and Submarine will each have slight effects on pitcher’s performance, with 3/4 and Overhead being most common and some sidearm and submariners being generated as well. Archetypes Another area of player characteristics/value that will carry with them through their career is an ‘archetype’. This is a way to get a quick summary of a player’s profile without having to dig through their entire ratings portfolio. It will be regenerated each offseason to capture how the player plays right now with a slight weighting towards their growth potential in those stats as well. Different than the simFBA archetypes, these are purely descriptive and do not play a role in player generation, but are instead a way to quickly process rosters and players. The names of these are still being compiled, but think ‘speedster’ for players with only speed as a ++ skill or ‘patient hitter’ for hitters with solid eye and discipline. Clutch-ness Baseball nerds have consistently pointed out that leverage or batting average with RISP isn’t something that predicts future performance in similar scenarios - in fact the batting average overall is more predictive (which makes sense if you figure that the ‘clutch’ scenarios are a much smaller sample size). The performance of 1 player or another that far outclasses their peers do not replicate themselves year to year. So tentatively, I’m not going to include a clutch rating into the sim at this moment. Pinch-Hitting Similarly, while the concept of a player being more adept at pinch hitting is a long standing baseball trope, there is only a slight to null effect on a batter’s ability to successfully pinch hit compared to their starting line. This effect is also somewhat handled by the ‘n times through the order’ effect on pitchers, where pinch hitters will not have faced this particular pitcher in the game (by virtue of being a pinch hitter) and thus has a comparatively lower ability to succeed than batters that haven’t. Last Week's Poll No particularly overwhelming preference from folks for or against a particular concept, although one suggestion that came up a fair bit were bunts and sac hits. I think that's a great idea and popped it on the list for future seasons, but will probably not get a 'logic' for when to do that sorted out for the first season. This Week's Poll Since we covered player generation already, there's not a ton to cover, but a brief poll to help collect feedback! https://forms.gle/Bo7Rqw3M4WRk9wcr7 Thanks, alexfall862
  20. Hi! Trying a new composition technique I borrowed from @Rocketcan after simFBA.com ate my Nebraska team preview article without saving a draft. This has been drafted in google docs. It should display correctly, but let me know if it doesn't. I started writing Part 2 of the roster/ability/strategy breakdown, and then realized that the way the game handles baseball actions needed to give context to all the different tendencies/strategies in Part 2 of the player creation and strategy walkthrough - and then that aside grew until it was definitely too big to make part of another dev diary, as I tend to write a lot anyways. So today we’re taking a break from the macro to talk about the micro and dive into the Batter/Pitcher Interaction!. Batter/Pitch Interaction The very nuts and bolts of the sim (just like irl baseball) is built on the interaction between the pitcher and batter. There appear to be two schools of thought on how to simulate this among baseball games. The first is to take the outcome and work backwards - so measuring the singles/doubles/triples/HR/strikes/walks etc. and assigning a weighted average from there. Most online simulations appear to take this approach. The other approach is to break down the plate appearance into a series of pitches, with the likelihood of each particular outcome being derived from the same statistics as above, but broken down pitch by pitch instead of plate appearance by plate appearance. These levels of abstraction work decently well, but have a couple drawbacks - namely that digging into cause/effect relationships in baseball beyond the outcome of the macro batter/pitcher matchup means that it becomes difficult to meaningfully add consequences or user input to pitcher or pitch choices beyond good pitcher = better outcome and bad pitcher = bad outcome. simMLB attempts to capture a lever deeper than that. What I mean by going deeper than the batter/pitcher matchup is that simMLB doesn’t abstract the pitch itself as an aspect of the pitcher’s ability, but it is itself it’s own game ‘event’ even after it leaves the pitcher’s hand. There is a step in the sim where the batter is evaluated on their ability to identify and take action on the placement and type of pitch itself. This should ultimately allow for things like pitch location charts and batter spray charts - which other sims have, I think - and the ability to have influence over them - I don’t think that’s as common - as the meddling owner/manager/pitching coach that you are! Right now, what is operational is the minimum viable product of that system (bare minimum to get functional and tuneable outcomes) where when a pitch is simulated, it takes contextual inputs like pitch choice, pitch ratings, the frequency of that pitch so far, and the number of times it’s been thrown consecutively and sends that to a batting function that takes those inputs and outputs what the batter is going to try to do. From there, the system simulates the batter acting on their intention, where they can access the game’s context in the same way as the pitcher, looking at strike/ball count, perceived placement of the pitch, perceived rating of the pitch (players), and their ability to then hit said pitch. This is tied largely to the eye rating (can they ID the pitch and placement) and discipline rating (can they make the ‘right’ choice given all the inputs). Instead of outcomes being ascribed to success, like singles or home runs, the bat swing is then evaluated on its ability to make contact with the ball. The is broken down into: Barrel Solid Contact Flare Burner Topped Under Poor Which are shown in the graphic below, where distance from the player icon is the ‘power’ or exit velocity of the pitch, while the launch angle or ‘contact point’ of the ball : And credit to statcast, because without their advanced metrics, this would have been impossible to derive and tune to irl baseball. Players with a higher contact rating can expect to live closer to the 0-45 degree range, while players with a higher power rating can expect to get outcomes closer to the outside of the ring. Players with a decent eye are more likely to have more events in this spread, rather than whiffing completely. This is a subtle difference in contact and eye between other sims like MLB The Show which I think it important to note. A player’s eye helps them to make contact with pitches, contact is the ability to make meaningful contact between 0-45 degrees - so a high contact low eye player is likely to make more hits, while a low contact high eye player is more likely to make contact with pitches (just not well). The way simMLB interactions or ‘actions’ will work is a little more granular than either, in an attempt to open up some matchup strategy and give more agency to the value of pitcher and pitch management. So that’s the in/out and vertical axis of the ball, but we haven’t covered the horizontal axis! MLB players average roughly a 40/40/20 when it comes to pulling a pitch or pushing something to opposite field. This is something that’s partially based on a player executing the timing of their swing - but it also an aspect of intentionality in player’s batting approach. The other major influence is direction of a hit pitch has to do with location: players looking to push a pitch to opposite field are looking for outside pitches as opposed to intentionally looking to a pull, which might involve waiting until you get an inside pitch. Discipline and eye play a factor is a player accurately identifying and executing the right move there if users dictate one approach over the other. So the pull/straightaway/oppo splits will depend on user input instructing players to behave in a certain way (more on that in another dev diary) or the timing and location identification of the hitter executing their swing lining up with the pitch. Pitch Sequencing Among other influences on pitches is that players get better at ‘seeing’ pitches the more often they get repetitions in a game against that pitch - this is known as the time-through-the-order effect, which has influenced some strategies in MLB lately - with the Rays experimenting with ‘openers’ to minimize the amount of matchups their ‘starter’ has against the heart of the order prior to the 6th/7th inning. The effect is hypothesized to be from players getting to see specific pitches and get used to a pitcher’s spread of pitch choices. This effect is captured by the game tracking two things: the times a particular pitch is thrown in a game, times a pitch is thrown consecutively. The more a pitcher throws the same pitch, and particularly consecutively, the more a malus is applied to the ‘deceptive-ness’ of a pitch. In other words, a batter is more likely to succeed their eye rating check. This is a very slight malus, but the longer a pitching appearance goes, the more the effect begins to compound. Most pitching distributions should be fine - anywhere up to 40% should be more or less fine (still a very mild malus, but not much) while relievers who rely on 1 or 2 pitches better have some serious gas and break on their pitch in order to keep the dropping ‘deceptiveness’ of their pitch from letting them get thrashed. This mechanic also creates an incentive for putting players with a wider but perhaps less powerful collection of pitch ratings into games as starters, and using players with 1 or 2 extremely solid pitches in as relievers until their full spread of pitches develops (or doesn’t). A catcher’s sequencing rating plays into this dynamic not by mitigating the effect, but in helping a pitcher analyze which pitch is better after evaluating the pitch ratings after this malus is applied and choosing the most effective throw. User’s strategy plays into this as part of the strategy mechanics (more on this in another dev diary) where they choose and shape the pitcher’s baseline pitch choice, including but not limited to whether a player throws their 2nd through 5th pitch at all. What’s Next? Once the ball is contacted, then it becomes a matter of fair/foul/direction/distance and whether the defense can field it successfully - which is a matter for a future dev diary! Poll Results Ok - so we had two votes and both were relatively close - but both are very meaningful for users in the sim. First, y'all voted in favor of a mixed approach in roster construction, with random assignment and some kind of user input. The way that we'll work this is for the top 5 players on your team to be available through a fantasy draft, and then the rest of the roster randomly assigned. The second vote was on the monetary structure of the league being created. The vote was close, but a majority of users are voting for that to be applied matched to current financial status of teams in irl MLB. Now, as a reminder, this impact is already impacted by the vote to split the revenue consequences in half - so with all teams at an equal record to begin the sim, I don't think this will generated a single team with revenue as low as 60m or as high as 350m. This Week's Poll This week's poll is a place for you to input different ways you'd like to be influential in your batter/pitcher's approach. This will help me a ton in creating options for users to meaningfully and realistically provide the kinds of choices a manager/batting/pitching coach could influence a player's approach. Here's the link to the poll: https://forms.gle/wHqvwWsKtoXBkMhu7 Thanks, alexfall862
  21. Still working on those details, but I think draft is likely a half-season-long process. Spring training I gotta ponder on mechanically, but I think we might just schedule it the same way the regular season is and just treat it like weeks -4, -3, -2, -1, and 0 before the season begins.
  22. Hi! Modeling Players In order to build a player, you need to create attributes that the engine will use to approximate baseball skills and abilities. So far, we have the abilities in the spoiler tab below (explanation included) Player Abilities Player Generation and Progression The player creation engine generates players based on the premise that the pool of players should represent the full selection of high level high school, college, and international players that feed into the MLB system. Those players, largely, suck. Additionally, many players with 1 or 2 'MLB tools' end up flaming out with little to show for it other than a couple at-bats with the Altoona Curve. On the flip side, occasionally a player will emerge from the murk and mud of the farm teams and blow everyone away after they finally put all the pieces together - sometimes without any club really noticing their potential in the first place. To capture these aspects of the helter-skelter MLB player development environment, the player creation engine generates players without an overall potential. Instead, each attribute contains it's own potential for growth. A player's overall potential is simply a reflection of the average potential each of their relevant attributes contains. Additionally, while a completely emergent and self-dictating system would be awesome, there's just a very early influence in developmental baseball that forces players to specialize after high school - and so the roster also designates pitchers and position players when generating the initial batch. Players are generated as '15 year old' blank slates, with 0 for all attributes, and only their growth potential - and then they go through their first round of progression before being joined with the master roster. What kind of profile a player might have for their potentials on each attribute is guided, loosely, but largely dependent on the random assignment of potential. As mentioned below, the vast, vast, majority of these player will be straight dookie - as is a strong baseball tradition among feeder leagues. How Generated What potential means for these specific attributes is not whether it will increase with 100% certainty, but the general trend of outcomes will favor higher potential ratings compared to lower potential ratings. This works by generating a random increase year to year based on a normalized distribution of the value the attribute may increase by. Math snippet below: The way this math works is this: left hand side is the age of the player, the two values inside the parenthesis are the mean baseline ability increase, and the standard deviation of the desired normalized curve around that mean. As you can likely guess - among the specific values showing the top row is the best potential, and lower is worse. The top is A potential, followed by B, C, D, and F. The bottom-most row with an average of 0 growth is 'N' which is for players that don't use that attribute - 'N' for 'not used' more or less. Most position players will have at least half of their pitching attributes as this lowest growth potential, and pitchers are the same for position roles. Due to the random nature of the normalized curve, it is vanishing unlikely, but still possible, for a player with mostly 'N' potential to develop into a Shohei Ohtani type batter while being designated to develop as a pitcher. But very unlikely. Once a baseline value is set, the baseline is transformed in a logarithmic function to it's 'play' value that will be displayed to the game engine to run plays and shown (probably fuzzed a little) to users for making roster decisions, etc. These transformed values largely adhere to a 0-100 format, with sub-20 being HS/College level play, and 80+ being truly superlative abilities. A player averaging above an 80 would likely be the best player in the sim. This is loosely inspired but not mapped 1:1 with baseball's 80-20 scouting scale. More About Potential All A potential skills averaged together will outpace all B potential skills by about 10-15% - but the individual outcomes have a pretty fair likelihood of showing any single B potential skill could grow higher than any particular single A potential skill - it's just that it's more likely that B potential will peak lower than an A potential skill. Growth for all players and their abilities starts the strongest early in their careers and the scope of outcomes narrows or 'locks in' more as they age. This means both that high potential players become more likely (though not with complete certainty) to be busts if they don't hit early, and it also means that lower potential players are more likely to be useful even if they don't have high potential as long as they peak before their 'locked in' age (around 26-29) This 'spread' between potentials create the kind of uncertainty in development that leads teams to roster and play players that have high potential, but aren't producing quite yet, as well as provide incentive for teams to hang on to some that don't have impressive potential, but have higher 'right-now' skill than would normally be expected given their potential. Examples Aside from blabbering on, here are some concrete examples of the distribution of talent in a sample generation of the league (overall in these graphs is calculated as an average of all attributes, not weighted to favor specific attributes that are more impactful at the moment, but that's largely inconsequential for this exercise) Below is a map of a sample league with about 1.5k players generated - left hand axis is cumulative overall, and bottom is age: As you can see, the general trend is that players get better over time, but specific players actually show a wide variety of career 'shapes' - while still maintaining adherence to the general trend that higher potential players will outgrow lower potential players. Below are a couple specific players pulled from a test batch: Here we have Jordany Kraynak, who had an absolutely terrible bat (F for contact and power) but A potential speed, which finally hit it's big 'jump' after his age 20 season, along with a B throw accuracy he would probably be a usable MLB 2nd baseman. This is Norbert Wolf, who had a B for pitching endurance, but not a single C potential pitch in his arsenal. He was a certified garbageman (throwing trash), and so while he was solidly competitive early in his career (HS, College) his lack of likelihood to have his pitches grow ended up becoming reality and he retired at 30. Here is Brock Wolters (from a different test set, I tend not to run one's bigger than 1.5k between tunings due to time), who had a B average potential across all his ratings, and ended up hitting on most of them - probably one of the better players in the league all the way through to his age 39 season where he retired. Lastly, this is T.C. Arango, who didn't cross the MLB-playable threshold until he was 26, and for that matter also ended up in a similar position as a late bloomer in HS - showing little growth as a HS kid and taking off at 18 and then again after for his junior year... but then didn't really meaningfully develop after that for a while. Attribute/Player Development Meta During the current test runs of the roster generator, about 2% of generated players reach 'MLB-starter'. This is actually a little generous, as among high school seniors, about .5% of boys baseball players can expect to end up drafted and of those only 20% will make the MLB - so .1% or a 'one in a thousand' shot to play in MLB. That said, I think it's fair for the engine if we skip generating the completely useless players and avoid turning it from a player engine into an insurance salesmen engine. Further tuning is needed, but ideally this engine should supply enough players that we could generate at least a partial college recruiting class and full MLB draft class each year. The expected size of that roster is likely around 750-1000 new players each year. To fill the eventual NCAA rosters, we'll likely generate an 'oops, all F' box of players to fill out recruiting/playing. This is a WIP of course and the particulars will likely change. Player Elimination All players keep the dream alive until the age of 30, where the average progression of all players drops below zero and there's very little chance of a late career bloom. After 30, the lower the overall of a player, the higher the likelihood of their retirement, with all sub-AAAA players having effectively a 100% chance to retire. Desired Outcomes - Player potential means something tangible, but holds an element of risk - Being able to hold more 'solid' prospects will likely generate more actual pro-level players than betting the farm on 1-2 superlative prospects - That said, high potential players are very much capable of reaching much higher highs than most other players. - The vast majority of players generated for college/juco/draft should not play against the MLB level players or expect to last long above A ball. Side-Effects Assigning potential for the individual attributes does follow some loose trends and rules (catcher abilities are less likely to have high growth potential, pitchers and batters are very unlikely (though it's not impossible) to get cross-compatible skills, pitchers generally have higher throwing ratings for fielding), but by and large it's randomly distributed from there. There are lots of odd combinations of player skills and sometimes wide gaps between abilities on a single player. In order to have some of those players turn out as useful, making the most of player development is going to be key to fielding solid teams. What Role You Play So outside of all of that growth potential, players still get coached and helped along while playing. One of the features that you will have in the college/farm/MLB level is to 'train' an attribute and functionally increase it's development for that year by 2 potential levels. This will likely be applicable to a selection, and not all, of your players. You could choose to shore up a player's weak spot, choose to double down on a strength, or develop positional versatility in all kinds of ways by focusing fielding or catching skills. The one thing you have to remember is that as players age, the ability rating 'locks in' and it's harder (but not impossible) to get large increases in skill - so focusing on younger players may be a good thing. But on the flip side, you could focus on making sure your 1 all-star level player gets that extra boost before they hit 30 to really maximize their value. Additionally, choosing to put players in the right league for their circumstance will also help their development, as a player wildly overmatched in a developmental league (A, AA, AAA) will get a slight malus to their progression. This will be measured using a version WAR fit for the sim and the impact will be the same as dropping 1 potential level across all skills. This Diary's Poll 1. How should players be assigned to teams? Fantasy draft? Random distribution? Partial draft, partial distribution? Other? 2. In order to facilitate players joining teams, some sense of economic baseline should be established first. Since owners have voted for a split revenue model, what would be the best way to assign media market strength? 3. The current attributes were created with some consultation from other users, and I definitely appreciate their help! That said, I know there's at least 20 other team owners that would be interested in helping out. Share ideas/input on this process or questions you might have. Link to Poll Here: https://forms.gle/qfLrm9LWiqFU5BBA7 Last Diary's Poll Results While the largest section of voters were in favor of Tuesday-Friday simming, the majority of voters did ask for some kind of break in between series of games. So I think what we'll do is split the difference and do Tuesday-Wednesday-Friday-Saturday to give everyone time to make moves between most series during the season. Thanks, Alex
  23. Don't hate on me, hate on Manfred for that one.
×
×
  • Create New...