These are changes from PR #4199 which support outputting certain metrics that do not currently exist in ACEmulator.
These changes allow for the original PR to change to a simple Mod found at ACEmulator/ACE.Mods.Metrics
* Update OfflineConfiguration.cs
Removed the duplicate "the" from the comment on line 63
* Update Config.js.docker
Removed the duplicate "the" from line 216
* Update Config.js.example
Removed the duplicate "the" from line 217
* Update Player_Networking.cs
Removed the duplicate "the" from line 27
OnTalk was missing from Suicide and DoSpellWords, both of which used GameMessageHearSpeech
OnTalk is currently a player function, it is possible it should be moved up the chain so the two remaining GameMessageHearSpeech and similar messages for Creatures or WorldObjects should be included in making HearChat emotes be triggered by players and npc alike for custom content purposes, but there may be a hidden problem with expanding that scope, so I'm not doing that for now.
* Update output of DateTime strings
Define and use explicit formatting for DateTime objects used throughout source
* Update Player.cs
* Update GameActionQueryBirth.cs
* Update DateTimeExtensions.cs
* Update GameActionQueryBirth.cs
match the backpack panel output
* Force Logout of Stuck Characters
Ideally, this is a temporary workaround for characters that get stuck logging out.
This should hopefully catch most of the logout on death characters that get stuck, but will probably not catch all edge case scenarios of characters stuck in world that have been reported to us so far
* Update SessionTerminationReason.cs
* Update PlayerManager.cs
This will at least somewhat improve performance, as confirmed through microbenchmark testing.
const fields are replaced with literal values in the Assembly's IL code, while static readonly fields may be optimized by the JIT, and is not guaranteed to happen. const fields may also lend themselves to stronger optimizations at runtime.
* Improve Friends Notifications
Friends will now send broadcast text to announce their online status as was the case in retail.
* Update Player_Networking.cs
:}
* Update Player_Networking.cs
http://acpedia.org/wiki/Announcements_-_2007/02_-_Rekindling_the_Light
Spell Words and Squelching
Players who have another player squelched will now be able to see that players spell words, even though they are squelched. If a player has filtered spellcasting, they will still not be able to see the spell words.
* Wire up GameEventMagicPurgeBadEnchantments
According to PCAPs GameEventMagicPurgeBadEnchantments was sent to clients for players with Enduring Enchantment augmentation.
Client has slightly different check in CEnchantmentRegistry::PurgeBadEnchantmentList versus CEnchantmentRegistry::PurgeEnchantmentList
```cpp
if ( v4->data._smod.type & 0x2000000 || v4->data._duration == -1.0 )
```
vs
```cpp
if ( v4->data._duration == -1.0 )
```
* Update EnchantmentManager.cs
A large number of spells that the DAT has marked beneficial do not also have their StatModType currently set with that same flag.
This changes makes them match.
* Update Enchantment.cs
This is a minor change adding a server property to optionally disable
the maximum level restriction on portals. Other restrictions are
unaffected by this property.
Server owners can use this property to enable access to certain legacy
content that is otherwise practically inaccessible, such as dungeons and
quests associated with retired starter towns.
PlayerManager saves offline players in bulk, once very hour. This is done in bulk to help avoid desync between offline player updates.
Player caching is typically set to 30 min.
What can happen now is that PlayerManager may save a bunch of offline players, that will then be loaded into the player biota cache (for 30 min)... then after 30 min, they all get unloaded because nothign touches those biotas, then 30 min later again the PlayerManager performs its hourly maint of bulk save, thus, re-caching all those biotas.
Caching is not necessary for these biotas.
Caching is designed for biotas that exist in an online state.