Upstream suka (#45)

* Make BaseMedicalPDA abstract (#26567)

* Fix GasMixers/Filters not working (#26568)

* Fix GasMixers/Filters not working

* OKAY GAS FILTERS TOO

---------

Co-authored-by: Plykiya <plykiya@protonmail.com>

* Industrial Reagent Grinder Hotfix (#26571)

fixed

* Give stores the ability to check for owner only (#26573)

adds a check if the store belongs to the user

* Fix round start crash (causing instant restart) (#26579)

* Fix round start crash

* Make `TryCreateObjective` more error tolerant

* Update engine to v217.1.0 (#26588)

* Fix initial infected icon hiding (#26585)

* Fix Meta evac shuttle name (#26587)

* Make timer ignore client predict setting (#26554)

* Make timer ignore client predict setting

* making tests run

---------

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* Make advertise system survive no map inits (#26553)

* Make advertise system survive no map inits

* Add comment to try prevent future bugs

* Update Credits (#26589)

Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com>

* Fix fox spawn on reach (#26584)

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* Removes SCAF armor (#26566)

* removes scaf armor

* replace maint loot spawner spot with basic helmet

* Update Patrons.yml (#26578)

* Automatic changelog update

* Make aghost command work on other players using optional argument (#26546)

* Translations

* Make aghost command work on other players using optional argument

* Reviews

* Automatic changelog update

* Add new component to Make sound on interact (#26523)

* Adds new Component: EmitSoundOnInteractUsing

* Missed an import

* File-scoping

* Replace ID check with Prototype check

* Moved component and system to shared. Set prediction to true.

* Removed impoper imports and changed namespace of component to reflect changed folder.

* Following function naming theme

* All this code is basically deltanedas's, but it was a learning experience for me

* Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs

* Update Content.Shared/Sound/Components/EmitSoundOnInteractUsingComponent.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Increase syndi duffelbag storage (#26565)

* Increase syndi duffelbag storage

* weh

* Automatic changelog update

* Adds construction/decon graphs for plastic flaps (#26341)

* Adds construction/decon graphs for plastic flaps

* Dang arbitrage

* undo conflict

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>

* Automatic changelog update

* Makes secglasses roundstart (#26487)

* makes secglasses roundstart

* fix epic fail

* fix tests questionmark?

* Update Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>

---------

Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>

* Automatic changelog update

* Toilet Upgrade (needs review) (#22133)

* Toilet Draft

* fixes

* toilets now have secret stash to place items in cistern.

* fixes

* plungers now unblock toilets.

* fix sprite

* new sprites and fix

* fixes

* improve seat sprites.

* fix

* removed visualisersystem changed to genericvisualizers

* flush sound for toilets and copyright for toilet sprites.

* fix atrributions

* fixes

* fix datafield flushtime

* sprite improvements

* fixes

* multiple changes

* fix

* fix

* fixes remove vv

* moved stash related functions to secret stash system from toilet.

* fix

* fix

* changes for recent review.

* fix

* fix

* Automatic changelog update

* Uplink store interface searchable with a searchbar. (#24287)

* Can now search the uplink store interface with a searchbar.

* Search text updates no longer send server messages. Persists listings locally.

* Formatting fixes and tidying.

* Added helper method to get localised name and description (or otherwise, entity name and description) of store listing items.

* Update Content.Client/Store/Ui/StoreMenu.xaml

* Review change; moved localisation helper functions to their own class.

* Prevent thread-unsafe behaviour as-per review.

* Remove dummy boxcontainer

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Improved RCDs (#22799)

* Initial radial menu prototyping for the RCD

* Radial UI buttons can send messages to the server

* Beginning to update RCDSystem

* RCD building system in progress

* Further updates

* Added extra effects, RCDSystem now reads RCD prototype data

* Replacing tiles is instant, multiple constructions are allowed, deconstruction is broken

* Added extra functionality to RadialContainers plus documentation

* Fixed localization of RCD UI strings

* Menu opens near cursor, added basic RCD

* Avoiding merge conflict

* Implemented atomized construction / deconstruction rules

* Increased RCD ammo base charges

* Moved input context definition to content

* Removed obsoleted code

* Updates to system

* Switch machine and computer frames for electrical cabling

* Added construction ghosts

* Fixed issue with keybind detection code

* Fixed RCD construction ghost mispredications

* Code clean up

* Updated deconstruction effects

* RCDs effects don't rotate

* Code clean up

* Balancing for ammo counts

* Code clean up

* Added missing localized strings

* More clean up

* Made directional window handling more robust

* Added documentation to radial menus and made them no longer dependent on Content

* Made radial containers more robust

* Further robustness to the radial menu

* The RCD submenu buttons are only shown when the destination layer has at least one children

* Expanded upon deconstructing plus construction balance

* Fixed line endings

* Updated list of RCD deconstructable entities. Now needs a component to deconstruct instead of a tag

* Bug fixes

* Revert unnecessary change

* Updated RCD strings

* Fixed bug

* More fixes

* Deconstructed tiles/subflooring convert to lattice instead

* Fixed failed tests (Linux doesn't like invalid spritespecifer paths)

* Fixing merge conflict

* Updated airlock assembly

* Fixing merge conflict

* Fixing merge conflict

* More fixing...

* Removed erroneous project file change

* Fixed string handling issue

* Trying to fix merge conflict

* Still fixing merge conflicts

* Balancing

* Hidden RCD construction ghosts when in 'build' mode

* Fixing merge conflict

* Implemented requested changes (Part 1)

* Added more requested changes

* Fix for failed test. Removed sussy null suppression

* Made requested changes - custom construction ghost system was replaced

* Fixing merge conflict

* Fixed merge conflict

* Fixed bug in RCD construction ghost validation

* Fixing merge conflict

* Merge conflict fixed

* Made required update

* Removed lingering RCD deconstruct tag

* Fixing merge conflict

* Merge conflict fixed

* Made requested changes

* Bug fixes and balancing

* Made string names more consistent

* Can no longer stack catwalks

* Automatic changelog update

* Update submodule to 217.2.0 (#26592)

* Southern accent (#26543)

* created the AccentComponent and the AccentSystem

* word replacement schtuhff

* made it a trait fr ongg!!1

* Update Content.Server/Speech/EntitySystems/SouthernAccentSystem.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Prevent storing liquids in equipped buckets (#24412)

* Block access to solutions in equipped spillables.

* Stop Drink verb appearing if the solution can't be accessed.

* Automatic changelog update

* Fix 'Hypopen shouldn't display solution examine text' (#26453)

* stealthy hypo

* ExaminableSolution hand check when in covert implement.

ExaminableSolution now has 'hidden' datafield to enable chemical inspection only in hand.

* cleaning code

* more cleaning

* Hidden datafield renamed to HeldOnly

* review

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Revert Paint (#26593)

* Revert "Fix build (#26258)"

This reverts commit 6de5fbfafb.

* Revert "Spray Paint (Review Ready) (#23003)"

This reverts commit e4d5e7f1ae.

# Conflicts:
#	Resources/Prototypes/Entities/Structures/Holographic/projections.yml

* Fix: Prevent single-use hyposprays from getting the toggle draw verb (#26595)

Prevent single-use hyposprays from getting the toggle draw verb

Co-authored-by: Plykiya <plykiya@protonmail.com>

* MeleeHitSoundSystem (#25005)

* Began work to unscrew melee noises

* finished

* cleanup

* cleanup

* Update Content.Server/Weapons/Melee/MeleeWeaponSystem.cs

Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>

* _Style

* Fix merge

---------

Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Remove physics comp from VendingMachineWallmount (#25632)

* Remove physics comp from VendingMachineWallmount

* Fixtures removal

---------

Co-authored-by: Jeff <velcroboy333@hotmail.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Remake hairflowers (#25475)

* Add more lily usage (orange hairflower and flowercrown)

* comit 2

* ee

* more fixes

* w

* im stupid

* bring poppy in authodrobe

* weh

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Automatic changelog update

* Injector UI shows TransferAmount change, Spilling liquid changes Injector mode (#26596)

* Injector UI shows TransferAmount change, spill changes mode

* Update Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs

* Update Content.Shared/Fluids/SharedPuddleSystem.Spillable.cs

---------

Co-authored-by: Plykiya <plykiya@protonmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Update submodule to 217.2.1 (#26599)

* disallow unanchoring or opening panels on locked emitters/APEs (#26600)

* disallow unanchoring or opening panels on locked emitters/APEs

* no locking open panels

* oops

* needback feedback

* Update Content.Shared/Lock/LockSystem.cs

* Update Content.Shared/Lock/LockSystem.cs

* Update Content.Shared/Lock/LockSystem.cs

* sanity

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Fix grave digging sound indefinitely playing if dug by aghost. (#26420)

Admins bypass doafters. As such, the code that runs on doafter
completion is ran before the sound is actually created. This then leads
to the sound never being stopped, and as such it would infinitely play.

This commit gets around the issue by manually stopping the sound should
the doafter fail to start. If we could be sure that the doafter would
never fail, then we could just move the call to StartDigging above
starting the doafter but this is currently not possible.

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Make the buttons on the map ui not squished (#26604)

Make the map ui work

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* Combine flower crown and wreath (#26605)

* Combine flower crown and wreath

* huh

* huuh :trollface:

* Automatic changelog update

* Add AP damage to throwing knives (#26380)

* add

* ap

* no more stam dmg

* Automatic changelog update

* cancelable brig timers (#26557)

brig timers now cancelable. also some screensystem yakshave

* Fix orientation of roller skate sprites (#26627)

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>

* Automatic changelog update

* Fix GastTileOverlay sending redundant data (#26623)

Fix GastTileOverlay not updating properly

* Auto DeAdmin sooner (#26551)

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* Add briefcase to curadrobe and lawdrobe, and some briefcases cleanup (#26527)

* Add briefcase to curadrobe and some briefcases cleanup

* also add to lawdrobe

* Automatic changelog update

* Fix some text overflow bugs in HUD (#26615)

* Don't clip text in item status

* Fix overflow in examine tooltip

---------

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>

* Adds two milk cartons to the BoozeOMat (#26635)

* Automatic changelog update

* made the hover text less vague (sorry) (#26630)

* blacklisted throwing knifes from pneumatic cannon (#26628)

* Fix radio jammer not blocking suit sensors. (#26632)

As it turns out, they are not in fact on their own netid. They are
actually just on wireless. The way I had tested my previous pr led to
this mistake being made. I originally had the radio jammer block
wireless as well, but decided to take out under the flase assumption
that it suit sensors were actually on their own netid and did not
require the ability to block all wireless packets at the last moment.

* Fix dirt decals in reach not being cleanable (#26636)

made all dirt decals cleanable

Co-authored-by: hamurlik <renoDeath@protonmail.com>

* Automatic changelog update

* Replace drill_hit.ogg and drill_use.ogg with better sounds (#26622)

* Replace drill_hit.ogg and drill_use.ogg with better sounds

* Fix attribution source for drill_hit.ogg

* Update Resources/Audio/Items/attributions.yml

Co-authored-by: Kara <lunarautomaton6@gmail.com>

* Update Resources/Audio/Items/attributions.yml

Co-authored-by: Kara <lunarautomaton6@gmail.com>

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Kara <lunarautomaton6@gmail.com>

* Gave Blast door access permissions (#26606)

Added access reader to all blast doors. Added pre configured blast doors for engineering and science.

* Gives all wheeled objects low friction (#26601)

* gives all wheeled objects friction

* adjustments to sum stuff

* Automatic changelog update

* Combine solution injection systems; Fix embeddable injectors (#26268)

* Combine injection systems

* Update Content.Server/Chemistry/EntitySystems/SolutionInjectOnEventSystem.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Automatic changelog update

* Add ValueList import (#26640)

* Change assault borg modules texture (#26502)

* Update borg_modules.yml

* Fix borg_modules.yml?

* Uh

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Add Cyborg Emote Sounds (#26594)

* Hal 9000's first emote

* Add Chime emote & Change variation to 0.05

* Modify Buzz emote

* Add Buzz-two emote

* modified Horn

* add ping emote

* add slowclap emote

* Convert slowclap.ogg to mono, reflect change in attribution.yml

* fix capitalization for all chatMessages && change all catagory to category

* remove all traces of slowclap.ogg

* forgor one file smh

* collating copywrite

* spelling mistakes will be the death of me

* more spelling mistakes

* change yml string to list

* Automatic changelog update

* Coordinates Disks & Shuttle FTL Travel (#23240)

* Adds the CentComm Disk and configures it to work with direct-use shuttles

* Added functionality for drone shuttles (i.e. cargo shuttle)

* Adds support for pods, and a disk console object for disks to be inserted into. Also sprites.

* Added the disk to HoP's locker

* Removed leftover logs & comments

* Fix for integration test

* Apply suggestions from code review (formatting & proper DataField)

Co-authored-by: 0x6273 <0x40@keemail.me>

* Fix integration test & changes based on code review

* Includes Disk Cases to contain Coordinate Disks, which are now CDs instead of Floppy Disks

* Check pods & non-evac shuttles for CentCom travel, even in FTL

* Import

* Remove CentCom travel restrictions & pod disk consoles

* Major changes that changes the coordinates disk system to work with salvage expeditions

* Missed CC diskcase removal

* Fix build

* Review suggestions and changes

* Major additional changes after merge

* Minor tag miss

* Integration test fix

* review

---------

Co-authored-by: 0x6273 <0x40@keemail.me>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Add door electronics access configuration menu (#17778)

* Add door electronics configuration menu

* Use file-scoped namespaces

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Open door electronics configuration menu only with network configurator

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Doors will now try to move their AccessReaderComponent to their door electronics when the map is initialized

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Make the access list in the id card computer a separate control

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Fix merge conflict

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove DoorElectronics tag

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Integrate doors with #17927

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Move door electornics ui stuff to the right place

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Some review fixes

Signed-off-by: c4llv07e <kseandi@gmail.com>

* More fixes

Signed-off-by: c4llv07e <kseandi@gmail.com>

* review fix

Signed-off-by: c4llv07e <kseandi@gmail.com>

* move all accesses from airlock prototypes to door electronics

Signed-off-by: c4llv07e <kseandi@gmail.com>

* rework door electronics config access list

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove Linq from the door electronics user interface

* [WIP] Add EntityWhitelist to the activatable ui component

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Better interaction system

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Refactor

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Fix some door electronics not working without AccessReaderComponent

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Move AccessReaderComponent update code to the AccessReaderSystem

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove unnecesary newlines in the door access prototypes

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove unused variables in access level control

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove unnecessary method from the door electronics configuration menu

Signed-off-by: c4llv07e <kseandi@gmail.com>

* [WIP] change access type from string to ProtoId<AccessLevelPrototype>

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Remove unused methods

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Newline fix

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Restored to a functional state

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Fix access configurator not working with door electronics AccessReaderComponent

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Replace all string access fields with ProtoId

Signed-off-by: c4llv07e <kseandi@gmail.com>

* move access level control initialization into Populate method

Signed-off-by: c4llv07e <kseandi@gmail.com>

* Review

---------

Signed-off-by: c4llv07e <kseandi@gmail.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* scoopable ash and foam, solution transfer prediction (#25832)

* move SolutionTransfer to shared and predict as much as possible

* fully move OpenableSystem to shared now that SolutionTransfer is

* fix imports for everything

* doc for solution transfer system

* trolling

* add scoopable system

* make ash and foam scoopable

* untroll

* untroll real

* make clickable it work

* troll

* the scooping room

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Replace the teleportation logic on the SCRAM implant! (#26429)

* Replace the teleportation logic on the SCRAM implant!

Now instead of just trying to pick a random tile in range 20 times, the
scram teleportation logic now:

- Gets a list of grids in range
- Until a suitable tile is picked it picks a random grid
- From that grid it picks a random tile.
- If the tile is suitable, then it is set as the target and the user
  will be teleported there.
- Grids and tiles are randomly picked as outlined above until a valid
  tile is found, or all valid grids and tiles are exhausted.
- Should no suitable tile be found then they get teleported to the same
  position they are at. Effectively not teleporting them.

* Actually make the defaults sane which I forgor in the last commit

* Extract tile section to its own function. Bias selection for current grid. Use proper coords for box.

* Address reviews as much as possible

* Address reviews

* Refactored AdvertiseComponent (#26598)

* Made it better

* ok

* alright

---------

Co-authored-by: wrexbe <wrexbe@protonmail.com>

* Bartender "Essentials" (#25367)

* drinks round 1

saving my progress before my hard drive explodes

* test 2

please work

* name fixes

whoops

* Update drinks.yml

* various fixes

am dumb

* add sol dry to vends

more fixes and changes, yippee!

* more fixes & ingame testing

shrimple tests

* last fixes :trollface:

should be ready for pr now

* Update soda.yml

sate thirst

* Automatic changelog update

* Add ERT Chaplain (#25956)

* ERT Chaplain

* Make BibleUser

* It was not intended

* reword my poor words

* 1984 a comment that I decided was unnecessary.

* Update Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Changes in chemicals page in guidebook (#25831)

* Added pages to chemical categories

The chemical categories have their own page now. Added the "Chemical Tabs" in /ServerInfo/Guidebook. Moved the Chemicals code from shiftsandjobs.yml to its own .yml file which is "chemicals.yml".

* Update guides.ftl

* Update chemicals.yml

Changed the guide entry's ID for the medical tab from Medicine to Medicinal.
Hope this works...

* Update Resources/ServerInfo/Guidebook/Chemical Tabs/Biological.xml

Co-authored-by: exincore <me@exin.xyz>

* Update Resources/ServerInfo/Guidebook/Chemical Tabs/Foods.xml

Co-authored-by: exincore <me@exin.xyz>

* Update Resources/ServerInfo/Guidebook/Chemical Tabs/Elements.xml

Co-authored-by: exincore <me@exin.xyz>

* Update Resources/ServerInfo/Guidebook/Chemical Tabs/Narcotics.xml

Co-authored-by: exincore <me@exin.xyz>

* Update Resources/ServerInfo/Guidebook/Chemical Tabs/Toxins.xml

Co-authored-by: exincore <me@exin.xyz>

* Fixed a few errors and stuff!

A few typos have been fixed thanks to exincore. Added dedicated .xml files to be used for the dedicated category pages (Medicinal and Botanical pages). Made it so it doesn't use any duplicated IDs anymore.
If there's more problems, please do tell so I can fix it!

* Update settings.json

* Fix?

---------

Co-authored-by: exincore <me@exin.xyz>

* Automatic changelog update

* Anomalies behaviours (#24683)

* Added new anomaly particle

* Add basic anomaly behaviour

* +2 parametres

* add functional to new particle

* add components to behaviours

* big content

* add shuffle, moved thing to server

* clean up

* fixes

* random pick redo

* bonjour behavioUr

* fix AJCM

* fix

* add some new behaviours

* power modifier behaviour

* rmeove timer

* new event for update ui fix

* refactor!

* fixes

* enum

* Fix mapinit

* Minor touches

---------

Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>

* Automatic changelog update

* Fix clipping/overlap in lathe machine UIs (#26646)

* Add scrollbars to lathe material list when necessary

* Fix bug where shrinking window would cause elements to overlap

---------

Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>

* Added chat window transparency slider to options (#24990)

* Adds a new slider to the misc tab in options that lets the player set chat window transparency

* Tweaked variable names

* Fixed order to match UI

* Renamed set chat window transparency function

* Changed and refactored to opacity instead of transparency

* Remove unnecessary int to float conversions

Slider used to be 0-100 while the CCVar was 0.0-1.0f. This is confusing and was only used for rounding to 2 decimal points.

* Round the value to two decimal points

* Remove rounding for now

* Rename

* Unhardcode chat color by moving to stylesheet

* Fix indent

* Make opacity slider only change opacity

---------

Co-authored-by: Your Name <you@example.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>

* Automatic changelog update

* Infinity books (#25840)

* setup text data

* roundstart reshuffling keywords with gibberish words

* saved data categorized

* add book with hints

* start redrawing books

* +4 book design

* +books +random visual upgrade

* finish first file

* finish lore file

* finish with books.rsi now authorbooks.rsi...

* aurora! and some fix

* nuke author books

* speelbuke update

* finish respriting work

* fix scientist guide visual

* setup datasets

* setup stupid funny random story

* restore author books, upgrade hint generation

* add variety to story generator

* add learning system

* minor textgen edit

* file restruct, hint count variation

* more restruct

* more renaming
add basis learning system logic. Spears locked for special book for test.

* nuke all systems, for splitting PR gods

* typo fix

* update migration with deleted books

* add random story books to maint

* Update construction-system.ftl

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>

* typo fix

* interchangeably

* final

* Update Resources/Prototypes/Datasets/Names/books.yml

Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>

* "."

* Update Content.Server/Paper/PaperRandomStorySystem.cs

Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>

* Ubazer fix

* inadequate

* localized

* Update meta.json

* fuck merge conflicts

* fix jani book

---------

Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>
Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>

* Automatic changelog update

* Resprite ambuzol plus pills (#26651)

* Automatic changelog update

* Fixed air injector visuals (#26654)

* Make cyborgs hands explosion proof. (#26515)

* Make the advanced treatment modules beakers explosion-proof.

* undo changes

* Epic rename fail

* Explosion recursion data field

* Logic for data field

* Automatic changelog update

* Automatic changelog update

* Make typing indicator shaded (#26678)

* Automatic changelog update

* Validate wire layout prototypes and remove invalid WiresComponents (#26682)

Validate wire layout prototypes; delete invalid wirescomponents.

* Increase time inbetween anomaly pulses (#26677)

nerf anomaly pulse delays

* Automatic changelog update

* Fix for items dropped being rotated to world north (#26662)

* Fix rotation of dropped items

* combined world position rotation function for dumpable

* scuffed implementation?

* less scuffed?

* even less scuffed... I guess

* capital D

---------

Co-authored-by: Plykiya <plykiya@protonmail.com>

* Automatic changelog update

* fix double interaction popup (#26684)

change popentity to popupclient

* disable foam scooping (#26686)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* Little disk printer sprite tweaks (#26711)

* Little disk printer sprite tweaks

* ill change this aswell

* fixed white_box.png (#26714)

* Delete Resources/Textures/Decals/bricktile.rsi/white_box.png

* Readded fixed version

one pixel change

* New lobby art: TerminalStation (#26505)

woop woop

* Automatic changelog update

* Unidentified corpses respect gender pronouns (#26715)

fix: LGBT erasure /j

* Things that can't go in disposals now don't "Miss" (#26716)

* Moved is canInsert check to before miss check

* Update Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>

* Clean up YAML issues in animals.yml (#26696)

* Cleaned up YAML issues in animals.yml

* Cleaned up TimedSpawnerComponent

* fix health analyzer crash (#26700)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* Make the station start with random broken wiring (#26695)

Random wire cutting on round start

* Fix turned off thrusters consume power (#26690)

* Mail Unit Fix (whitelist) (#26688)

Fix Mail Unit

* Automatic changelog update

* OOC Patron Color Toggle (#26653)

* Adds the option for you to toggle your OOC Patron color visibility to yourself and others.

* Makes the button magically disappear if you arent a patron

* Automatic changelog update

* Fix random clothing slots being able to hide character's nose and hair (#26708)

Fix bug and formatting

* Automatic changelog update

* Make Zombie, Initial Infected fix (#26665)

Make zombie fix

* Suit Sensors No Longer Use a Hardcoded 'Total Health' (#26658)

* Suit sensors now know the 'total health' of an entity

* Missed the constructor 😔

* Stop mop buckets from spilling when you push them (#26706)

* Automatic changelog update

* Robotists technology icon fix (#26723)

fix

Co-authored-by: GeneralGaws <limonmessi@mail.ru>

* Make ducks more viable as an alternative to chickens. (#26729)

Quick tweak to make ducks on par with chickens at cargo

* Automatic changelog update

* Make the nutribrick one bite smaller (#26719)

Update snacks.yml

* Task/fix nightvision huds (#26726)

* StatusIcon: add field to set if icon should be rendered with shading

* set/unset shader based on icon field

* set new field to true for hud icons

* re-shade health bars

* Automatic changelog update

* Rework Identifier Overrides to prevent showing Law Priority (#26680)

Does-The-Fix

Co-authored-by: Mephisto72 <Mephisto.Respectator@proton.me>

* Make practice projectiles consistent in damage (#26731)

* Make practice weapon damage consistent to 1

* Add book reference to description

* Automatic changelog update

* fix mopbucket water level (#26740)

* Damage popup type can now be changed with a left click if allowed via component boolean. (#26734)

* Update DamagePopupSystem.cs

* Update DamagePopupSystem.cs

* Add ability to allow or deny type change via component bool

* Automatic changelog update

* CCVars.cs: Minor inconsistency fixes. (#26744)

Update CCVars.cs

* Fixes one file format inconsistency.
* Adds missing </summary> closing tag.

* Make baseball bat crafting require a slicing tool (#26742)

Make baseball bat crafting harder

* make fulton recipe faster and require cloth (#26747)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Automatic changelog update

* -fixed Broadcast button never enabling (#26750)

* Automatic changelog update

* Let Mindshields be effected by statusIcon shading (#26754)

Phone Webedit Ops

Original PR author forgot about mindshields for making status icons shaded. 

This can be done with other antag icons as well, I remember people mentioning revs being able to see each other in the dark was lame.

* Automatic changelog update

* Dionae now bleed sap, and this can be used to make syrup. (#25748)

* SapAndSyrup

* centrifug

* morewatervapor

* whyisitnotpushing

* nymphs

* lessrealmorefun

* Automatic changelog update

* Alerts crash fix (#26602)

- If the client tries to call ShowAlert while applying gamestates (e.g. initialising an entity) then this will cause problems. I need to double-check the initial PR before I'd be comfortable with this being merged.

* made thin firelocks constructable/deconstructable (#26745)

* Automatic changelog update

* Fire sprite change for mice (#26758)

* Add new fire sprite for mice that fits them better

* Add the sprite change to rats as well

* Moffroach and hamsters now also have more fitting fire sprites

* made the meta.json easier to read

* Automatic changelog update

* Change speed threshold for barefeet walking on glass shards and D4 (#26763)

Allow walking over glass shards and D4

Co-authored-by: Plykiya <plykiya@protonmail.com>

* Automatic changelog update

---------

Signed-off-by: c4llv07e <kseandi@gmail.com>
Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com>
Co-authored-by: Plykiya <58439124+Plykiya@users.noreply.github.com>
Co-authored-by: Plykiya <plykiya@protonmail.com>
Co-authored-by: Boaz1111 <149967078+Boaz1111@users.noreply.github.com>
Co-authored-by: keronshb <54602815+keronshb@users.noreply.github.com>
Co-authored-by: Wrexbe (Josh) <81056464+wrexbe@users.noreply.github.com>
Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Co-authored-by: wrexbe <wrexbe@protonmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com>
Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com>
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com>
Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Co-authored-by: brainfood1183 <113240905+brainfood1183@users.noreply.github.com>
Co-authored-by: J. Brown <DrMelon@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>
Co-authored-by: UBlueberry <161545003+UBlueberry@users.noreply.github.com>
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
Co-authored-by: drteaspoon420 <87363733+drteaspoon420@users.noreply.github.com>
Co-authored-by: Bixkitts <72874643+Bixkitts@users.noreply.github.com>
Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
Co-authored-by: Ubaser <134914314+UbaserB@users.noreply.github.com>
Co-authored-by: avery <51971268+graevy@users.noreply.github.com>
Co-authored-by: eoineoineoin <github@eoinrul.es>
Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
Co-authored-by: RiceMar1244 <138547931+RiceMar1244@users.noreply.github.com>
Co-authored-by: Zealith-Gamer <61980908+Zealith-Gamer@users.noreply.github.com>
Co-authored-by: hamurlik <75280571+hamurlik@users.noreply.github.com>
Co-authored-by: hamurlik <renoDeath@protonmail.com>
Co-authored-by: no <165581243+pissdemon@users.noreply.github.com>
Co-authored-by: Kara <lunarautomaton6@gmail.com>
Co-authored-by: SoulFN <164462467+SoulFN@users.noreply.github.com>
Co-authored-by: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com>
Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
Co-authored-by: 0x6273 <0x40@keemail.me>
Co-authored-by: c4llv07e <38111072+c4llv07e@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Firewatch <54725557+musicmanvr@users.noreply.github.com>
Co-authored-by: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
Co-authored-by: f0x-n3rd <150924715+f0x-n3rd@users.noreply.github.com>
Co-authored-by: exincore <me@exin.xyz>
Co-authored-by: Sk1tch <ben.peter.smith@gmail.com>
Co-authored-by: Your Name <you@example.com>
Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
Co-authored-by: Hrosts <35345601+Hrosts@users.noreply.github.com>
Co-authored-by: osjarw <62134478+osjarw@users.noreply.github.com>
Co-authored-by: lunarcomets <140772713+lunarcomets@users.noreply.github.com>
Co-authored-by: ThatOneGoblin25 <145570657+ThatOneGoblin25@users.noreply.github.com>
Co-authored-by: Terraspark4941 <terraspark4941@gmail.com>
Co-authored-by: Brandon Hu <103440971+Brandon-Huu@users.noreply.github.com>
Co-authored-by: beck-thompson <107373427+beck-thompson@users.noreply.github.com>
Co-authored-by: Aexxie <codyfox.077@gmail.com>
Co-authored-by: DinoWattz <116862698+DinoWattz@users.noreply.github.com>
Co-authored-by: Pspritechologist <81725545+Pspritechologist@users.noreply.github.com>
Co-authored-by: Vasilis <vasilis@pikachu.systems>
Co-authored-by: GeneralGaws <122978178+GeneralGaws@users.noreply.github.com>
Co-authored-by: GeneralGaws <limonmessi@mail.ru>
Co-authored-by: Dae <60460608+ZeroDayDaemon@users.noreply.github.com>
Co-authored-by: potato1234_x <79580518+potato1234x@users.noreply.github.com>
Co-authored-by: PrPleGoo <PrPleGoo@users.noreply.github.com>
Co-authored-by: Mephisto72 <66994453+Mephisto72@users.noreply.github.com>
Co-authored-by: Mephisto72 <Mephisto.Respectator@proton.me>
Co-authored-by: TsjipTsjip <19798667+TsjipTsjip@users.noreply.github.com>
Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
Co-authored-by: superjj18 <gagnonjake@gmail.com>
Co-authored-by: Golinth <amh2023@gmail.com>
Co-authored-by: Alzore <140123969+Blackern5000@users.noreply.github.com>
Co-authored-by: BITTERLYNX <166083655+PaigeMaeForrest@users.noreply.github.com>
This commit is contained in:
Ed
2024-04-06 13:13:22 +03:00
committed by GitHub
parent 80958e4d71
commit c7b2c19dd1
80 changed files with 800 additions and 277 deletions

View File

@@ -210,9 +210,9 @@ public sealed partial class CrewMonitoringWindow : FancyWindow
specifier = new SpriteSpecifier.Rsi(new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "dead");
}
else if (sensor.TotalDamage != null)
else if (sensor.DamagePercentage != null)
{
var index = MathF.Round(4f * (sensor.TotalDamage.Value / 100f));
var index = MathF.Round(4f * sensor.DamagePercentage.Value);
if (index >= 5)
specifier = new SpriteSpecifier.Rsi(new ResPath("Interface/Alerts/human_crew_monitoring.rsi"), "critical");

View File

@@ -49,6 +49,7 @@
<Label Text="{Loc 'ui-options-general-speech'}"
FontColorOverride="{xNamespace:Static s:StyleNano.NanoGold}"
StyleClasses="LabelKeyText"/>
<CheckBox Name="ShowOocPatronColor" Text="{Loc 'ui-options-show-ooc-patron-color'}" />
<CheckBox Name="ShowLoocAboveHeadCheckBox" Text="{Loc 'ui-options-show-looc-on-head'}" />
<CheckBox Name="FancySpeechBubblesCheckBox" Text="{Loc 'ui-options-fancy-speech'}" />
<CheckBox Name="FancyNameBackgroundsCheckBox" Text="{Loc 'ui-options-fancy-name-background'}" />

View File

@@ -3,11 +3,14 @@ using Content.Client.UserInterface.Screens;
using Content.Shared.CCVar;
using Content.Shared.HUD;
using Robust.Client.AutoGenerated;
using Robust.Client.Player;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared;
using Robust.Shared.Configuration;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Range = Robust.Client.UserInterface.Controls.Range;
@@ -16,6 +19,7 @@ namespace Content.Client.Options.UI.Tabs
[GenerateTypedNameReferences]
public sealed partial class MiscTab : Control
{
[Dependency] private readonly IPlayerManager _playerManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
@@ -55,8 +59,11 @@ namespace Content.Client.Options.UI.Tabs
UpdateApplyButton();
};
ShowOocPatronColor.Visible = _playerManager.LocalSession?.Channel.UserData.PatronTier is { } patron;
HudThemeOption.OnItemSelected += OnHudThemeChanged;
DiscordRich.OnToggled += OnCheckBoxToggled;
ShowOocPatronColor.OnToggled += OnCheckBoxToggled;
ShowLoocAboveHeadCheckBox.OnToggled += OnCheckBoxToggled;
ShowHeldItemCheckBox.OnToggled += OnCheckBoxToggled;
ShowCombatModeIndicatorsCheckBox.OnToggled += OnCheckBoxToggled;
@@ -73,6 +80,7 @@ namespace Content.Client.Options.UI.Tabs
HudThemeOption.SelectId(_hudThemeIdToIndex.GetValueOrDefault(_cfg.GetCVar(CVars.InterfaceTheme), 0));
DiscordRich.Pressed = _cfg.GetCVar(CVars.DiscordEnabled);
ShowOocPatronColor.Pressed = _cfg.GetCVar(CCVars.ShowOocPatronColor);
ShowLoocAboveHeadCheckBox.Pressed = _cfg.GetCVar(CCVars.LoocAboveHeadShow);
ShowHeldItemCheckBox.Pressed = _cfg.GetCVar(CCVars.HudHeldItemShow);
ShowCombatModeIndicatorsCheckBox.Pressed = _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
@@ -130,6 +138,7 @@ namespace Content.Client.Options.UI.Tabs
_cfg.SetCVar(CCVars.HudHeldItemShow, ShowHeldItemCheckBox.Pressed);
_cfg.SetCVar(CCVars.CombatModeIndicatorsPointShow, ShowCombatModeIndicatorsCheckBox.Pressed);
_cfg.SetCVar(CCVars.OpaqueStorageWindow, OpaqueStorageWindowCheckBox.Pressed);
_cfg.SetCVar(CCVars.ShowOocPatronColor, ShowOocPatronColor.Pressed);
_cfg.SetCVar(CCVars.LoocAboveHeadShow, ShowLoocAboveHeadCheckBox.Pressed);
_cfg.SetCVar(CCVars.ChatEnableFancyBubbles, FancySpeechBubblesCheckBox.Pressed);
_cfg.SetCVar(CCVars.ChatFancyNameBackground, FancyNameBackgroundsCheckBox.Pressed);
@@ -158,6 +167,7 @@ namespace Content.Client.Options.UI.Tabs
var isShowHeldItemSame = ShowHeldItemCheckBox.Pressed == _cfg.GetCVar(CCVars.HudHeldItemShow);
var isCombatModeIndicatorsSame = ShowCombatModeIndicatorsCheckBox.Pressed == _cfg.GetCVar(CCVars.CombatModeIndicatorsPointShow);
var isOpaqueStorageWindow = OpaqueStorageWindowCheckBox.Pressed == _cfg.GetCVar(CCVars.OpaqueStorageWindow);
var isOocPatronColorShowSame = ShowOocPatronColor.Pressed == _cfg.GetCVar(CCVars.ShowOocPatronColor);
var isLoocShowSame = ShowLoocAboveHeadCheckBox.Pressed == _cfg.GetCVar(CCVars.LoocAboveHeadShow);
var isFancyChatSame = FancySpeechBubblesCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatEnableFancyBubbles);
var isFancyBackgroundSame = FancyNameBackgroundsCheckBox.Pressed == _cfg.GetCVar(CCVars.ChatFancyNameBackground);
@@ -175,6 +185,7 @@ namespace Content.Client.Options.UI.Tabs
isShowHeldItemSame &&
isCombatModeIndicatorsSame &&
isOpaqueStorageWindow &&
isOocPatronColorShowSame &&
isLoocShowSame &&
isFancyChatSame &&
isFancyBackgroundSame &&

View File

@@ -19,7 +19,6 @@ namespace Content.Client.Overlays;
/// </summary>
public sealed class EntityHealthBarOverlay : Overlay
{
[Dependency] private readonly IPrototypeManager _prototype = default!;
private readonly IEntityManager _entManager;
private readonly SharedTransformSystem _transform;
private readonly MobStateSystem _mobStateSystem;
@@ -27,17 +26,14 @@ public sealed class EntityHealthBarOverlay : Overlay
private readonly ProgressColorSystem _progressColor;
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
public HashSet<string> DamageContainers = new();
private readonly ShaderInstance _shader;
public EntityHealthBarOverlay(IEntityManager entManager)
{
IoCManager.InjectDependencies(this);
_entManager = entManager;
_transform = _entManager.System<SharedTransformSystem>();
_mobStateSystem = _entManager.System<MobStateSystem>();
_mobThresholdSystem = _entManager.System<MobThresholdSystem>();
_progressColor = _entManager.System<ProgressColorSystem>();
_shader = _prototype.Index<ShaderPrototype>("unshaded").Instance();
}
protected override void Draw(in OverlayDrawArgs args)
@@ -50,8 +46,6 @@ public sealed class EntityHealthBarOverlay : Overlay
var scaleMatrix = Matrix3.CreateScale(new Vector2(scale, scale));
var rotationMatrix = Matrix3.CreateRotation(-rotation);
handle.UseShader(_shader);
var query = _entManager.AllEntityQueryEnumerator<MobThresholdsComponent, MobStateComponent, DamageableComponent, SpriteComponent>();
while (query.MoveNext(out var uid,
out var mobThresholdsComponent,
@@ -122,7 +116,6 @@ public sealed class EntityHealthBarOverlay : Overlay
handle.DrawRect(pixelDarken, Black.WithAlpha(128));
}
handle.UseShader(null);
handle.SetTransform(Matrix3.Identity);
}

View File

@@ -3,9 +3,9 @@ using Content.Shared.StatusIcon.Components;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Shared.Enums;
using System.Numerics;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
using System.Numerics;
namespace Content.Client.StatusIcon;
@@ -18,7 +18,7 @@ public sealed class StatusIconOverlay : Overlay
private readonly SpriteSystem _sprite;
private readonly TransformSystem _transform;
private readonly StatusIconSystem _statusIcon;
private readonly ShaderInstance _shader;
private readonly ShaderInstance _unshadedShader;
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
@@ -29,7 +29,7 @@ public sealed class StatusIconOverlay : Overlay
_sprite = _entity.System<SpriteSystem>();
_transform = _entity.System<TransformSystem>();
_statusIcon = _entity.System<StatusIconSystem>();
_shader = _prototype.Index<ShaderPrototype>("unshaded").Instance();
_unshadedShader = _prototype.Index<ShaderPrototype>("unshaded").Instance();
}
protected override void Draw(in OverlayDrawArgs args)
@@ -42,8 +42,6 @@ public sealed class StatusIconOverlay : Overlay
var scaleMatrix = Matrix3.CreateScale(new Vector2(1, 1));
var rotationMatrix = Matrix3.CreateRotation(-eyeRot);
handle.UseShader(_shader);
var query = _entity.AllEntityQueryEnumerator<StatusIconComponent, SpriteComponent, TransformComponent, MetaDataComponent>();
while (query.MoveNext(out var uid, out var comp, out var sprite, out var xform, out var meta))
{
@@ -111,11 +109,16 @@ public sealed class StatusIconOverlay : Overlay
}
if (proto.IsShaded)
handle.UseShader(null);
else
handle.UseShader(_unshadedShader);
var position = new Vector2(xOffset, yOffset);
handle.DrawTexture(texture, position);
}
}
handle.UseShader(null);
handle.UseShader(null);
}
}
}

View File

@@ -244,8 +244,7 @@ namespace Content.Server.Chat.Managers
var prefs = _preferencesManager.GetPreferences(player.UserId);
colorOverride = prefs.AdminOOCColor;
}
if (player.Channel.UserData.PatronTier is { } patron &&
PatronOocColors.TryGetValue(patron, out var patronColor))
if ( _netConfigManager.GetClientCVar(player.Channel, CCVars.ShowOocPatronColor) && player.Channel.UserData.PatronTier is { } patron && PatronOocColors.TryGetValue(patron, out var patronColor))
{
wrappedMessage = Loc.GetString("chat-manager-send-ooc-patron-wrap-message", ("patronColor", patronColor),("playerName", player.Name), ("message", FormattedMessage.EscapeText(message)));
}

View File

@@ -5,6 +5,11 @@ namespace Content.Server.Damage.Components;
[RegisterComponent, Access(typeof(DamagePopupSystem))]
public sealed partial class DamagePopupComponent : Component
{
/// <summary>
/// Bool that will be used to determine if the popup type can be changed with a left click.
/// </summary>
[DataField("allowTypeChange")] [ViewVariables(VVAccess.ReadWrite)]
public bool AllowTypeChange = false;
/// <summary>
/// Enum that will be used to determine the type of damage popup displayed.
/// </summary>

View File

@@ -1,7 +1,8 @@
using System.Linq;
using Content.Server.Damage.Components;
using Content.Server.Popups;
using Content.Shared.Damage;
using Robust.Shared.Player;
using Content.Shared.Interaction;
namespace Content.Server.Damage.Systems;
@@ -13,6 +14,7 @@ public sealed class DamagePopupSystem : EntitySystem
{
base.Initialize();
SubscribeLocalEvent<DamagePopupComponent, DamageChangedEvent>(OnDamageChange);
SubscribeLocalEvent<DamagePopupComponent, InteractHandEvent>(OnInteractHand);
}
private void OnDamageChange(EntityUid uid, DamagePopupComponent component, DamageChangedEvent args)
@@ -33,4 +35,20 @@ public sealed class DamagePopupSystem : EntitySystem
_popupSystem.PopupEntity(msg, uid);
}
}
private void OnInteractHand(EntityUid uid, DamagePopupComponent component, InteractHandEvent args)
{
if (component.AllowTypeChange)
{
if (component.Type == Enum.GetValues(typeof(DamagePopupType)).Cast<DamagePopupType>().Last())
{
component.Type = Enum.GetValues(typeof(DamagePopupType)).Cast<DamagePopupType>().First();
}
else
{
component.Type = (DamagePopupType) (int) component.Type + 1;
}
_popupSystem.PopupEntity("Target set to type: " + component.Type.ToString(), uid);
}
}
}

View File

@@ -299,7 +299,12 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem
var canInsert = CanInsert(uid, component, args.Thrown);
var randDouble = _robustRandom.NextDouble();
if (!canInsert || randDouble > 0.75)
if (!canInsert)
{
return;
}
if (randDouble > 0.75)
{
_audioSystem.PlayPvs(component.MissSound, uid);

View File

@@ -143,6 +143,9 @@ public sealed partial class PuddleSystem
if (Openable.IsClosed(entity.Owner))
return;
if (!entity.Comp.SpillWhenThrown)
return;
if (args.User != null)
{
_adminLogger.Add(LogType.Landed,

View File

@@ -0,0 +1,29 @@
using Content.Shared.Whitelist;
namespace Content.Server.GameTicking.Rules.VariationPass.Components;
/// <summary>
/// Handles cutting a random wire on random devices around the station.
/// </summary>
[RegisterComponent]
public sealed partial class CutWireVariationPassComponent : Component
{
/// <summary>
/// Blacklist of hackable entities that should not be chosen to
/// have wires cut.
/// </summary>
[DataField]
public EntityWhitelist Blacklist = new();
/// <summary>
/// Chance for an individual wire to be cut.
/// </summary>
[DataField]
public float WireCutChance = 0.05f;
/// <summary>
/// Maximum number of wires that can be cut stationwide.
/// </summary>
[DataField]
public int MaxWiresCut = 10;
}

View File

@@ -0,0 +1,39 @@
using Content.Server.GameTicking.Rules.VariationPass.Components;
using Content.Server.Wires;
using Robust.Shared.Random;
namespace Content.Server.GameTicking.Rules.VariationPass;
/// <summary>
/// Handles cutting a random wire on random devices around the station.
/// This system identifies target devices and adds <see cref="CutWireOnMapInitComponent"/> to them.
/// The actual wire cutting is handled by <see cref="CutWireOnMapInitSystem"/>.
/// </summary>
public sealed class CutWireVariationPassSystem : VariationPassSystem<CutWireVariationPassComponent>
{
protected override void ApplyVariation(Entity<CutWireVariationPassComponent> ent, ref StationVariationPassEvent args)
{
var wiresCut = 0;
var query = AllEntityQuery<WiresComponent, TransformComponent>();
while (query.MoveNext(out var uid, out _, out var transform))
{
// Ignore if not part of the station
if (!IsMemberOfStation((uid, transform), ref args))
continue;
// Check against blacklist
if (ent.Comp.Blacklist.IsValid(uid))
continue;
if (Random.Prob(ent.Comp.WireCutChance))
{
EnsureComp<CutWireOnMapInitComponent>(uid);
wiresCut++;
// Limit max wires cut
if (wiresCut >= ent.Comp.MaxWiresCut)
break;
}
}
}
}

View File

@@ -249,7 +249,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
_playerManager.Sessions,
component.PatientZeroPrototypeId,
includeAllJobs: false,
customExcludeCondition: player => HasComp<ZombieImmuneComponent>(player) || HasComp<InitialInfectedExemptComponent>(player)
customExcludeCondition: player => HasComp<ZombieImmuneComponent>(player) || HasComp<InitialInfectedExemptComponent>(player)
);
//And get all players, excluding ZombieImmune and roles with CanBeAntag = False - to fill any leftover initial infected slots
@@ -259,7 +259,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
acceptableAntags: Shared.Antag.AntagAcceptability.All,
includeAllJobs: false ,
ignorePreferences: true,
customExcludeCondition: HasComp<ZombieImmuneComponent>
customExcludeCondition: HasComp<ZombieImmuneComponent>
);
//If there are no players to choose, abort
@@ -293,6 +293,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem<ZombieRuleComponent>
//Add the role to the mind silently (to avoid repeating job assignment)
_roles.MindAddRole(mind, new InitialInfectedRoleComponent { PrototypeId = component.PatientZeroPrototypeId }, silent: true);
EnsureComp<InitialInfectedComponent>(entity);
//Add the zombie components and grace period
var pending = EnsureComp<PendingZombieComponent>(entity);

View File

@@ -49,6 +49,12 @@ public sealed class HealthAnalyzerSystem : EntitySystem
if (component.ScannedEntity is not {} patient)
continue;
if (Deleted(patient))
{
StopAnalyzingEntity((uid, component), patient);
continue;
}
component.NextUpdate = _timing.CurTime + component.UpdateInterval;
//Get distance between health analyzer and the scanned entity

View File

@@ -33,6 +33,7 @@ public sealed class SuitSensorSystem : EntitySystem
[Dependency] private readonly SharedTransformSystem _transform = default!;
[Dependency] private readonly StationSystem _stationSystem = default!;
[Dependency] private readonly SingletonDeviceNetServerSystem _singletonServerSystem = default!;
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
public override void Initialize()
{
@@ -344,6 +345,11 @@ public sealed class SuitSensorSystem : EntitySystem
if (TryComp<DamageableComponent>(sensor.User.Value, out var damageable))
totalDamage = damageable.TotalDamage.Int();
// Get mob total damage crit threshold
int? totalDamageThreshold = null;
if (_mobThresholdSystem.TryGetThresholdForState(sensor.User.Value, Shared.Mobs.MobState.Critical, out var critThreshold))
totalDamageThreshold = critThreshold.Value.Int();
// finally, form suit sensor status
var status = new SuitSensorStatus(GetNetEntity(uid), userName, userJob, userJobIcon, userJobDepartments);
switch (sensor.Mode)
@@ -354,10 +360,12 @@ public sealed class SuitSensorSystem : EntitySystem
case SuitSensorMode.SensorVitals:
status.IsAlive = isAlive;
status.TotalDamage = totalDamage;
status.TotalDamageThreshold = totalDamageThreshold;
break;
case SuitSensorMode.SensorCords:
status.IsAlive = isAlive;
status.TotalDamage = totalDamage;
status.TotalDamageThreshold = totalDamageThreshold;
EntityCoordinates coordinates;
var xformQuery = GetEntityQuery<TransformComponent>();
@@ -402,6 +410,8 @@ public sealed class SuitSensorSystem : EntitySystem
if (status.TotalDamage != null)
payload.Add(SuitSensorConstants.NET_TOTAL_DAMAGE, status.TotalDamage);
if (status.TotalDamageThreshold != null)
payload.Add(SuitSensorConstants.NET_TOTAL_DAMAGE_THRESHOLD, status.TotalDamageThreshold);
if (status.Coordinates != null)
payload.Add(SuitSensorConstants.NET_COORDINATES, status.Coordinates);
@@ -429,12 +439,14 @@ public sealed class SuitSensorSystem : EntitySystem
// try get total damage and cords (optionals)
payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE, out int? totalDamage);
payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE_THRESHOLD, out int? totalDamageThreshold);
payload.TryGetValue(SuitSensorConstants.NET_COORDINATES, out NetCoordinates? coords);
var status = new SuitSensorStatus(suitSensorUid, name, job, jobIcon, jobDepartments)
{
IsAlive = isAlive.Value,
TotalDamage = totalDamage,
TotalDamageThreshold = totalDamageThreshold,
Coordinates = coords,
};
return status;

View File

@@ -264,6 +264,11 @@ public sealed class ThrusterSystem : EntitySystem
return;
}
if (TryComp<ApcPowerReceiverComponent>(uid, out var apcPower))
{
apcPower.NeedsPower = true;
}
component.IsOn = true;
if (!EntityManager.TryGetComponent(xform.GridUid, out ShuttleComponent? shuttleComponent))
@@ -366,6 +371,11 @@ public sealed class ThrusterSystem : EntitySystem
if (!EntityManager.TryGetComponent(gridId, out ShuttleComponent? shuttleComponent))
return;
if (TryComp<ApcPowerReceiverComponent>(uid, out var apcPower))
{
apcPower.NeedsPower = false;
}
// Logger.DebugS("thruster", $"Disabled thruster {uid}");
switch (component.Type)

View File

@@ -1,40 +1,54 @@
using System.Threading;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
namespace Content.Server.Spawners.Components
namespace Content.Server.Spawners.Components;
/// <summary>
/// Spawns entities at a set interval.
/// Can configure the set of entities, spawn timing, spawn chance,
/// and min/max number of entities to spawn.
/// </summary>
[RegisterComponent]
public sealed partial class TimedSpawnerComponent : Component, ISerializationHooks
{
[RegisterComponent]
public sealed partial class TimedSpawnerComponent : Component, ISerializationHooks
/// <summary>
/// List of entities that can be spawned by this component. One will be randomly
/// chosen for each entity spawned. When multiple entities are spawned at once,
/// each will be randomly chosen separately.
/// </summary>
[DataField]
public List<EntProtoId> Prototypes = [];
/// <summary>
/// Chance of an entity being spawned at the end of each interval.
/// </summary>
[DataField]
public float Chance = 1.0f;
/// <summary>
/// Length of the interval between spawn attempts.
/// </summary>
[DataField]
public int IntervalSeconds = 60;
/// <summary>
/// The minimum number of entities that can be spawned when an interval elapses.
/// </summary>
[DataField]
public int MinimumEntitiesSpawned = 1;
/// <summary>
/// The maximum number of entities that can be spawned when an interval elapses.
/// </summary>
[DataField]
public int MaximumEntitiesSpawned = 1;
public CancellationTokenSource? TokenSource;
void ISerializationHooks.AfterDeserialization()
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField("prototypes", customTypeSerializer:typeof(PrototypeIdListSerializer<EntityPrototype>))]
public List<string> Prototypes { get; set; } = new();
[ViewVariables(VVAccess.ReadWrite)]
[DataField("chance")]
public float Chance { get; set; } = 1.0f;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("intervalSeconds")]
public int IntervalSeconds { get; set; } = 60;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("MinimumEntitiesSpawned")]
public int MinimumEntitiesSpawned { get; set; } = 1;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("MaximumEntitiesSpawned")]
public int MaximumEntitiesSpawned { get; set; } = 1;
public CancellationTokenSource? TokenSource;
void ISerializationHooks.AfterDeserialization()
{
if (MinimumEntitiesSpawned > MaximumEntitiesSpawned)
throw new ArgumentException("MaximumEntitiesSpawned can't be lower than MinimumEntitiesSpawned!");
}
if (MinimumEntitiesSpawned > MaximumEntitiesSpawned)
throw new ArgumentException("MaximumEntitiesSpawned can't be lower than MinimumEntitiesSpawned!");
}
}

View File

@@ -1,3 +1,4 @@
using System.Linq;
using Content.Server.GameTicking.Rules.Components;
using Content.Server.Silicons.Laws;
using Content.Server.Station.Components;
@@ -143,6 +144,24 @@ public sealed class IonStormRule : StationEventSystem<IonStormRuleComponent>
});
}
// sets all unobfuscated laws' indentifier in order from highest to lowest priority
// This could technically override the Obfuscation from the code above, but it seems unlikely enough to basically never happen
int orderDeduction = -1;
for (int i = 0; i < laws.Laws.Count; i++)
{
string notNullIdentifier = laws.Laws[i].LawIdentifierOverride ?? (i - orderDeduction).ToString();
if (notNullIdentifier.Any(char.IsSymbol))
{
orderDeduction += 1;
}
else
{
laws.Laws[i].LawIdentifierOverride = (i - orderDeduction).ToString();
}
}
_adminLogger.Add(LogType.Mind, LogImpact.High, $"{ToPrettyString(ent):silicon} had its laws changed by an ion storm to {laws.LoggingString()}");
// laws unique to this silicon, dont use station laws anymore

View File

@@ -0,0 +1,10 @@
namespace Content.Server.Wires;
/// <summary>
/// Picks a random wire on the entity's <see cref="WireComponent"/> and cuts it.
/// Runs at MapInit and removes itself afterwards.
/// </summary>
[RegisterComponent]
public sealed partial class CutWireOnMapInitComponent : Component
{
}

View File

@@ -0,0 +1,34 @@
using Robust.Shared.Random;
namespace Content.Server.Wires;
/// <summary>
/// Handles cutting a random wire on devices that have <see cref="CutWireOnMapInitComponent"/>.
/// </summary>
public sealed partial class CutWireOnMapInitSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<CutWireOnMapInitComponent, MapInitEvent>(OnMapInit, after: [typeof(WiresSystem)]);
}
private void OnMapInit(Entity<CutWireOnMapInitComponent> entity, ref MapInitEvent args)
{
if (TryComp<WiresComponent>(entity, out var panel) && panel.WiresList.Count > 0)
{
// Pick a random wire
var targetWire = _random.Pick(panel.WiresList);
// Cut the wire
if (targetWire.Action == null || targetWire.Action.Cut(EntityUid.Invalid, targetWire))
targetWire.IsCut = true;
}
// Our work here is done
RemCompDeferred(entity, entity.Comp);
}
}

View File

@@ -80,6 +80,10 @@ public abstract class AlertsSystem : EntitySystem
/// <param name="showCooldown">if true, the cooldown will be visibly shown over the alert icon</param>
public void ShowAlert(EntityUid euid, AlertType alertType, short? severity = null, (TimeSpan, TimeSpan)? cooldown = null, bool autoRemove = false, bool showCooldown = true )
{
// This should be handled as part of networking.
if (_timing.ApplyingState)
return;
if (!TryComp(euid, out AlertsComponent? alertsComponent))
return;
@@ -148,6 +152,9 @@ public abstract class AlertsSystem : EntitySystem
/// </summary>
public void ClearAlert(EntityUid euid, AlertType alertType)
{
if (_timing.ApplyingState)
return;
if (!EntityManager.TryGetComponent(euid, out AlertsComponent? alertsComponent))
return;

View File

@@ -543,8 +543,8 @@ namespace Content.Shared.CCVar
* Console
*/
public static readonly CVarDef<bool>
ConsoleLoginLocal = CVarDef.Create("console.loginlocal", true, CVar.ARCHIVE | CVar.SERVERONLY);
public static readonly CVarDef<bool> ConsoleLoginLocal =
CVarDef.Create("console.loginlocal", true, CVar.ARCHIVE | CVar.SERVERONLY);
/// <summary>
/// Automatically log in the given user as host, equivalent to the <c>promotehost</c> command.
@@ -726,7 +726,7 @@ namespace Content.Shared.CCVar
public static readonly CVarDef<bool> CombatModeIndicatorsPointShow =
CVarDef.Create("hud.combat_mode_indicators_point_show", true, CVar.ARCHIVE | CVar.CLIENTONLY);
public static readonly CVarDef<bool> LoocAboveHeadShow =
CVarDef.Create("hud.show_looc_above_head", true, CVar.ARCHIVE | CVar.CLIENTONLY);
@@ -836,6 +836,7 @@ namespace Content.Shared.CCVar
/// <summary>
/// Should the ban details in admin channel include PII? (IP, HWID, etc)
/// </summary>
public static readonly CVarDef<bool> AdminShowPIIOnBan =
CVarDef.Create("admin.show_pii_onban", false, CVar.SERVERONLY);
@@ -1224,6 +1225,9 @@ namespace Content.Shared.CCVar
/// </summary>
public static readonly CVarDef<bool> OocEnableDuringRound =
CVarDef.Create("ooc.enable_during_round", false, CVar.NOTIFY | CVar.REPLICATED | CVar.SERVER);
public static readonly CVarDef<bool> ShowOocPatronColor =
CVarDef.Create("ooc.show_ooc_patron_color", true, CVar.ARCHIVE | CVar.REPLICATED | CVar.CLIENT);
/*
* LOOC

View File

@@ -91,7 +91,7 @@ public abstract class ClothingSystem : EntitySystem
private void ToggleVisualLayer(EntityUid equipee, HumanoidVisualLayers layer, string tag)
{
InventorySystem.InventorySlotEnumerator enumerator = _invSystem.GetSlotEnumerator(equipee);
InventorySystem.InventorySlotEnumerator enumerator = _invSystem.GetSlotEnumerator(equipee, SlotFlags.HEAD ^ SlotFlags.MASK);
bool shouldLayerShow = true;
while (enumerator.NextItem(out EntityUid item))
@@ -164,7 +164,7 @@ public abstract class ClothingSystem : EntitySystem
{
if (args.Handled || args.Cancelled || args.Target is not { } target)
return;
args.Handled = _invSystem.TryEquip(args.User, target, ent, args.Slot, clothing: ent.Comp, predicted: true, checkDoafter: false);
args.Handled = _invSystem.TryEquip(args.User, target, ent, args.Slot, clothing: ent.Comp, predicted: true, checkDoafter: false);
}
private void OnUnequipDoAfter(Entity<ClothingComponent> ent, ref ClothingUnequipDoAfterEvent args)

View File

@@ -11,7 +11,7 @@ namespace Content.Shared.Communications
public sealed class CommunicationsConsoleInterfaceState : BoundUserInterfaceState
{
public readonly bool CanAnnounce;
public readonly bool CanBroadcast;
public readonly bool CanBroadcast = true;
public readonly bool CanCall;
public readonly TimeSpan? ExpectedCountdownEnd;
public readonly bool CountdownStarted;

View File

@@ -29,4 +29,10 @@ public sealed partial class SpillableComponent : Component
/// </summary>
[DataField]
public FixedPoint2 MaxMeleeSpillAmount = FixedPoint2.New(20);
/// <summary>
/// Should this item be spilled when thrown?
/// </summary>
[DataField]
public bool SpillWhenThrown = true;
}

View File

@@ -682,7 +682,7 @@ namespace Content.Shared.Interaction
if (!inRange && popup && _gameTiming.IsFirstTimePredicted)
{
var message = Loc.GetString("interaction-system-user-interaction-cannot-reach");
_popupSystem.PopupEntity(message, origin, origin);
_popupSystem.PopupClient(message, origin, origin);
}
return inRange;

View File

@@ -278,7 +278,7 @@ public sealed class LockSystem : EntitySystem
//CrystallPunk Lock System Adapt End
}
private void OnEmagged(EntityUid uid, LockComponent component, ref GotEmaggedEvent args)
private void OnEmagged(EntityUid uid, LockComponent component, ref GotEmaggedEvent args)
{
if (!component.Locked || !component.BreakOnEmag)
return;

View File

@@ -23,6 +23,8 @@ public sealed class SuitSensorStatus
public List<string> JobDepartments;
public bool IsAlive;
public int? TotalDamage;
public int? TotalDamageThreshold;
public float? DamagePercentage => TotalDamageThreshold == null || TotalDamage == null ? null : TotalDamage / TotalDamageThreshold;
public NetCoordinates? Coordinates;
}
@@ -58,6 +60,7 @@ public static class SuitSensorConstants
public const string NET_JOB_DEPARTMENTS = "jobDepartments";
public const string NET_IS_ALIVE = "alive";
public const string NET_TOTAL_DAMAGE = "vitals";
public const string NET_TOTAL_DAMAGE_THRESHOLD = "vitalsThreshold";
public const string NET_COORDINATES = "coords";
public const string NET_SUIT_SENSOR_UID = "uid";

View File

@@ -46,6 +46,12 @@ public partial class StatusIconData : IComparable<StatusIconData>
/// </summary>
[DataField]
public int Offset = 0;
/// <summary>
/// Sets if the icon should be rendered with or without the effect of lighting.
/// </summary>
[DataField]
public bool IsShaded = false;
}
/// <summary>

View File

@@ -1,157 +1,4 @@
Entries:
- author: ERORR404V1
changes:
- message: Added mime hardsuit
type: Add
id: 5796
time: '2024-01-26T14:43:50.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24198
- author: icekot8
changes:
- message: Correct display of syndicate jaws of life in hand
type: Add
id: 5797
time: '2024-01-27T02:27:14.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24583
- author: Agoichi
changes:
- message: Detective cabinet now have security holoprojector in interests of investigation
type: Tweak
- message: Security lockers have chance to spawn security holoprojector (0.5)
type: Tweak
id: 5798
time: '2024-01-27T02:29:40.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24582
- author: TheShuEd
changes:
- message: Flesh and Rock anomalies have been reworked to place entities more dynamically
when spawning.
type: Tweak
id: 5799
time: '2024-01-27T02:52:07.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24449
- author: PJB3005
changes:
- message: PACMAN-type portable generators now show power statistics for the network
they're connected to.
type: Add
- message: JRPACMAN has been buffed from 5 kW to 8 kW.
type: Tweak
id: 5800
time: '2024-01-27T02:53:44.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24604
- author: Blackern5000
changes:
- message: Shotgun slugs can now be printed in the security techfab.
type: Add
- message: Shotgun slugs now fire a single strong projectile when fired.
type: Tweak
id: 5801
time: '2024-01-27T02:56:57.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24196
- author: I-JustUser-I
changes:
- message: Zombie Outbreak event now has a minimum limit of 15 players.
type: Tweak
id: 5802
time: '2024-01-27T03:53:09.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24577
- author: mirrorcult
changes:
- message: Navmap now defaults to showing departments
type: Tweak
id: 5803
time: '2024-01-27T12:08:50.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24613
- author: Tayrtahn
changes:
- message: Vending machines can now be repaired with a welder.
type: Tweak
id: 5804
time: '2024-01-27T12:12:53.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24603
- author: graevy
changes:
- message: Added hallway screen prototypes and comms console text broadcasts.
type: Add
id: 5805
time: '2024-01-27T13:51:25.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24189
- author: mirrorcult
changes:
- message: Lights are now shaded with the same color that they glow.
type: Tweak
id: 5806
time: '2024-01-27T17:43:45.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24612
- author: Boaz1111
changes:
- message: The PKA shuttle gun now breaks rocks in one hit.
type: Tweak
id: 5807
time: '2024-01-27T17:47:35.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24627
- author: FungiFellow
changes:
- message: Ion Storms are twice as likely to occur.
type: Tweak
id: 5808
time: '2024-01-27T23:14:09.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24633
- author: PJB3005
changes:
- message: Security barriers need 5 seconds to lock and unlock.
type: Tweak
id: 5809
time: '2024-01-28T00:28:02.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24637
- author: themias
changes:
- message: Added cowboy hats and boots to autodrobe, secdrobe, and maints
type: Add
- message: Added cowboy accent
type: Add
id: 5810
time: '2024-01-28T03:23:16.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24299
- author: shampunj
changes:
- message: A new game preset! Can only be selected by admins. All at once.
type: Add
id: 5811
time: '2024-01-28T10:41:36.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23171
- author: Doctor-Cpu
changes:
- message: 3kliksphilips name.
type: Fix
id: 5812
time: '2024-01-28T10:46:32.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24657
- author: mirrorcult
changes:
- message: Speech sounds are now quieter
type: Tweak
id: 5813
time: '2024-01-28T10:49:55.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24579
- author: TheShuEd
changes:
- message: The fire anomaly is now heavier in content.
type: Tweak
- message: Artifacts no longer block projectiles.
type: Tweak
id: 5814
time: '2024-01-29T01:30:55.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24666
- author: Krunk
changes:
- message: Health analysis interfaces now also display a subject's temperature in
Kelvin.
type: Add
id: 5815
time: '2024-01-29T01:32:54.0000000+00:00'
url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24643
- author: Ubaser
changes:
- message: Detectives now work as independent agents, separate from security, and
@@ -3810,3 +3657,160 @@
id: 6295
time: '2024-04-03T05:31:57.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26662
- author: deltanedas
changes:
- message: Disabled scooping foam due to a reagent duplication bug.
type: Fix
id: 6296
time: '2024-04-03T13:41:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26686
- author: Aserovich
changes:
- message: New lobby art!
type: Add
id: 6297
time: '2024-04-04T05:28:30.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26505
- author: Beck Thompson
changes:
- message: Items thrown at disposals now have to be insertable to display the miss
message.
type: Fix
id: 6298
time: '2024-04-04T06:25:47.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26716
- author: Tayrtahn
changes:
- message: Some devices may have broken wiring at the start of each round.
type: Add
id: 6299
time: '2024-04-04T06:28:09.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26695
- author: lzk228
changes:
- message: Turning off thrusters and gyroscopes now stop consume power.
type: Fix
id: 6300
time: '2024-04-04T06:28:33.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26690
- author: Aexxie
changes:
- message: Added the option to disable your OOC Patron name color.
type: Add
id: 6301
time: '2024-04-04T07:20:06.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26653
- author: DinoWattz
changes:
- message: Fixed pocket slots being able to hide character snout markings.
type: Fix
id: 6302
time: '2024-04-04T08:35:44.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26708
- author: VasilisThePikachu
changes:
- message: Mop buckets and Janitorial Trolleys will not spill their contents as
soon as they are pushed.
type: Fix
- message: Mop buckets are no longer solid. So you can now walk through them.
type: Fix
id: 6303
time: '2024-04-04T08:39:55.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26706
- author: ZeroDayDaemon
changes:
- message: Lowered the number of ducks in the duck crate and reduced the price of
it.
type: Tweak
id: 6304
time: '2024-04-04T19:30:13.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26729
- author: PrPleGoo
changes:
- message: The medical HUD's brightness now scales with lighting again.
type: Tweak
- message: Most HUD icon's brightness now scale with lighting.
type: Tweak
id: 6305
time: '2024-04-04T23:05:01.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26726
- author: Daemon
changes:
- message: Practice projectiles have been given standardized minimal damage.
type: Tweak
- message: The practice laser gun now works with shooting targets.
type: Tweak
id: 6306
time: '2024-04-05T03:15:02.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26731
- author: Daemon
changes:
- message: Shooting targets can now have their popup type changed with a left click
to show total damage, damage of a single hit, both, or just a notice that it
was hit.
type: Tweak
id: 6307
time: '2024-04-05T07:19:41.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26734
- author: Vermidia
changes:
- message: Baseball bats now require a knife to craft
type: Tweak
id: 6308
time: '2024-04-05T15:41:35.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26742
- author: deltanedas
changes:
- message: Making fultons now requires cloth and they are faster to make.
type: Tweak
id: 6309
time: '2024-04-05T15:42:12.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26747
- author: superjj18
changes:
- message: Broadcasting works again!
type: Fix
id: 6310
time: '2024-04-05T17:29:22.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26750
- author: Golinth
changes:
- message: Fixed mindshield icons being glow in the dark
type: Fix
id: 6311
time: '2024-04-05T20:35:32.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26754
- author: Blackern5000
changes:
- message: Added sap
type: Add
- message: Added syrup, it can be made by boiling sap.
type: Add
- message: Dionae now bleed sap instead of water
type: Tweak
id: 6312
time: '2024-04-05T21:06:12.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/25748
- author: osjarw
changes:
- message: Thin firelocks are now constructable/deconstructable
type: Fix
id: 6313
time: '2024-04-06T01:55:31.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26745
- author: BITTERLYNX
changes:
- message: Rodents are more visually pleasing to burn
type: Fix
- message: mothroach and hammy also more visually pleasing to burn
type: Fix
id: 6314
time: '2024-04-06T04:41:23.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26758
- author: Plykiya
changes:
- message: You can now carefully walk over glass shards and D4.
type: Tweak
id: 6315
time: '2024-04-06T04:49:14.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/26763

View File

@@ -42,6 +42,7 @@ ui-options-volume-percent = { TOSTRING($volume, "P0") }
ui-options-show-held-item = Show held item next to cursor
ui-options-show-combat-mode-indicators = Show combat mode indicators with cursor
ui-options-opaque-storage-window = Opaque storage window
ui-options-show-ooc-patron-color = Show OOC Patreon color
ui-options-show-looc-on-head = Show LOOC chat above characters head
ui-options-fancy-speech = Show names in speech bubbles
ui-options-fancy-name-background = Add background to speech bubble names

View File

@@ -7,6 +7,9 @@ reagent-desc-insect-blood = Okay, this is really gross. It almost looks.. alive?
reagent-name-slime = slime
reagent-desc-slime = You thought this was gradient blood at first, but you were mistaken.
reagent-name-sap = sap
reagent-desc-sap = Sticky, sweet tree blood.
reagent-name-hemocyanin-blood = blue blood
reagent-desc-hemocyanin-blood = Contains copper as opposed to iron which gives it a distinct blue color.

View File

@@ -39,3 +39,6 @@ reagent-desc-soysauce = A salty soy-based flavoring.
reagent-name-table-salt = table salt
reagent-desc-table-salt = Commonly known as salt, Sodium Chloride is often used to season food or kill borers instantly.
reagent-name-syrup = syrup
reagent-desc-syrup = Delicious syrup made from tree sap, somehow stickier than glue.

View File

@@ -54,7 +54,7 @@
sprite: Mobs/Animals/duck.rsi
state: icon-0
product: CrateNPCDuck
cost: 6000
cost: 4000
category: cargoproduct-category-name-livestock
group: market

View File

@@ -75,10 +75,10 @@
- type: StorageFill
contents:
- id: MobDuckMallard
amount: 2
- id: MobDuckWhite
amount: 2
amount: 1
- id: MobDuckBrown
amount: 1
- id: MobDuckWhite
amount: 2
- type: entity

View File

@@ -77,8 +77,9 @@
animationState: foam-dissolve
- type: Slippery
- type: StepTrigger
- type: ScoopableSolution
solution: solutionArea
# disabled until foam reagent duplication is fixed
#- type: ScoopableSolution
# solution: solutionArea
- type: entity
id: MetalFoam
@@ -134,7 +135,7 @@
- type: RCDDeconstructable
cost: 2
delay: 2
fx: EffectRCDDeconstruct2
fx: EffectRCDDeconstruct2
- type: Clickable
- type: InteractionOutline
- type: Sprite

View File

@@ -415,7 +415,6 @@
makeSentient: true
allowSpeech: true
allowMovement: true
whitelistRequired: false
name: ghost-role-information-mothroach-name
description: ghost-role-information-mothroach-description
- type: Fixtures
@@ -526,6 +525,13 @@
damage: 60
behaviors:
- !type:GibBehavior { }
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
# Note that the mallard duck is actually a male drake mallard, with the brown duck being the female variant of the same species, however ss14 lacks sex specific textures
# The white duck is more akin to a pekin or call duck.
- type: entity
name: mallard duck #Quack
@@ -744,9 +750,8 @@
Quantity: 30
- type: Udder
reagentId: Milk
targetSolution: udder
quantity: 25
updateRate: 30
quantityPerUpdate: 25
growthDelay: 30
- type: Butcherable
spawned:
- id: FoodMeat
@@ -1592,6 +1597,9 @@
- type: BadFood
- type: NonSpreaderZombie
- type: PreventSpiller
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
- type: entity
parent: MobMouse
@@ -3057,10 +3065,13 @@
- type: Bloodstream
bloodMaxVolume: 60
- type: CanEscapeInventory
BaseResistTime: 3
baseResistTime: 3
- type: MobPrice
price: 60
- type: NonSpreaderZombie
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
- type: entity
name: pig
@@ -3164,7 +3175,7 @@
- type: InventorySlots
- type: Strippable
- type: Bloodstream
bloodReagent: Water
bloodReagent: Sap
bloodMaxVolume: 60
- type: UserInterface
interfaces:

View File

@@ -48,7 +48,7 @@
task: SimpleHumanoidHostileCompound
- type: entity
name: syndicate footsoldier
name: syndicate footsoldier
parent: BaseMobHuman
id: MobSyndicateFootsoldier
components:
@@ -75,7 +75,7 @@
save: false # mobs are currently not saveable.
id: SalvageHumanCorpse
name: unidentified corpse
description: I think he's dead.
description: I think they're dead.
components:
- type: RandomHumanoidAppearance
randomizeName: false

View File

@@ -284,6 +284,9 @@
- type: GuideHelp
guides:
- MinorAntagonists
- type: FireVisuals
sprite: Mobs/Effects/onfire.rsi
normalState: Mouse_burning
- type: weightedRandomEntity
id: RatKingLoot

View File

@@ -24,14 +24,14 @@
damageOverlayGroups:
Brute:
sprite: Mobs/Effects/brute_damage.rsi
color: "#75b1f0"
color: "#cd7314"
- type: Butcherable
butcheringType: Spike
spawned:
- id: FoodMeatPlant
amount: 5
- type: Bloodstream
bloodReagent: Water
bloodReagent: Sap
- type: Reactive
groups:
Flammable: [ Touch ]

View File

@@ -392,10 +392,10 @@
- type: SolutionContainerManager
solutions:
food:
maxVol: 30
maxVol: 25
reagents:
- ReagentId: Nutriment
Quantity: 25
Quantity: 20
- type: entity
id: FoodSnackMREBrownie

View File

@@ -120,7 +120,6 @@
- ItemMask
- type: StepTrigger
intersectRatio: 0.2
requiredTriggeredSpeed: 0
- type: TriggerOnStepTrigger
- type: ShoesRequiredStepTrigger
- type: Slippery

View File

@@ -63,7 +63,6 @@
acts: [ "Destruction" ]
- type: StepTrigger
intersectRatio: 0.2
requiredTriggeredSpeed: 0
- type: ShoesRequiredStepTrigger
- type: Slippery
slipSound:

View File

@@ -9,6 +9,7 @@
noRot: true
- type: Repairable
- type: DamagePopup
allowTypeChange: true
damagePopupType: Combined
- type: Fixtures
fixtures:

View File

@@ -228,7 +228,7 @@
name: practice laser rifle
parent: WeaponLaserCarbine
id: WeaponLaserCarbinePractice
description: This modified laser rifle fires harmless beams in the 40-watt range, for target practice.
description: This modified laser rifle fires nearly harmless beams in the 40-watt range, for target practice.
components:
- type: HitscanBatteryAmmoProvider
proto: RedLaserPractice
@@ -488,7 +488,7 @@
name: practice disabler
parent: WeaponDisabler
id: WeaponDisablerPractice
description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. This one has been undertuned for cadets.
description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. This one has been undertuned for cadets making it mostly harmless.
components:
- type: Sprite
sprite: Objects/Weapons/Guns/Battery/practice_disabler.rsi

View File

@@ -35,7 +35,7 @@
id: RedLaserPractice
damage:
types:
Heat: 0
Heat: 1
muzzleFlash:
sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi
state: muzzle_laser

View File

@@ -102,7 +102,7 @@
- type: Projectile
damage:
types:
Blunt: 2
Blunt: 1
- type: entity
id: BaseBulletRubber
@@ -288,7 +288,7 @@
fly-by: *flybyfixture
- type: Ammo
- type: StaminaDamageOnCollide
damage: 5
damage: 1
- type: Projectile
impactEffect: BulletImpactEffectDisabler
damage:
@@ -641,7 +641,7 @@
shader: unshaded
- type: AnomalousParticle
particleType: Sigma
- type: entity
parent: AnomalousParticleSigma
id: AnomalousParticleSigmaStrong
@@ -650,7 +650,7 @@
components:
- type: AnomalousParticle
particleType: Sigma
# Launcher projectiles (grenade / rocket)
- type: entity
id: BulletRocket

View File

@@ -40,6 +40,21 @@
tags:
- BaseballBat
- type: entity
name: incomplete baseball bat
parent: BaseItem
id: IncompleteBaseBallBat
description: A few planks of wood stuck together.
components:
- type: Sprite
sprite: Objects/Weapons/Melee/incomplete_bat.rsi
state: icon
- type: Item
size: Normal
- type: Construction
graph: WoodenBat
node: incompleteBat
- type: entity
name: knockback stick
parent: BaseBallBat

View File

@@ -151,7 +151,7 @@
- type: entity
id: FirelockEdge
parent: BaseFirelock
parent: Firelock
name: firelock
components:
- type: Sprite
@@ -181,3 +181,6 @@
canCollide: false
- type: StaticPrice
price: 100
- type: Construction
graph: Firelock
node: FirelockEdge

View File

@@ -114,7 +114,9 @@
node: mailing_unit
- type: DisposalUnit
autoEngageEnabled: false
mobsCanEnter: false
whitelist:
components:
- Item
- type: MailingUnit
- type: DeviceNetwork
deviceNetId: Wired

View File

@@ -23,6 +23,7 @@
- type: Spillable
solution: bucket
spillDelay: 3.0
spillWhenThrown: false
- type: DrainableSolution
solution: bucket
- type: RefillableSolution
@@ -61,6 +62,7 @@
priority: 3 # Higher than drinking priority
- type: Drink
solution: bucket
- type: Appearance
- type: SolutionContainerVisuals
maxFillLevels: 3
fillBaseName: mopbucket_water-
@@ -82,6 +84,15 @@
behaviors:
- !type:DoActsBehavior
acts: ["Destruction"]
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeAabb
bounds: "-0.45,-0.45,0.45,0.45"
density: 60
mask:
- MachineMask
- type: entity
name: mop bucket
@@ -207,6 +218,7 @@
- type: Spillable
solution: bucket
spillDelay: 3.0
spillWhenThrown: false
- type: SolutionContainerManager
solutions:
bucket:

View File

@@ -142,6 +142,7 @@
- id: BasicTrashVariationPass
- id: SolidWallRustingVariationPass
- id: ReinforcedWallRustingVariationPass
- id: CutWireVariationPass
- id: BasicPuddleMessVariationPass
prob: 0.99
orGroup: puddleMess

View File

@@ -119,3 +119,15 @@
tilesPerSpillAverage: 150
tilesPerSpillStdDev: 10
randomPuddleSolutionFill: RandomFillTrashPuddleBloodbath
- type: entity
id: CutWireVariationPass
parent: BaseVariationPass
noSpawn: true
components:
- type: CutWireVariationPass
wireCutChance: 0.01
maxWiresCut: 20
blacklist:
components:
- ParticleAcceleratorControlBox

View File

@@ -164,3 +164,27 @@
# eating salt on its own kinda sucks, kids
- !type:SatiateThirst
factor: -0.5
- type: reagent
id: Syrup
name: reagent-name-syrup
group: Foods
desc: reagent-desc-syrup
flavor: sweet
color: "#fb7125"
recognizable: true
physicalDesc: reagent-physical-desc-sticky
slippery: false
viscosity: 0.55 #Start using syrup to attach your remote recievers to your microwaves!
tileReactions:
- !type:SpillTileReaction
metabolisms:
Food:
# 12 diona blood for 1 unit of syrup, this stuff better be worthwhile.
effects:
- !type:SatiateHunger
factor: 6.0 #Stronger than cookedramen
footstepSound:
collection: FootstepBlood
params:
volume: 6

View File

@@ -82,6 +82,32 @@
params:
volume: 6
- type: reagent
id: Sap
name: reagent-name-sap
group: Biological
desc: reagent-desc-sap
flavor: sweet
color: "#cd7314"
recognizable: true
physicalDesc: reagent-physical-desc-sticky
slippery: false
viscosity: 0.10
tileReactions:
- !type:SpillTileReaction
metabolisms:
Food:
# Sweet!
effects:
- !type:SatiateHunger
factor: 1
- !type:SatiateThirst
factor: 1
footstepSound:
collection: FootstepBlood
params:
volume: 6
- type: reagent
parent: Blood
id: CopperBlood

View File

@@ -103,6 +103,14 @@
- tool: Anchoring
doAfter: 1
- to: FirelockEdge
conditions:
- !type:EntityAnchored
anchored: true
steps:
- tool: Welding
doAfter: 0.5
- to: FirelockGlassFrame
conditions:
- !type:EntityAnchored
@@ -160,3 +168,14 @@
steps:
- tool: Anchoring
doAfter: 1
- node: FirelockEdge
entity: FirelockEdge
edges:
- to: frame4
conditions:
- !type:DoorWelded
welded: true
steps:
- tool: Anchoring
doAfter: 0.25

View File

@@ -795,6 +795,23 @@
conditions:
- !type:TileNotBlocked
- type: construction
name: Thin firelock
id: FirelockEdge
graph: Firelock
startNode: start
targetNode: FirelockEdge
category: construction-category-structures
description: This is a firelock - it locks an area when a fire alarm in the area is triggered. Don't get squished!
icon:
sprite: Structures/Doors/edge_door_hazard.rsi
state: closed
placementMode: SnapgridCenter
objectType: Structure
canBuildInImpassable: false
conditions:
- !type:TileNotBlocked
- type: construction
name: shutter
id: Shutters

View File

@@ -1,13 +1,31 @@
- type: constructionGraph
- type: constructionGraph
id: WoodenBat
start: start
graph:
- node: start
edges:
- to: bat
- to: incompleteBat
steps:
- material: WoodPlank
amount: 5
doAfter: 4
- node: incompleteBat
entity: IncompleteBaseBallBat
edges:
- to: start
completed:
- !type:SpawnPrototype
prototype: MaterialWoodPlank1
amount: 5
- !type:DeleteEntity {}
steps:
- tool: Prying
doAfter: 1
- to: bat
steps:
- tool: Slicing
doAfter: 4
- node: bat
entity: BaseBallBat

View File

@@ -1,11 +1,10 @@
- type: latheRecipe
id: Fulton
result: Fulton1
completetime: 5
completetime: 1
materials:
Steel: 200
# TODO: Need better sources of cloth as otherwise these will never get made.
# Cloth: 200
Cloth: 100
- type: latheRecipe
id: FultonBeacon

View File

@@ -25,6 +25,19 @@
Water: 4
Nitrogen: 1
- type: reaction
id: SapBloodBreakdown
source: true
requiredMixerCategories:
- Centrifuge
reactants:
Sap:
amount: 10
products:
Water: 9
Sugar: 1
- type: reaction
id: CopperBloodBreakdown
source: true

View File

@@ -20,6 +20,19 @@
products:
EggCooked: 0.5
- type: reaction
id: SapBoiling
impact: Low
minTemp: 377
reactants:
Sap:
amount: 1.2
effects:
- !type:CreateGas
gas: WaterVapor
products:
Syrup: 0.1 #12:1 sap to syruop
# Holy - TODO: make it so only the chaplain can use the bible to start these reactions, not anyone with a bible
- type: reaction

View File

@@ -4,8 +4,8 @@
id: BasicRobotics
name: research-technology-basic-robotics
icon:
sprite: Mobs/Silicon/drone.rsi
state: drone
sprite: Structures/Machines/exosuit_fabricator.rsi
state: fab-idle
discipline: Experimental
tier: 1
cost: 5000

View File

@@ -1,32 +1,35 @@
- type: statusIcon
id: HealthIconFine
id: HealthIcon
abstract: true
priority: 1
locationPreference: Right
isShaded: true
- type: statusIcon
parent: HealthIcon
id: HealthIconFine
icon:
sprite: /Textures/Interface/Misc/health_icons.rsi
state: Fine
locationPreference: Right
- type: statusIcon
id: HealthIconCritical
priority: 1
parent: HealthIcon
icon:
sprite: /Textures/Interface/Misc/health_icons.rsi
state: Critical
locationPreference: Right
- type: statusIcon
id: HealthIconDead
priority: 1
parent: HealthIcon
icon:
sprite: /Textures/Interface/Misc/health_icons.rsi
state: Dead
locationPreference: Right
- type: statusIcon
id: HealthIconRotting
priority: 1
parent: HealthIcon
icon:
sprite: /Textures/Interface/Misc/health_icons.rsi
state: Rotting
locationPreference: Right

View File

@@ -1,49 +1,57 @@
#Hunger
- type: statusIcon
id: HungerIconOverfed
id: HungerIcon
abstract: true
priority: 5
locationPreference: Right
isShaded: true
- type: statusIcon
id: HungerIconOverfed
parent: HungerIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: overfed
locationPreference: Right
- type: statusIcon
id: HungerIconPeckish
priority: 5
parent: HungerIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: peckish
locationPreference: Right
- type: statusIcon
id: HungerIconStarving
priority: 5
parent: HungerIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: starving
locationPreference: Right
#Thirst
- type: statusIcon
id: ThirstIconOverhydrated
id: ThirstIcon
abstract: true
priority: 5
locationPreference: Left
isShaded: true
- type: statusIcon
id: ThirstIconOverhydrated
parent: ThirstIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: overhydrated
locationPreference: Left
- type: statusIcon
id: ThirstIconThirsty
priority: 5
parent: ThirstIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: thirsty
locationPreference: Left
- type: statusIcon
id: ThirstIconParched
priority: 5
parent: ThirstIcon
icon:
sprite: /Textures/Interface/Misc/food_icons.rsi
state: parched
locationPreference: Left

View File

@@ -3,6 +3,7 @@
abstract: true
priority: 1
locationPreference: Right
isShaded: true
- type: statusIcon
parent: JobIcon

View File

@@ -4,6 +4,7 @@
priority: 2
offset: 1
locationPreference: Right
isShaded: true
- type: statusIcon
parent: SecurityIcon

View File

@@ -31,6 +31,7 @@
priority: 1
locationPreference: Right
layer: Mod
isShaded: true
icon:
sprite: /Textures/Interface/Misc/job_icons.rsi
state: MindShield

View File

@@ -40,4 +40,4 @@
#
#- type: lobbyBackground
# id: Behonker
# background: /Textures/LobbyScreens/behonker.webp
# background: /Textures/LobbyScreens/behonker.webp

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 393 B

View File

@@ -37,3 +37,8 @@
license: "CC-BY-NC-SA-3.0"
copyright: "InCrah on twitter / @in_crah"
source: "https://twitter.com/in_crah"
- files: ["terminalstation.webp"]
license: "CC-BY-SA-3.0"
copyright: "aserovich on discord"
source: "https://github.com/space-wizards/space-station-14"

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

View File

@@ -0,0 +1,2 @@
sample:
filter: true

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1 +1,51 @@
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0", "states": [{"name": "Generic_mob_burning", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1, 0.1]]}, {"name": "Monkey_burning", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}, {"name": "Standing", "directions": 4, "delays": [[0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1], [0.1, 0.1, 0.1, 0.1]]}]}
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from https://github.com/tgstation/tgstation at 0d9c9a8233dfc3fc55edc538955a761a6328bee0",
"states": [
{
"name": "Generic_mob_burning",
"directions": 4,
"delays": [
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ]
]
},
{
"name": "Monkey_burning",
"directions": 4,
"delays": [
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ]
]
},
{
"name": "Standing",
"directions": 4,
"delays": [
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1 ]
]
},
{
"name": "Mouse_burning",
"directions": 4,
"delays": [
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ],
[ 0.1, 0.1, 0.1, 0.1, 0.1 ]
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

View File

@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-NC-SA-3.0",
"copyright": "Taken from goonstation and modified by Swept at commit https://github.com/goonstation/goonstation/pull/3555/commits/b24eb6260647c0fcfe858268a26b6160bc50017a, modified into incomplete version by Vermidia",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 808 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 B

After

Width:  |  Height:  |  Size: 746 B

View File

@@ -1,7 +1,7 @@
{
"version": 1,
"license": "CC0-1.0",
"copyright": "Created by EmoGarbage",
"copyright": "Created by EmoGarbage, icon & unshaded changed by lzk228",
"size": {
"x": 32,
"y": 32
@@ -14,11 +14,12 @@
"name": "icon"
},
{
"name": "printing",
"name": "printing",
"delays": [[0.25, 0.25, 0.25, 0.25]]
},
{
"name": "unshaded"
"name": "unshaded",
"delays": [[2, 1, 1, 1]]
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 B

After

Width:  |  Height:  |  Size: 635 B