Here is version 0.3.5 -
https://skydrive.live.com/redir?resid=B ... B049FF!135
Here is a rough changelist (I can't remember every minor thing I changed, but these are certainly the headline changes):
New Features:
- Competition history updating (i.e. club and international leagues and tournaments);
- Player award history updating;
- Player career history validation (removes duplicate entries, entries for non-players, corrupt entries - thereby helping to keep the size of the database down and resolving the difficult task of ensuring that no duplicate data is in the game);
- Detection of possible incorrect player career history entries - i.e. those that may not have the Playoffs setting marked as 'Yes' or 'No' correctly;
- Redundant player attribute removal / validation. This removes player attributes for players who have since been changed to non-players in game. This means that their Profile in game will no-longer show player attributes because they are of no relevance or use (here is an example before the fix and after - see how Maltby no longer has a Playing Profile). I understand this all fixes an issue with the database that results in "super regens". Alessandro and Manimal have both mentioned to me that that super regen issue is the number one issue with roster updating. Hopefully this fix will eradicate this issue.
Other Changes:
- Very significantly updated code behind virtually every function. This won't be noticeable to the end-user but it makes the whole coding process much quicker, easier, more efficient and less error-prone);
- Support for imperial height and weight measurements in the attribute updating sheet (details on how to do this are on page 7 of the readme);
- Various accented letters are no longer case sensitive;
- Exported spreadsheets now have text with capital letters (i.e. it is no longer purely lowercase);
- Team and competition columns in the staff_history_update.csv can be left blank (or you can enter _none) if you want the team and/or competition to appear "unknown" in game;
- Fixed a major (but simple) bug with the player history updating which would result in incorrect ID numbers (thereby causing the Pre Game Editor a great deal of confusion);
- Updated readme file.
Up next will be player and non-player creation. Progress might slow down slightly as I'll also be working with Calv to research the British leagues for Manimal v5.x.
Now that we have the competition history and player awards history updating functions up and running, I think this is an area that would benefit greatly from some sort of collaboration between members of the community. Both updates can be shared with any database and so if a number of volunteers were interested, they could research some awards/competitions, put all of their research into one spreadsheet and then this could be applied to any and every database (note that the team names and league names would have to be present in the database however - but it doesn't matter whether the players are present or not, so long as the names are in the database's name set). This point equally applies to every function of the Updater - any part of any update can be applied to other databases.
Development of the player awards and competition history functions has actually been the toughest work so far because of the interesting nuances of the way the game deals with the data and of the data that is present in the database. Here are some notes:
Competition History
Within the default database (and the Manimal Rosters), there is competition history for many non-playable competitions. Although this data does not appear on any of the Competition Information screens, much of it does appear on the Competition screens for each team and nation. On the Team Roster screen, click on
History -> Competitions and you will see a list of the competitions won. Therefore it is worth updating the competition histories for many non-playable competitions too. However, this seems to work with some non-playable leagues and not others:
E.g. it works with competitions such as the Alberta Junior Hockey League (Rogers Wireless Cup), Austrian Nationalliga, NAHL, and Belarus Hockey League (mysteriously the 2004/05 data doesn't appear in game but the 2005/06 data does

) but not the Australian League, Romanian League or Swiss NLA. This is strange because there is data for the Australian League, Romanian League or Swiss NLA, etc in the default database but it just doesn't appear in game. Maybe this had been added/researched with a view to making it appear in a future version of the game.
In light of the above, I recommend that you test one entry of data for a non-playable competition before researching the whole history so that you’re not wasting time on data that won’t appear in game.
There is also data in the default database relating to playable leagues that doesn't appear in game. Here are two examples which I came across:
1) The host of the EIHL Playoffs final is recorded under the
Hosts column of the database. However, this data is not displayed in game (the game only shows the champion and runner-up). I guess it is probably not worth bothering with the
Hosts data for the EIHL (although it is always held at Nottingham and so it isn't too much effort to add this to each entry!).
2) Although the game does not display the
Hosts data for the NHL, SI Games seem to have included data in the Hosts column for some of the more recent NHL competition history entries (1993/94 onwards). The
Hosts data seems simply to be the name of the champions and not the location where the final game of the Playoffs was won. My guess is that you can ignore this column because it isn’t displayed in game.
There are tables on pages 10 and 11 of the readme which show what data is displayed for each playable competition.
Player Awards History
This was a real pain to get up and running!
Just one important note: No awards prior to the 1975/76 season are displayed in game. It doesn't matter what start date you use or whether you delete all of the post 1975/76 data, the pre-1975/76 data never appears in game.
Disclaimer: The following is probably not of any real use/interest to anybody who doesn't want to hex edit the database or write their own tools:
Before I explain an interesting characteristic of EHM (it's probably bug, to be honest), I'll explain the basics of how the database works in relation to staff. Every member of staff (i.e. both players and non-players) in the database is assigned an incremental Staff ID number. The first member of staff in the database has a Staff ID of 0, the second will have ID 1, the third will have ID 2, the hundredth will have ID 99... Well, you get the picture.
Both the player awards .dat file and the team records .dat file (the team records is the one where you list the player who holds the record for most Pts, PIM, etc for the team) can accommodate not only staff who exist in the database but also staff who do not. The reason for this is because many of the past record holders may have retired from the sport and so you need some way of ensuring that they can still appear in the awards and team records data. The way EHM does this is to store the following data for each record:
- Staff ID - the ID of the staff member (I will explain how we deal with staff that don't exist in the database in a moment - this is the source of the bug);
- First Name ID - the ID number of the staff member's forename (similar to the staff data, each forename in the database's name set has an incremental ID number starting from 0);
- Second Name ID - the ID number of the staff member's surname (similar to the staff data and first name data, each surname in the database's name set has an incremental ID number starting from 0).
For staff that exist in the database, it is very straightforward: You simply list the Staff ID of the staff member and then the First and Second Name IDs for his name.
With regards to non-existent staff, things ought to be straightforward too, but they're not for the player awards...
For the team records, things are indeed straightforward: You list the Staff ID as -1 and then you set the First and Second Name IDs for whatever the staff member's name is. The -1 ID number has a special meaning in the EHM database. It means that the staff does not exist in game (in other contexts it can mean an unknown team or competition name - such as when you want "Unknown Team" to appear in a player's career history - as well as other unknown/blank things). So if you add an entry for John Doe and set the Staff ID as -1 in the team records, he will appear in game when viewing the team records, but you won't be able to click on his name (because he hasn't been linked to an existing staff ID).
With regards to the player awards: When I looked through the default database, I found that the vast majority of non-existent staff in the database also had the -1 ID. This is what I was expecting to find. However, the awards for these staff did not appear in game.
Having looked deeper into the player awards data, I have found that some non-existent staff have been linked to a Staff ID other than -1. In other words, there is a John Doe who has been linked to a staff ID relating to an existing player such as Jaromir Jagr. I found that this data does appear in game. However, because the John Doe name doesn't match Jaromir Jagr, you cannot click on John Doe because his name doesn't match Jagr's (for example). So in essence you get the same effect as the -1 Staff ID in the team records data, but instead you have to use an existing Staff ID. This doesn't seem quite right and, seeing as much of the default data in the player awards .dat file does use the -1 Staff ID, I'm guessing this is a bug.
In order to get around this bug and to allow non-existent staff to appear in the player awards in game, the Updater will set all non-existent staff to have a Staff ID as 0. As far as I can tell, this doesn't cause any issues with the game (and in fact it is the only reason a minority of the non-existent staff have appeared in the game up until now).
Another thing I have noticed is that there are lots of entries that should be linked to an existing staff member but aren't. If you look at the Art Ross history in game, you'll see that you cannot click on Jagr's name to view his profile. This is because his entry hasn't been linked to the correct Staff ID. This can easily be fixed by exporting the data using the Updater, adding the correct spelling of the name (the á has been missed in the spelling of Jágr), checking that the corresponding DOB is correct and then reimporting using the Updater.
