Home | Webstore
Latest News: OOTP 25 Available - FHM 10 Available - OOTP Go! Available

Out of the Park Baseball 25 Buy Now!

  

Go Back   OOTP Developments Forums > Prior Versions of Our Games > Out of the Park Baseball 20 > OOTP 20 - Fictional Simulations

OOTP 20 - Fictional Simulations Discuss fictional simulations and their results in this forum.

Reply
 
Thread Tools
Old 06-26-2019, 02:17 PM   #221
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1967 MLB Award Winners

Name:  CarterDunn.PNG
Views: 257
Size:  57.1 KB
AL Tomas Reed MVP: Carter Dunn, SS, Boston Red Sox - 7.4 WAR, 123 wRC+, 11.5 ZR

Name:  AaronBjorgo1967.PNG
Views: 237
Size:  59.4 KB
AL J.P. Avila Award: Aaron Bjorgo, RHP, Boston Red Sox - 7.7 WAR, 69 FIP-, 3.7 K/BB

Name:  MelvynEngland.PNG
Views: 192
Size:  52.9 KB
NL Tomas Reed MVP: Melvyn England, RF, Pittsburgh Pirates - 5.6 WAR, 159 wRC+, -7.6 ZR

Name:  CharlesSearfoss.PNG
Views: 178
Size:  65.9 KB
NL J.P. Avila Award: Charles Searfoss, RHP, Chicago Cubs - 6.0 WAR, 78 FIP-, 3.3 K/BB

AL Rookie of the Year: Alin Leonetti, RHP, Tampa Bay Devil Rays - 3.7 WAR, 96 FIP-, 2.1 K/BB
NL Rookie of the Year: Korbin Fischer, LHP, Los Angeles Dodgers - 4.8 WAR, 81 FIP-, 2.6 K/BB
stealofhome is offline   Reply With Quote
Old 06-26-2019, 02:19 PM   #222
BirdWatcher
Hall Of Famer
 
BirdWatcher's Avatar
 
Join Date: Mar 2018
Location: Denver, Colorado
Posts: 4,262
Just as I was starting to think that there were far too many Jr.'s taking over team ownership from their deceased fathers, we get a Slick and a Pops.
Maybe juniors weren't so bad after all.

I like the name Luke Walk though.
BirdWatcher is offline   Reply With Quote
Old 06-26-2019, 03:14 PM   #223
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1967 Hall of Fame

Name:  MarkPerryHOF.PNG
Views: 196
Size:  275.9 KB
Mark Perry, RHP

Perry's peak was at the beginning of his career, with three 6-WAR seasons from age 23-25. He held his value well throughout the years and settled in as a 3-4 WAR starter for the Giants. In 1965, he pitched for the Padres and stayed with that team for a few years before retiring.

Initial Acquisition: Drafted 37th overall in 1947 by the Giants out of Naples

MLB Awards: 1 J.P. Avila Award, 1 ROY, 3 AS, 1 WS

Career Stats: 3804.7 IP, 1174 BB, 2028 K, 3.68 FIP, 95 FIP-, 58.9 WAR, 58.3 JAWS

Name:  DavidFindlayHOF.PNG
Views: 176
Size:  271.1 KB
David Findlay, LF

Findlay is the best Scottish player in history. Mohammed Cocker previously held that distinction, but Findlay is the first Scotsman to make the Hall. Findlay's total career value is somewhere north of Justus Whitham and Blake Gribler. He had five 20 HR-20 SB seasons and came close to a 30-30 season in 1961 with 30 HR and 26 SB. Fielding was never his focus, but he was slightly above average at the beginning of his career, becoming more of a liability as he aged.

Initial Acquisition: Drafted 5th overall in 1946 by the Royals out of Pendleton

MLB Awards: 1 ROY, 1 Youssef Raadouni GG, 4 AS, 4 SS

Career Stats: 11740 PA, 2948 H, 413 HR, 313 SB, .349 wOBA, 119 wRC+, -41.7 ZR, 54.2 WAR, 43.2 JAWS

Hamilton Mendoza, LHP

Mendoza's career ended just before the steps of the Hall, most likely due to his late start. Despite signing with the Orioles on his 16th birthday, he didn't pitch a full season in the majors until he was 25. His 27-30 year-old seasons were dominant and he put up 6-7 WAR each year.

Initial Acquisition: Signed in 1945 with the Orioles out of the Dominican Republic

MLB Awards: 1 ROY, 5 AS

Career Stats: 2640.7 IP, 617 BB, 1882 K, 3.47 FIP, 87 FIP-, 53.4 WAR, 49.2 JAWS
stealofhome is offline   Reply With Quote
Old 06-26-2019, 03:26 PM   #224
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 Top 100 Prospects

Name:  RJCamacho.PNG
Views: 185
Size:  47.5 KB
We're still in a pitcher-dominated era. R.J. Camacho is up front this year. He was a scouting discovery out of the DR in 1963 for the Red Sox and while his changeup will probably never work out, he does have a forkball to help him as a starter.

Name:  TommyJones.PNG
Views: 178
Size:  46.9 KB
The top hitter is Tommy Jones, a 12th overall selection in 1967. He is an above-average CF with the stereotypical leadoff qualities.
Attached Images
Image 
stealofhome is offline   Reply With Quote
Old 06-26-2019, 04:38 PM   #225
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 NCAA All-Stars

Team 1:

position name war school
P Alex Kuperstein 1.92 VIR
P Noel Lewis 1.61 TEN
P Johnny Bianchi 1.46 MIS
P Kinsey Keating 1.46 PUR
P Eric Warren 1.42 SFD
P Emmanuel DaCosta 1.27 NEB
P Jack Harper 1.11 SMG
P Mason Olena 0.05 ALA
C Davin Hallman 1.21 PIT
C Jay Hutton 0.68 SCG
1B Easton Andrus 1.49 NCST
1B Lucas Zito 1.04 VIR
2B Kent Burchett 1.56 OSU
3B Solomon Garner 1.19 UC
SS Paulino Espinoza 1.56 ASU
SS Peregrine Magee 1.30 BYU
LF Dixon Erasmo 1.48 MIS
CF Howy Shorter 1.54 GEO
CF Stane Ivkovic 1.43 STAN
RF Kale Amini 1.22 OSU


Team 2:

position name war school
P Adrian Chiara 1.51 PEP
P Tyson Farber 1.48 TEN
P Ronnie Craven 1.41 LBSU
P Levi Rodgers 1.35 RO
P Mikey Ratcliff 1.31 WSU
P D.J. Coronado 1.27 KEN
P Edmond Nunez 0.70 WV
P Hideji Hayashi 0.59 WSU
C Brian Cavanagh 1.13 LOY
C Sidney Sprague 1.05 BC
1B Ari Downer 1.39 CLE
1B Oscar Velasquez 1.14 WV
2B Lee Boilard 1.90 BYU
2B Henry Conrad 1.21 UCLA
2B Wendell Hirsbrunner 1.19 FSB
3B Beau Wyman 1.27 LBSU
SS Thomas Hitchcock 1.33 PSU
LF A.J. Duckworth 1.45 TAMU
CF Zaquan Ganasan 1.42 WF
RF Ileanna Quiroz 1.22 PSU
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:07 PM   #226
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 College Playoffs

NC State wins their first National Championship.
Attached Images
Image 
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:19 PM   #227
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
Achievements, April/May 1968

MLB Owner Changes:

MLB Career Milestones:
Meredith Applewhite, Texas Rangers - 2000 H

No-Hitters/Perfect Games:
Stuart Johnson, Suffern, NYSPHSAA - 9K, 3BB
Tristan Aguado, Carolina, A+ - 12K, 4BB
Mauricio Rojas, Seattle, MLB - 7K, 1BB
Oliver Espinoza, Peoria, A - 4K, 6BB
Kieran Long, Rice, NCAA - 13K, 2BB
Rowdy Contador, Lakeland, A+ - 7K, 1BB
Jeronimo Quiroz, Cape Fear, A - 8K, 2BB
V.J. Hewitt, Akron, AA - 6K, 3BB
Clancy Beno, Arizona State, NCAA - 10K, 1BB
Leif Seith, Texas Tech, NCAA - 6K, 1BB
Eric Hughes, Clinton, A - 6K, 0BB - PERFECT GAME
Armando Vasquez, Gwinnett, AAA - 9K, 4BB

17+ Strikeout Games:
Logan Warren, Fond du Lac, WIAA - 18K
Brad Perl, Evanston, IHSA - 18K

Hitting Streaks Ended:
Sammy Tanada, Mississippi, NCAA - 25G
Shawn Mathwig, Cleveland, MLB - 28G
J.D. Jackson, Baltimore, MLB - 26G

Stane Ivkovic, Stanford, NCAA - 39G
Paulino Espinoza, Arizona State, NCAA - 26G
Parker Mizell, South Carolina, NCAA - 39G
John Sugano, Delmarva, A - 27G
Braxton Moseley, Cleveland, NMAA - 27G

4 HR Games:
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:28 PM   #228
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 MLB Draft

Name:  NolanPoulin.PNG
Views: 175
Size:  38.9 KB
Mor Pitching!!! Nolan Poulin goes first to the Tigers.

Name:  HudsonGoldstein1968.PNG
Views: 180
Size:  31.8 KB
The top college draftee was Hudson Goldstein for the second year in a row. He didn't sign with the Orioles last year.

Name:  RubenZepeda.PNG
Views: 170
Size:  40.1 KB
Ruben Zepeda was the top hitter drafted. He really doesn't have much potential except for a good eye.


Round 1, Pick 1 - Detroit Tigers: SP Nolan Poulin, age 18
Round 1, Pick 2 - New York Mets: SP Hudson Goldstein, age 22
Round 1, Pick 3 - Baltimore Orioles: SP Sean Enos, age 18
Round 1, Pick 4 - Colorado Rockies: SP Jimmy Wagner, age 21
Round 1, Pick 5 - Seattle Mariners: 2B Ruben Zepeda, age 18
Round 1, Pick 6 - Texas Rangers: SP Shane Wilson, age 21
Round 1, Pick 7 - Montreal Expos: SP Jess Oates, age 22
Round 1, Pick 8 - St. Louis Cardinals: SP Alex Kuperstein, age 21
Round 1, Pick 9 - Cleveland Indians: SP Dylan Harrell, age 18
Round 1, Pick 10 - Cleveland Indians: SP Aiden Estes, age 21
Round 1, Pick 11 - Detroit Tigers: SP Milton Burgess, age 21
Round 1, Pick 12 - Atlanta Braves: 2B Henry Conrad, age 21
Round 1, Pick 13 - Toronto Blue Jays: C Jay Hutton, age 21
Round 1, Pick 14 - Cincinnati Reds: SP Hamilton Hulse, age 18
Round 1, Pick 15 - Milwaukee Brewers: SP Josue Hamilton, age 21
Round 1, Pick 16 - Philadelphia Phillies: RF Emmanuel Calderon, age 18
Round 1, Pick 17 - Houston Astros: SP Dawson Arnold, age 18
Round 1, Pick 18 - New York Yankees: 2B Hichori Tanaka, age 24
Round 1, Pick 19 - Boston Red Sox: CF Zaquan Ganasan, age 21
Round 1, Pick 20 - Oakland Athletics: SP Ronnie Craven, age 21
Round 1, Pick 21 - Pittsburgh Pirates: SP Georgi Khodotov, age 18
Round 1, Pick 22 - Baltimore Orioles: SP Dustin Sauvé, age 21
Round 1, Pick 23 - Chicago Cubs: SP Johnny Bianchi, age 21
Round 1, Pick 24 - San Diego Padres: SP Doug Tomlinson, age 21
Round 1, Pick 25 - Minnesota Twins: SP Emmanuel Eldridge, age 18
Round 1, Pick 26 - Kansas City Royals: SS Marti Ybarra, age 21
Round 1, Pick 27 - Tampa Bay Devil Rays: SP Alf Wetherbee, age 18
Round 1, Pick 28 - Florida Marlins: RF Severio Rolando, age 18
Round 1, Pick 29 - Chicago White Sox: 3B R.J. Givens, age 21
Round 1, Pick 30 - San Francisco Giants: 2B Willard Hodgins, age 21
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:35 PM   #229
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 MLB All-Star Rosters

American League:

position name war team
P Jayden Grimsley 3.99 BAL
P Benjamin Puzo 3.94 TOR
P Mitchell Wonder 3.45 HOU
P Easton Hicks 3.20 BOS
P Jordan Underwood 3.01 CHA
P Bram de Jong 3.01 LAA
P Carlo Arias 2.97 BOS
P Neil Koppen 2.39 NYY
P Cyrus Mossbarger 2.22 BOS
P Gianni Scott 1.11 MIN
C Timo Fernandez 2.94 NYY
C Jed Luchs 2.81 TB
1B Devan Quade 5.08 BAL
1B Cody Vitale 4.62 MIN
1B Tsuneyoshi Yamashida 4.47 SEA
1B Bentley Cooper 4.37 BOS
2B Clancy Carmon 5.01 TOR
2B Emanuel Teran 4.21 BAL
3B Seth Schmidt 3.55 CHA
SS Jay Christensen 3.99 HOU
LF Edgardo Brito 3.95 MIN
LF Julian Foreman 3.38 HOU
CF Robin Flores 3.53 LAA
RF Jan Klee 3.43 BAL
RF Chase Rideout 3.20 LAA


National League:

position name war team
P Cameron Teagle 4.02 LAD
P Mack Latham 3.70 MIL
P Brayden White 3.40 CHC
P Omar Artiaga 3.39 LAD
P Calvin Curtis 3.35 CIN
P Liam Gustin 3.05 ATL
P Synan Stephens 1.14 LAD
P Ikuro Hirabayashi 0.96 STL
P Oscar Evora 0.91 CHC
P Randy Langella 0.89 CHA
C Brantley MacKay 2.44 SD
C Mason Castellar 2.19 CHC
1B Mason Manji 3.14 STL
1B Rio Aldrich 2.37 LAD
2B Milton Fuentes 3.20 CIN
3B Rueben Givings 1.92 REN
SS Drew McDowell 3.59 SD
SS Stan Eldridge 3.55 ARI
LF Vince Andrews 4.61 CHC
LF Jesse Williams 4.07 SD
LF Vito Fernandez 3.64 FLA
LF Ichiyo Kano 2.66 PIT
CF Robinson Barquero 3.73 LAD
CF Amaro London 3.10 SD
RF Denny Curtis 2.77 FLA
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:55 PM   #230
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
Achievements, June through October 1968

MLB Owner Changes:
Philadelphia Phillies sold from Sam Spencer to Julian Dodd

MLB Career Milestones:
Alfonso Booker, St. Louis Cardinals - 2000 H
Noah Sylvain, Detroit Tigers - 400 HR
Alvaro Echevarria, Florida Marlins - 2000 H

No-Hitters/Perfect Games:
Amaurys Vasquez, Tennessee, AA - 5K, 1BB
Payton Kneepkens, Hudson Valley, A- - 10K, 3BB
Van Peralta, Norfolk, AAA - 8K, 3BB
Bryan Blackbird, Kinston, A+ - 8K, 2BB
Oliver Onufer, Billings, R - 7K, 0BB, 1ERR
Uwe Price, Jacksonville, AA - 7K, 1BB
Warren Pomeroy, Lansing, A - 7K, 3BB
Janus Chavez, Rancho Cucamonga, A+ - 6K, 3BB
Ron Taggart, Richmond, AA - 5K, 5BB

17+ Strikeout Games:

Hitting Streaks Ended:
Nicky Sizemore, York, ATL - 32G
Rick Bright, Nashville, AAA - 30G
Tommy Jones, Dunedin, R - 25G

4 HR Games:
stealofhome is offline   Reply With Quote
Old 06-26-2019, 05:58 PM   #231
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 MLB Playoffs

The Orioles won their 2nd World Series. The first was in 1950. The Padres showed up for like the 20th time (actually 12th).
Attached Images
Image 
stealofhome is offline   Reply With Quote
Old 06-26-2019, 06:01 PM   #232
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
Quote:
Originally Posted by BirdWatcher View Post
Just as I was starting to think that there were far too many Jr.'s taking over team ownership from their deceased fathers, we get a Slick and a Pops.
Maybe juniors weren't so bad after all.

I like the name Luke Walk though.

Ha yeah, it's nice to have it switch up the names a little here and there. In their defense, both Slick and Pops were born in 1905. Luke Walk sounds...somewhat familiar...
stealofhome is offline   Reply With Quote
Old 06-26-2019, 06:26 PM   #233
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 MLB Award Winners

Name:  CodyVitale1968.PNG
Views: 170
Size:  71.2 KB
AL Tomas Reed MVP: Cody Vitale, 1B, Minnesota Twins - 8.3 WAR, 147 wRC+, 24.2 ZR

Name:  JaydenGrimsley.PNG
Views: 173
Size:  54.8 KB
AL J.P. Avila Award: Jayden Grimsley, LHP, Baltimore Orioles - 6.7 WAR, 77 FIP-, 3.9 K/BB

Name:  VItoFernandez1968.PNG
Views: 167
Size:  69.8 KB
NL Tomas Reed MVP: Vito Fernandez, LF, Florida Marlins - 7.9 WAR, 165 wRC+, 9.4 ZR

Name:  OmarArtiaga.PNG
Views: 172
Size:  57.2 KB
NL J.P. Avila Award: Omar Artiaga, LHP, Los Angeles Dodgers - 6.1 WAR, 83 FIP-, 2.0 K/BB

AL Rookie of the Year: V.J. Reaux, RHP, Cleveland Indians - 3.0 WAR, 79 FIP-, 3.2 K/BB
NL Rookie of the Year: Ichiyo Kano, LF, Pittsburgh Pirates - 4.3 WAR, 114 wRC+, 13.8 ZR
stealofhome is offline   Reply With Quote
Old 06-26-2019, 08:26 PM   #234
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 Hall of Fame - Hitters

Name:  HalRevelesHOF.PNG
Views: 178
Size:  265.1 KB
Hal Reveles, RF

Of the three RF inducted this year, Reveles had the best career and not coincidentally was the best defender. He had a little pop and a little speed but was best known for his ability to the bat on the ball. His career value dropped significantly once he turned 34, but his 20s were good enough to put him in consideration for one of the top-10 RF of all time.

Initial Acquisition: Signed in 1947 with the Pirates out of the Dominican Republic

MLB Awards: 6 Youssef Raadouni GG, 5 AS, 2 SS

Career Stats: 8821 PA, 2123 H, 151 HR, 157 SB, .336 wOBA, 114 wRC+, 193.8 ZR, 58.5 WAR, 49.2 JAWS

Name:  ConnorHookerHOF.PNG
Views: 179
Size:  275.1 KB
Connor Hooker, RF

Of the three RF, Hooker had the longest career and had the best eye. He led the league in OBP twice and had two years where he walked more than 100 times. Early in his career, he was a contact hitter but as the contact decreased, his eye increased. Once he turned 32, he signed with the Tigers who turned him into mostly a DH as his defense continued to decline.

Initial Acquisition: Drafted 46th overall in 1951 by the Blue Jays out of California

MLB Awards: 3 AS, 5 SS

Career Stats: 9531 PA, 2360 H, 246 HR, 22 SB, .358 wOBA, 129 wRC+, -58.6 ZR, 48.3 WAR, 41.7 JAWS

Name:  RocketCartwrightHOF.PNG
Views: 183
Size:  276.4 KB
Rocket Cartwright, C

Of the RF, Cartwright was the catcher. This era has brought about quite a few great catchers and Cartwright happens to be the first to retire. His entire career was spent with the Marlins and a few years with an above-average bat along with about a decade of great defense put him in the Hall.

Initial Acquisition: Drafted 59th overall in 1950 by the Marlins out of Sheldon

MLB Awards: 1 GG, 4 AS, 4 SS, 1 WS, 1 PMVP

Career Stats: 6326 PA, 1669 H, 141 HR, 5 SB, .318 wOBA, 99 wRC+, 11.9 ZR, 35.2 WAR, 30.5 JAWS

Name:  DonovanGreerHOF.PNG
Views: 169
Size:  272.7 KB
Donovan Greer, RF

Of the RF, Greer was the slugger. He is currently tied for 4th in HR for a RF, despite limited playing time due to injuries. Greer played in 140+ games in only 8 of his 15 seasons but during that time had years where he led the league in runs, hits, home runs, RBI, slugging, OPS, and WAR. In 1960, he became the first (and still only) player to hit 50 HR in a season.

Initial Acquisition: Drafted 4th overall in 1951 by the Cubs out of Tulane

MLB Awards: 1 Tomas Reed MVP, 4 AS, 3 SS, 1 PMVP

Career Stats: 7674 PA, 2010 H, 324 HR, 14 SB, .360 wOBA, 128 wRC+, -3.3 ZR, 45.4 WAR, 40.5 JAWS
stealofhome is offline   Reply With Quote
Old 06-26-2019, 08:27 PM   #235
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1968 Hall of Fame - Pitchers

Name:  JordanBergerHOF.PNG
Views: 172
Size:  283.2 KB
Jordan Berger, LHP

Berger was an ace for the Twins for 8 years and continued to provide at least mid-rotation value for another 5 years. He was quite durable, starting in over 30 games in 12 of 13 years from 1954 through 1966. In 1958, he was one game away from starting 40. Through all of that time, he put up the 6th most strikeouts in a career

Initial Acquisition: Drafted 7th overall in 1948 by the Cubs out of Volcano Vista
Drafted 2nd overall in 1951 by the Twins out of Ohio State

MLB Awards: 1 J.P. Avila Award, 6 AS, 1 WS

Career Stats: 3467 IP, 1083 BB, 2346 K, 81 FIP, 3.21 FIP-, 81.9 WAR, 60.5 JAWS

Name:  PeterGriffithHOF.PNG
Views: 177
Size:  262.9 KB
Peter Griffith, LHP

Griffith pitched just long enough to break Finn Loconte's strikeout record by 93. He had seven years of 200+ Ks and led the league twice. All of those strikeouts came at a price though, and he had a big problem with the longball throughout his career. He started over 30 games in every year of his career besides the last and his third to last was his year with the highest WAR. Griffith was born in the Virgin Islands and in fact in the same city as Lutfu Wohlfarth, one of the best contact hitters in the dawn of the league. Wohlfarth had been retired for 15 years by the time Griffith was born, but no doubt Griffith heard stories of Wohlfarth's 2,228 hits as he grew up.

Initial Acquisition: Drafted 726th overall in 1948 by the Cardinals out of Teutopolis

MLB Awards: 2 J.P. Avila Award, 2 AS, 1 WS

Career Stats: 3681.7 IP, 919 BB, 2921 K, 3.66 FIP, 92 FIP-, 63.1 WAR, 53.6 JAWS
stealofhome is offline   Reply With Quote
Old 07-01-2019, 05:02 PM   #236
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
Atlantic League Folds

The Independent Atlantic League is no more. There was a strange interaction between the two leagues, especially with well-established MLB players. They would sign one-year contracts with the Indy league and then that contract would get purchased by the MLB club. This led to far too many short contracts in the majors, which then made players retire before they generally would since the team was not bound to their contract in their late-30s.

Last edited by stealofhome; 07-01-2019 at 05:51 PM.
stealofhome is offline   Reply With Quote
Old 07-01-2019, 05:48 PM   #237
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
New Top 100 Prospect List

In the future I would like to do some analysis on how prospects pan out and what matters most to their development. For now, I want to start with my own ranking of the top 100 prospects each year so that I can look at the data a little differently and be able to analyze past years. OOTP doesn't output the prospect list number in the database, so if I ever want to look at this, I'll have to calculate it myself. My numbers are slightly different than the ones the game calculates, but I wasn't trying to perfectly replicate their algorithm.

I take the talent_value for each player and then weight it based on age, development, personality, position, injury proneness, and whether or not a pitcher will rely on the changeup to develop into a starter. Then I adjust the resulting value based on if the player is a pitcher or not in order to rank the hitters and pitchers together. Currently the game is creating a lot more elite pitchers than hitters based on raw talent_value, which is why the drafts and prospect lists have been dominated by pitchers. This hopefully is due to the pitching-heavy nature of the 1960s and will soon change as hitting picks back up in the 70s. I believe there is something in the OOTP top 100 algorithm that will require a hitter at the 9th spot if one doesn't show up yet, but instead of doing it that way, I have decided to adjust for hitter/pitcher more generally.

Below is my raw code for calculating and creating the HTML table output for the top 100 lists and I welcome any suggestions to improving it as I'm trying to learn R.


Code:
```{r Top 100 prospects}
# Libraries ----
library(tidyverse)
library(kableExtra)
library(magick)
library(magrittr)
library(scales)

# Load Data ----
leagues <- read_csv('~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/general/leagues.csv')

players_roster_status <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_roster_status.csv",
                                      sql="select player_id, league_id, mlb_service_days from file group by player_id having league_id != 0 and league_id < 117 and mlb_service_days <= 45", eol = "\n")

players_career_batting_stats <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_career_batting_stats.csv",
                                             sql="select player_id, sum(ab) as ab from file group by player_id, league_id, split_id having league_id = 100 and split_id = 1 and sum(ab)<=130", eol = "\n")

players_career_pitching_stats <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_career_pitching_stats.csv",
                                              sql="select player_id, sum(ip) as ip from file group by player_id, league_id, split_id having league_id = 100 and split_id = 1 and sum(ip)<=50", eol = "\n")

players <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players.csv",
                        sql="select player_id,	position,	role,	first_name,	last_name,	age,	height, organization_id,	bats,	throws,	personality_work_ethic,	personality_intelligence,	injury_left,	prone_overall,	running_ratings_speed,	running_ratings_stealing,	running_ratings_baserunning from file group by player_id having league_id != 0 and league_id < 117", eol = "\n")

players_value <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_value.csv",
                              sql="select player_id,	offensive_value,	offensive_value_talent,	pitching_value,	pitching_value_talent,	overall_value,	talent_value,	career_value,	running_value,	stealing_value,	ratings_value,	oa,	pot from file group by player_id having league_id != 0 and league_id < 117", eol = "\n")

players_batting <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_batting.csv",
                                sql="select player_id,	batting_ratings_overall_contact,	batting_ratings_overall_gap,	batting_ratings_overall_eye,	batting_ratings_overall_strikeouts,	batting_ratings_overall_power,	batting_ratings_talent_contact,	batting_ratings_talent_gap,	batting_ratings_talent_eye,	batting_ratings_talent_strikeouts,	batting_ratings_talent_power from file group by player_id having league_id != 0 and league_id < 117", eol = "\n")

players_pitching <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_pitching.csv",
                                 sql="select player_id,	pitching_ratings_overall_stuff,	pitching_ratings_overall_control,	pitching_ratings_overall_movement,	pitching_ratings_talent_stuff,	pitching_ratings_talent_control,	pitching_ratings_talent_movement,	pitching_ratings_pitches_fastball,	pitching_ratings_pitches_slider,	pitching_ratings_pitches_curveball,	pitching_ratings_pitches_screwball,	pitching_ratings_pitches_forkball,	pitching_ratings_pitches_changeup,	pitching_ratings_pitches_sinker,	pitching_ratings_pitches_splitter,	pitching_ratings_pitches_knuckleball,	pitching_ratings_pitches_cutter,	pitching_ratings_pitches_circlechange,	pitching_ratings_pitches_knucklecurve,	pitching_ratings_pitches_talent_fastball,	pitching_ratings_pitches_talent_slider,	pitching_ratings_pitches_talent_curveball,	pitching_ratings_pitches_talent_screwball,	pitching_ratings_pitches_talent_forkball,	pitching_ratings_pitches_talent_changeup,	pitching_ratings_pitches_talent_sinker,	pitching_ratings_pitches_talent_splitter,	pitching_ratings_pitches_talent_knuckleball,	pitching_ratings_pitches_talent_cutter,	pitching_ratings_pitches_talent_circlechange,	pitching_ratings_pitches_talent_knucklecurve,	pitching_ratings_misc_velocity,	pitching_ratings_misc_stamina from file group by player_id having league_id != 0 and league_id < 117", eol = "\n")

players_fielding <- read.csv.sql("~/Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/csv/players_fielding.csv",
                                 sql="select player_id,	fielding_ratings_infield_range,	fielding_ratings_infield_arm,	fielding_ratings_turn_doubleplay,	fielding_ratings_outfield_range,	fielding_ratings_outfield_arm,	fielding_ratings_catcher_arm,	fielding_ratings_catcher_ability,	fielding_ratings_infield_error,	fielding_ratings_outfield_error from file group by player_id having league_id != 0 and league_id < 117", eol = "\n")

velo_words <- velo_words <- read_csv("Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/general/velo_words.csv")

skill_lookup <- read_csv("Out of the Park Developments/OOTP Baseball 20/saved_games/OOTPLeague.lg/import_export/general/skill_lookup.csv")
# Build top_100 table ----

# Find which players are eligible
top_100 <- list(players_roster_status, players_career_batting_stats, players_career_pitching_stats) %>% 
  reduce(left_join, by = "player_id") %>% 
  select(player_id, league_id) %>% 

# Reduce to top 100 ----

# Add in information about player and league
  left_join(players, by="player_id") %>% 
  mutate_if(is.character, str_replace_all, pattern = '"', replacement='') %>% 
# Add in player potential and current value from hitting, fielding, and pitching
  list(players_value, players_batting, players_pitching, players_fielding) %>% 
  reduce(left_join, by = "player_id") %>% 
  mutate_if(is.numeric , replace_na, replace = 0) %>% 
# Add calculated fields
  mutate(p_def = (((fielding_ratings_infield_range - 125)/25*39.5) + ((fielding_ratings_infield_arm - 125)/25*6.5) + ((fielding_ratings_turn_doubleplay - 125)/25*3.25) + ((fielding_ratings_infield_error - 125)/25*15.75) + 308),
         c_def = (((fielding_ratings_catcher_ability - 125)/25*19.5) + ((fielding_ratings_catcher_arm - 125)/25*19.5) + 133),
         fb_def = (if_else(fielding_ratings_infield_range<=90,fielding_ratings_infield_range/3,30+(fielding_ratings_infield_range-90)*2/25) + if_else(fielding_ratings_infield_error<=90,fielding_ratings_infield_error/5,18+(fielding_ratings_infield_error-90)/25) + fielding_ratings_infield_arm/70 + fielding_ratings_turn_doubleplay/70)*(1 + (height-155)/15),
         sb_def = (((fielding_ratings_infield_range - 125)/25*21.5) + ((fielding_ratings_infield_arm - 125)/25*1.5) + ((fielding_ratings_turn_doubleplay - 125)/25*9) + ((fielding_ratings_infield_error - 125)/25*8.25) + 129),
         tb_def = (((fielding_ratings_infield_range - 125)/25*13) + ((fielding_ratings_infield_arm - 125)/25*17) + ((fielding_ratings_turn_doubleplay - 125)/25*3.25) + ((fielding_ratings_infield_error - 125)/25*7.5) + 113.5),
         ss_def = (((fielding_ratings_infield_range - 125)/25*25.5) + ((fielding_ratings_infield_arm - 125)/25*2) + ((fielding_ratings_turn_doubleplay - 125)/25*8) + ((fielding_ratings_infield_error - 125)/25*7.5) + 93.75),
         lf_def = (((fielding_ratings_outfield_range - 125)/25*29.5) + ((fielding_ratings_outfield_arm - 125)/25*5.75) + ((fielding_ratings_outfield_error - 125)/25*4) + 149),
         cf_def = (((fielding_ratings_outfield_range - 125)/25*43) + ((fielding_ratings_outfield_arm - 125)/25*1.75) + ((fielding_ratings_outfield_error - 125)/25*3.5) + 78),
         rf_def = (((fielding_ratings_outfield_range - 125)/25*25.5) + ((fielding_ratings_outfield_arm - 125)/25*11) + ((fielding_ratings_outfield_error - 125)/25*4) + 129),
         current_pitches = rowSums(.[47:58] > 30),
         pot_pitches = rowSums(.[59:70] > 30),
         rely_change = if_else(pot_pitches == 3 & 
                                pitching_ratings_pitches_changeup < 30 & 
                                pitching_ratings_pitches_talent_changeup > 30,
                              "Y","N"),
         ideal_pos = case_when(c_def > 0 ~ "C",
                               position == 1 & pitching_ratings_misc_stamina >=100 & pot_pitches >2 ~ "SP",
                            position == 1 & (pitching_ratings_misc_stamina <100 | pot_pitches <3) ~ "RP",
                               ss_def >= 100 ~ "SS",
                               cf_def >= 100 ~ "CF",
                               tb_def > 75 & tb_def > sb_def ~ "3B",
                               sb_def > 75 ~ "2B",
                               rf_def > 75 ~ "RF",
                               lf_def > 75 & lf_def > fb_def ~ "LF",
                               fb_def > 75 ~ "1B",
                               TRUE ~ "DH"
                               ),
         develop_adj = pmin(overall_value/talent_value,1), 
         age_adj = min(age)/age,
         change_adj = ifelse(rely_change == "Y", 0, 1),
         person_adj = ((personality_work_ethic/max(personality_work_ethic))+
                         (personality_intelligence/max(personality_intelligence)))/2) %>% 
  group_by(ideal_pos) %>% 
  mutate(pos_adj = talent_value/max(talent_value), inj_adj = min(prone_overall)/prone_overall) %>% 
  ungroup()
  
# Find range of talent value
tv_min <- min(top_100$talent_value)
tv_max <- max(top_100$talent_value)

#Adjustment by position
p_adj <- top_100 %>% 
  filter((ideal_pos == "SP"|ideal_pos == "RP")) %>% 
  top_n(100, talent_value) %>%
  summarise(mean(talent_value)) %>% 
  pull()

oth_adj <- top_100 %>% 
  filter(!(ideal_pos == "SP"|ideal_pos == "RP")) %>% 
  top_n(100, talent_value) %>%
  summarise(mean(talent_value)) %>% 
  pull()

if(p_adj>oth_adj){
  oth_adj <- p_adj/oth_adj 
  p_adj <- 1
} else{
  p_adj <- oth_adj/p_adj
  oth_adj <- 1
}

# Calculate final adjusted_talent value and rescale
top_100 %<>% 
  mutate(talent_adj = 100+ 
                      10*(develop_adj+age_adj+change_adj+person_adj+
                      pos_adj+inj_adj),
                    adjusted_talent = ifelse(ideal_pos=="SP"|ideal_pos=="RP",
                        talent_adj*talent_value*p_adj,
                        talent_adj*talent_value*oth_adj)) %>% 
  arrange(desc(adjusted_talent))

top_100$adjusted_talent %<>% rescale(to=c(tv_min,tv_max))

# Reduce dataframe ----
top_100 %<>% 
  top_n(100, adjusted_talent)

# Extra information ----
top_100 %<>% 
merge(leagues[,c("league_id", "abbr", "league_level")], by="league_id") %>% 
rename(league_abbr=abbr) %>%
merge(teams[,c("team_id","abbr")], by.x = "organization_id", by.y = "team_id") %>%
merge(velo_words, by="pitching_ratings_misc_velocity") %>%
mutate(name=paste(first_name, last_name),
       league_level = case_when(league_level == 1 ~ "MLB",
                                league_level == 2 ~ "AAA",
                                league_level == 3 ~ "AA",
                                league_level == 4 ~ "A",
                                league_level == 5 ~ "A-",
                                league_level == 6 ~ "R",
                                league_level == 7 ~ "IND",
                                league_level == 8 ~ "INT",
                                league_level == 10 ~ "COL",
                                league_level == 11 ~ "HS"),
       bats = case_when(bats == 1 ~ "R",
                        bats == 2 ~ "L",
                        bats == 3 ~ "S"),
       throws = if_else(throws == 1, "R", "L"),
       position = case_when(position == 1 & role == 11 ~ "SP",
                            position == 1 & role != 11 ~ "RP",
                            position == 2 ~ "C",
                            position == 3 ~ "1B",
                            position == 4 ~ "2B",
                            position == 5 ~ "3B",
                            position == 6 ~ "SS",
                            position == 7 ~ "LF",
                            position == 8 ~ "CF",
                            position == 9 ~ "RF"),
       rank = rank(-adjusted_talent),
       def = case_when(ideal_pos == "SP" | ideal_pos == "RP" ~ p_def,
                       ideal_pos == "C" ~ c_def,
                       ideal_pos == "1B" ~ fb_def,
                       ideal_pos == "2B" ~ sb_def,
                       ideal_pos == "3B" ~ tb_def,
                       ideal_pos == "SS" ~ ss_def,
                       ideal_pos == "LF" ~ lf_def,
                       ideal_pos == "CF" ~ cf_def,
                       ideal_pos == "RF" ~ rf_def,
                       ideal_pos == "DH" ~ pmax(c_def,fb_def,sb_def,tb_def,
                                                ss_def,lf_def,cf_def,rf_def)),
       player_type = if_else(ideal_pos == "SP" | ideal_pos == "RP", "P","H")) %>% 
  arrange(desc(adjusted_talent))

current_pitch_names <- apply(top_100[which(colnames(top_100)=="pitching_ratings_pitches_fastball"):which(colnames(top_100)=="pitching_ratings_pitches_knucklecurve")], 1, function(x) paste(names(which(x >30)),collapse=", "))
top_100 <- cbind(top_100, current_pitch_names)
top_100$current_pitch_names <- gsub("pitching_ratings_pitches_", "", top_100$current_pitch_names)

pot_pitch_names <- apply(top_100[which(colnames(top_100)=="pitching_ratings_pitches_talent_fastball"):which(colnames(top_100)=="pitching_ratings_pitches_talent_knucklecurve")], 1, function(x) paste(names(which(x >30)),collapse=", "))
top_100 <- cbind(top_100, pot_pitch_names)
top_100$pot_pitch_names <- gsub("pitching_ratings_pitches_talent_", "", top_100$pot_pitch_names)

top_100$pot_pitch_names <- gsubfn("[a-z]+", list("fastball"="FB",
                                                 "slider"="SL", 
                                                 "curveball"="CB",
                                                 "screwball"="SC",
                                                 "forkball"="FK",
                                                 "changeup"="CH",
                                                 "sinker"="SI",
                                                 "splitter"="SP",
                                                 "knuckleball"="KN",
                                                 "cutter"="CU",
                                                 "circlechange"="CC",
                                                 "knucklecurve"="KC"
), top_100$pot_pitch_names)

top_100$current_pitch_names <- gsubfn("[a-z]+", list("fastball"="FB",
                                                     "slider"="SL", 
                                                     "curveball"="CB",
                                                     "screwball"="SC",
                                                     "forkball"="FK",
                                                     "changeup"="CH",
                                                     "sinker"="SI",
                                                     "splitter"="SP",
                                                     "knuckleball"="KN",
                                                     "cutter"="CU",
                                                     "circlechange"="CC",
                                                     "knucklecurve"="KC"), top_100$current_pitch_names)


# Create final output ----

out_top_100 <- top_100 %>% 
  select(Rank=rank, Name=name, Team=abbr, Age=age, Current_Position=position, 
         Ideal_Position=ideal_pos, batting_ratings_overall_contact,
         batting_ratings_talent_contact, batting_ratings_overall_gap,
         batting_ratings_talent_gap, batting_ratings_overall_power,
         batting_ratings_talent_power, batting_ratings_overall_eye,
         batting_ratings_talent_eye, batting_ratings_overall_strikeouts,
         batting_ratings_talent_strikeouts, pitching_ratings_overall_stuff,
         pitching_ratings_talent_stuff, pitching_ratings_overall_movement,
         pitching_ratings_talent_movement,
         pitching_ratings_overall_control, pitching_ratings_talent_control, 
         running_value, def, Level=league_level, current_pitch_names,
         pot_pitch_names, player_type, Velocity=word, oa, pot) %>% 
  mutate(def = as.integer(round(def, digits = 0)))
# convert all of the contact/gap/etc ratings to the 20/80 scale
out_top_100[7:24] <-    as.data.frame(lapply(out_top_100[7:24],function(col) skill_lookup$scouting[match(col,skill_lookup$skill)]))
# then color, add in the backslash view
out_top_100 <- out_top_100 %>%   
  mutate(oa = 5*round(oa/5,0), pot = 5*round(pot/5,0),
    batting_ratings_overall_contact = cell_spec(batting_ratings_overall_contact, "html", 
                          color = case_when(
                            batting_ratings_overall_contact < 35 ~ "red",
                            batting_ratings_overall_contact < 45 ~ "orange",
                            batting_ratings_overall_contact < 55 ~ "#ffe600",
                            batting_ratings_overall_contact < 70 ~ "green",
                            TRUE ~ "blue"
                          )),
         batting_ratings_talent_contact = cell_spec(batting_ratings_talent_contact, "html", 
                                                     color = case_when(
                                                       batting_ratings_talent_contact < 35 ~ "red",
                                                       batting_ratings_talent_contact < 45 ~ "orange",
                                                       batting_ratings_talent_contact < 55 ~ "#ffe600",
                                                       batting_ratings_talent_contact < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_overall_gap = cell_spec(batting_ratings_overall_gap, "html", 
                                                     color = case_when(
                                                       batting_ratings_overall_gap < 35 ~ "red",
                                                       batting_ratings_overall_gap < 45 ~ "orange",
                                                       batting_ratings_overall_gap < 55 ~ "#ffe600",
                                                       batting_ratings_overall_gap < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_talent_gap = cell_spec(batting_ratings_talent_gap, "html", 
                                                     color = case_when(
                                                       batting_ratings_talent_gap < 35 ~ "red",
                                                       batting_ratings_talent_gap < 45 ~ "orange",
                                                       batting_ratings_talent_gap < 55 ~ "#ffe600",
                                                       batting_ratings_talent_gap < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_overall_power = cell_spec(batting_ratings_overall_power, "html", 
                                                     color = case_when(
                                                       batting_ratings_overall_power < 35 ~ "red",
                                                       batting_ratings_overall_power < 45 ~ "orange",
                                                       batting_ratings_overall_power < 55 ~ "#ffe600",
                                                       batting_ratings_overall_power < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_talent_power = cell_spec(batting_ratings_talent_power, "html", 
                                                     color = case_when(
                                                       batting_ratings_talent_power < 35 ~ "red",
                                                       batting_ratings_talent_power < 45 ~ "orange",
                                                       batting_ratings_talent_power < 55 ~ "#ffe600",
                                                       batting_ratings_talent_power < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_overall_eye = cell_spec(batting_ratings_overall_eye, "html", 
                                                     color = case_when(
                                                       batting_ratings_overall_eye < 35 ~ "red",
                                                       batting_ratings_overall_eye < 45 ~ "orange",
                                                       batting_ratings_overall_eye < 55 ~ "#ffe600",
                                                       batting_ratings_overall_eye < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_talent_eye = cell_spec(batting_ratings_talent_eye, "html", 
                                                     color = case_when(
                                                       batting_ratings_talent_eye < 35 ~ "red",
                                                       batting_ratings_talent_eye < 45 ~ "orange",
                                                       batting_ratings_talent_eye < 55 ~ "#ffe600",
                                                       batting_ratings_talent_eye < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_overall_strikeouts = cell_spec(batting_ratings_overall_strikeouts, "html", 
                                                     color = case_when(
                                                       batting_ratings_overall_strikeouts < 35 ~ "red",
                                                       batting_ratings_overall_strikeouts < 45 ~ "orange",
                                                       batting_ratings_overall_strikeouts < 55 ~ "#ffe600",
                                                       batting_ratings_overall_strikeouts < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         batting_ratings_talent_strikeouts = cell_spec(batting_ratings_talent_strikeouts, "html", 
                                                     color = case_when(
                                                       batting_ratings_talent_strikeouts < 35 ~ "red",
                                                       batting_ratings_talent_strikeouts < 45 ~ "orange",
                                                       batting_ratings_talent_strikeouts < 55 ~ "#ffe600",
                                                       batting_ratings_talent_strikeouts < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_overall_stuff = cell_spec(pitching_ratings_overall_stuff, "html", 
                                                     color = case_when(
                                                       pitching_ratings_overall_stuff < 35 ~ "red",
                                                       pitching_ratings_overall_stuff < 45 ~ "orange",
                                                       pitching_ratings_overall_stuff < 55 ~ "#ffe600",
                                                       pitching_ratings_overall_stuff < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_talent_stuff = cell_spec(pitching_ratings_talent_stuff, "html", 
                                                     color = case_when(
                                                       pitching_ratings_talent_stuff < 35 ~ "red",
                                                       pitching_ratings_talent_stuff < 45 ~ "orange",
                                                       pitching_ratings_talent_stuff < 55 ~ "#ffe600",
                                                       pitching_ratings_talent_stuff < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_overall_movement = cell_spec(pitching_ratings_overall_movement, "html", 
                                                     color = case_when(
                                                       pitching_ratings_overall_movement < 35 ~ "red",
                                                       pitching_ratings_overall_movement < 45 ~ "orange",
                                                       pitching_ratings_overall_movement < 55 ~ "#ffe600",
                                                       pitching_ratings_overall_movement < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_talent_movement = cell_spec(pitching_ratings_talent_movement, "html", 
                                                     color = case_when(
                                                       pitching_ratings_talent_movement < 35 ~ "red",
                                                       pitching_ratings_talent_movement < 45 ~ "orange",
                                                       pitching_ratings_talent_movement < 55 ~ "#ffe600",
                                                       pitching_ratings_talent_movement < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_overall_control = cell_spec(pitching_ratings_overall_control, "html", 
                                                     color = case_when(
                                                       pitching_ratings_overall_control < 35 ~ "red",
                                                       pitching_ratings_overall_control < 45 ~ "orange",
                                                       pitching_ratings_overall_control < 55 ~ "#ffe600",
                                                       pitching_ratings_overall_control < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pitching_ratings_talent_control = cell_spec(pitching_ratings_talent_control, "html", 
                                                     color = case_when(
                                                       pitching_ratings_talent_control < 35 ~ "red",
                                                       pitching_ratings_talent_control < 45 ~ "orange",
                                                       pitching_ratings_talent_control < 55 ~ "#ffe600",
                                                       pitching_ratings_talent_control < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         running_value = cell_spec(running_value, "html", 
                                                     color = case_when(
                                                       running_value < 35 ~ "red",
                                                       running_value < 45 ~ "orange",
                                                       running_value < 55 ~ "#ffe600",
                                                       running_value < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         def = cell_spec(def, "html", 
                                                     color = case_when(
                                                       def < 35 ~ "red",
                                                       def < 45 ~ "orange",
                                                       def < 55 ~ "#ffe600",
                                                       def < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         oa = cell_spec(oa, "html", 
                                                     color = case_when(
                                                       oa < 35 ~ "red",
                                                       oa < 45 ~ "orange",
                                                       oa < 55 ~ "#ffe600",
                                                       oa < 70 ~ "green",
                                                       TRUE ~ "blue"
                                                     )),
         pot = cell_spec(pot, "html", 
                                                    color = case_when(
                                                      pot < 35 ~ "red",
                                                      pot < 45 ~ "orange",
                                                      pot < 55 ~ "#ffe600",
                                                      pot < 70 ~ "green",
                                                      TRUE ~ "blue"
                                                    )),
  contact = paste0(batting_ratings_overall_contact,
                          "/",batting_ratings_talent_contact),
         gap = paste0(batting_ratings_overall_gap,
                      "/",batting_ratings_talent_gap),
         power = paste0(batting_ratings_overall_power,
                        "/",batting_ratings_talent_power),
         eye = paste0(batting_ratings_overall_eye,
                      "/",batting_ratings_talent_eye),
         avoid_k = paste0(batting_ratings_overall_strikeouts,
                          "/",batting_ratings_talent_strikeouts),
         stuff = paste0(pitching_ratings_overall_stuff,
                        "/",pitching_ratings_talent_stuff),
         movement = paste0(pitching_ratings_overall_movement,
                           "/",pitching_ratings_talent_movement),
         control = paste0(pitching_ratings_overall_control,
                          "/",pitching_ratings_talent_control),
  oapot = paste0(oa,
                 "/",pot)) %>% 
  group_by(player_type) %>% 
  group_split()

out_top_100[[1]] %<>%
  select(Rank, Name, Team, Age, Current_Position, 
         Ideal_Position, oapot, contact, gap, power, eye, avoid_k, running_value,
         def, Level)

out_top_100[[2]] %<>%
  select(Rank, Name, Team, Age, Current_Position, 
         Ideal_Position, oapot, stuff, movement, control, Velocity, current_pitch_names,
         pot_pitch_names, Level)
```
I'm having issues with the working directory saving in an RMD file, so I have to run the kable export function in an R script file instead.

Code:
# Hitter table
hitter_header <- c(15)

names(hitter_header) <- c(paste(max(leagues$season_year, na.rm = TRUE), "Top Hitters"))

kable(out_top_100[[1]], "html", align = rep('c', 15),
      col.names = c("Rank", "Name", "Team", "Age",
                    "Current Position", "Ideal Position","OV/POT",
                    "Contact\n(OV/POT)","Gap\n(OV/POT)",
                    "Power\n(OV/POT)","Eye\n(OV/POT)",
                    "Avoid K's\n(OV/POT)","Running Value",
                    "Def","Level"), escape = FALSE,
      linesep = "") %>%
  add_header_above(header = hitter_header) %>%
  kable_styling("striped", full_width = FALSE, font_size = 14) %>% 
  column_spec(2, width_min = "4.5cm") %>% 
  column_spec(1:15, extra_css = "padding: 0px;") %>% 
  save_kable("./OOTP/Extravaganza/Blog/top_100/hitter.png")

# Pitcher table
pitcher_header <- c(14)

names(pitcher_header) <- c(paste(max(leagues$season_year, na.rm = TRUE), "Top Pitchers"))

kable(out_top_100[[2]], "html", align = rep('c', 14),
      col.names = c("Rank", "Name", "Team", "Age",
                    "Current Role", "Ideal Role","OV/POT",
                    "Stuff\n(OV/POT)","Movement\n(OV/POT)",
                    "Control\n(OV/POT)","Velocity","Current Pitches",
                    "Potential Pitches","Level"),escape = FALSE,
      linesep = "") %>%
  add_header_above(header = pitcher_header) %>%
  kable_styling("striped", full_width = FALSE, font_size = 14) %>% 
  column_spec(2, width_min = "4.5cm") %>% 
  column_spec(11:13, width_min = "3.5cm") %>% 
  column_spec(1:14, extra_css = "padding: 0px;") %>%  
  save_kable("./OOTP/Extravaganza/Blog/top_100/pitcher.png")

Last edited by stealofhome; 07-01-2019 at 07:40 PM.
stealofhome is offline   Reply With Quote
Old 07-01-2019, 07:59 PM   #238
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1969 Top 100 Prospects

Name:  JasonCalhoun1969.PNG
Views: 113
Size:  49.1 KB
Jason Calhoun jumps into the top spot this year. His ceiling is just below that of Nolan Poulin, but Calhoun is a bit more likely to reach his. Calhoun has a four-pitch mix that is still developing.

Name:  TommyJones1969.PNG
Views: 110
Size:  46.6 KB
The top hitting prospect remains the same as last year but now slots in at number three overall - Tommy Jones, a CF in the Blue Jays organization.


Name:  pitcher.png
Views: 129
Size:  187.8 KB

Name:  hitter.png
Views: 116
Size:  213.4 KB

Last edited by stealofhome; 07-01-2019 at 08:03 PM.
stealofhome is offline   Reply With Quote
Old 07-01-2019, 09:12 PM   #239
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1969 NCAA All-Stars

Team 1:

position name war school
P Shane Wilson 1.94 WV
P Samuel MacPherson 1.62 GEO
P Thomas Salas 1.58 BAY
P Luke Hopkins 1.54 SCB
P Riley Link 1.46 VIR
P Mark West 1.38 UA
P Elijah Huson 0.80 NMSU
P Caleb Atkins 0.69 FLA
C Emery Hunt 1.28 MSB
C Casen King 1.02 TTU
1B Dan McConnell 1.72 IND
2B Walter Tapia 2.09 TEX
2B Declan Molinari 1.54 BC
2B Christopher Eglington 1.14 MIS
2B Hayden Garcia 1.11 SDSU
3B Vitaliy Kovtun 1.33 MICH
SS Peregrine Magee 1.61 BYU
LF Lamar Milliner 2.11 SJSU
CF Kendrick Christman 1.89 ALA
RF Ethan McCallion 1.70 UA


Team 2:

position name war school
P D.J. Coronado 1.84 KEN
P Sam Baker 1.53 VIR
P Kieran Long 1.49 RO
P Emmanuel DaCosta 1.20 NEB
P Levi Rodgers 1.17 RO
P Sidney Johnson 0.99 MD
P Rhett Thornhill 0.56 GEO
P Ken Wright 0.46 SJRS
C Chad Sabella 1.27 VIR
C Jesse Sowers 0.98 SJSU
1B Karl Duval 1.64 MSB
1B Alan Donnachie 1.37 ARK
2B Kent Burchett 1.76 OSU
2B Atte Kilpinen 1.50 WF
3B Christian Misner 1.34 STAN
SS Lloyd Iturriaga 1.52 WASH
SS Tim Pruitt 1.49 GAT
LF Dennet Armstrong 1.50 MSB
CF Liam Pierson 1.68 MIS
RF Ben Johnson 1.17 USC
stealofhome is offline   Reply With Quote
Old 07-01-2019, 11:00 PM   #240
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
Blog Entries: 1
1969 College Playoffs

The Fighting Illini--alma mater of many MLB Hall of Famers (Jeremiah Inman, Courtnay O'Donnell, Joe Hubbard)-win their first National Championship.
Attached Images
Image 
stealofhome is offline   Reply With Quote
Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 04:30 PM.

 

Major League and Minor League Baseball trademarks and copyrights are used with permission of Major League Baseball. Visit MLB.com and MiLB.com.

Officially Licensed Product – MLB Players, Inc.

Out of the Park Baseball is a registered trademark of Out of the Park Developments GmbH & Co. KG

Google Play is a trademark of Google Inc.

Apple, iPhone, iPod touch and iPad are trademarks of Apple Inc., registered in the U.S. and other countries.

COPYRIGHT © 2023 OUT OF THE PARK DEVELOPMENTS. ALL RIGHTS RESERVED.

 

Powered by vBulletin® Version 3.8.10
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright © 2020 Out of the Park Developments