Save Lineups

I have written a script that will allow for storage of up to 6 lineups (3 vs LHP, 3 vs RHP).  The script works in original lineup interface (the one that does not support depth charts).  To use:

1.  Go to the Lineups page and edit a lineup.
2.  A new drop down box and “Save to slot” button will appear below the interface.
3.  In the drop down, choose a slot and then click ‘Save to Slot’.
4.  You will be prompted to enter a lineup name.  Add a name and then click “Ok” and the lineup currently being used will be saved to the slot that was chosen in Step 2.

PLEASE NOTE: If you have made any lineup changes while in the ‘Edit lineups’ page you will need to save the lineup (with the SAVE YOUR LINEUP button) before “saving to a slot”.  If you haven’t saved your lineup changes, the lineup that was originally loaded when you visited the lineup editor page will be “saved to a slot” rather than the lineup that you tinkered with.

5.  To load a lineup just click the load button and the page will refresh and you’ll see the new lineup showing in the editor.  Click the SAVE YOUR LINEUP button for the lineup to take effect for that nights games.

EVERYDAY LINEUPS
On the Front Office page I added a table (below the Injury Report area) which will show a list of  “bench” players in the current lineups.  I added this table  for situations where one might have forgotten to put their starters back in the lineup after they have been injured.  Lineups that are stored in “Slot 1″ will be considered the everyday lineups.  If a player is listed in the current lineup but is not found in the “slot 1″ lineup that player will appear in the “bench” players table:

bench players

TRADES AND ROSTER MOVES
There will be situations where players stored in lineup slots may no longer be on the roster.  If this occurs, “Player not on roster” will appear under the name column.  If you try to load such a lineup with a player that is missing from the roster the page will just reload the original lineup with no changes made:

player not on roster

I hope you enjoy!  The script was written for leagues with the DH rule in effect.

Sign up and start a new team and then download the script here:

http://userscripts.org/scripts/show/81426

http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/digg_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/stumbleupon_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/delicious_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blinklist_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blogmarks_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/technorati_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/google_32.png

{ 0 comments }

strat-o-matic online

About a year ago SportingNews Strat-o-Matic Online introduced a new “Pitcher prefs” page.  This page allows you to set all of your pitcher’s individual settings in one convenient place.  Unfortunately, there’s not a “Batter prefs” page at the moment but I learned from Sporting News Member Services that a batter’s preference page is coming.

Until we get a “Batter Prefs” page, I have written a GreaseMonkey script that will show all of your batter’s individual settings on the bottom of the team page.  Unlike the “Pitcher prefs” page, though, the “Batter prefs” information that the script produces is read only.  GreaseMonkey does not allow changes to be submitted (with a Submit button) so the check boxes generated by the script are just for display purposes (read only).  At least you will now be able to see individual settings for all batters on your team on the same page rather than opening each card on the team.

One of the reasons why I wrote this script was to ensure I have the “Don’t steal” setting turned on for all batters that have rolls where they might get picked off.  Take J.D. Drew, for example, he has an 8-10 roll where he might be picked off.  My understanding of the rules is if I have the “Don’t steal” setting turned on, J.D. Drew has less of a chance of getting picked off.

Steal ratings

Another reason to write a script is that it’s a bit tedious to load each individual card to check their individual ratings each day.  There might be times where I’m facing an opponent in a hitters ballpark where I don’t want anyone on my team to attempt to steal.  In this type of situation I might turn on “don’t steal” for all batters in the starting lineup.  If I do this, I’ll likely need to revert back to my previous settings for the next game.  Rather than having to remember which players have a pick off roll I wrote the script to warn me (with a red ‘x’ placed next to the check box) when the “Don’t Steal” rating is unchecked for such a player.  See below:

Batter Preferences

I was thinking about adding warnings for some of the other settings but I really rarely use any of these other individual player settings.  I could probably have the script add warnings if the “Don’t hit and run” settings is off for players of a certain salary.  If I have Albert Pujols on my team, for instance,  I probably don’t want him involved in any hit and runs.

Behavior of the script

The script was written in a way that will cause the team page to refresh whenever a player’s individual strategy settings are updated.  So, if you update a player’s strategy settings and then refresh the team page (or click on a team page link) you will notice the page refresh a couple times.  This is necessary to make sure the “Batter prefs” data reflects the new change that was made.

Please let me know if there’s something you’d like to add to the script.

Sign up and start a new team and then download the script here: http://userscripts.org/scripts/show/77200 .

http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/digg_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/stumbleupon_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/delicious_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blinklist_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blogmarks_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/technorati_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/google_32.png

{ 0 comments }

Last year about this time I wrote about building a baseball player database using information provided by a book called Baseball Hacks. I’ve finally managed to write up a list of steps required to create such a database of player statistics and keep it up-to-date as the season progresses.

I’m by no means a SQL expert so the steps I took to get this far in building an automated database may not have been the best but it seems to be fully functional and working.  Please feel free to comment if improvements can be made.   Take a look at my steps below:

1.  Each year since 1995, Sean Lahman has provided a complete database of baseball statistics for every team and player in Major League history.  You can download the 2009 version here:  http://www.baseball1.com.

2.  MySQL will be used as the database.  Download and install MySQL (http://dev.mysql.com/downloads/).

3.  Download and create 5 tables which will be used to store data from the current season. Download: current_season.sql.

4. Download and install Perl: http://www.perl.org/get.html

5. A few things on the MLB.com Gameday servers have changed since the Baseball Hacks book was released in 2006 so I’ve made some changes to the Perl scripts provided by the book. Download modified scripts: (load_db_all_days.pl, update_db.pl, save_to_db.pm).

6. These scripts require some Perl modules in order for them to work. Most of these modules are already installed when you install Perl but you may need to add the DBD-mysql model. You can do this by running the Perl Package Manager from Start>Programs>Perl.

Here’s a list of modules used by these scripts:

DBI
XML::Simple
LWP
Time::Local
Data::Dumper
DBD-mysql

7. Run load_db_all_days.pl to gather data from opening day to games that were played yesterday. When you run load_db_all_days.pl it will begin inserting data from games that were played on April 5th and will complete after data from all games that were played yesterday have been inserted.

8. This year opening day actually started on April 4th, 2010 (http://gdx.mlb.com/components/game/mlb/year_2010/month_04/day_04/) with the Yankees and Red Sox. There was also an exhibition played between the Mariners and Giants. In order to gather data for the game between the Yankees and Red Sox we’ll need to modify load_db_all_days.pl.

The starting dates in the script will need to be changed each season. In load_db_all_days.pl.

Change the following lines below:

my $mintime = timegm(0,0,0,4,3,110);
my $mintimestr = gmtime(timegm(0,0,0,4,3,110));

The $mintime variable is set to timegm(second, minute, hour, day, month, year). The number 4 is the day and 3 is the month. In Perl, months range from 0-11 (0=January, 11=December). So, the number 3 = April. The year is from 1900 (e.g., 1900 + 110 = 2010).

The dates for $mintime and $mintimestr should always match.

To force the script to run just for one game uncomment line 63 so it looks like this:

die;

If for some reason the exhibition game was processed you can always go into your database and delete data for the exhibition game from the 5 tables that were created in step 3.

To run a Perl script in Windows open a command prompt and change the directory to the location where load_db_all_days.pl resides and run “Perl load_db_all_days.pl

9. Create a new table for batters. This table will store a combination of statistics from the Lahman database and current season statistics.

CREATE TABLE batting_combined (
  playerID varchar(9) NOT NULL DEFAULT '',
  stint smallint(2) NOT NULL,
  teamID char(3) DEFAULT NULL,
  lgID char(2) DEFAULT NULL,
  nameFirst varchar(50) DEFAULT NULL,
  nameLast varchar(50) DEFAULT NULL,
  yearID smallint(4) NOT NULL DEFAULT '0',
  g smallint(3) DEFAULT NULL,
  ab smallint(3) DEFAULT NULL,
  r smallint(3) DEFAULT NULL,
  h smallint(3) DEFAULT NULL,
  2B smallint(3) DEFAULT NULL,
  3B smallint(3) DEFAULT NULL,
  hr smallint(3) DEFAULT NULL,
  rbi smallint(3) DEFAULT NULL,
  sb smallint(3) DEFAULT NULL,
  cs smallint(3) DEFAULT NULL,
  bb smallint(3) DEFAULT NULL,
  so smallint(3) DEFAULT NULL,
  sf smallint(3) DEFAULT NULL,
  hbp smallint(3) DEFAULT NULL,
  title varchar(50) DEFAULT NULL,
  url varchar(255) DEFAULT NULL,
  message varchar(255) DEFAULT NULL,
  sponsor text,
  PRIMARY KEY (stint,playerID,yearID)
);

10. Create a new table for pitchers.

CREATE TABLE pitching_combined (
  playerID varchar(9) NOT NULL DEFAULT '',
  stint char(2) NOT NULL DEFAULT '',
  teamID char(3) DEFAULT NULL,
  lgID char(2) DEFAULT NULL,
  nameFirst varchar(50) DEFAULT NULL,
  nameLast varchar(50) DEFAULT NULL,
  yearID smallint(4) NOT NULL DEFAULT '0',
  g smallint(3) unsigned DEFAULT NULL,
  gs smallint(2) DEFAULT NULL,
  cg smallint(2) DEFAULT NULL,
  sho smallint(2) DEFAULT NULL,
  bf smallint(2) DEFAULT NULL,
  outs smallint(2) DEFAULT NULL,
  hr smallint(2) DEFAULT NULL,
  bb smallint(2) DEFAULT NULL,
  so smallint(2) DEFAULT NULL,
  er smallint(2) DEFAULT NULL,
  runs smallint(2) DEFAULT NULL,
  hits smallint(2) DEFAULT NULL,
  wins smallint(2) DEFAULT NULL,
  losses smallint(2) DEFAULT NULL,
  holds smallint(2) DEFAULT NULL,
  hopps smallint(2) DEFAULT NULL,
  saves smallint(2) DEFAULT NULL,
  sopps smallint(2) DEFAULT NULL,
  HBP smallint(3) DEFAULT NULL,
  BK smallint(3) DEFAULT NULL,
  WP smallint(3) DEFAULT NULL,
  title varchar(50) DEFAULT NULL,
  url varchar(255) DEFAULT NULL,
  message varchar(255) DEFAULT NULL,
  sponsor text,
  PRIMARY KEY (playerID,yearID,stint)
);

11. Run following insert statement for the batting_combined table:

insert into batting_combined
(playerID,yearID, teamID,stint,lgID ,nameFirst, nameLast, g, ab, r, h, `2B`, `3B`, hr, rbi, sb, cs, bb, so, sf, hbp)
SELECT
ma.playerID,
ba.yearID,
ba.teamID,
ba.stint,
ba.lgID,
ma.nameFirst,
ma.nameLast,
ba.G,
ba.AB,
ba.R,
ba.H,
ba.`2b`,
ba.`3b`,
ba.HR,
ba.RBI,
ba.SB,
ba.CS,
ba.BB,
ba.SO,
ba.sf,
ba.hbp
FROM master AS ma , batting AS ba
WHERE ma.playerID = ba.playerID;

12. Run following insert statement for the pitching_combined table:

insert into pitching_combined
(playerID,stint,teamID,lgID,nameFirst, nameLast, yearID, g,gs,cg,sho, bf,outs, hr, bb, so,hbp,bk,wp, er, runs, hits, wins, losses, saves)
SELECT ma.playerID,
pi.stint,
pi.teamID,
pi.lgID,
ma.nameFirst,
ma.nameLast,
pi.yearID,
pi.G,
pi.gs,
pi.cg,
pi.sho,
pi.BFP,
pi.ipouts,
pi.HR,
pi.BB,
pi.SO,
pi.hbp,
pi.bk,
pi.wp,
pi.ER,
pi.R,
pi.H,
pi.W,
pi.L,
pi.SV
FROM master AS ma , pitching AS pi
WHERE ma.playerID = pi.playerID;

13. Tangotiger of http://www.insidethebook.com has provided a list of cross referenced player ids for each player . This list allows us to map a player’s ‘Lahman’ database id with his ‘mlb.com’ id.

Create the following table:

CREATE TABLE export_id_map (
  MLBAM_ID int(11) DEFAULT NULL,
  retro_id varchar(11) DEFAULT NULL,
  bdb_id varchar(11) DEFAULT NULL,
  stats_id int(11) DEFAULT NULL,
  bis_id int(11) DEFAULT NULL,
  source_id int(11) DEFAULT NULL
);

You can refer to the example below to see how to insert the csv file from Tangotiger’s site into the export_id_map table:

load data local infile 'C:\\Files\\EXPORT_ID_MAP\\EXPORT_ID_MAP.txt' into table export_id_map
fields terminated by ','
enclosed by '"'
lines terminated by '\r\n'
(MLBAM_ID, retro_id, bdb_id, stats_id, bis_id, source_id);

14. Create following table export_id_map2. In this table I added two columns nameFirst and nameLast:

CREATE TABLE export_id_map2 (
  MLBAM_ID int(11) NOT NULL,
  retro_id varchar(11) DEFAULT NULL,
  bdb_id varchar(11) DEFAULT NULL,
  stats_id int(11) DEFAULT NULL,
  bis_id int(11) DEFAULT NULL,
  source_id int(11) DEFAULT NULL,
  nameLast varchar(50) DEFAULT NULL,
  nameFirst varchar(50) DEFAULT NULL,
  PRIMARY KEY (MLBAM_ID)
);

15. Step 14 was necessary because the list provided by Tangotiger last year did have player names.  I haven’t adapted to this year’s list which did not have columns for player names.  If I decided to leave out the names I probably would have had to build a 3 table join which can get complicated especially with my lack of thorough knowledge of MySQL joins. Run the following insert:

insert into export_id_map2
(MLBAM_ID,retro_id, bdb_id,stats_id,bis_id ,source_id, nameLast, nameFirst)
SELECT
ex.MLBAM_ID,
ex.retro_id,
ex.bdb_id,
ex.stats_id,
ex.bis_id,
ex.source_id,
ma.nameLast,
ma.nameFirst
FROM master AS ma , export_id_map AS ex
WHERE ma.playerID = ex.bdb_id
group by ex.bdb_id

16. Create following table for new players that are not currently found in the Lahman database:

CREATE TABLE rookies (
  playerID varchar(10) NOT NULL,
  gameDate date DEFAULT NULL,
  teamID char(3) DEFAULT NULL,
  eliasID int(6) NOT NULL,
  nameFirst varchar(32) DEFAULT NULL,
  nameLast varchar(32) DEFAULT NULL,
  nickName varchar(32) DEFAULT NULL,
  jersey smallint(2) DEFAULT NULL,
  throws char(1) DEFAULT NULL,
  PRIMARY KEY (playerID)
);

17. Create a view (vw_lastplayed) which will return a list of players that didn’t play last year:

CREATE VIEW vw_lastplayed AS select
ma.nameFirst AS nameFirst,
ma.nameLast AS nameLast,
max(ba.yearID) AS myMax,
ba.G AS G,
ba.AB AS AB,
ba.R AS R,
ba.H AS H,
ba.2B AS 2b,
ba.3B AS 3b,
ba.HR AS HR,
ba.RBI AS RBI,
ba.SB AS SB,
ba.CS AS CS,
ba.BB AS BB,
ba.SO AS SO,
ma.playerID AS playerID
from (`master` ma join batting ba) where (ma.playerID = ba.playerID) group by ma.playerID having (max(ba.yearID) = '2008');

18. Create following view to determine which batters have played for the last 20 years.  This helps determine whether or not a player should be considered a rookie:

CREATE VIEW vw_20years AS select
concat(ma.nameFirst,' ',ma.nameLast) AS `CONCAT(ma.nameFirst, ' ', ma.nameLast)`
from (`master` ma join batting ba) where ((ma.playerID = ba.playerID) and (ba.yearID between 1988 and 2008)) group by concat(ma.nameFirst,' ',ma.nameLast);

19. Create following view to determine all pitchers that have played within the last 20 years:

CREATE VIEW vw_pitching_20years AS select
concat(ma.nameFirst,' ',ma.nameLast) AS `CONCAT(ma.nameFirst, ' ', ma.nameLast)`
from (`master` ma join batting ba) where ((ma.playerID = ba.playerID) and (ba.yearID between 1988 and 2008)) group by concat(ma.nameFirst,' ',ma.nameLast);

20. Create following procedure which will scan ids in the master table and compare ids in rookies table for duplicates. If duplicates are found, the number at the end of the ID will be incremented.

CREATE  PROCEDURE `idGen`()
BEGIN
   DECLARE counter INT DEFAULT 1;
            simple_loop: LOOP
              SET counter=counter+1;
              select counter;
              update rookies set playerid = lower(concat(left(nameLast,5), left(nameFirst,2),concat('0', counter))) where playerid in (Select playerid FROM master);
              IF counter=20 THEN
                 LEAVE simple_loop;
              END IF;
            END LOOP simple_loop;
            update rookies set playerid = lower(playerid);
END

21. Run update_db.pl nightly. I have it scheduled to run at about 5 am Pacific time each day.

The update_db.pl script will gather data for games that were played the day before.  This script also does the following:

  • Updates the batting_combined & pitching_combined tables to combine current season statistics with all-time stats.
  • Inserts data into rookies table so we have a list of all known rookies.
  • Inserts data into batting_combined & pitching_combined of all players who exist in the rookies table list but aren’t really rookies (i.e. they missed the 2009 season).
  • Deletes non-rookies from the rookies table.
  • Runs procedure created in step 19.

That’s it!  Here is the baseball database.  Please leave a comment if you have any questions.

http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/digg_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/stumbleupon_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/delicious_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blinklist_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blogmarks_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/technorati_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/google_32.png

{ 0 comments }

Baseball Card Database

March 23, 2010

Baseball Card Database

Over 37000 unique cards can be viewed, searched and “flipped” in my new baseball card database.  I hope you enjoy these cards.  Maybe you’ll find something interesting.  I’ve spent hours looking through these cards.

Funny Baseball Cards

Take a look at Oscar Gamble’s large Afro hair or Wally Moon’s ‘eyebrow’ or Don Mossi’s ears.  Ross Grimsley also had a nice hairdo.  John Pacella of the dreadful Mets of the early 80’s lost his hat.

Check out Jason Michael’s big glove and Kirby Puckett carried a big bat.

Larry Haney appears to be a left-handed catcher in this reverse negative.   Bob Uecker is a right-handed batter but posed left-handed.

My Collection

I currently have about 15,000 cards in my baseball card collection. I have a least one card from every year from 1968 to 1995.

The oldest card in my collection is a 1968 Al Weis card. Al played a major role for the 1969 Miracle Mets in the World Series. In Game 2 his 9th-inning single drove in the winning run in a 2-1 victory. In the clincher, Game 5 at Shea Stadium, he homered off McNally in the seventh inning to tie the game at 3-3. The Mets scored two runs in the eighth to complete their improbable World Series victory.

Of my older baseball cards, I have quite a few from the 1974 set. I happen to have a Mike Schmidt and Charlie Hough rookie card. I also have Dan Fife’s only baseball card ever.

I started purchasing card packs in 1978. This set had a game on the back called “PLAY BALL. Played by two”. The instructions were as follows:

Player has 50 player cards. Toss coin for who goes first. First player turns cards over one at a time. Attempting to score runs until 3 outs have been made. After 3 outs, second player begins. Game is played with 9 innings. In case of tie, play extra innings.

If you turned up Paul Blair’s baseball card you would have a home run.

I always thought Mark McGwire’s United Stated Baseball Team rookie card would be worth a lot some day but its value has likely taken a major hit since the steroid scandal. I have four of these cards.  I also found a couple
Barry Bonds
rookie cards.

http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/digg_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/stumbleupon_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/delicious_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blinklist_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blogmarks_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/technorati_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/google_32.png

{ 0 comments }

Lately, I’ve been playing a lot of  Madden Ultimate Team and I’ve been enjoying it so much that I thought about what it would be like if Strat-O-Matic baseball online had the same format.  Just imagine being able to collect a set of virtual baseball cards to build a fantasy team that you can use in Strat-O-Matic baseball online.  There would be four packs of random player cards to choose from – platinum, gold, silver, and bronze.  Platinum packs might consist of players in the 9M and above range, gold 6M-8M, silver 3M-5M, and bronze .50M-2M.

You would start out with a set of 25 randomized bronze players along with a (bronze valued) ballpark.  As an example, here’s a list of players you might start out with:

Ballpark
McAfee Coliseum

Lineup
Travis Buck
C 2.48M
Ross Gload 1B .78M
Jeff Baker 2B 2.13M
Jose Bautista 3B 1.34M
Bobby Crosby SS 1.23M
Clete Thomas LF 2.03M
Willie Bloomquist CF 1.01M
Eric Hinkse RF 2.68M
Brian Barton DH .67M

Bench
Paul Lo Duca C .50M
Julio Lugo SS .50M
Jose Vidro 1B .50M
Travis Hafner DH .50M
Omar Vizquel SS .50M

Pitchers
John Lannan SP 2.29M
Nick Blackburn SP 1.88M
Aaron Harang SP .81M
Brett Tomko SP .55M
Zach Duke SP .50M

Francisco Rodriguez CP 2.66M
Juan Cruz RP .85M
Jamey Wright RP .59M
David Aardsma RP .50M
Jason Grilli RP 1.71M
Jack Cassel RP .50M

From a quick glance, this team (worth about 30M) appears to be pretty well balanced but there’s a chance you might end up with a team that is short on left-handed batters or you might end up with an all lefty starting rotation for instance.  It’s all random to begin with so it would be a nice challenge to be able to rebuild and optimize your team.

Earning Coins
You would start out with zero coins but you can earn coins through your performance on the field.  Let’s say you win a game you might earn 200 coins.  Hit a home run or pitch a shutout and your team would earn bonus coins.  You could start out by playing with your bronze team for the first 20 or so games and this would allow you to earn enough coins to buy new cards from the auction block or buy new packs.

Contract Cards
Each card would have a contract of a certain number of games.  Let’s say each card starts with a 20 game contract.  Before the contract expires you must decide if you want to extend the contract (with a contract card) or allow the contract expire and buy another player from the auction house.  Contract cards would be valuable, especially when it comes to keeping gold-level talent on your team.  There would also be injury cards you could use to speed up the healing process of your injured players.

Team Chemistry
I’m not sure if this would work in Strat-O-Matic’s current online engine but in Madden Ultimate Team there’s a chemistry feature that plays a large factor on your team’s performance.  If you are able to collect cards with players from the same pro and college team you get an on-field performance boost.  In  Strat-O-Matic perhaps each batter on the team could get a minor increase in home run chances, for example.

Admittedly, most Strat-O-Matic players won’t particularly like the idea of playing in a league with duplicate players involved but I think the fun factor of a Strat-O-Matic Ultimate team would outweigh any of these concerns.

For more information about Madden Ultimate Team visit Madden Online Tips.

http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/digg_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/stumbleupon_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/delicious_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blinklist_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/blogmarks_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/technorati_32.png http://baseballsimulator.com/blog/wp-content/plugins/sociofluid/images/google_32.png

{ 1 comment }