11,048 Commits over 1,950 Days - 0.24cph!
Move life story update into an ObjectWorkQueue
▍▆▅▆▍▇▋▄ ▆▍▊ ▆▅▇▋▊ ▌▅ ▅▄▍▋█▊ ▄▄▆▋█▇▇ ▄▄ ▉▍▋▅ ▌▆▆▊▇ ▉▆ ▄▉▅ ▅▇▍▊▆▄ ▉▉▆▌█▆▍▄▄ ▉▌▉▉ ▆▉▇▄ ▉▍▍▍▇▉▆▆
██▄▊▊▋ ▇ ▉▌▌█▍ ▄▋ ▊▌▉▇▄▌▉▍▍▉▋ ▄▋ ▌▊
▌▅▇█▅▌ ▍▄▋▉▊▅▇ ▆▍ ▅▅▋▄ █▇▋▋▆ ▊█▌▆▇ ▅▍▄█ █▉▉▌▅▉▍ ▉▆▆ ▋▍▄▌
Make a new prefab variant of the lift entity (will swap the visual once on workcarts branch)
More refactoring, just place a static elevator block at every floor
Save/Load fixes
Fixed incorrect floor position at top floor
More static elevator work
Added an ElevatorStaticFloor Trigger that designates a floor
Static elevators now find all of the floor triggers beneath them and use them as floors, instead of requiring elevator blocks every 3 units
Floor triggers can be placed at arbitrary heights
▌██▅▍ ▇▍▇█▌▇▌
▆▇▄▇▍▅▆ ▉█▇█▌ ▄▇▆▋ ▌▅ ▅▇█▋ ▅▊▇█▄ ▍▅ ▊▌▅▊ ▄▄▄█▉
▌▌▄▊▄ ▉▄▇▆▄▌▆ ▍▇▊▄▅ ▍▅▋▆ ▌▄▅▌▄▉▉▇▉ █▌▊▊█▉
▇▉▇█▉ ▊▉▌▄ ▋▅█▆▌▍█▋▇/▅▇▄▉
▋▆▊'▆ ▅▌▅▇▍▇▇ ▊▉▇▆▌ ▆▊ ▅▍▍ ▇▋█▊ ▋▌▆▋▍▋ ▇▌▊ ▋█▄▋█
▊▄▇▅ ▊▇▌▆▉ ▅▄▅▌▆▌▇ ██ ▋▌ ▄▉▍▆▉ ▇▄▄█ ▄▉ ▊▍ ▇▉▆ ▍▇█▅▅ ▄▌
▅▋▊▍▅▉▇ ▋▇▋▇▇, ▅▋▅▋▄▌ ▊█▍▇ ▋▍█▊▆
▄▅▆▉▆▋ █▋▅▄▌▋▋▊▋█▅▉▊ ▊▊▌█▆▆ █▉▅▉ ▊▇▌▋▆▉▄█▆ ▍█ ▌▆▅█ ▉▄▍▅▊▋▉ ▊▉▄ █▆ ▊▄▆▌▆▇▆█ ▊▄ ▍ █▅▊▍ (▍▉. ▆▌ ▇▋▍▋ ▆█▇█ ▌▄▋ ▆▊▋▇▇ █▄▄▅▉ ▄▊▌▉▅█▍ ▄▋ ▊▄▇ ▆▅▉▋▇ ▄█▌▌▇█)
█▆▅ ▌▍▅▅▆▋ ▍▊ █▊▅▊▊▍▋ ▉▉▆ ▅▍▅▄█ - ▍▇▋▆▆ ▄▉▅ ▉▍▄▆ █▋▉██▅ ▍█▍▅ ▇▇▆ ▇██▌▇▇▍▌
▇█▍ ▊▆▌█▆▄▋▆▋▉▄ █▌▇▄ ▇▅ █▊▍▄█▊▋ ▊▄█▄ █▅▄█▊
▌▆▆▇ ▋▄▄ ▋▍▇█ ▍▌█ ▋▆▍▇▇▌ ▇▇▋▋▇▍▍▍ ▌▊▋▆▋▄ ▄▊ ▆ █▆▋▅█ █▇ ▆▆▉ ▍▋██▅▇ ▄███
▇▍▉'▅ ▇▅▉▆ ▋▍▋▅ ▅▍▄▊ ▉▋▇█ ▅▅ ▉▇▆▇▄▇ ▉▋ ▇▍▇▍, ▋▊▇▋▄ ▅▇▅▌▆ ▋█▆▍▊▆▇ ▋▉▌▆ ▅▇ ▅▍▍▄▅▋▍ ▊▌▌▅▆ █▆ ▋▊▅ ▄▍▇▇▊▌ ▅▄▋ ▆█▊▇▉ ▊▉▆ ▆▌▅▄
Added new static variant of elevator for use in monuments - elevator.static.prefab
Requires floor information to be manually input on the prefab (IsStatic, StaticTop and StaticFloor fields)
Doesn't spawn the sub IO entity so doesn't require power, all of the elevator blocks are still IO entities so they can be hooked up to static buttons
▋▍▄▊▊▋▄▅ ▇▍▊▄█▉█ ▅▍▊ █▄▅█▄▊▉▉▉▆▋ ▄▆▄▄▆▍▊▄ ██▉▅▇ ▍▉ ▌▉▄ ▍▍▆█▄▅▍▊▇▌▇▅▄ ▅▌█▇▊▊▄▅▊
▋▅▉ ▅▍▌ ▌▉▉▋▄ ▉▊▆█ ▊▅▌▄▊ ▊▋ ▊▇██▇ ▍▉▌▆█
▆▊▇█ ▅ ▌▊ ▊▆▉▍▇▋ ▄▋▉▉ ▍█'▊ ▄▆▍ ▆█▍▋▊█'▆ ▌▋▉▆
▋▇▊▆ ▋▍▆▅▅▅ ▅▉▄▉▄▍▅ ▇█▇▌ ▍▋▍▇ ▇▌▍▅██ ▉▅▆
▆▄▍ ▄▆▄ ▋▊▄▌█▋▇ ▄▇▆▊▋ █▍▋▋▉▉ ▆▊▄▇▍ ▊▅▆▋ ▆▍▉▉ ▇▍▌▌█▆
▆▆▌▄▌ ▊▌▄ ▋▍▇▄▉ █▇▋▊▄▇ ▋▇ ▊▅▍▅▅▌▋▇▌▉ ▄▆▉▇▇▇ ▉▅▋ ▄▉█▆█▅█▄▆▊ ▇▋▉▋▌▉▄▍▍
▋▋▆ ▌▌▆ ▇▅▌█▋▍ ▊▉▊▊▆ ▅▇▉ ▊██▆▅▄▅ ▋▊ ▌▋▍ ▇▅▉ █▋ ▋▋▆ ▅▅▊▅
▊▆▌ ▇▍██▅▊▋▆▇ ▇█▆█ █▌▇▋▇▍▄ ▉▍▋█▉▄ ▅▄█ ▉▅ ▌█▄▇ █▅▉ ▊█ ▌▊▆▄ ▌▇ █▋▇▌▋
█▊▅▆ █▅▄▌▄█ ▊▋ ▌▅ ▊▌ ▇▄█ ▅▅▋ █▆ ▌ ▋▊▊▅ ▉█▊▊▌ ▊▅▆ ▋▍▆▅▊ ▉▄▅▍█▌ ▆▉▅ ▊▌▊▉ ▋▅▍ █▊ ██▋█▍ ▄▅▍▉█
▅▍▅▅ █▊▍▊▉▇▉ ▊▊▍ ▉▋ ▄▆▆ ▇▆▋▍ ▅▌▄▉ ▍▌▇▊▆▅▅▉ ▇ ▆▊▆ ▉▌▇▍▋ ▅▇ ▋▌▆▇ ▉▌ ▄▉▆▇▍▍ ▆▇▄▄ ▌▅▊▇█▉ █▅▉▇▄ ▋▉ ▌▌▅▄
▊▊█ ▍▄▋▉▅▇▍▋▌▍█▌ ▅▉▊▆▍ ▄█▋ ▌▋█▋▆▉▉▆▍▋▄ ▅▇█▍ ▄▄▄▄▇ ▊▊█ ▇▋
▄▇▋ ▋▉▌▄▊ ▆▊▄▄ ▆▍▅ ▉▅▄▆▉ ▍▆▉█▊▌▌▊ ▆▋ ▍▊▇▄▌ ▆▊▆ ▍█▆▌▋▉▅
▉█▊ ▄▅▆▋▅▌█ ▌▋▅▇▄ ▊▍▅ ▅█▉▉▄ █▇▌▆▌█▇ ▌▌▅▍▋ ▅▅▆▇▋ ▍▍▄▅▉▍▄ ▋▋▋▄ ▊ █▉▆▄
█▌▆▊ ▆█▌▅▊ ▋▇ ▅▌▇▊█▄▍▅ ▊▆ ▄ ▋▋▅▉▉▉ ▌▋▄▇▇▍ ▄▄█▌ ▄▊█ █▍▍█▅▇▊ ▊█▋▋▍ ▅▌█▅██ ▋▍ ▆▆▌ ▊▍▋▌▆ ▉▍▅'▌ █▆▌▅▋▆▍▆
▍▉▉ █▌▊▇▊▉▇ ▊▇▅▋ ▍▋▊▇ ▄▆▅▋▉▇▄▍▋▍▊ ▍▊▄ ▍▍▋▄ ▊▆▌▄▊ ▅▇▌▍▇ ▍▊▉▇ ▊▆▆▍▊▅▄ ▅▇▍▍ █▄▉▊ ▉█▆ ▄▍▅█
█▆▌ ▆▇▋▍▅▇ ▄▌▉█ ▆▆▅▆ ▊▄▌▄▉▇ ▄▍▆▌▇▇ ▅▇▌ ▉▌▇ ▍▌▉▋█▍▌▋ ▋██▊▊█▅ ▉▌ ▉▋█▌▌ ▌▆ (▄▌ ▊▋▆▊▄▄▉ ▌▆▇▋▍▉▍▅ ▋▊▊▉)
▍▍▅▄▍▌ █▊▆▊ ▅▌▋▋▉▉ ▌▄▄▉ ▌▆▆▊ ▌▊▍▋▄▇▍▉▅ ▌▄▍▍▌
▉▅▆ ▅▆▉▍ ▄▊▄▌▍▇▉▊█ ▆▅▄ ▅▍▆▍▋▆ ▌▅▋ ▌▉ ▆▌▆▍▅▇▇▊▆▍▋ ▇▄█ ▇▍▋▄▊▅ ▅▋ ▍▍▌▇▅▉▌ ▇▇▅▆▅▋▄▊ ▇▇▇▅▊▍▅
█▊▅▉▇▆ ▅▅▄ ▊█▉ ▌▆▄▋▅▌ ▋▌▉▊▄▌▋ ▇▇ ▇▊▇▄▉▌▌▉▆ ▅▊▅▉▆▆ ▄▉ ▋▅▅▇▇▊▅
▆▌▄▉▌ ▉▆▋▄▍▌ █▋▊▌ ▋▄▋▌▉▉▊▅▉▆▉▉▅▊▅▍▄▄▆▋▊.▋▆▋▊▍▌▄▊█ ▌▇▍▌▇▄ ▉█ ▅▉▊▊█▆▆▄ ▅▅▌▍ ▋██▌▆▄▌▄▆ ▊▋▉ ▉▅█▆▊▆▆
▄▌▉▍▋ ▊█▉ ▉▊▅▅ ▊▍▍▌ ▌▉▍▋▌▍ ▋█▅ ▆▇▅ ▉▋ ▍▉▌▍ ▋▆█▍▄
▇▍▄ █▇▌▄ ▇▄▉▄▄▆▆
▉▉▌▋▇ ▋▄▄█▆ █▇▍ █▆▅█▌▍▇▊ ▋▊▄▄▉█ ▉▆▍▉ ▆█▌█▆▊▆▌ ▋▅▋▌ ▆▇▆ ▄▄ █▌▍▌█▉ █▌▌ ▌▊▋▇ █▋▉▋▅ ▌▄▄ ▄▉▅▄▆
▄▆▅█▌▍▉ ▉▇▍▊▉▆▍▉ ▉▍▆▍▄▉██ ▋▍▍▉ ▍▄ ▅▅▄▄▌▄▅▌▉▊▆██▇▅▌▇▊▄█▋
▋▇▋ ▇▆▉▋█▉ ▍▇▊▉▅▋▊ ▉▇▌▇▋ █▉▋▉▄▅▇ ▍▊ ▆ ▉▉▆▇▌▆▋ ▉▉ █▇▄▋▌▋ (▍▅▇▅ ▌▇▅▄▄▇▋▄▋▅▇█▉▌▋▋▅)
▇▋-▊█▊▉▇▄ ▋▄▍▊▌▇▄ █▌▅▌ ▄▍▆▊▍█▋ ▆▌ ▊▄▇▋▄▋ ▇▍▋▅▌
Snap repair bench skin picker to left when going from no item to an item
Don't change the order of skins when selecting a skin, only when changing item
Added client.sortSkinsRecentlyUsed to control sorting functionality, defaults to true
▋▇▅▇▇▅ ▄▉▄▆▆▋ ▇▋▉▇▋ ▄▊▅ ▆▄▋▆▍ █▍▋▆ ▄█ ▇▄▊▉▋▉▋▍▉▋ ▊▉▍▉▉▆▌
██-▊▌█▇▆▋ ▉▍▇ ▌▅▇▆▄▋▍ ▋▋▅▋ ▋▄▄▅▇▉█ ▋▊ █▆▅ ▆▌█▊▍▋ ▇▌▆▉▇ (▅▇▇▇▉▆▊▌▉ ▊▊ ▊▊▋▇▍▋ ▇▋▆▍▊▄, ▄█▉ ▄▍ ▄█▇'▉ ▅▊▍▌ ▍▅ ▌ ▉▄▊▊ █▊)