4,378 Commits over 1,249 Days - 0.15cph!
Make username optional field since it's not included anymore
Optimize turret & TC to use HashSet<ulong> instead of List<PlayerNameID>
- makes it faster for them to check auth
- protobuf data still uses PlayerNameID but only saves steam id for backwards compatability
Optimize BasePlayer.FindById() since it's used throughout the codebase
- add Dictionary<ulong,BasePlayer> for online & offline players
- speed up string search methods by first seeing if the string is a steam id & calling FindById() methods first
Add `forceaddtoteam <steamid> <team?>` command to add online (or offline) players to team
Send steamId of teammate when sending player name (should only network to teammates / self) & lookup name with NameHelper if steam id is provided on client
- allows steam nicknames to show instead of server names
merge from fix_custom_item_icon_description -> main
Fix NRE when joining server with custom icon due to CommunityEntity not being networked yet
Fix custom item icon from modding not showing the custom icon in the item's description
merge from modding_custom_vitals -> main
Ensure all custom vitals are cleaned up when community UI is destroyed (aka left the server)
Implemented a way for the client to countdown a time so server isn't sending network updates to update vitals every 1s
- use {timeleft:***} in RightText to use TimeSpan.ToString() formatting
- test_custom_vitals commands accepts more parameters: {amount} {seconds} {formatting}
Fix the merge + existing implementation, add changes not included in cherrypick
- move vitals logic inside CommunityEntity instead of creating a new entity specifically for vitals
Cherrypick hackweek custom_vitals branch
merge from fix_max_hp_tea -> main
Fix client showing 100 HP when using max hp tea
merge from analytics_puzzle_reset -> main
Use list of spawn groups as the "name" of the puzzle being reset
- cache list of SpawnGroup instead of repeating the Vis.Components() each reset (since the monument + spawn groups will always be loaded before entities or the first reset could occur
- don't log puzzles with zero spawn groups, since any important puzzle will respawn some type of loot
Ignore some of the dummy puzzle resets by ignoring ones that don't check for players & ones that have infinity timeBetweenResets
merge from analytics_puzzle_reset -> main
Add analytics when puzzles reset
- how long it took before reset and how long players spent inside / blocking the puzzle
- log puzzle reset settings and monument of the puzzle
merge from modding_cui_merges -> main
Add Vector4Ex.Parse(), switch from Color.Parse() -> Vector4Ex.Parse()
- update Vector3Ex.Parse() to use TryParse() like Vector2Ex.Parse() (safe because the method is only used in one place in codebase surprisingly)
- add some comments too
Update from repo after merging 9 slice support
merge from main -> modding_cui_merges
merge from fix_arctic_puzzle_reset -> main
Fix compile error in new Translate.GetPhrase() server method
merge from main -> fix_arctic_puzzle_reset
Switch to new Translate.GetPhrase() when reassigning reset phrase
merge from main -> fix_arctic_puzzle_reset
Save extra properties added to puzle reset over the years to fix arctic research puzzles closing on players (and probably bugs with other puzzles too)
- CheckSleepingAIZForPlayers
- IgnoreAboveGroundPlayers
- BroadcastResetMessage
- ResetPhrase (token)
merge from analytics_texture_memory -> main
Expose texture memory usage in client analytics
merge from fix_entity_scale_occlusion -> main
Fix `ent scale` only accepting an int instead of accepting float
Fix not working when far away, call "ResetCulling()" on all LOD components as well as calling it on the entity having it's scale changed
- this should only be called on the client when the scale has changed so it won't reset culling on every single network update
Fix entity not being able to reset to 1 scale since it was ignoring default scaling size
- network scale every update if `networkEntityScale` is enabled
Fix entity scaling not updating the bounds & culling bounds of entities
- recalculate both the bound and the culling bounds
- reset the bounds inside ResetState() based on the original prefab so it doesn't cause pooling errors
Revert minimum mipmap level to 7
merge from fix_stability_cascading_updates -> main
Add optional logging incase it still occurs and we want to follow the logs to see what the source of the infinite stability updates is since it doesn't seem to repo when pasting the offending builds in the editor via copy paste
- convar `log_stability_updates (default disabled)
Try to fix infinite stability updates happening rarely on servers by not sending a stability update if the distance to the ground has changed but the stability is the same
merge from clamp_mipmap_reduction -> main
Decreased minimum mipmap from 3 -> 4 (250MB -> 60MB reserved for lowest level mipmaps)
merge from clamp_mipmap_reduction -> main
Clamp max mipmap reduction from 7 -> 3 (1/8th resolution) to match the lowest texture quality we expose in settings and prevent all textures from turning blurry when we run over our texture streaming budget
█▇▄▊▆ ▄▇▍█ ▅▋▅_▍▍▊▇▅▄▍▄▉█▇▋_▅▉▇▍_▉▌▇█ -> █▋▇▊
▌▄▇█▌ ▅▍█▇▋▄▇ ▆█▍▋▋▇ ▌▊█▅ ▅█▄▍█▇▆ ▄▄▅▄▋▄▊▄ ▌█▊▆▉▅▅▆
merge from fix_analytics_twig_cost