225 Commits over 882 Days - 0.01cph!
Revert previous whitespace changes as they break authentication. We're better off handling this on the API side
Replace whitespace in the SM key with underscores
▌▋▆ ▇▅▄▅ ▋█ ▉▄▇▇▅ ▇▊▊▋▅▇.▆▇█▉▄▌▉▊█▋▉ ▍▊▆ █▆▋ ▍▄█▌▇ ▆▌▊▋ ▄▊▌▇█▌▌▍▉▉▇▋ ▇▇▉█▆ ▊▄▄▊▄.▊▄▍▋▋▊▉▍▅
! ▉▍▇▌▌▌▄▇▋.▄▊▊▍▌▍ -> ▊▊▍█.▄▉▌▉▄▍
! ▄▋█▊▄ ▅█▊█▋▌▍█▊▊▅▇▇▄▄█▊▆▍▄▄▋▄▍▉▋▇ ▆▍▌▄▊▊▊▌▅▄ ▉▄▅ ▊▆▆ ▌▍
▅▉▉▄▉ ▇▉▉▊▍▇▇ ▋▌▄ █▊█▋▉█▋▊
▅▌▇ ▅▅▋ ▇▌▉▆▍▇▅ ▌▆ █▉▉▄ ▄▋▉▌▇▋ ▄▊▍/▋█▆██▍ ▇▅▅▆█▋▆ ▄▌▄ ▋ █▌▊ █▄▆▄▇▊▌▊, ▄▄ ▇▅, ▅█▄▄▄ ▉▌▆█
▅▇▇ ▅▇▋▊
▋▋▊ ▆▅▄▉▋▆▆▄▌▄▋▄ ▅▌▆▊▌ ▄▋ ▄▆▉▉▅▆▋▍▍▄▍▅▍▇█▄▍▄▌.▇▋▋█▄▅▋▄▅█▌▋▍▊▍
▊▇▋▉▌▇ ▍▇▇ ▍▌▌▌▋ ▋▋ ▆▉▍▊▄.▇▋▉▇█▅▉█▄.▇▍▉ ▍▊▄ ▇█▆ ▉▇█▇█▆▇▌▇ █▋▉ ▅▍▍▌▇▊▆▅ █▅█ ▍▆▊
▌▇▌▄▋▇ ▌▇ █▆▉ ▍▆▆ ▄▉▌▄▊▉▅ ▄▉▅▇▇▅▆▌█▍▉▅▌▇ ▄▄▆▋▇▊▌▉ ▊▇█ ▇▍▄ ▌▆▇ ▆▋█ ▌▋ ▋▊ ▇▅▉█ ▄▇▄▌█▍▄ ▉▉▇▇▌
▇▉▍ ▋▍▄▆▆▍▅▊ ▇▇▇█▆▆. ▉█▅ ▅ ▇█▇▇ ▉▌▍▄▆ ▊▍▌▌▄▇ ▌▍▋▆▍ (▇▉▍▊ ▊█). ▄█▋ ▇▄▍▅▋▄▄▉█▇▅▇ ▆▋█▊█▉▆ ▅█▆▌▅▆▌▌. ▉▊▊▅▋█ ▆▍▊▄▊ ▅▄ ▆▆▉▇▄▊▅▋█▄ ▆▍ ▌▇ ▆▄▅ ▋▍▌▅▉▌ ▌▅█ ▌▍▋▋ ▉▌▇▅ ▌▆'▋█ ▄▊▋▄. ▄▊█▆ ▍▄▍▌▉▇▋▇▍ ▋▇ ▋▆▊▋▅▍, ▋██ ▉▊█▄.
▇▋▊▇▅ ▅█▆▇▍ █▋▄ ▍▆ ▆▄▄▆▅▌▍▆.█▌▉▄▇▅▄▊ ▇▊▌▉▋▊▇▅
▋▇▅ ▇▆▅▍▅▄█.▅▇▉▇▇▆▇▉▆█▉▄▄▄▇▆ ▅▅▅▇█▊▋ ▌▉▋ ▊▊▍▆▍█▍
▍▄▋▅▍ ▆▊▆▆▇▌▉
▊▆▄▄▄▄▋ ▄▊ ▍█▉▊▌▉ ▉▋▉ ▄▉▅ ▄▅▄ ▉▄▆▍ █▅ ▅▇▌▇▌█▊ ▉▌▅▅█▆ - ▍▉▅█ ▅▊▄▉
▋▇▇█▊▅▍█ ▍▌▌▉ ▉▋▅▋▇▄▅▍▅ ▊▌ █▊▋ ▅▉█ ▊▅▆█▊█▍▉▍▆▇▊▅▌▇▆▍▋▅▇▇▅▄▉
▅▇▄█▌ ▋▌▄▇▄▇▋
▉▅▍▇▅▆ "▇▌▌▆▄▌█▅ ▋▄▍▆ ▄█▄▋▆▆█▉▊ ▆▇ ▆▇▅ ▉▊▊ ▌▌▌▅▅▋▆▋▍▇▆▄▊▍▋▄▅▍▌▊▋▌▊▌"
▊▉▅█ ▉▍▍▆▌█▍ ▅▅▅▌▋▌ ▄▇▌▆▉▍▆▊▆▆▅▊▄▍▍▆▄█▉▉▋▅▍█▍▅▅▍▉▍▍▄▅▌▋█▋▊▅▊.
▌▌▇▋▋▊ ▋▉▍▍▅▊▆▅ ▄▌▇█ ▇▇▋▆▄ ▇▆ ▄█▆▅▉██▇▍▊▍▌▆▊▆█▉
▄▊▌▇▋ ▄▋▌▄ ▇▆▌▌▊▋▄ #▉▊ ▅▉██ ▉▊▇▇█▅▄▅▋/▄▍▅▆██_▍▇█_█▇█
▄▅█▅▄▅ ▌▋▄ ▄▌▅ ▊▄ ▅▍█▉▉.▌▍▊▆▍▊▇▇▉.▊▇▋
remove unneeded 5min delay on TryUploadMapImage
Revert "Simplify file uploading to not use MultipartFormDataContent"
This reverts commit b0c590aaca7163ea0b4ffe6a0b1d4eb46b2d2e50.
Move printwipeid command into #if SERVER
Sum up the comfort values of different comfort deployable triggers your player is inside of. Previously, only the highest value was taken.
This means that you can place a rug and a bear rug next to eachother and get 75% comfort, when before you would only get 50%. Being next to 2 bear rugs however will mean you only get 50% comfort, the same deployable will not stack.
Started hackweek trying to investigate why standing underneath a bear rug gives you 100% comfort but standing on top of one only gives you 25% comfort. Discovered that the very old CalculateComfort code gave you the most comfort at the edge of the comfort trigger, so moving away from a comfort deployable gave you more comfort - that didn't make sense.
- Comfort is calculated from your closest position to the comfort deployable trigger, not your feet
- Comfort is calculated as a SmoothStep based on the distance you are from the center of the trigger, with minComfortRange forgiveness
- Increased rug.bear trigger size from 1.1 -> 3, base comfort (solo comfort) from 0.25 -> 0.5 on both bear rug comfort trigger spheres
Going further with this branch will likely mean reviewing all comfort deployables and making some comfortSource tweaks. Would like to explore adding up different nearby comfort sources instead of taking max but wary of performance concerns of generating a data structure every ServerUpdate
Simplify file uploading to not use MultipartFormDataContent
Attempt to delete the map png file if loading failed - edge case
Use Timeout.InfiniteTimeSpan instead for clarity
Maker timer run at TimeSpan.MaxValue interval
Fix endpoint naming. Run 5 mins after server start (from 10). Fix MemoryStream getting disposed. Change scope of filestream so we can delete the file when we're done. Read responses as string, not json.
Change to use new renamed mapImageExists endpoint and log the url if it does already exist
Upload map image to files.facepunch.com via the publicapi and retrieve the url
Use cancellation token in HttpResponseMessage.EnsureSucessful
ask the backend if this server key/wipeid already has a map uploaded, if so, early exit
minor changes and comments
▉▋▌█▉ ▅█▌▊▊▌▊▅█ █▄▊▍▊▄▉▄▊ ▇▄ ▅▍▆█▄▄, ▊▆▋ ▌▍▋▉▇▋▉▊█▍ ▉▇▊▄▌▅▍ ▌█▍▋█▅██▇▅▅.▇▊▉▅█▇. ▊█▆▄▊▌█▌▊▊ ▋▋▉▍ ▇▇▄▆▅ ▆▍▇▌▇▄▍ ▉█ ▇▌█ ▇▌▆▇█▌ ▌▆▊ ▉▍▋█▋.▋▌▆▋▍
`▄▍▄▌▊.▇▄▅_▅▍▄█_▊▉▍▉▄▊` ▆▅▉ ▊▋▉▍▆▆▆▄ ▅▅▆▊▌▆ ▍▉▆▌▌ ▊▄▇▄▊ - ▊▇▌▄▊▌▊▌ ▇▊▇-▆▉▌█▄ ▌▅▍▌▋▋▋ ▇▍▄▋▋ `██▉▇▋.▍▇▍_█▅▇▇_▉█▇▆▌▋` ▄▇ █ ▋▌▍▇▅▌ ▍▊ ▉▅▉
▉▊▇▊▆ █▊▊▄▉ ▇▊ ▍▍▆▍▊ ▄▆▋██▉ ▆▌▊▇ ▊▋▇▋▄▆▌▌▍▋▉ ▋▆ ▍▋▋▌▄.▋▄
▅▅▍▉█ ▌▌▆█▉█▊▌▉▌▉▆▅█▅▇▋▉▊▉▌▊▇▊█▍▇ ▉▅▍█▊▌█▄▆▄ ▌█▄ ▉▌▊ ▌▆
▊▆▍▍▄▆█▋▄.█▅▆▋▍▋ -> ▊▍▇▇.▄▍▄▄▉▆
▍▄▇ ▍█▋▍ ▊▊ ▅▉███ ▅▅▆▍▉▅.▆▅▆▌█▌▄▅▄█▉ ▆▅▇ ▅▅▍ ▋▅███ ▄▍▋▆ ▆▅▌▅▇▉▉▉▆▌▋▉ █▉▋▌▊ ▅▉▇▆▅.▆▄▆▉▌▄▋▋▄
server.printwipeid command to print the wipe id of the .sav
WIP restart server at 4am local machine time, check for >=22 hour server uptime and do not restart Staging servers (env || hostname)
start the timer 10 minutes after the server is up and repeat every 5 minutes
Separate rcon logic and serverinfo loop out of ConsoleInputBar and into separate class CommandManager. Swapped out usages in RunServer.cs. Finished up the CheckForServerRestart functionality. Confirmed the project still builds
Was accidentally using DateTime.UtcNow instead of DateTime.Now
Change the time check to prevent the extremely rare edgecase of the server attempting to restart twice
Use the global cancellation token in the CommandManager, don't make a new one
CommandManager takes CancellationToken, not source
Rename CommandManager to more suitable ServerRcon
rename vars, too
Double time window to ensure we restart and store DateTimeOffset of when restart was last requested
Attempt to restart multiple times if we failed due to an exception
Log any errors
Minor changes
Merge pull request #6 from Facepunch/server_restarts
Server restarts
Changed the car radio item inventory move sfx to a more suitable light metal sound rather than the heavy clunky car module sound
Attempt to restart multiple times if we failed due to an exception
Double time window to ensure we restart and store DateTimeOffset of when restart was last requested
Rename CommandManager to more suitable ServerRcon
CommandManager takes CancellationToken, not source
Was accidentally using DateTime.UtcNow instead of DateTime.Now
Change the time check to prevent the extremely rare edgecase of the server attempting to restart twice
Use the global cancellation token in the CommandManager, don't make a new one
█▇▄▄▇▇ `▅▅▄▊_▆▋▋█▋▍▆▇_▅▉▆▉▊█▉_▄▉▇▍▉`'▅ ▆▌▅▅▅▅▉▋ `▊▇▍▍▌▍▉▇▍▉` ▊▌▅ ▇▆ `▇▌▋▉▉.▇▋▌▅▉█▍▍▉▆▊▋▊▉▉▅▇▉▌▉()` ▍▋▊▋ ▆▊ `▍▍▊▋▇.█▉▄█▌▉▋█▇▍▊()` ▋▊ ▍▍▆▊▌ ▄▄▆▍ ▄▉▊▅▄ ▌▍▉▄▇▋▌▆▅ ▊▅▊▊ ▉▅█▊▇▍▍ ▌▇█ ▇▅▉▋▅█▉. █▌▋█▌█▌▍▇ ▍▋▋ ▋▉█▅█▉▄ ██▅ ▊▅▆ ▉█ ▅▍▋▄▋.
`▋▉▅▇▍▆▊▊▊▋.▄▍▅▄▉▌▌▍` ▅▅▄▄ ▅▇▅ ▊▅▇▄▊▍▉ ▍▄▄ ▅█▅▅▆▌█ ▌▊ ▅▋▍ ▅▄▊▆▍▊▌▋▋█ ▋▅ ▇▄▇▊▍▋ █▄▅▄ ▇█▋▋▍▇▉ ▅█▆ █▊▍▇▇▇▄ ▍▄ ▆▇▋▊ ▍▌ ▅ ▉▋▍▍▊▊▋ ▅▊▅▉▅▊▉▅ ▉▍▉▋▊▄▍▆ ▉▋▉▍▍▋▉▋▌ (▍▋▋▌▅▉▉▋▍▌).
▊▅▌▌▆█▄▋▌ ▄▅▅ ▄▉▉▇▆▅▋ ▌▇ ▅█▊ ▆▌ ▌▇▇█▄ ▄▋ ▆▇▄▊▌▆▉▌▄ ▋▊▊▋▋ ▅ ▆▌▇█▄▅█ ▉▋▆▊▇, ▉▋▇▇▄▅█▌▆ █▊▇▌ ▅▍▇▇▋▍█▅▋▄.
▄▍▌▋▋ ▆▊▉▆ ▆█_▆▍▅█_▉▌▅▄█▄▄▄_▌▊▍▄▅▅▄▋▍_▅▅▉█▌▍▄██▄▊
merge from hackweek_car_radio
Car radio can now be picked up with a hammer if you are authorised on the car's codelock (or the car doesn't have a codelock)
merge from hackweek_car_radio
Car radio deploy sfx and impact effects