UHS Build 12374 Deployed – Coach Updates & Old School Playoffs

UHS Build 12374 – January 2018
I hope your 2018 has started out well! Welcome to the first build release of the year. With BlizzCon and the holiday season we got a bit busy to add new developments to the system and were instead focused on keeping NHL rosters updated daily and putting out bug fixes where needed.

This build focuses mainly on adding in some extra Coach functionality (Losing the Room, Age Rerates, Permission Request limits) and a new Playoff Option: new Two-Game Total-Goal series. We’ve modified the MoveTeam functionality so that Pro, Farm and Junior teams can be moved individually instead having it go only through the Pro team.

Image result for old school hockeyTwo-Game Total-Goals Playoff Series
We have built in the very old school 2-games Total-Goals series: you know, the ones the NHL used pre-Original Six. Selecting this series length will create a home-and-home series where the “home-ice advantage” team will be playing at home first. The visiting team in Game 1 will be the home team for Game 2.

These are the only playoff games that can end in a tie. At the end of Game 2, if the SERIES / AGGREGATE score is tied, we will use whatever OT method the COM has set to decide the series.

Coach Age Rerates
Coaches will now rerate based on the number of seasons they have coached in leagues that are using Age-Rerates. All coaches have a base rerate chance of 20% to increase and 20% to decrease. For each season they coach in (during the regular season), they will get a +1% to their increase chance and +0.20% to their decrease chance. The percentages are applied against each skill individually.

Image result for hockey coach rageCoaches “Losing the Room”
We have added in checks to see if a coach will “lose the room”. For some reason or another a coach can yell and scream, reward and incentivize as much as they want: the players just do not respond. The coach is dead in the water.

In UHS, we are going to look at losing streaks. Specifically Regulation Losses. OT and Shoot-out Losses will not count to the losing streak check when the coach loses the room. For every loss past their 5th-in-a-row, there is a 5% chance the coach will lose the room.  A team that is on a 10-game losing streak will have a 25% chance for the coach to lose the room.

When losing the room, the coach is simply marked as “Disgruntled”. You can no longer re-sign him (except once he’s back on free agency), he provides negative modifiers to player skills during games and will provide a pretty severe rerate penalty (age rerate leagues only) for all players on that team. Once they’ve lost the room, you need to buy them out and find someone new.

Only games in the current regular season and only for the team the coach is currently coaching will be checked. Losses while coaching other teams in the same regular season will not count at all.

Farm Coach Permission Requests
Teams will now have a limited number of Permission Requests to use on Farm Coaches through-out a season. By default, GMs will have 3 permission requests to use during the season. Once the league changes from Play-Offs to Off-Season, the number of permission requests will be reset back to 0.

AutoGM Prospect Training
AutoGMs will now train their junior prospects provided the league allows training. Player skills are weighted in favour of scoring related characteristics. A random characteristic will be chosen and the highest overall skilled player that isn’t already maxed out for that characteristic will be selected for training for that particular point. AutoGMs will also cheat by being allowed to train a player for a given characteristic more than once in a season.

Play-Off Over-Time Options
Going forward, Leagues will no longer be able to have playoff games end in a tie. The options for “Sudden Death OT – 1 period then tie” and “No OT or Shoot-Out” have been removed. Any league that had these options selected will be defaulted to the “Sudden Death OT – 1st goal wins” option.

2-Game Total Series are the exception to this rule as games can end in a Tie. OT for these types of series will only happen in Game 2 and only if the aggregate score is tied.

Move Team Changes
COMs will now have the Move Team option for all Pro, Farm and Junior teams. COMs will need to move the Pro and Farm team separately, one after the other, the order of the move does not matter.

The “Move Arena” option previously included in the move functionality has been removed and needs to be handled as a separate action by the COM.

There will be an option to charge the Pro team a moving cost if the moving team is either Pro or Farm.

Disgruntled Coaches & Rerate Penalties (Hotfix: Jan.17 2018)
Having a disgruntled coach will now apply a -50% penalty for rerates for Age Rerate Leagues only. The penalty is applied to the Increase % to bring it to 0%. Anything remaining from the penalty is then applied to the Decrease % to raise it.

Previously, the only penalty for keeping a disgruntled coach on your farm team was a severe penalty to game performances, which is REALLY bad for Stat Rerate Leagues but pretty much meaningless for Age Rerate Leagues.

Bug Fixes & Miscellaneous Changes
– Fixed an issue where Deflected Shots on goal could also result in a “whiffed” shot, creating an awkward play-by-play situation.
– Public Sites: Team Names in the League Finances & Power pages will now link to the Team’s Home Page.
– Public Sites: Added responsiveness to Championship Series results. Teams in this will also now link to the Team’s Home Page.
– Public Sites: New “Cups” option in the Record Book to show number of Championships a team has won.
– Public Sites: the schedule page will no longer show games that are Not Needed from playoff series.

Hot Fixes
– Fixed an issue where new offers could sometimes not be allowed for other team’s farm coaches. Hotfix: Oct.13 2017.
– Fixed an issue where the presence of All-Star teams were preventing Relegation Leagues from advancing past the Off-Season. Hotfix: Oct.26 2017.
– Fixed an issue where OTW, OTL, SOW and SOL were not being considered when updating a Team’s streak in Live Games. Hotfix: Nov.15 2017.
– Fixed an issue where players having played no games would be considered pro and have the leadership bonus applied to their Rerate Increase change (default Age rerate system only) and ignored the 50% pro GP rule. Thanks for pointing this out David. :)  Hotfix: Dec.22 2017.
– Fixed an issue where players with maximum rating in a skill (9) could rerate down even though they were supposed to rerate up. Applied to Age-Rerate leagues only. Hotfix: Jan.1 2018.
– Fixed an issue where future team draft picks were not being created for Season + 3. Hotfix: Jan.1 2018.
– Fixed an issue where GMs would have an option to move players to the Juniors even if they were beyond the Farm Skill threshold. Hotfix: Jan.5 2018.
– Fixed an issue where coach ownership was not being transferred to the new team when a team was moving. Hotfix: Jan.5 2018.
– Fixed an issue where the *FARM* text tag was not appearing for Farm Coaches under Available Coaches. Hotfix: Jan.17 2018.
– Fixed an issue where the incorrect message was being displayed for a coach’s scouting report when logged into UHS. Hotfix: Jan.18 2018.
– Fixed an issue where a player signed as a RFA was showing the old team name when the old team accepted compensation. Hotfix: Jan.19 2018.

UHS Build 12261 – Goalies Be Shakin’ in the Dark

We add two new features to the system with this build: Team Shake-ups and Goalie Empty-Net controls. We’ve also fully completed making the Public Site responsive, meaning you should be able to view your league’s public site on any device or screen size. The site is made for mobile first and expands outwards from there.

We’ve made a number of changes to the css styling of the public site, so if things look wrong, the best thing to do is to hit CTRL-F5 to force a full refresh. If that doesn’t work you can try clearing your browser’s cache. After that, let us know. You may have found a bug we missed in testing.

Our focus will likely be on making the regular UHS site fully responsive. I will tell you that will be a very big task and likely take up to 5 or 6 months. It would probably take us longer but we have learned a lot from converting the Public Site to being responsive.

Also: HOCKEY IS BACK!!!

Team Shake-Ups
When firing a coach, the GM has the option to shake-up that team’s players. This option is available only once per season for that particular team (Pro or Farm). Essentially the GM will have the option to perform two shake-ups in a season: once for each the Pro and Farm teams. This option is ONLY available if the GM is firing a coach; you would not have the option to shakeup your Farm team if you promote your Farm coach to the Pro team, however, you would have the option to shakeup your Pro team since you are firing the Pro coach.

When a shakeup is allowed, the players on that team have their Streaks recalculated randomly. The chances are: 40% Hot streak (3 – 9 games), 10% Cold streak (1 – 5 games), 50% No streak. The new streak overrides whatever streak the player is currently on. For example a player that is already on a Hot streak could still get a new Hot streak but won’t get the games added on and it’s also certainly possible that a player on a Hot streak could suddenly find themselves with no streak or on a Cold streak.

Goalie Empty-Net / Extra Attacker Settings
GMs now have the ability to modify their team’s empty-net / extra attacker settings. You will be able to modify the goal difference your team is losing by as well the time remaining in the game. The goal difference will be 0 – 3 goals, with 2 being the default. Setting the goal difference to 0 will prevent your goalie from being pulled at all.

The time options are in increments of 15 seconds, with the default being 1m 30s (90 seconds) left in the game. You can set this up to a maximum of 3 minutes (180 seconds). If the goal difference is set to 0, it won’t matter what the time option is set to: your goalie will not be pulled.

Public Site Team Pages
All Public Site Team Pages have been updated to be responsive (ie. The data on the page should look good regardless of media device or screen size.) These pages were not fully optimized for responsiveness when the new Public Sites went live. If you are seeing any issues with your Public Site, please let us know.

Public Sites Go Dark
We now have a “Dark Theme” for public sites. To enable, simply go to your public site, go to the UHS navigation menu, click “Go Dark”. Once you’re in Dark Mode you can re-enable the default light theme by navigating to the same location and click “Go Light”.

Public Site Live Games
The Live Games show on Public Sites should now be fully responsive (meaning you should be able to watch them reasonably well on any device). We’ve updated the page to add the teams’ logos and made sure the Live Game mode looks reasonably decent with the Dark Theme.

Player Profile Age Rerate Fix – Hotfix: Oct.1 2017
We’ve updated the player profile’s rerate information (for age-based rerates only) to now show the player’s rerate percentages based on their current age and the current progress of the team through the current regular season.

The values were actually showing their rerate values as if they were a year younger. Additionally the leadership bonus was based on when the team played half their regular season games, so effectively the leadership bonus would be 0% until the pro team played half the season. The leadership bonus will now apply at all times and is a PROJECTION based on players that have played at least half the team’s current regular season games. Reminder: the Leadership Bonus is only applied to players marked as Pro (played more Pro games than Farm + Junior).

NHL Players w/ Injuries – Hotfix: Sept.24 2017
We’ve changed how UHS handles NHL players with injuries. Previously, we simply removed the player from the team and had them placed in free agency, however, this meant any team could then pick them up, despite being injured.

We will now keep the player on the team but have them set to be injured for 99 games. Once the real team takes the player off the injured reserve list (again, going by the data on CapFriendly.com), we’ll unset the injury. If you want to use the player anyway, you can still go in and edit their injured games back to 0.

This change takes effect for new leagues or leagues importing NHL Teams w/ players or leagues importing NHL Players individually. It will not change the injury status of NHL Players that already exist in your league.

Bug Fixes & Miscellaneous Changes
– Team Names and Logos will now link to that team’s Home Page for Public Sites.
– Public Site League Standings now show less information on small screen sizes.
– Fixed an issue where Team logos were not appearing for the League – Special Teams statistics page for some leagues.
– Fixed an issue where Games Results in public sites were showing OT goals despite the game being decided by a shootout.

Hot Fixes
– Changes were made to Public Site’s Team Personnel pages to prevent columns from being hidden underneath the Social section on the right side. These changes include: removing the Status column, changing the Jersey header name to #, and moving the Total / OV column to appear at the beginning of the player’s characteristics block. Hotfix: Sept.19 2017.
– Fixed an issue where the Home, Away and Last-10 records were not summing properly. OTW & SOW will count as Wins, OTL & SOL will count as Losses in these columns. Hotfix: Sept.26 2017.
– Fixed an issue where COMs could not import NHL players when creating / importing NHL Teams. Hotfix: Oct.4 2017.

NHL Player Injury Hotfix – Sept.24 2017

We’ve changed how UHS handles NHL players with injuries. Previously, we simply removed the player from the team and had them placed in free agency, however, this meant any team could then pick them up, despite being injured.

We will now keep the player on the team but have them set to be injured for 99 games. Once the real team takes the player off the injured reserve list (again, going by the data on CapFriendly.com), we’ll unset the injury. If you want to use the player anyway, you can still go in and edit their injured games back to 0.

This change takes effect for new leagues or leagues importing NHL Teams w/ players or leagues importing NHL Players individually. It will not change the injury status of NHL Players that already exist in your league.

UHS Build 12101 – Show Me the MONEY!

UHS Build 12101 – September 2017
It’s almost hockey season again! I’m really looking forward to seeing the NHL get back on the ice, watching the best league in the world. This build has several changes around player salary expectations; AutoGM player, trade and free agency evaluations; a new target ticket price alert for COMs; rookie handling and applying a maximum skill for players sent to the juniors and many more miscellaneous changes and bug fixes.

We are also continually updating NHL rosters based on the player movements and signings found on CapFriendly.com. Through September I’ll be updating rosters on Sundays but once we get into the regular season, I’ll be trying to make changes for major moves as soon as they happen and again, Sundays will be for the remainder of changes that may have happened that week. Once the regular season starts, I’ll be going through all NHL rosters to remove players that are on the IR (for new leagues these players will still be present, however, they won’t be assigned to any team).

Salary Expectations – Salary / Contract Changes
We have implemented a new method of determining salary expectations, replacing the old method of using the player’s or coach’s last contract value offered. The old method allowed teams to get 90+ players at a fraction of their true value.

The new method will create a salary expectation on a per-season basis based on your league’s salary cap, the player’s skill and their age. This also applies to coaches and free agency.

The logic for accepting an offer (regular contract or free agency) has also changed to be focused more on what you are offering in terms of salary. The Salary Expectation sets to the ceiling at 90% acceptance, however, contract length, player/coach age, the team’s winpct and when the contract starts all still play a part in determining whether your offer will accepted.

Additionally, there is no longer a minimum of 10% acceptance, in fact, it’s entirely possible for your signing factor to go into the negatives if your offer is too low. The maximum of 90% acceptance is still in effect.

Further to address lowball offers, if the offer is declined (and the GM permitted to make a new offer), the Minimum Offer will be increased by 30%. It is entirely possible for the minimum offer to exceed the salary expectations, however, occurrences of this should be rare.

By default all leagues will come with a new SalaryCap of $75 million to match that of the NHL. This will apply to leagues that get reset using the Reset League tool. NHL leagues will have player contract lengths randomly set on league creation.

While we try and catch as many bugs as we can in testing, there are invariably, some that get found when we go live. As always, if you find any issues or have any questions that are not covered in the wiki, please let us know via ticket or discord.

Maximum Farm (JUNIOR) Skills
To prevent fully automated leagues from sending highly skilled young players down to the juniors (see Edmonton’s McDavid and Toronto’s Matthews), we’ve changed the Max Farm Skill to also apply to junior players. Additionally, all new leagues will have the Maximum Farm Skill Age set to All Ages by default. Existing leagues will not see this setting changed. These changes will ensure that players that are 20 and younger and highly skilled will remain on their pro team and not be sent to the juniors for development.

Rookie Determination
Speaking of Rookies, we’ve changed how we are storing Rookie players in the database. Currently Rookies really only works for your current season, when you go back to look at previous seasons’  league leaders the rookie designation may be gone as the player is no longer currently considered a rookie. Additionally, we are no longer evaluating rookies at the farm level: The Rookie designation is for pro league only.

By default Rookies are considered to be any player that is 25 or under and played in at least 25% of their team’s regular season games.

Creating Draftable Juniors
COMs will now have a new Age Group option when using the Add Players function: Draftable players. These players are basically juniors except all created at Age 18.

AutoGM Trading – Player Evaluations
We’ve added code to impose the following restrictions on AutoGM trading:

– Trading will only happen during the Regular Season.
– Trading will only happen if the AutoGM does not have any pending free agency bids, players waiting to clear waivers or pending claims on other players waiting to clear waivers.
– Players being traded to the AutoGM will be evaluated as to whether they will actually be used on the team.

AutoGM Outgoing Trades
Previously AutoGMs were creating trade proposals once every X hours, depending on how the COM had set it. We’ve changed this to instead be a trade proposal CHECK will be made once every X Regular Season Games Played by the AutoGM team. By default we have changed this to be once every 7 GP.

Additionally, the chance was previously accumulative, so that successive trade proposal failures would eventually result in SOME kind of trade being offered to help generate movement in All-AutoGM leagues. This has changed to now be a flat 20% chance (by default). This chance will be checked once every X regular season GP (see the previous paragraph) and will only be made ONCE.

You can disabled AutoGM initiated Outgoing Trades by setting the GP to 0.

Using the default settings all AutoGM teams will have a 20% chance to look at making an outgoing trade every 7, 14, 21, 28, etc GP. If the chance is successful there are further checks made to determine whether a VIABLE trade will be offered or even whether that particular AutoGM should initiate a trade (ie. The best team in the league probably won’t be making offers… it’s possible, just not likely).

AutoGM Prospect Handling
By default, we’ve changed how AutoGM’s handle age 20 and younger prospects. Previously AutoGMs would send the prospect down to the juniors if they are 20 or younger, regardless of their skill. This makes sense for leagues using Stat rerates since it’s beneficial for the player to be in the lowest league allowed to rerate up.

This has changed now so that Age-Rerate Leagues (this is default rerate method for new leagues) will allow the AutoGM to keep the player on the pro team if their skill is higher than the Max Farm Skill value (by default set to 70). This means that players like Auston Matthews and Connor McDavid will actually play on their team’s pro rosters by default when creating new NHL-based leagues.

Once the NHL season has begun, if you notice any 20 and under player that has earned a permanent spot on their team’s pro roster (the real NHL team) and is being sent down by the AutoGM in UHS, please let me know so we can adjust their skill appropriately (71+ and Age-Rerates). Alternatively, you can lower the MaxFarmSkill value so that some of these players will not be forced down.

AutoGM Free Agency Poaching Changes
Previously, we had the AutoGM look at most, if not all, free agents and see if they could fit somewhere on the team. In some cases, this could result in the AutoGM signing a FA and then immediately buying them out due to protecting prospects.

If the AutoGM is not looking to fill their team (meaning they have a full pro roster), the AutoGM will now consider whether the replacement player will replace a prospect. If this is true, the AutoGM will not make a bid on the free agent and instead opt to keep the prospect. A prospect is defined as a player that is at MaxAgeProtected or younger.

Target Ticket Price
By default, league ticket prices are set to $100 maximum. With leagues that run shorter regular season schedules, the ticket prices need to be increased otherwise teams will not earn enough money to pay their players. We will show an alert to COMs and Owners if the league’s current maximum ticket price is lower than the target price.

The target price is calculated as (SalaryCap * 80%) / Arena_Seat_Average / Regular_Season_Home_Games.

Relegation League Roster Changes (Hotfix: August 2 2017)
Relegation Leagues are run very differently from standard leagues: There are no farm or junior leagues, so no waivers. In some relegation leagues the AutoGM would treat players under the MaxAgeProtected (by default, age 23), as farm players and mark them as Farm, thereby allowing those players to escape the wrath of the Pro team’s “skill culling” (signing higher skill free agents and buying out lower skilled players).

The following changes will take effect for Relegation Leagues only:

– Teams will be allowed a maximum of 10 centers, 10 left wingers, 10 right wingers, 16 defensemen and 6 goaltenders for a total of 52 players. (Forwards are added to the list of C, LW, RW as needed).

– Lesser skilled players that fall out of the maximums for each position will be bought out and placed in free agency if the team has enough funds to buy the player out.

– All players, regardless of age are fair game for a pro roster position (even as low as age 15). If they are skilled enough then they are worthy.

When adding new players (using Manage > Players > Add), it may take some time for AutoGMs to get all the best free agents they could possibly have as AutoGMs are limited to making only a handful of offers if their team already meets the minimums for a game roster.

AutoGM teams will still create Makeweight players if the team’s next scheduled game is expected to occur before their free agents are signed (this is done to ensure all AutoGM teams have a game roster set).

Age Rerates – Leadership & Coach Bonus Changes (Hotfix: July 31 2017)
To add an incentive to keep around older players, we have added a Leadership bonus to all players that qualify at the Pro Level. Additionally, we are decreasing the Experience and Development bonus that coaches apply to rerates by half (10% is now 5% and 5% is now 2.5%). This is being done to add another factor for the GM to decide if it’s better for their team to play a younger player on the pro instead of the farm.

The Leadership bonus is based on your league’s UFA Age and is generated if that particular player is over the UFA Age (28 by default) and played at least half the season on the pro team. The player will generate a +0.1% to ALL PRO PLAYERS (again, Pro qualifying) for every year they are above the UFA Age. For example: A player that was 30 years old would grant all Pro qualifying players a +0.2% increase bonus on their rerate increase chance (30yo – 28yo * 0.1%) if they played at least half their games on the pro team.

This bonus is cumulative. So multiple players qualifying will grant higher bonuses. It is quite possible to stack old players to get a high bonus, however, you will have to weigh that against not developing your younger players and possibly dealing with Salary Cap issues.

The default bonus for being considered a farm player has changed from +10% to +5% for players of all ages. This decrease is designed to make the GM really look at their team and see where the best place is for their players to rerate. If that’s the pro team, they’ll need to get them the pro games to qualify as a pro players, if that’s the farm or juniors, they can move them down. This will also put more emphasis on maximizing your coach’s (both pro and farm) Development and Experience skills.

The default bonus for being considered a junior player has changed from +5% to +7.5%. Overall we are targeting an average of +7.5% bonus to the increase chance, so the bump to Juniors was needed to keep it as a viable option.

Age Rerate – Player Level Determination (Hotfix: July 28 2017)
The default Player Rerate code (by age) has been updated to look at the number of games played at each level for the player to determine what level they should be processed at. Previously the level was taken from wherever the player ended up at the end of the season, even if the player didn’t play any games there. For example: a junior could never have played a game on the Pro team but then get promoted right at the end to benefit from the Pro team’s coach development bonus.

What we are doing now is looking at all the Regular Season games played for the player. Whatever level has the highest games played will be the level that is used for their rerates. In cases of ties we use Pro > Farm > Junior.

Waiver Claim Adjustments (Hotfix: July 28 2017)
From time to time we make adjustments to the code to mimic the rules and procedures of the NHL. In this case we are adjusting / adding a rule concerning Player Waivers. When a player is placed on waivers and gets claimed, if the new team also places them on waivers, the original team can make a claim, and, if the player is won, they will automatically clear waivers for the remainder of the season.

In the case of UHS, the player will be found on the pro team (like a regular player claimed via waivers), however, they will now have the ‘Send to Farm’ option so the team can send them immediately to the farm without having to place them on waivers again (for that season). This is being implemented to remove a scenario I call “Waiver Wars” which has come up in our TJHL test league (Thanks to the TJHL for bringing this to my attention).

Bug Fixes & Miscellaneous Changes
– Farm Team information will no longer appear on the GM’s Team Home page if a real farm team has not been assigned to the pro team.

– Teams can no longer hire a farm coach if there is no real farm team assigned to the pro team.
– By default all new leagues will show OTL and SOL in league standings with Ties hidden.
– By default all new leagues will have OTL worth 1 point.
– Fixed an issue where creating junior players after season 1 would result in the players’ ages being only 15-16. This will now only happen if the league actually has junior teams.
– Fixed a minor sorting issue with league’s activity reports.
– The banner / login area has been changed slightly to make the area shorter. The advertisement for non-Premium leagues will now appear as a separate row.
– Your league’s database information can now be found on your league’s information bar.
– Fixed an issue where AutoGMs were either claiming players from waivers or signing players from free agency and then immediately turned around to buy them out. (hopefully it’s fixed!!)
– Fixed an issue where new leagues were not having their Season 4 entry draft picks created.
– Fixed an issue where the Last Wage column was incorrectly appearing for Junior Prospects in the COM’s Team view.

Hot Fixes
– Updated the one-time Paypal donation button to also be applied against a League’s Premium Service expiration date. Works for every increment of $5. Hotfix: July 16 2017.

– Released a change to automatically protect any league that purchases a year Premium Service or league’s that have purchased 10 or more months of Premium Service. Hotfix: July 17 2017.
– Fixed an issue where player were not having their Cup value increased after their team won the Pro championship. Hotfix: July 18 2017.
– Removed option to create leagues with AHL and OHL leagues / teams. Hotfix: July 19 2017.
– Fixed an issue where a player’s Quickness skill was not being correctly used to mitigate the strength of a check against them. Hotfix: July 19 2017.
– Fixed an issue where an advertisement banner was being shown on the Public Site for Premium leagues. Hotfix: July 19 2017.
– Fixed an issue where AutoGMs were not using free agency properly to fill their rosters. Hotfix: July 19 2017.
– Fixed an issue where goaltender’s Minutes and GAA were not being calculated properly on Public Sites. Hotfix: July 19 2017.
– Fixed an issue where loading a SavePoint for relegation leagues and would result in creating blank positions in the League Structure if relegation was re-processed. This also resulted in causing the AutoGM to go haywire (time-outs, excessive lag due to reaching 100 player limit). Hotfix: July 20 2017.
– Fixed an issue where goaltender’s Minutes were being calculated and shown as seconds. Hotfix: July 20 2017.
– Fixed an issue where All-Star games could not be created if the regular season schedule was completed. Hotfix: July 21 2017.
– Automatic setting of a GM Draft list has been added to the Premium service. Hotfix: July 23 2017.
– Fixed behind the scenes issues that were generated E_NOTICES and WARNINGS. Hotfix: July 24 2017.
– Fixed an issue where moving a player between Pro/Farm/Junior levels would result in an incorrect Finance SeasonNet and Balance calculation (Media revenue was not being considered). Hotfix: July 28 2017.
– Fixed an issue where UHS was always reporting incorrect lines. Hotfix: July 31 2017.
– Fixed an issue where the base percentage for free agency offers was always 50% during the off-season and pre-season despite there being a regular season winpct available from the previous season. Hotfix: August 2 2017.
– Fixed an issue where free agency offers were not considering the Minimum Offer and the potential for a decreased Last Contract Value (due to lack of playing). Hotfix: August 3 2017.
– Fixed an issue where the AutoGM was under-evaluating players being traded away. Hotfix: August 5 2017.
– Changed the AutoGM to only make “Troubled Finances” offers to teams that can afford the asset being traded. Hotfix: August 15 2017.
– Fixed an issue where the AutoGM would continue to make “Troubled Finances” trade offers even if they had exceeded the 10 offer limit in a season. Hotfix: August 15 2017.
– Fixed an issue where playing an individual game in live game mode would not actually sim the game. Hotfix: August 17 2017.
– Fixed an issue where leagues that had unused picks due to changing the number of draft rounds would not have newly created players or unsigned players moved to free agency until the OffSeason was completed. Hotfix: August 20 2017.

Relegation League Roster Changes (Hotfix: August 2 2017)

Relegation League Roster Changes (Hotfix: August 2 2017)
Relegation Leagues are run very differently from standard leagues: There are no farm or junior leagues, so no waivers. In some relegation leagues the AutoGM would treat players under the MaxAgeProtected (by default, age 23), as farm players and mark them as Farm, thereby allowing those players to escape the wrath of the Pro team’s “skill culling” (signing higher skill free agents and buying out lower skilled players).

The following changes will take effect for Relegation Leagues only:

– Teams will be allowed a maximum of 10 centers, 10 left wingers, 10 right wingers, 16 defensemen and 6 goaltenders for a total of 52 players. (Forwards are added to the list of C, LW, RW as needed).

– Lesser skilled players that fall out of the maximums for each position will be bought out and placed in free agency if the team has enough funds to buy the player out.

– All players, regardless of age are fair game for a pro roster position (even as low as age 15). If they are skilled enough then they are worthy.

When adding new players (using Manage > Players > Add), it may take some time for AutoGMs to get all the best free agents they could possibly have as AutoGMs are limited to making only a handful of offers if their team already meets the minimums for a game roster.

AutoGM teams will still create Makeweight players if the team’s next scheduled game is expected to occur before their free agents are signed (this is done to ensure all AutoGM teams have a game roster set).

UHS Hotfixes – July 31 2017 (Leadership & Coach, Farm/Junior Bonus Changes)

Age Rerates – Leadership & Coach Bonus Changes (Hotfix: July 31 2017)
To add an incentive to keep around older players, we have added a Leadership bonus to all players that qualify at the Pro Level. Additionally, we are decreasing the Experience and Development bonus that coaches apply to rerates by half (10% is now 5% and 5% is now 2.5%). This is being done to add another factor for the GM to decide if it’s better for their team to play a younger player on the pro instead of the farm.

The Leadership bonus is based on your league’s UFA Age and is generated if that particular player is over the UFA Age (28 by default) and played at least half the regular season on the pro team. The player will generate a +0.1% to ALL PRO PLAYERS (again, Pro qualifying) for every year they are above the UFA Age. For example: A player that was 30 years old would grant all Pro qualifying players a +0.2% increase bonus on their rerate increase chance (30yo – 28yo * 0.1%) if they played at least half their games on the pro team.

This bonus is cumulative. So multiple players qualifying will grant higher bonuses. It is quite possible to stack old players to get a high bonus, however, you will have to weigh that against not developing your younger players and possibly dealing with Salary Cap issues.

The default bonus for being considered a farm player has changed from +10% to +5% for players of all ages. This decrease is designed to make the GM really look at their team and see where the best place is for their players to rerate. If that’s the pro team, they’ll need to get them the pro games to qualify as a pro players, if that’s the farm or juniors, they can move them down. This will also put more emphasis on maximizing your coach’s (both pro and farm) Development and Experience skills.

The default bonus for being considered a junior player has changed from +5% to +7.5%. Overall we are targeting an average of +7.5% bonus to the increase chance, so the bump to Juniors was needed to keep it as a viable option.

UHS Hotfixes – July 28 2017 (Age Rerates & Waivers)

Two hotfixes were released today, one to close a rerate loophole for Age Rerates and another to implement an NHL waiver rule to prevent / reduce the frequency of players being stuck in the middle of a waiver war (This can happen from time to time with the AutoGM).

Age Rerate – Player Level Determination (Hotfix: July 28 2017)
The default Player Rerate code (by age) has been updated to look at the number of games played at each level for the player to determine what level they should be processed at. Previously the level was taken from wherever the player ended up at the end of the season, even if the player didn’t play any games there. For example: a junior could never have played a game on the Pro team but then get promoted right at the end to benefit from the Pro team’s coach development bonus.

What we are doing now is looking at all the Regular Season games played for the player. Whatever level has the highest games played will be the level that is used for their rerates. In cases of ties we use Pro > Farm > Junior.

Waiver Claim Adjustments (Hotfix: July 28 2017)
From time to time we make adjustments to the code to mimic the rules and procedures of the NHL. In this case we are adjusting / adding a rule concerning Player Waivers. When a player is placed on waivers and gets claimed, if the new team also places them on waivers, the original team can make a claim, and, if the player is won, they will automatically clear waivers for the remainder of the season.

In the case of UHS, the player will be found on the pro team (like a regular player claimed via waivers), however, they will now have the ‘Send to Farm’ option so the team can send them immediately to the farm without having to place them on waivers again (for that season). This is being implemented to remove a scenario I call “Waiver Wars” which has come up in our TJHL test league (Thanks to the TJHL for bringing this to my attention).

UHS Build 11454 – Warning: Biohazard!

UHS Build 11454 – July 2017
This is another large build that comprises many technical / system changes as well as a handful of quality of life and enhancements for league COMs and GMs. We’ve automated most of the build deployment processes and are removing a few tables where data was being duplicated, resulting in inflated league database sizes. We’ve updated all NHL teams based on the amnesiac rosters over at wasserlasser.com, including an updated NHL schedule for the 2017-18 season (yes, including the Vegas Golden Knights).

We’ve added a Team Salary Projection page that uses a CapFriendly.com style display to let you see how your player contracts line up at a glance. Players can now get sick: the Contagion has been released! AutoGMs have been further tweaked to introduce trade fatigue to further prevent poaching.

It’s a big build. Happy birthday to me (I’m a day late!)

NHL Updates
We have updated our NHL defaults by adding the new Vegas Golden Knights, the full 2017-18 NHL schedule and all player skills & characteristics. Player skill / characteristics were created by converting the amnesiac NHL09 rosters from NHL09 skills to UHS skills. Mileage may vary, I’m sure.

If you set the AutoGM on for all teams, there will be a handful of players that will be bought out. Two teams will require makeweights (one each for Boston and Philadelphia) as they are short on positions to fill a game roster. I will be updating the rosters with transactions as the month progresses, however, I will not be updating player skills until next summer unless there is something drastically wrong.

If you are interested in volunteering your time towards maintaining player skill characteristics for us, please open a ticket and let us know.  We’re looking for someone that can objectively quantify player skill values using the UHS set of skill characteristics for new players (farm players that are moved up from time to time) and then a larger update based on the previous season once a year.

Team Salary Projections
Instead of using Excel to manually generate a CapFriendly-style layout for your team’s salaries, you can now go to Team > Finances > Salary Proj. to find them. The salary projections will show player salaries for up to 6 seasons and will also consider things like contract extensions, player ages and free agent status.

For seasons beyond the current one, the projections will make some assumptions:
– Players 20 and under will be in the juniors and have their salaries adjusted appropriately (10% of regular contract value).
– Players aged 21 to the Maximum Protection Age (the max age they can be sent to the farm without clearing waivers) will be assumed to be on the farm team and have their salaries adjusted appropriately (25% of regular contract value).
– Players older than the Maximum Protection Age are assumed to be on the Pro team and will use the full value of their regular contract.

Players are also grouped by C, LW, RW, F, D, G to help you see where contracts are running out by position. Player’s Level, Age and Skill are based on the current season only, the first column holding salaries. The Skill column will display either the player’s total skill (skills shown on) or the player’s skill class (skills shown off).

The projections will show the salaries for a full season only, so once a contract is expected to expire at the start of the next season either a red UFA or green RFA will be display to let you see when that player will be leaving your team.

Player Contagion / Sickness
Players can now get sick. There is a low base chance they will contract some kind of illness / flu. The lower the player’s IJ skill, the more games they will miss. If a player is ill, they are still allowed to play, however, their skills in the game are drastically reduced (by at least 50%). Players may spread the illness to other players in the same game on both their own team and their opponents. AutoGMs will never play a sick player and treat them as Injured / Suspended.

Player sickness does not apply to junior or all-star level games. If a junior player becomes sick during a pro/farm game and is moved back to the junior league before recovering, they will recover at the normal rate, however, they will not infect any other players.

AutoGM Logic Changes
– AutoGMs now have trade fatigue applied to incoming trades. Fatigue will adjust depending on the success of the team and the number of trades that they’ve already accepted.
– AutoGM teams will now be processed in a random order instead of the order they were added in UHS.
– AutoGM teams will no longer make bids on free agents that have at least 10 teams with valid / active bids on them. This is being done to cut down on the churn the AutoGM is creating with large numbers of free agent offers in bigger leagues.

Saved Lines
Previously we stored your teams’ Saved Lines in the overall UHS DB, however, we’ve decided to move them into your respective leagues. You should not see any difference in how they operate, however, if your Owner/COM decides to restore an older SavePoint where your lines did not exist, you would no longer see those saved lines.

Build Releases Going Forward
We’ve changed up how our build releases will be handled. A lot of the manual processes / activities are now automated. We’ve also split out the SavePoint updates so that once the build is released to current Leagues, you’ll be able to get back into the game and continue simming sooner than before.

What we have done, however, is that while UHS will be unlocked, loading or creating save points will be disabled as we will be processing your SavePoints behind-the-scenes. As a result, you may not be able to move your league forward from the playoffs to the offseason as this requires a SavePoint to be created.

Overall, this will allow us to release smaller builds more quickly with far less downtime since SavePoint updates take up about 90% of the entire processing time.

Bug Fixes & Miscellaneous Changes
– Fixed an issue where Goalies were using old code to check if they were rookies in the Team Players statistics.
– Fixed an issue where a warning would appear when deactivating an All-star team.
– Fixed an issue with Public Sites where the statistics drop-down would always display Playoff Series if the league was in the Playoff SeasonType.
– The default Salary Cap for new leagues or reset leagues is now $75 million (up from $50 million).
– Fixed an issue in public sites where the drop-down menu link for a team’s Personnel list would instead lead to the News page.

Hot Fixes
– Updated PubSite’s League Standings and Team Home pages to properly display team logos. Hotfix: May 6 2017.
– Updated PubSite’s Game Results to properly display team logos. Hotfix: May 6 2017.
– Updated PubSite’s Schedule page to properly display team logos. Hotfix: May 6 2017.
– Updated PubSite’s Players by Team, League Leaders – Goalies, League Leaders – Players stats pages to properly display team logos. Hotfix: May 6 2017.
– Updated pages to reflect TJHL’s faces and logo directories. Hotfix: May 7 2017.
– Released fix for issue where League’s Free Agency begins before the Entry Draft is over. In these cases, players will not be removed from teams even if the Free Agency time has started until all Entry Draft picks have been made. Hotfix: May 16 2017.
– Fixed an issue where players getting a Major + Game penalty were only getting the 10 PIM instead of 15. Hotfix: May 16 2017.
– Applied another fix for the Major + Game penalty issue. Hotfix: May 24 2017.
– Fixed an issue where Coach Rerates would return warnings. Hotfix: May 24 2017.
– Fixed an issue where only a small portion of teams were being shown in each standings division, regardless of how much vertical space was present on the page. Hotfix: May 30 2017.
– Fixed an issue where Game Results were not appearing on the League Home page for relegation leagues. Hotfix: May 30 2017.
– Fixed an issue where logos could not get uploaded if the team’s current logo no longer existed. Hotfix: June 5 2017.
– Fixed an issue in Public Sites where games going to overtime were not displayed properly when viewing the Game Results. Hotfix: June 25 2017.

UHS Build 11138 – Building a Foundation (Six)

UHS Build 11138 – May 2017
This build is more focused on the Public Site front-end to make the site more responsive by device as well as adds a few back-end system improvements.

Public Site Overhaul
The public websites for all leagues have been given a much needed overhaul. The sites were made with Foundation 6 with the intention that they could be used on pretty much any device. Most of the site is completely new with new or updated functionality. Near the end, we cut a few corners and simply did a Foundation 6 theme update / application so the pages would work. Team pages and the Live Game functionality are part of this and are slated for an update in the future.

One of the more important changes that happened is on the back-end. Previously league websites pulled from their own specific directory… when it came time to deploy an update for public sites, we had to deploy it to 80+ league sites every time. All leagues will now be running from a single directory: PubSite.

Your public website location will be found in UHS when you log in. The Public Site link has been updated to use the new site location… you should copy and send this link to your GMs, especially to GMs that are a member of more than one UHS league. Your LeagueID is passed through URL (don’t worry, we check things to make sure we don’t get an injection attack) so that you can look at the league you want.

By default the PubSite league will show TJHL (our original and official testing league).

The long-term goal here is to move the UHS site towards a responsive platform, using Foundation 6 and the Public Site as the basis for the change.

More info on Public Sites can be found at http://wiki.hockeysim.ca/index.php?title=Public_Sites

New Coach Stats
We added some random coach stats… more to fill out the coach’s stats profile. The stats are randomly generated and have no impact on the game or rerates. What do they all mean? We’re leaving that up to you. Some will be obvious, others won’t.

Bug Fixes & Miscellaneous Changes
– Access Logs for leagues will now only keep entries that are 180 days or newer. Anything older will be permanently deleted.

Hot Fixes
– Deployed a logic fix for AutoGMs attempting to sell off players to get under the Salary Cap. The AutoGM will no longer make sell off trade offers if they have made 10 or more attempts to a single team. Additionally, the value of the player will be decreased (desperation) after the 4th attempt by 15% to a maximum of 75% of the regular value of the player.  This will reset once the season has changed over. Deployed February 8 2017.
– Deployed a fix to Leagues’ season change-overs where the offer tables for free agency were not being purged.  Deployed February 8 2017.
– Fixed an issue where team account balances would be recalculated without considering Marketing Revenue. Deployed February 8 2017.
– Beefed up AutoGM trade logic to protect younger prospects from getting traded for low return players. Deployed February 19 2017.

UHS Build 10635 – Finally Time for Bed

UHS Build 10635 – January 5 2017
This is a hybrid maintenance / enhancement build. Initially I had begun creating the new Team Home and the Marketing / Bonus Revenue additions when I had noticed a relatively new league with an abysmally slow sim run time. One thing led to another and I suddenly found myself smack in the middle of some DB optimizations.

I had also uncovered the issue with page load times being centered around AutoGM teams appearing in the UHS instant messenger. Once that was fixed I kind of felt like I was on a roll and decided to go all in on the optimization issues I had been seeing.

This was certainly a lengthy release. As I write this I’ve been up for 24 hours straight. The build release itself has been going for nearly 12 hours, a lot longer than I thought it would go. Hopefully we won’t have to go through nights like this again. Time for bed.

Marketing / Bonus Revenue
We’ve added an option for pro teams to earn extra revenue. Initially this was supposed to be something where the team invested in something like Lawyers/Medical, however, it became apparent that eventually all teams would just wind up at the maximum level anyway. I decided to go in a different direction.

For each game your pro team plays there is a 5% chance (by default) that you will earn extra revenue. By default the extra revenue will be 10% – 100% of the normal revenue that would have been earned for that game. All settings are manageable by the COM. Setting the chance to 0% will disable the functionality.

All finance pages have been updated to show the extra Marketing revenue.

Team Home
The Team Home page has been slightly redesigned. The layout was intended for PC browsers as you’ll very likely see some overlapping on mobile browsers. The page will now feature the last 5 game results (instead of just the last game), next 5 upcoming games and the roster/line checker for the Pro and Farm team in their own sections.

Sim Engine & DB Optimizations
I spent most of the day looking at the SIM Engine performance and added a few indices to our tables to speed things up. Overall for very large leagues or ones that simmed quite a bit, the engine ran very slow, sometimes taking as long as 50 seconds to sim just a single game. That will change back to the more normal speed / average of between 1-3 seconds per game (sometimes a little more depending on server usage).

Additionally I added other indices to help prevent duplicate stat inserts. I’m not sure exactly why the duplicates are happening yet, however, adding a unique index for specific fields in each table will basically prevent the duplicates from getting inserted. When this build is released I plan on wiping all league’s aggregate Player and Goalie stats and rebuild them before UHS is brought back online to remove the duplicated stats.

Bug Fixes & Miscellaneous Changes
– Fixed an issue where errors were being logged in the database if a team did not have a coach assigned to a team. User would never see these errors.

Hot Fixes
– Fixed an issue where teams no longer owned coaches after the build deployment. Hotfix: Jan.1.2017.

– Fixed an issue where users were not able to reset their password. Hotfix: Jan.2.2017.
– AutoGMs will no longer appear in the UHS IM. This GREATLY improves the loadtimes for pages. Hotfix: Jan.3.2017.
– Released code to better handle Live vs. QA leagues. Hotfix: Jan.3.2017.