* add textures
* add SealingCabinet system
* add StoreUnlocker/ObjectiveUnlock system
* add plutonium core and nuke core container
* make nuke deconstructable
* add steal core objective
* add core extraction toolbox to new category
* typo ops wrench fuel
* use queries and resolve, have it resolve instead of using Comp
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
There were TWO bugs here
FIRST, APCs *did* update their visual state on initialization, but at that point the relevant power state hasn't been initialized yet, so it always returns a bogus result. There aren't guaranteed to be subsequent power updates that actually trigger the APC to update so this can get it stuck.
Fixed by just deferring the on-init update to be after the first update tick, which is itself ordered to be after power update.
SECOND: Once I fixed that, I ran into the issue that APCs created at *server startup* also fail to update, because the throttling system (to prevent frequent APC updates) thinks the LastChargeStateTime was at server startup.
Fixed by making that variable nullable so it defaults to null.
Also removed the useless datafields on the "last update" fields. These are all just used to cache and throttle updates, something that should not be persisted to a map file.
Miners' prototype have been changed to reflect this (I read
somewhere that we have about 1 atmos tick/0.5s, my tests show more
like 1/0.53 but that looks close enough).
This also means that miner's spawnAmount is now expressed in mol/s.
See: #18781
This feature should never have been merged, it can be trivially abused to break the entire server.
It's behind a CVar because honestly that's the easiest way to 1984 the feature.
* Spawn dummy entities on client for vending machine UI
* Asked sloth, and we kinda need this pr
---------
Co-authored-by: Vasilis <vasilis@pikachu.systems>
* add LoggingDisabled to AccessReader
* add LogWireAction
* -m give everything besides high-security door a log wire
* make LogAccess public and support string arg
* add log when pulsing
* m
* l
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
* Implement a new kind of ip range ban that only applies to new players
* Put determining whether a player record exists to its own function
* Make BlacklistedRange bans get bypassed by any ban exemption
* Stop trying to get another DbGuard while already having one
This does break with convention on the functions in that area but
considering the use of this function it's probably fine?
I could alternatively just move the place it's called from.
Also I was suppossed to wait for tests to finish locally just to be
sure, but nah. I am pushing this now
* BlockSolutionAccessComponent now only blocks one specified solution.
* Significant overhaul
Separated spilling when worn functionality into its own component/system.
Removed BlockSolutionAccessComponent.
Added an event for solution access.
* partial buckling refactor
* git mv test
* change test namespace
* git mv test
* Update test namespace
* Add pulling test
* Network BuckleTime
* Add two more tests
* smelly
* Revert "Automatic changelog update"
This reverts commit 3358aef40f.
* Revert "Revert "Automatic changelog update""
This reverts commit 3d0b6a7ade06ec555d4f6df3f39134b139e5247c.
* Removal of the throw cooldown as it felt sluggish and unresponsive before.
* Fix conveyor mispredicts
Instead of tracking active conveyors we instead track the conveyed entities. This also handles things like stacking conveyors more gracely.
* Fix ActiveConveyor
* Fix lerping