4,537 Commits over 1,280 Days - 0.15cph!
Make new empty methods for oxide to hook, original ones got deleted when fighting with codegen
merge from main -> modding_cui_merges
merge from optimize_windows_console -> main
- fix colored text being logged on main thread instead of queued to console thread
merge from fix_puzzle_reset_analytics -> main
Fix puzzle analytics having "Submit()" commented out. whoops
Switch the default limitBias of the effect mipmap group from +1 -> +0 to rule out the mipmap from being stripped out at build time (even though the setting is disabled, who knows)
merge from main -> test_effect_quality
Fix showing "Died to KillerName" with random death reason when joining a server at the start of a wipe
- caused by lifestory being persisted from a previous wipe in the death database
- include wipeId inside the LifeStory protobuf and invalidate the lifestory when loading if the wipe id doesn't match
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