5,266 Commits over 1,492 Days - 0.15cph!
Call BaseEntity.Query.Server.Remove() earlier inside DoServerDestroy so if it does throw an NRE later in OnServerDestroy it's still removed from the lookup grid
Fix BaseEntity.Query not checking if the entity is null / destroyed (to prevent entities that fail to be destroyed from breaking queries)
Fix DeepSeaManager using Destroy() when killing the deep sea after it's disabled instead of Kill()
- probably not the cause but better to be safe
merge from main -> apartment_complex_monument
Fix `immortalProtection` static field inside ProtectionProperties not being cached on the server (because it was only calling IsImmortal() on client in the item info panel
- fixes server apartment entities not being set immortal
merge from apartment_complex_monument/prototype -> apartment_complex_monument
▇ ▊▆▅▅ ▉▅▊▄▇ ▆▇▅▋▆▌▍▍ █▍▆▋ ▉▅▊▆ ▉▅▊▌▌▅▇ ▌▅▅ ▍█▉▍▆
▇ ▄▌▋ ▆▌▆▊▋▉▋ ▋▌▋▌▉▅▊█ ▆▍▆▆█ █▍▋▍▄▆▅▊▉ ▌█▄▇▄▅ ▌▋▆▌▆▆▊▄ ▄▆▉▆▇▍▅▅ ▅▌▇▆▆▄▇ ▊▉█▅▆▍▆▌▆▄ █▊█ ▋█ ▍▅▌▍▋▋█▄ ▋▊▇▊ ▇▆▍▌▍ ▌█▉ ▆▌▅█▄ ▋█▇▆▌▇▊▇▋▌▅█▇ ▆▉▅ ▉▊▉▌ ▇▌▉▇▆▉▌▄ ▅▅▅▄▇▌▍▆▅▌
Fix NRE in PhoneController.Server_AddSavedNumber()
Fix apartment upkeep terminal not being immortal
Prevent players from reskinning boxes inside monuments
- fixes being able to reskin apartment furniture
Remove logging "Waiting for player to leave"
update apartment_complex_monument/prototype
merge from main -> apartment_complex_monument
update apartment_complex_monument/prototype
merge from optimize_train_track_meshes -> main
Fix IsAnyLODVisible() not being inverted in OnMeshJobFinished() causing rail meshes to be always deleted instead of only deleted if the LOD was hidden before the mesh generation job finished
Fix filter to only generate lowest LOD only checking if filter is null, not if filter is empty
- fixes rivers + roads + train track meshes not generating at all
merge from main -> optimize_train_track_meshes
▍ ▍▍▊█▍█ ▋▆▊ ▍█▄▌▋▇▉▊▇▇ ▄▊▌▉▊▌▊ ▍█ █▄▇ ▋▆▊ ▊█▌▅█▌▅▇▉▊▄▉ ▍▉▌▊▌ ▌▉█▆ ▅▇▍ ▊▆█▇▋ ▉▊▊ ▋▆▅▌▋█▌ ▉▌▇▆▍▊▆ ▋█ ▉ ▋▆█▆▋ ▇▉▄▍█▅▇ ▌▉ ▍▍█▋
▇ ▊▆▇▄▄▍ ▆▅▆▆▊▇▇▄▋▅ ▍▆▍▌█▊▆ ▉▅▌▇ ▅▊ ▊▄▇ ▆▆▊▊▅▍▍▄▌▋▇▄▅▆▌█▊▉▇▅▇▆▍▍▄▋▌▆▉▄█▉▅ ▆▅▄█▄▍▄ ▇▍▄▊▆ ▅█ ▍▍▍█▄▇▍▄▍▇ ▊▉▇▅▊█ ▋▆▌▍▍▄▌▍ ▊▉▇▋ █▆▆▋▍▇
▇ ▄▌▍▅ ▇▄▆▌▉▋▄ ▍▇▊█▇▋▆▆▊▍▆▉▇▌▄▅ ▉▄▍▉ ▉▅▉▉▍▌▊▋▉▆ ▊▅▄█▉▌
▇ ██▉▆▉▅ ▆▊▋▇▉▉▆▆▆█ ▉▅█▇ █▍▌▆ ▊▇▌▄█▆▄▋▅▌█▇ █▆▊▍▋ █▍▍▊ ▌▌▄▅▅ ▉▆ ▉█▌█▊▇▊
▋ ▅▋▇▋▋▋▋█ █▉ ▋▌▋▉▉▄▌ ▅▄▆▆▋█ ▅ ▍▉▆▋▊▌▋▇▄ ▉▇█ ▋▅▄▆█▍▌ █▋ ▉▌▍▄▍▅█▇▆▉▇▆▆▌▆█▍▌▉▌▇▌▆▅▅▆▋▄▌▋▇▍ ▄▇█ ▋▇▋▊▋▆▄▋▍▄▅▉▇▌▋▉▄ ▆▊▇▋▉ ▋▍▋▇██ ▉▆ █▆▌▇▉▅▆ ▆▌▉▇▄▆▅▍ ▋█▆ ▄▆▆▊█▍▋▅▉ ▋▍▇▌▉▆▋ ▊▍▊▍▇ ▊▆ ▋█▄▄▊▇▊ ▍▍▌ ▅█▆▍▋▌▍▊▇▊█ ▇█▊▌ ▋▉▉▄▄▉▌█
▋ ▉▇▌▌▍▌ ▋▆▊▄▅▉▋▅▇ ▆▊▄▆ ▍▋█▋▍▊▋▄▆▄ ▅▆ ▉▄▌ ▇▌█▋▍▊▍▋▊▇ ▄▌▋▋▋▋▆▄▍▌▄▅▊▍▆▅▋▉▆▉▌▊█▌▌▉▌▌▅▊▄▍▌▇▍▌▄▆█▆▌▅▊▅▌ ▅▆█▉▋▌█▉▄▉▇▇▌▍▆▍▇▌▇▌▄▆▆ ▄▇▅▉▄▄▊▊▍▇▄▊▆▇▆▇▋▊█▌▌▉█▅▇▅▆▉▇▆▇▋ ▍▄▇▆▉▇▇▉▇▌▇▍▌▆▍▉▄█▊▅▉█▇▉▌▄▅▍▋▅▇▋▄▆▋▆▄▄▌▇ ▇▍█▄▅█▆▅▆▋█▌▊▅▅█▊▋▇▉▆█▋▅▉▊▍▉█▊▉▍▊
▇ ▆▌▄ ▋▆▋▊▄ ▄▌▅▅▇▉▄ ▊█▊▇▉▇██▅▄ ▇▌ ▆▉██▇▉ ▉▉▍▅ ▊▋▌
▋ █▋█▇ ▊█▅▊▍▊▋▄▋█▆▇▊▉▅▅▉▍█▌▅▋▄█▄▇ ▊▅ ▉█▇█ ▄▅ ▄▉▄ ▋▆▇▉▊█ ▋▍▇▋▋▊▊▅
▆ ▅▄▅▍▋▍▊ ▉▉▌ ▄▇▆▋▉▍ ▄▉▋▄▇▋▄ ▋▉▌▇▅▆▍ █▋ █▅ ▇▉█ ▄█ ▋▋▅▅▋▊▇█
▅ ▉▊▋▄▄▄ ▊▆▌██▄▆ ▇▇▅▋ █▍▋▌▇▇▉▆▅▅ ▉▊▆ ▍▍██▆▍▄▊▇▆▆ ▄▌▋ ▌▊██▊▍ █▉▄▄▇ ▅▆▆▌▌▍▄ ▊▉▉ ▉▉▋ ▄█▄▅▅ ▋▉▌▉▊▊▉▋▋▍ ▊▌▇▌▇▄▅▋▌ ▌█▇▅ █▇▆▇▄▊ ▇▅▌▇█▇▉ ▉▊▉▉▆▄▅▅ ▍▋▅▊▆▊ ▍▊▆▆ ▊█▇▇▅█▇ █▅█▋▌ ▉▌ ▉▋▉▉▅▇ ▊▇▅ ▄▉▉▄ ▊▌▍▇▉▊▄▋▍▅ ▅█▅▅▋▍▋ ▇▅▆▇▅█ ▅██▍▊▆▆▇▌▊ ▇▊ ▊▅▄▆
▄ ▋██▇▋ ▇▊▉▊ ▍▋▌▅ ▅▊ ▊▄▆▊▍▇▇
▄ ▊▋▄▌█ ▍▅▍▌ ▉▇█▅██▋▄▋▉▅▆▌▍▍ ▌▍ █▅▍▆
▉ ▇▄▋ ▇▉▉ ▊▌ █▋▉▋▊▋▌▇█▊▅▄▍▊▊▌▆▄▌▌▅ ▍▉▊▋▊ ▄▋▍▌█▋ █▄▋▍▆▅ ▍▊▍▋▋▆▇█▊ ▊█▍▅ █▋▋▊▉▆▍▄▍▋▅ ▇▉▆▇▉▍▍▊▊▄▅ ▅▍█▅ ▆▇▆▄█▇ ▍▋▍▄▊▇▅▋▆▄ ▍▍ ▋▇▆▍▍▌ ▊▋▋ ▇▄▇▉▌ ▆█▍ ▊▋▍▇▋█▌ ▇▇▍▊ ▌▍▇▍▅▅▅▄ ▌▇▇ ▇█▊▉ ▊▊ ▊█▌▄ ▊▋▊▇▄▊ ▍▍ █▊▉▍▍▌ ▌▄▅▅ █▊▆▊▊▆ ██▊▆ ▌▆▊▍▄▊ ▅▅ ▊▊▄▉ ▅▅█▊▋▇ █▌▊ ▉▉█ ▄▅▌
merge from optimize_train_track_meshes -> main
Fix "Double invocation of a deferred action"
Fix null check using .Equals() instead of == null
Fix CLIENT compile errors
merge from main -> optimize_train_track_meshes
▍ ▊▌▆ ▊▌▌▉ ▊▍ ▊▆▌▅▉▊█ ▆▍▄ ▉▉▆▉▆ ▉▋ ▊▊▅▇▊▅▄▉ ▍▆▆█▊▋▆ ▅▋▆▇▇ ▉▅█ ▋▄▇▄▆▇█ ▇▍▅▄▅ ▍█▉▍ ▄▌▉▊█▅ ▌▇ ▆▇██▆▍
▋ ▋▌▅ ▅▄▇▉▇▆ ▆█ ▄▍▉▇ ▆▄▋▆▆▅ ▉▄▆▄▅▉▌▅▊▄▅▌▅ █▍ █▋▍▅██▊▍ ▉▌█▅▅▉▉ ▄▄▆▊ ▅▌▌▄▍▌▊▆ ▉▆▇▆▌ ▄█ ▋▇▋▄▌▋ ▍▄▋▅ ▋▇▋▉▄ ▍▅▉█▇▄
▆ █▅▌ ▊▅▍▄▆▌▉▊▇█▌▋▌█▊▌▅▌█▊ ▅█▆ ▌▊▇▆▋▋▋ ▋█▄▋▉█▇▅▌▉█▊▉▇▄▄█▅▇▌▄▇▄ █▋ ▆▍▄ █▍▉ ▋▍▉▊█▊▄ ▍▆█▍▄ ▌▆▉▌▌ ▌▊ ▍▅█▍▋██▊▄▆█ ▆▋▍▍▋▋▄ ▋▊▇▇▅▄ ▇▅▆ ▅▆▅▇▄▆▌▄ █▇▍ ▌▆▄▄▄▊▌▅ ▆▅▍█▌▌ ▅▅▆ ▉▍▇▊▊▅▆▇ ▌▌ █▄▍▍█ █▋▆█▊ ▇▇▉▆▅▍▅ ▆▋▆▉ ▌▄▉█▉▍▇▅▅▋ ▊▅ ▋▇▅ ▆▆█▄ ▅▊▊▉▍▅ █▅█▋▍▄▉▉
merge from apartment_complex_monument/prototype -> apartment_complex_monument
merge from apartment_complex_monument -> apartment_complex_monument/prototype
merge apartment_complex_monument/prototype/mailbox
Ok finally fix slide 3 being positioned wrong
RotateOnFlag was setting position so it could slide out but didnt have the 0.01m offset for slide 3 configured
Swap all mailbox props with the entity mailboxes and assign the room numbers to them
Show P1 instead of PH1 on the mailbox so all mailbox codes are 2 characters
Adjust text position of the 3rd slide because the mesh is slightly offset
Add mailbox slide entities to manifest
Make each slide in the mailbox it's own entity with correct mesh