Compare commits

...
1271 Commits
Author SHA1 Message Date
Tobias Berger 66f23833c6 Fix tests 2026-01-30 04:08:49 +01:00
Tobias Berger 333948591f More trait stuff
HasTraitCondition instead of Conflicts and Requirements
RemoveBodyPartEffect instead of AmputeeComponent/System
Remove redundant BorgChassis checks
Remove failed condition check and just show the full one
Improve vision trait conditions
2026-01-30 03:12:03 +01:00
Milon 51d605f67b Formatting and some other fixes 2026-01-30 00:35:09 +01:00
Delta-V bot f7106c611a Automatic changelog update 2026-01-29 18:47:58 +01:00
Field Commandandpre-commit-ci[bot] 00615a24ed CentComm stuff (#5315)
* CentComm stuff

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* hmm...

---------

Signed-off-by: Field Command <159087063+FieldCommand@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-29 18:47:38 +01:00
Theo ab308d2832 Halve Space Law Sentencing Times (#5249)
* Reduce times in space law and SOP, in guidebook and wiki

* cat c 12 minutes instead of 10

* update crime assist
2026-01-29 19:39:19 +02:00
Delta-V bot fca6d1e23a Automatic changelog update 2026-01-29 18:25:25 +01:00
Pharaz4 430dabf980 Remove Syndie comms from disaster victims and guards (#5280)
* remove syndicomms from disaster victims

* removed from syndicate guard as well. (dropship ruin has a guard)

* fix harpy wing showing on cc hardsuit
2026-01-29 17:25:05 +00:00
Delta-V bot 44276029d8 Automatic changelog update 2026-01-29 17:56:04 +01:00
Pharaz4 75fad779a8 Merge pull request #5293 from Pharaz4/cherrypickattempt
LIZARDS GET TAILS ON HARDSUITS!!!
2026-01-29 17:55:43 +01:00
Tobias Berger 29eaf0a10f Merge pull request #5087 from BarryNorfolk/merge_november
Upstream Merge (November 2025)
2026-01-29 15:49:13 +00:00
Tobias Berger 8a2be49722 Changelog stuff! 2026-01-29 16:26:10 +01:00
Tobias Berger 80690ed56f Tiny things not worth requesting changes for 2026-01-29 15:07:33 +01:00
ConstantlyConfused f71bf01e3c Make unholy water actually have a color (#5312)
make unholy water actually have a color
2026-01-29 00:48:47 -06:00
Delta-V bot 1a59f9d47b Automatic changelog update 2026-01-27 19:58:44 +01:00
Tobias Berger 3bcaf85b04 hotfix-plasteel (#5298) 2026-01-27 18:58:24 +00:00
c58b2a30f7 Tank Dispenser Recolor (#5267)
* Add files via upload

Tank Dispenser Recolor

Signed-off-by: Thingy461 <darmentici@gmail.com>

* Add files via upload

Minor tweak to vending machine YAML for tank dispenser recolor

Signed-off-by: Thingy461 <darmentici@gmail.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix line endings

* Apply suggestions from code review

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Apply suggestion from @ShepardToTheStars

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Update Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Thingy461 <darmentici@gmail.com>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-27 12:50:37 -06:00
BarryNorfolk d486fedb48 Apply #41461 to _DV security borg modules 2026-01-27 19:13:59 +01:00
Delta-V bot f1eef43203 Automatic changelog update 2026-01-27 18:55:31 +01:00
Pharaz4 8f8f5042ab Disable Wizard until Rebalanced (#5228)
* Remove wizard from midround antags until rebalanced

* Removed wizard from roundstart antags

---------

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>
2026-01-27 11:55:11 -06:00
Delta-V bot a5c9af9759 Automatic changelog update 2026-01-27 17:05:40 +01:00
AstraandTobias Berger 7cf3873b4c Printable plasteel (#5284)
* Printable plasteel

* Actually make it a bit faster

* Move to that other recipe pack

* Recipes are named after their result

---------

Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-27 10:05:20 -06:00
Delta-V bot 31b8acfdd9 Automatic changelog update 2026-01-27 06:51:00 +01:00
Halo3moth bd6a1b461c Security longcoat resprite (#5288)
* My coats are so long

* making the hos longcoat more hoslike
2026-01-26 23:50:41 -06:00
BarryNorfolk 08b9954cf4 Also apply #41149 to all magazines and ammo boxes 2026-01-26 20:09:09 +01:00
BarryNorfolk 837028c356 Apply #41583 to all thief stash-like entities 2026-01-26 19:51:43 +01:00
BarryNorfolk 96e9b4faee Move xenoborg lawsets above DeltaV 2026-01-26 19:29:45 +01:00
BarryNorfolk b13941f317 Use existing hardsuit extra table 2026-01-26 19:25:33 +01:00
BarryNorfolk bfa08f7f69 Upa APC max load to 40 kW 2026-01-26 19:25:33 +01:00
BarryNorfolk 22fff89a01 Fix issue with weaponUids not being passed correctly for weapons used by entities 2026-01-26 19:25:32 +01:00
BarryNorfolk 6a6ab152f8 Disable xenoborgs at roundstart 2026-01-26 19:25:32 +01:00
MilonandPrincess Cheeseballs 857ddff7cb fix solution contents duplication on spill behavior (#33231)
* I’M SCREAMING INTO THE VOID AND IT’S NOT LISTENING

* review

* explodes pancakes with mind

* graaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

* Meteors RAAAAAAAAAAH

* I'm so tired of solutions

* whhop

* revert

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
Noah BeverlyandJustin Pfeifler 3a96154bca Mail Cart (#41482)
* Add mailcart crate type

* Add recent progress, move location of mailcart.rsi

* Allow letters and packages to be inserted

* Add updated sprites for mailcart

* Add storage for letters

* Bugfix for sprite

* Add fix for mincount mailcart sprite updates

* Add dynamic names to packages in mailcart

* Add additional whitelist items

* Update tag comments

* Remove max item size

* Update fixture for mailcart, remove unused code from crates.yml

* Add mail cart to cargo ordering

* Update meta.json

* Remove unused comment

* Update copyright

* Add missing ContainerContainer

* Update ContainerContainer

* Revert "Update ContainerContainer"

This reverts commit 1805dcd58d8c0f52baca9db0d3173940ee241159.

* Remove container slots and increase storage

* Remove unused tags

* Remove LetterDelivery tag

---------

Co-authored-by: Justin Pfeifler <jrpl101998@gmail.com>
2026-01-26 19:25:32 +01:00
BarryNorfolk 12c74b3da3 Fix power draw on Defib cabinet when not charging anything 2026-01-26 19:25:32 +01:00
BarryNorfolk ec6e4af68e Stop the laser gun bounty allowing LaserTag guns 2026-01-26 19:25:32 +01:00
ādaandiaada 039a377a51 Five bounty arbitrage fixes (#41846)
* commit

* tweak

* more bounties

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
BarryNorfolk bdc0d0120d Only run StationPowerTests over stations in DeltaV 2026-01-26 19:25:32 +01:00
Samukaandāda e248258369 Fix xenoborg modules (#41625)
* change name from heavy laser to laser cannon

* fixed some ids

* fix name and description

* change cost of upgrade modules

* remove unwield penalty

* commentary

* change name of scout modules

* same firerate as before

* typo

Co-authored-by: āda <ss.adasts@gmail.com>

* new line at end of file

* duplicated

---------

Co-authored-by: āda <ss.adasts@gmail.com>
2026-01-26 19:25:32 +01:00
BarryNorfolk 349337e1d5 Downstream fixes for battery unification 2026-01-26 19:25:32 +01:00
slarticodefastandPrincess Cheeseballs 17ff77b61f Unify BatteryComponent and PredictedBatteryComponent (#41867)
* unify

* cleanup and merge conflicts

* floating points

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
slarticodefast d039f6fdfd Fix rigged power cells exploding early (#41813)
* fix riggable

* fix
2026-01-26 19:25:32 +01:00
slarticodefast 055fffa5da fix AI battery alert (#41879)
* fix AI battery alert

* fix copy paste error
2026-01-26 19:25:32 +01:00
slarticodefast 530d9dda4d Add debug hitscan weapon (#41658)
* debug gun

* predict
2026-01-26 19:25:32 +01:00
Princess CheeseballsandPrincess Cheeseballs 2e6b2141ee Fix Damageable API (#41657)
Fix damageable api

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
alexalexmaxandslarticodefast 1bba368d22 Add Changeling DNA store (#41632)
* created changeling dna currency and locale currency name

* created changeling store category, created changeling-catalog.ftl

* added store and action to Urist McLing

* found the entity

* make armblade a purchase

* comment

* created ApplyToMob datafield and applied to armblade

* ApplyToMob check in storesystem

* Update Resources/Prototypes/Catalog/changeling_catalog.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
Princess CheeseballsandPrincess Cheeseballs 5fbeecb011 [HOTFIX] FIX LIGHT MELEE LOGS (#41655)
God fugcking

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
BarryNorfolk aa86c808f9 Fork fixes for multi reagent bloodstreams 2026-01-26 19:25:32 +01:00
Ignaz "Ian" KraftandPrincess Cheeseballs c292094b77 multi reagent bloodstream (#41489)
* multi reagent bloodstream

* pluralize the comments

* fix TryModifyBloodLevel return logic

* now with quantity

* now with solution

* implement suggestions

* fix forensics

* minor thing

* Nevermind undo that caps matters.

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:32 +01:00
beck-thompson 38bb9232c0 Add water flower for clowns (#41469)
* Spray!

* Add to clown loadout

* Fix the easy things

* lot nicer

* spray update..

* Fix yaml

* fixes

* changed it to warning!

* review

* review

* sku
2026-01-26 19:25:32 +01:00
slarticodefast ac4fcd5dc6 fix rcd overlay getting stuck for borg modules (#41648)
fix rcd overlay getting stuck
2026-01-26 19:25:31 +01:00
Princess CheeseballsandPrincess Cheeseballs b4d96c43b5 Make Firespread logical (#41636)
* FIRE

* code comment fix

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:25:31 +01:00
slarticodefast 8e298dbbac predict name identifiers (#41605) 2026-01-26 19:25:31 +01:00
slarticodefast da88db8775 Predict borgs (#41600)
* predict borgs

* small fix

* fix MMI item slot serialization

* fix movement speed for mothership core

* review and minor improvement

* fix resolve

* review
2026-01-26 19:25:31 +01:00
SlamBamActionman 43832b5d5a Fix clientsided alerts being overwritten by server (#37033)
Initial commit
2026-01-26 19:25:31 +01:00
ādaandiaada c98d7cbb13 Fix EquipmentVerbs not showing up in strip menu (#41631)
commit

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:25:31 +01:00
Samuka 8445778bc1 Make xenoborg round end text better (#41623)
* make xenoborg win color easier to read

* display the max number of xenoborgs and the number of crew alive in the end

* make it a datafield

* add : (literally)

* add period

* make text better
2026-01-26 19:25:31 +01:00
Minemoder5000 ce42a2aafb Add StatusIcon component to MobBaseAncestor (#41624)
add StatusIcon to ancestor
2026-01-26 19:25:31 +01:00
JackspajfMain 97bbb53d7f Change to add shot glasses to the bartender guidebook entry (#41618)
adds shot glass to bartender guidebook
2026-01-26 19:25:31 +01:00
NoreUhhandNoreUhh 33a9c44e55 Felinase/Caninase Reagent Tweaks (#41527)
* Tweaked reagents required for recipes, increased output of recipe, lowered time of accent per unit, and tweaked chem thresholds

* tweaks

i was lazy

* product change

lazy again

* yuh

* pluh

---------

Co-authored-by: NoreUhh <noreuhh@gmail.com>
2026-01-26 19:25:31 +01:00
ArtisticRoomba fff5850a67 Properly document AtmosDeviceEnabled(Disabled)Event (#41613)
kill misnomers
2026-01-26 19:25:31 +01:00
slarticodefast 447b4c5109 Fix looking at verbs causing sounds or popups (#41609)
* fix verb popups

* spelling
2026-01-26 19:25:31 +01:00
alexalexmaxandslarticodefast d7da7cb7d0 Adds option to whitelist or blacklist store entries based on buyer objectives (#41493)
* BuyerObjectiveWhitelistCondition done

* fix to check every buyer objective for a blacklisted objective before checking whitelisted objectives

* resolved requested changes

* forgot a line

* Update Content.Server/Store/Conditions/BuyerObjectiveWhitelistCondition.cs

* Replaced IsBlacklistPass with IsWhitelistPass

* cleaning up

* placed whitelist == null check above objective loop

* Moved empty whitelist check below foreach loop

* final cleanup i pray

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:25:31 +01:00
Pok 53b5100f6a Helper method for get charge level (#41601)
* get-charge-percent

* review
2026-01-26 19:25:31 +01:00
imatsoup b2256e29a3 Change thief backpack ui name and description with Component fields (#41583)
* Add new name and description fields to the thiefbackpack component and ui

* Change fields to locids, remove Title from menu.xaml, add comments to  thiefbackpackui.cs
2026-01-26 19:25:31 +01:00
slarticodefast 525ffdc8f5 Fix helmet lights (#41599)
fix helmet lights
2026-01-26 19:25:31 +01:00
Samuka f2d31a3d31 Update mothership again (#41491)
* add xenoborg recharging station

* it was backwards

* make it a tad darker

* touch ups

* add xenoborg blast door sprites

* update sprites

* add xenoborg blast door

* improve blast door sprite

* typo

* make it thinner

* update mothership

* moved yml lines

* updated xenoborg charger sprite

* removed unused state

* fixes to the mothership
2026-01-26 19:25:31 +01:00
Alzore a8502bc4e6 Meatball Salvage wreck remake (#41589)
Remake-Meatball-Wreck
2026-01-26 19:25:31 +01:00
Errant b0b28467f5 Make gameticker spawn code more modular (#41588)
gameticker dospawn
2026-01-26 19:25:31 +01:00
CDWimmer 317ab5a006 Fewer War Crimes (#41541)
* Fewer War Crimes

Re-colour the syndicate medical bags to not use the legally restricted Red Cross symbol and instead use the same blue cross colours as used across the rest of the game's medical symbolism.
Because no-one wants to go to the Hauge. Also consistency is nice.

* Update meta.json

* Update another meta.json

* Update meta.json again

additional detail
2026-01-26 19:25:31 +01:00
YoungThug b0de59321a Tourniquets can now fit in medical belts (#41584) 2026-01-26 19:25:30 +01:00
Connor Huffine 1a911f708b Remove commented items (#41577) 2026-01-26 19:25:30 +01:00
Stefano Pigozzi 883244dc0e Fix typo in Ion Storm lawsets (#41574)
Pizzaria → Pizzeria
2026-01-26 19:25:30 +01:00
BarryNorfolk 0a27397ffb Fix several systems and protos after powercell prediction change 2026-01-26 19:25:30 +01:00
BarryNorfolk 831c73235d Fix for missing namespace in Nanochat 2026-01-26 19:25:30 +01:00
BarryNorfolk 7ebd8d9dc8 Fix and mark microwave time addition for BeingMicrowaved 2026-01-26 19:25:30 +01:00
slarticodefast 50b2986ef7 Predict powercells, chargers and PowerCellDraw (#41379)
* cleanup

* fix fixtures

* prediction

* fix test

* review

* fix svalinn visuals

* fix chargers

* fix portable recharger and its unlit visuals

* fix borgs

* oomba review

* fix examination prediction
2026-01-26 19:25:30 +01:00
Jessey van Hoeijen 92de25f0f3 Fix stunbaton component namespace (#34790)
* Fixed incorrect namespace

* .Components was weird so I removed it
2026-01-26 19:25:30 +01:00
slarticodefast 8158432428 Fix gas filters (#41567)
fix gas filters
2026-01-26 19:25:30 +01:00
Samuka e1609ce7ee No more sub wizards in xenoborg preset (#41565)
no more sub wizards in xenoborg preset
2026-01-26 19:25:30 +01:00
slarticodefast 0afecfea98 Add test checking for multiple container fills, mark StorageFillComponent as obsolete (#41562)
add test, obsolete storagefill
2026-01-26 19:25:30 +01:00
BarryNorfolk b1ebff0742 Remove blacklist methods from fork changes 2026-01-26 19:25:30 +01:00
slarticodefast 23c832b185 Remove blacklist methods in EntityWhitelistSystem (#40932)
* replace blacklist methods

* VS is trolling me
2026-01-26 19:25:30 +01:00
Leon Friedrichandslarticodefast 368f68376c Add Whitelist.Components yaml valiation (#40916)
* Add Whitelist.Components yaml valiation

* poke_tests

* fix linter

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:25:30 +01:00
HohenzolarenandReWAFFlution 0381e99b73 Balloons now float and slide smoothly. (#41102)
* The balloons became airy

* Attributions + Sound

* Add BaseBalloon

* Proto fixes

---------

Co-authored-by: ReWAFFlution <239567049+brokendot@users.noreply.github.com>
2026-01-26 19:25:30 +01:00
BarryNorfolk e68e6d07ae Replace all storage fills with entity table container fills 2026-01-26 19:25:30 +01:00
SnappingOpossum 73c686a7d3 Replace (almost) all existing storage fills with entity table container fills (#41360)
* Replace all existing storage fills with container fills, adjust some formatting to accomadate

* Forgot to remove that

* I really need to spell better

* Right, those are 3x3

* Change some NestedSelectors to GroupSelectors

* Actual container fills, test fix (maybe), and a few minor formatting changes

* Fix some more mistakes

* Forgot to add to that comment

* Some parenting fixes

* Test optimisation, maybe

* Roll holiday lights instead of individually listing it

* Move eletrical toolbox to NestedSelector

* Back to entity tables (except for vending)

* More nesting (and a TODO)

* Yet another fix

* Probably shoulda done it this way originally

* Entity tables for vending restocks

* I am good at formatting

* Make added table names consistent

* Make grand lottery weights a little more readable

* Use existing fills for bio suit crates

* Get rid of some more redundant amounts

* Nuke the StorageFill test section and update some comments

* Apply changes from code review

* Split off changes to vending restocks

* Split off changes to vending restocks

* Apply more changes from code review

* Attempt #2 of detangling this mess (oh shit I missed the pin)

* They look so similar

* I am great at formatting

* Missed a newline

* How did I manage to do that

* Move toy in FoodMealHappyHonkClown to top to prioritise

* Apply changes from review and move dank pizza to organise by weight
2026-01-26 19:22:40 +01:00
Samuka c8ad093fcf Add xenoborg laws to ion storm chance (#41532)
add xenoborg laws to ion storm chance
2026-01-26 19:22:40 +01:00
Justin Pfeifler fadcb72d80 Fix Paper Default Interaction (#41547)
* Fix paper default interaction

* Remove BeforeUIOpen

* Revert "Remove BeforeUIOpen"

This reverts commit c0db6c743f7cd07279b8a509317a54925a5f7d27.

* Revert "Fix paper default interaction"

This reverts commit 7efae70b96fbb5800a0e043b6deca176babe3399.

* Trigger UI before Ingestion

* Revert "Trigger UI before Ingestion"

This reverts commit a642ab40bf5b973d7e5f5b772d578dc2b9a436c1.

* Trigger ingestion after ui
2026-01-26 19:22:40 +01:00
ādaandiaada 87167d0267 Bugfix: Borg's can't die anymore (#41492)
* commit

* other borgs

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:40 +01:00
rwrv e8dcc60a8e Remove references to fingers in low tier cold damage (#41496)
* Update health-examinable-carbon.ftl

* Rework wording to be more similar to other descriptions
2026-01-26 19:22:40 +01:00
slarticodefast 21d9f97988 Revert "FTL Fixes (#39040)"
This reverts commit 52a9f9b576.
2026-01-26 19:22:40 +01:00
slarticodefast 4dc3688751 Make artifact analyzer power supply sane (#41543)
make artifact analyzer power supply sane
2026-01-26 19:22:40 +01:00
Ciarán Walsh 8d90d3f3ad Defibs will now also shock anyone still interacting with the target. (#35998)
* Defibs will now also shock anyone still interacting with the target.

* Improvements to test readability

* Apply fixes to other tests

* Refactor the interacting entities query to use an event.

* Include pullers as interacting with the entity they are pulling

* Broadcast event

* Use a constant

* Convert new test to InteractionTest

* Convert existing test

* Add behaviour note

* Revert "Convert existing test"

This reverts commit b8a8f2f68e3733bdb6ec254faf955a42096d47d7.

* Move new test into separate (InteractionTest) test file

* Use ToServer

* Use a constant for prototype id

* Use ToServer

* Add EntProtoId constructor

* Add assertion failure messages

* Manual cleanup of test entities

* Remove obsolete flag

* Add test summaries

* Remove tuple constructor

* Wrap entity deletion in WaitPost

* Extend DoAfter interacting test with an extra mob
2026-01-26 19:22:40 +01:00
rlebell33andslarticodefast c153abae29 Improve hitboxes for knives and shivs to better match their sprites (#39100)
* update hitbox for kitchen knife and butcher's cleaver

* update hitbox for the 4 glass type shivs

* update hitbox for the medical shiv

* Update the hitbox for the plastic knife

* review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:40 +01:00
korczoczek 2c2e05684b Let PopupOnTrigger display names of user and item (#41157)
* waved away

* waves at you with my [Prime Cut Corgi Meat]

* pls dont litter the repository with unnecessary components

* forgot to remove a variable from testing

* guh

* the more things change, the more things stay the same

* and then she ternaried everywhere

* owie
2026-01-26 19:22:40 +01:00
Errant 2a9fa18625 HOTFIX Add logging to gamepreset fallback (#41522)
* Add logging to gamepreset fallback

* cleanup
2026-01-26 19:22:40 +01:00
K-DynamicandCadunkus 59b6e85654 Add vox hairstyle (catfish hair) (#40689)
* add vox catfish

Co-authored-by: Cadunkus <140308611+Cadunkus@users.noreply.github.com>

* change indents from 2 to 4 in meta.json

* update sprite

Co-authored-by: Cadunkus <140308611+Cadunkus@users.noreply.github.com>

---------

Co-authored-by: Cadunkus <140308611+Cadunkus@users.noreply.github.com>
2026-01-26 19:22:40 +01:00
Errant a7bdabe06d Admin improvements for Looc and Deadchat (#41273)
* looc and deadchat speak interrupt events

* comment

* admin log tweak

* clean up log entity targets; switch admin deadchat logged entity from player to mob

* one event only

* rename event, broadcast player session with the event
2026-01-26 19:22:40 +01:00
SnappingOpossum ebc5a5b2d7 Move vending restocks to EntityTableContainerFills (#41442)
* Move vending restocks to EntityTableContainerFills

* Glad I can actually see that fail now

* I could of just gone back to checking all the containers but nooo had to be stubborn

* Apply changes from code review
2026-01-26 19:22:40 +01:00
Nemanjaandslarticodefast 6cecca668a Decouple GasPrototype IDs from Gas Enum (#41266)
* Remove final enum coupling from gas YAML

* Fix comment

* Fix test

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:40 +01:00
MrPersivalandSnappingOpossum fc52f91396 Fix scalefriends food problem #39982. Hivelord Remains now meat and edible by anyone who can digest it (#41317)
* fix(hivelord-remains): now reptilians can also eat hivelord remains

* fix(hivelord-remains): added meat and raw tags

* moved(hivelord-remains): moved from meat.yml back to asteroid.yml

* fixed(meat): added the new line

Co-authored-by: SnappingOpossum <snappingopossum@outlook.com>

---------

Co-authored-by: SnappingOpossum <snappingopossum@outlook.com>
2026-01-26 19:22:40 +01:00
Partmedia 6dcf6b07d5 Trip APCs when they exceed a power limit (#41377)
* Implement APC overloading

* Add power test

* Review

* Some more reviews

* Show map coordinates for test failures

* Widen column 2

* Reduce singularity beacon power consumption

* Try to get grid coordinates
2026-01-26 19:22:40 +01:00
Princess CheeseballsandPrincess Cheeseballs 15b6134646 [1984] Beach balls no longer collide with players (#41450)
* 1984

* me when I'm dumb

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:22:40 +01:00
Nuggets219 cde5756823 Give Rust Removal a shorter Doafter (#770) (#41518)
* Give Rust Removal a shorter Doafter (#770)

* Yeah, yeah, mircobalance. Every janitor player will fight you though. Welding and brushing walls free of rust now takes just three seconds.

* Now reinforced walls take a bit longer to de-rust. Times are as follows:

Solid wall: 1s weld, 3s brush
Reinforced wall: 2s weld, 3s brush

* Actually, just make both take 4s to brush and 1s to weld. Problem solved.

* changed the welding timer from 1 to 2 seconds for lag compensation.
2026-01-26 19:22:40 +01:00
ThatGuyUSA a6e117acf2 Add admin antag control command for making people into Wizards (#41494)
* innit bruv, but also done!

* added comment to signify why it's like that
2026-01-26 19:22:40 +01:00
ThatGuyUSA 4138a87959 Munitions visibility tweaking and cleanup (#41137)
* I didn't make an init commit, 1: because i forgot, 2: because the PR is so tiny, the whole thing is done already

* beans and shards no glow, clean up

* commented out PointLight, does too little for how straining it would be

* Improvised shells now use shards as their bullet sprite, they still don't embed though
2026-01-26 19:22:39 +01:00
lzk c100ca0e01 cleanup evil beach ball (#41499) 2026-01-26 19:22:39 +01:00
korczoczek fec6410ff5 Fix blinking animation of disembodied head hologram (#41498)
start blinking normal
2026-01-26 19:22:39 +01:00
Samuka e426c4e523 Fix the round end trigger for xenoborgs (#41467)
math
2026-01-26 19:22:39 +01:00
Tiniest Sharkandslarticodefast 53116a1f57 Remove Basic Hardsuit Helmet Sprites (#41490)
* Deletes basic helmet

* you forgot one file

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
Hitlinemoss 6c5c264ec8 Removed redundant clothing from CMO locker; moved neck gaiter from HoS locker to HoS dresser (#41487) 2026-01-26 19:22:39 +01:00
371d1082c0 AdminLogOnTrigger (#41474)
* commit

* requested

* also requested

* Update Content.Shared/Trigger/Components/Effects/AdminLogOnTriggerComponent.cs

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
ādaandiaada 68497caf9a 5 new triggers: EmptyContainers, Knockdown, Stun, TriggerOnThrowDoHit (#41472)
* ideas

* finish components

* systems

* one more

* requested

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
slarticodefastandiaada cfccd56886 AddTagOnTrigger, RemoveTagOnTrigger, SwapPositionOnTrigger, JitterOnTrigger (#41476)
* more triggers

* comment

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
slarticodefast 7c05afc362 Cleanup TipsSystem, add TippyOnTrigger (#41477)
* tippy on trigger and refactor

* optional parameter for command
2026-01-26 19:22:39 +01:00
Samuka 8c8800abe8 add 2 empty lines to xenoborg round end text (#41436)
* add 2 empty lines

* add one line on the top

* swap from the start to the end
2026-01-26 19:22:39 +01:00
cammusubi 7308866f1a Per issue #41143, 'ClusterBang' was changed to 'clusterbang' (#41470)
Per issue #41143, 'ClusterBang' was changed to display as 'clusterbang' in-game.
2026-01-26 19:22:39 +01:00
Samukaandslarticodefast 7c1c298c8c Examine which borg that module fits into (#41461)
* modules tip

* add color

* solved a edge case

* use ContentLocalizationManager instead of hardcoded grammar

* improve summary

* improve improved summary

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* not my first language

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* keep names consistent

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* keep consistent part 2

* fixed the yml error

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
Samuka a9f7ccb3a7 Make mothership core able to pull (#41460)
* make mothership core able to pull again

* make it work like borgs
2026-01-26 19:22:39 +01:00
SamukaandScarKy0 9a70cf8470 Update mothership (#41453)
* add body crusher sprites

* body crusher yml

* add xenoborg thruster sprites

* add xenoborg thruster yml

* update mothership

* only one IFF computer

* tabs

* fuck

* fixed indentation

* replace tabs with spaces

* change id MachineBodyCrusher to MachineArtifactCrusherXenoborg

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>

* change id XenoborgThruster to ThrusterXenoborg

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>

* update Ids in mothership

---------

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
slarticodefast b6b9421075 Make crawl speed depend on your free hand count (#41458)
* crawl speed

* I can't spell
2026-01-26 19:22:39 +01:00
slarticodefast 8673745f13 fix DamageAbleSystem.SetDamage (#41456)
fix SetDamage
2026-01-26 19:22:39 +01:00
Princess CheeseballsandPrincess Cheeseballs 2e6996eb3b Fix Gas Reagent Thresholds. (#41438)
* Fix reagent gas scales

* add comment

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:22:39 +01:00
ScarKy0 9df5861552 Remove Aghosts from "Warp to Most Followed" (#41448)
* init

* review
2026-01-26 19:22:39 +01:00
Fildranceandpa.pecherskij 9b6fd85222 Minor Knock spell refactor + fix its obstruction check (#41447)
* refactor: remove isFirstTimepredicted for knock XAE

* refactor: cleanups

* refactor: do not count laser obstructions toward stuff that blocks Knock spell, project spell from artifact and not node

* refactor: no method-events for knock-spells

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2026-01-26 19:22:39 +01:00
Connor Huffine 7f2efcf6cc Fix typo in roundstartvariation (#41444)
Fix typo
2026-01-26 19:22:38 +01:00
lzk 46428ce2de yaml cleanups (id, hypopen, inflatable wall) (#41432)
* cleanups

* yes i can
2026-01-26 19:22:38 +01:00
April ee533cb3f2 chore: made regalrat go the speed he should go (#41420)
that's a 5, not the defaulted back 4.5 from `UpdateMovementSpeed` in
Content.Shared/Body/Systems/SharedBodySystem.Parts.cs
2026-01-26 19:22:38 +01:00
lzk 8f79ae88be rotate more items in inventory part 3 + cleanup for good (#41149)
* rotate more items in inventory part 3 + cleanup for good

* i forgor
2026-01-26 19:22:38 +01:00
lzk 39850bafd5 improve APE desc, battery weapon desc, and locked desc (#41431)
* improve APE desc and locked desc

* 2
2026-01-26 19:22:38 +01:00
6c89c5df3d Mini Energy Crossbow (#39796)
* draft 1

* mono audio

* missed something

* end the torment

* release me

* let me free

* Submodule fix?

* submodule fix?

* thousand years of suffering

* fix conflicts mehopes

* fuuuhuck

* balance update

* small numbers change

* re-organises the stun values yada yada

* newline

---------

Co-authored-by: beck-thompson <beck314159@hotmail.com>
Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2026-01-26 19:22:38 +01:00
2738eb5f5f Xenoborgs part 7 (#40042)
* add mothership module

* option for mothership to open self UI

* fix mothership module

* remove mothership body

* swapp real hands for modules

* action sprite for mothership module

* removed hands from mothership core sprite

* xenoborgs now drop a pinpointer to the mothership core once destroyed

* add pinpointer to space movment module

* add base for XenoborgRule

* add xenoborg antag option

* something was needed

* something else was needed

* add ghost role spawn points

* change name in antag selection to Xenoborg Core

* add random spawnPoint markers that don't do anything

* add spawn points to mothership

* update spawn points

* add xenoborgs rule

* add xenoborgs rule to rotation

* add xenoborgs preset

* update preset with secret version
also added xenoborg mode description

* modify Antag Selection system to allow for custom entities via the AntagSelectionDefinition

* fix ghostroles spawners

* fix rule with new entityPrototype

* add spawnpoints to the mothership

* whitelist system to spawnpoints

* updated xenoborg components

* added xenoborg component to xenoborgs

* updated spawnpoints of xenoborgs in the mothership

* add new tags for xenoborg and mothership core

* add new tags for xenoborgs and mothership core

* update ghostrole spawners for xenoborgs

* message for when you get the xenoborg role

* explode all xenoborgs when mothership core dies

* for real now. explode all xenoborgs when mothership core is destroyed

* round end summary for xenoborgs

* temporary

* add guidebook entry for xenoborgs

* instructions on how to borg players

* removed lock from xenoborg control computer

* announcement when all xenoborgs die

* announcement when mothership core is destroyed

* typos

* fix error

* improve xenoborg mind role

* move sounds to xenoborg and mothership component

* play sounds when turned into xenoborg

* change sprites of mothership core actions

* minor fix

* add custom xenoborg start sound

* carps now attack xenoborgs

* added guide link to xenoborgs

* add guidebook link to xenoborgs

* added guidebook link to mothership core

* add link to source of the sound

* fixed minor issue

* has to be 1

* typo

* add light layer to mothership core sprite

* fixed antag selection system

* update guideboook

* update the guidebook again

* alphabet

* documentation

* simplify documentation

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>

* make the briefing yml instead of code

* fix bug with sprites

* fix formating

* remove stuff from AntagSelection

* add stuff to AntagSpawner

* fix game rule

* removed secret xenoborg preset

* support for more than one entity for each antag role

* fix gamerule

* fixes

* no xeonborgs

* add xenoborgs to all at once

* engi xenoborg included

* more comments

* more recognizable

* more xenoborgs when more players

* removed unused stuff

* correct access

* removed unnecessary stuff

* use GetAliveHumans and make comments better

* Make the system more robust

* use a constant

* remove overload from the Destroy method

* has to be public to be used in the xenoborg system

* fix the mindrole methods

* not sure, but I was asked to do it

* use a constant for the color

* forgot to make it static

* removed param comments

* removed useless parameters

* fixed stuff

* added event listeneers to xenoborg mind change

* only 4

* unfuck the antagSpawner

* comment

* unfix stuff

* commentary

* removed xenoborg stuff from siliconLawSystem

* move some stuff to the component

* removed space

* removed uncessary stuff

* no need to crate a var

* move stuff from mothership comp to xenoborg comp

* removed XenoborgCoreRoleComponent

* comment on the AntagSelectLocationEvent

* added back empty line

* comment

* make the summary better

* make AntagRoleToPrototypes summary better

* adding useless stuff back cause it was there before

* hascomp instead of trycomp

* again

* LocId instead of string

* make a new logic for the whitelist of the spawnpoint

* added ghostrole tags back

* use hascomp instead of trycomp

* removed whitelist from SpawnPointComponent

* not needed anymore

* no longer subverted

* fixed names

* make it better

* add not

* i'm dumb

* briefing is now handled by the xenoborg system

* call evac if there is too many xenoborgs

* update submodule

* fix division

* Add AutoGenerateComponentPause and AutoPausedField to XenoborgsRuleComponent

* add lines between stuff

* Make the Blocking system more robust

* Make mothership inherit from BaseMob

* remove this stuff cause is bad

* Revert "Make the Blocking system more robust"

This reverts commit 099babfe1daef00e6073e04108920327416e4ca4.

* Mothership core snaps to grid

* stop mothership core from moving

* mothership core is static again

* make guidebook entry on how to xenoborg crew better

* Make mothership core damageable

* If xenoborgs need it, so do zombies i guess

* Start the NextRoundEndCheck

* follow private static readonly naming rule

* Samething

* Fix announcments

* Make it a datafield, no?

* Revert "Make it a datafield, no?"

This reverts commit 62f6255ccccdd583d7f833ae4dbcd09a670f721a.

* remove stuff

* doesn't need to move

* is kinda of a structure

* so it doesn't pry floors as soon as it spawns

* powercell hand to mothership core module

* label for new hand

* core_e -> core-e

* mothership core can pilot the shuttle again

* fix duplicated tag + description to xenoborg tags

* scout xenoborg can now move in space without the jetpack so it can better use the sword module

* improve basic xenoborg module

* remove changes from zombie rule comp

* swap AllEntityQuery for EntityQueryEnumerator

* new line at the end

* change to 15 seconds

* make MothershipCoreDeathAnnouncmentSent into a datafield

---------

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: beck-thompson <beck314159@hotmail.com>
2026-01-26 19:22:38 +01:00
Hitlinemoss 47d3d41b7f Security IDs no longer have Service access by default (#41411) 2026-01-26 19:22:38 +01:00
ādaandiaada 8ec79f47fe RandomTriggerOnTriggerComponent (#41422)
* commit

* rename

* prevent recusion

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:38 +01:00
MissKay1994andSlamBamActionman 849948fa12 Briefcase gun for lawyers (#40210)
* definitely not a gun

* You only imagined this tag

* Brace with your gut

* Definitely did not procrastinate for eternity

* Suing javascript formatting

* Tear down the system

* Yay for hardcoding

* EVIL COURT

* Attributions for skreee

* Move new sprites into own folder

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2026-01-26 19:22:38 +01:00
BeBrightandBeBright 0855551989 MingGetBriefing -> MindGetBriefing (#41413)
Co-authored-by: BeBright <98597725+be1bright@users.noreply.github.com>
2026-01-26 19:22:38 +01:00
metalgearsloth 483a0e714b Update engine submodule to 268.0.0 (#41408) 2026-01-26 19:22:38 +01:00
Leon Friedrich d8fd83a18f Update RaiseEventBenchmark for engine changes (#37349)
* Update RaiseEventBenchmark

* fix test

* poke_tests
2026-01-26 19:22:38 +01:00
slarticodefastandKyle Tyo e06942410d Add keybinds for openening a specified component in VV (#41348)
* quick inspect

* Update Content.Client/Commands/QuickInspectCommand.cs

Co-authored-by: Kyle Tyo <36606155+VerinSenpai@users.noreply.github.com>

* documentation!!!

---------

Co-authored-by: Kyle Tyo <36606155+VerinSenpai@users.noreply.github.com>
2026-01-26 19:22:38 +01:00
Leon Friedrich 2fba7e49f6 Fix admin log exception (#41242)
Fix admin logs
2026-01-26 19:22:38 +01:00
metalgearsloth 05b8cb4d9e Bandaid solution name setter events (#41400)
Ideally PDAs + IDs wouldn't be doing this but this is slamming it out.
2026-01-26 19:22:38 +01:00
ādaandiaada 9c1552a14e Add missing plushies to AllPlushiesTable (#41398)
* weh!

* rare lamp

* among

* buff

* nerf

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:38 +01:00
Nox 6c7d4f68a9 More Resilient Grenades (#34499)
* Inital commit

* Balanced damage to explode instantly

* Rebalanced based on suggestions

* matched all grenade instant thresholds to 45 damage.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Redid files and values

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Minor spelling mistake

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Moved abstracts and fixed typo in comments

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

---------

Signed-off-by: Nox38 <nebulousnox38@gmail.com>
2026-01-26 19:22:38 +01:00
April 750d4cd809 chore: added a full stop to the tooltip of the accentless speech trait (#41392)
chore: added a full stop to the accentless tooltip in en-us

this makes it consistent with the other tooltips
2026-01-26 19:22:37 +01:00
SolidSyn 34b698ddf2 Adds the clown skirt and black lawyer suitskirt to HoPs uniform lathe (#39846) 2026-01-26 19:22:37 +01:00
Pieter-Jan Briers a9283034ad Update GDPR dump script to latest migration (#41387) 2026-01-26 19:22:37 +01:00
Princess CheeseballsandPrincess Cheeseballs 420f0bc836 [HOTFIX] Prevent Payload Enumeration Failure. (#41376)
* Prevent payload enumeration failure when spawning entities

* hate it here

* boop

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:22:37 +01:00
ArtisticRoombaandslarticodefast 75ba38b45c Document Atmospherics Utils (#41385)
* Utils docs

* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2026-01-26 19:22:37 +01:00
ArtisticRoomba df38a61127 Document Atmospherics API (#41382)
* api docs

* rem using dir. linq in atmospherics not allowed.

* address review
2026-01-26 19:22:37 +01:00
Aiden b41b453e31 Prototype-ize Mind (#41384)
* Use MindBase prototype for mind creation

* Create mind.yml

* Add ContainerContainer
2026-01-26 19:22:37 +01:00
beck-thompson 59ca21e28a Remove wizards healing wand for the random magic item spell (#41365)
Remove wizards healing wand for the random spell
2026-01-26 19:22:37 +01:00
kin98 a9b49de934 Fix: obsolete warnings in SharedAbsorbentSystem (#40885)
* fix: formating warnings

* split GetAbsorbentReagents into string and protoid

* fix: changed SplitSolutionWhitout [obsolete] to use new method

* fix: missing using directive after merge

* Replaced methods with ProtoId variant
2026-01-26 19:22:37 +01:00
metalgearsloth 6319a96441 Fix invalid AABBs (#41381)
LBRT LBRT LBRT LBRT not RTLB
2026-01-26 19:22:37 +01:00
Errant ef6dd83899 HOTFIX: automatically reset fallback gamemode to default (#41367)
automatically reset fallback gamemode to default after the round
2026-01-26 19:22:37 +01:00
SlamBamActionman 88ab510a05 HOTFIX: Reword Wizard objective text to be more hostile (#41371)
Initial commit
2026-01-26 19:22:37 +01:00
ArtisticRoombaandCrude Oil 27e51c7228 Yet another revitalization of engine lighting changes (#41361)
* cherrypick lighting changes

* increase computer light

---------

Co-authored-by: Crude Oil <crude@croil.net>
2026-01-26 19:22:37 +01:00
metalgearsloth 4a3d74b74d Update submodule to 267.4.0 (#41364) 2026-01-26 19:22:37 +01:00
Sir Warock cc26f5cb0f Fix Ammo Visuals Bug (#41362)
Fix Ammo Count Updating
2026-01-26 19:22:37 +01:00
Princess CheeseballsandPrincess Cheeseballs c97cdd847f Fix Paradox Clone Forensics (#41358)
i forgor to push

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2026-01-26 19:22:37 +01:00
slarticodefastandArtisticRoomba 05f08d7221 Cleanup BatterySystem (#41298)
* cleanup

* fix fixtures

* this belongs into the next PR

* review

* misc

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2026-01-26 19:22:37 +01:00
BarryNorfolk ac49b73132 Add removed Magnum tag to _dv 2026-01-26 19:22:37 +01:00
ādaandiaada a2888e322a Remove unused tags (#41265)
* the letter R

* the letter S

* extras

* the letter T

* the letter U

* the letter V

* the letter W

* the final letter ( X )

* the easy ones

* Unused b and c

* unused d

* unused G

* unused I

* unused K

* un used m and p

* the letter R

* unused T

* un used W

* re-add heavy rifle, document magazines

* final alphabet

* Merge remote-tracking branch 'upstream/master' into work/tag-nuke

* delete haunted

* Revert "delete haunted"

This reverts commit 870d782f7d97a1d7cb34cd14a288cc0cd0299cce.

* mistake

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:37 +01:00
ādaandiaada 3eb627023e Document tags.yml: R-Z (#41257)
* the letter R

* the letter S

* extras

* the letter T

* the letter U

* the letter V

* the letter W

* the final letter ( X )

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2026-01-26 19:22:36 +01:00
Delta-V bot 1f15e3c4b9 Automatic changelog update 2026-01-26 11:46:42 +01:00
keekee38andVanessa e43c61c7c0 A new security SMG, maybe (#5212)
* still very wip sprite wise but functions

* idunno if it worked

* testing suitstorage

* ok getting there,

* ok maybe ready now :3

* oopsie daisy,

* Revert "oopsie daisy,"

This reverts commit d9bfdff6c2.

* okay please play nice github,

* im just a dog smh

* changes done ^^

* figured should at least make it consistent with other safe ids

* added descriptions to em all :3

* Partial migration of removed content from upstream #34293. Moved files to DV namespace.

---------

Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
2026-01-26 10:46:22 +00:00
Delta-V bot 0f5940d463 Automatic changelog update 2026-01-25 17:46:31 +01:00
MD360andVanessa c8b5038ccb Chem Dispenser Auto-Labeling (Frontier) (#5261)
* Auto label port

* Make it so it works/comments

* Post review changes.

* Post review change part two.

* review pt 3

* Fixed client UI from not getting updated.

---------

Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
2026-01-25 10:46:12 -06:00
Delta-V bot 6bb4151430 Automatic changelog update 2026-01-25 17:32:14 +01:00
Vanessaandpre-commit-ci[bot] ec041a0f22 Of Hats and Hardsuit Helmets (#5263)
* Now you can toggle your helm with a hat on

* Added container to toggleable clothing in YAML.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fixed YAML fail.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-25 10:31:55 -06:00
Delta-V bot c9faffdfa5 Automatic changelog update 2026-01-25 17:31:42 +01:00
Pharaz4andVanessa 08f668496e Fixing some issues (#5278)
* cleaned effect spam in entity panel

* fix drinking whole keg (fatty)

* fix smart fridge sprite

* added utensil fork to bowl base thing

* butlerton can no longer wreak havoc

* added comment

* Fixes #1451

* Apply suggestions from code review

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-25 10:31:38 -06:00
AeraAulinandVanessa 0e107c0bc7 shadow damage tweak (#5268)
* one line yaml change

* forgot the comment

* Update Resources/Prototypes/Damage/modifier_sets.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-25 10:31:19 -06:00
Delta-V bot 16c3948503 Automatic changelog update 2026-01-25 17:30:37 +01:00
Milonandpre-commit-ci[bot] d16a306326 marked as protected trait (#5274)
* protected trait

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* right

* direction

* REFLECTION

* whoopsie

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-25 10:30:18 -06:00
Milonandpre-commit-ci[bot] 884cf115c6 more traits improvements (#5285)
* wowie

* whoopsie

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* WHY DID I DO THAT

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-25 09:12:38 -06:00
Delta-V bot df364a806a Automatic changelog update 2026-01-25 15:42:28 +01:00
Tobias Berger 78e0a0943e Add more info to escape menu (#5260) 2026-01-25 08:42:09 -06:00
Delta-V bot 2dc9dace20 Automatic changelog update 2026-01-25 14:49:13 +01:00
Halo3moth 9f46103e59 Energy magnum fix (#5270)
* Fixes it?

* truth be told i have no idea what im doing
2026-01-25 07:48:53 -06:00
github-actions[bot]andDeltaV-Bot de8953d6fe Update Credits (#5281)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2026-01-25 02:23:08 +01:00
Delta-V bot 4011a81ba0 Automatic changelog update 2026-01-25 01:13:30 +01:00
Field Command 2bd6751034 Pebble map standard update (#5164)
* Pebble standard update

* Added red phone to bridge.
2026-01-24 16:13:10 -08:00
Delta-V bot c5a556d2fb Automatic changelog update 2026-01-24 22:30:17 +01:00
Milon 96304b787b add uncloneable back (#5273)
* why

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
2026-01-24 21:29:58 +00:00
Delta-V bot 599994118e Automatic changelog update 2026-01-24 21:55:51 +01:00
Milon 1b464c265d fix trait points bar rendering on ultrawide montiors (#5275)
* whoopsie
2026-01-24 20:55:31 +00:00
Delta-V bot 6a45579bd5 Automatic changelog update 2026-01-24 21:16:41 +01:00
Colin-Tel 44a7f48861 Update division.yml (#5271)
* Update division.yml

* Update division.yml
2026-01-24 12:16:21 -08:00
Delta-V bot db9b9faf33 Automatic changelog update 2026-01-23 20:36:18 +01:00
pootslap d6b4992638 LPO cannot speak on binary comms (#5243)
* minus one encryption key

* Update events.yml
2026-01-23 19:35:57 +00:00
Delta-V bot a86c4d6ee6 Automatic changelog update 2026-01-23 20:32:08 +01:00
d39d9caae4 Captain's armored winter coat and suit buff (#5227)
* caps carapa

* caps hardsuit

* caps winter coat

* caps hardsuit part2

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Revert "caps carapa"

This reverts commit dc007a12e5.

* Revert "caps hardsuit part2"

This reverts commit e210aa5792.

* Revert "caps hardsuit"

This reverts commit ffe1055df2.

* makes caps winter coat the same

* fix

* Update Resources/Prototypes/_DV/Entities/Clothing/OuterClothing/wintercoats.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* fix some things

---------

Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-23 13:31:48 -06:00
Delta-V bot 15ec1b94fe Automatic changelog update 2026-01-23 11:24:52 +01:00
8f130cb0bb Migrate Chronic Pain to the New Status Effect System (#5180)
* Renamed InPain to ChronicPain. Changed references.

* Updated meds to use the name status effect system for chronic pain suppression. Standardized popup chances for all meds.

* Migrated ChronicPain to the new Status effect system. Basically re-wrote it and re-organized it.

* Cleanup and tweaks.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fixed cloning traits for pain.

* Addressing Milon-san's feedback uwu

* Apply suggestions from code review

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Turned floats into TimeStamps.

* Derp

* Forgot the trait lol

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-23 10:24:32 +00:00
github-actions[bot]andDeltaV-Bot 989b978712 Update Credits (#5259)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2026-01-21 23:23:13 +01:00
Tobias Berger 522556a628 Automate credits workflow (#5258)
* Change GITHUB_TOKEN to BOT_TOKEN in credits workflow

Signed-off-by: Tobias Berger <toby@tobot.dev>

* If at first you don't succeed

Try try again

* Maybe this one?

* Surely this time it'll work

* Chest compressions, chest compressions, chest compressions

* squasmgsh

* Undo that

* Hm yes newline

---------

Signed-off-by: Tobias Berger <toby@tobot.dev>
2026-01-21 23:20:18 +01:00
Delta-V bot 178f913afc Automatic changelog update 2026-01-21 17:29:14 +01:00
Apachito cb1619933e Fix crafting graph on Tide breaker (#5239)
* Fix crafting graph

* Fix real

* Update tidebreaker.yml

* Revert "Update tidebreaker.yml"

This reverts commit 0c1abdce31.
2026-01-21 10:28:54 -06:00
Delta-V bot d745475364 Automatic changelog update 2026-01-21 17:23:34 +01:00
Vanessaandpre-commit-ci[bot] 260cd9f83d Looooooooooooongcoats (#5235)
* Fixed some inconsistencies in DV-specific winter coats

* Added longcoat sprites. Changed like everything in the YAML.

* Fixed captain's armored longcoat having pockets.

* Added crew and sec longcoats to their respective drobes.

* Added longcoats to dressers and captain's locker.

* Added non-armored coats to lathe packs.

* Sprite namespace

* Added longcoats to loadouts.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* typo

* Fixed sec off's coat armor values.

* Removed duplicate of WardenLongcoat

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Arbitrage tests once again

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-21 16:23:13 +00:00
Delta-V bot b4f9c28e48 Automatic changelog update 2026-01-21 15:51:09 +01:00
Tobias Berger c608211019 Change FTL times (#5257)
This partially reverts #3309 because the changed startup_time made the
FTL sound end way before FTL actually happens.
2026-01-21 08:50:49 -06:00
Delta-V bot 61a236698a Automatic changelog update 2026-01-21 15:19:16 +01:00
VanessaandTobias Berger ea2f0a21aa Ninja Stealth Fix?/Nerf? (#5217)
* Changed up how ninja's stealth is removed after they get hit.

* Logic fix

* Update Content.Shared/Ninja/Systems/SharedSpaceNinjaSystem.cs

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-21 15:18:56 +01:00
Delta-V bot ab5541668a Automatic changelog update 2026-01-21 10:37:27 +01:00
Colin-TelandTobias Berger cd2a9368de Anglish accent (#4092)
* Adds Anglish accent

* I'm done

* really??

* add traits and add/subtract

* Update anglish.ftl

lol

* Did the stuff

* changed eth to thorn and added species

* forgot about a file & misc change

* Apply suggestions from code review

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com>

* rip Regex

* misspelling

* ILOVEWORDSILOVEWORDS

* vitally important replacement

* even more words

* updated it

* update

---------

Signed-off-by: Colin-Tel <113523727+Colin-Tel@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-21 10:37:06 +01:00
Vanessa db61bff22f Turned MIT licensing into opt-out rather than opt-in (#5253)
* Turned MIT licensing into opt-out rather than opt-in

* Clarity
2026-01-21 09:20:43 +01:00
Delta-V bot 390d594ec8 Automatic changelog update 2026-01-21 06:52:29 +01:00
Cepelinas1 0ef3ceec7d Gives Logistics Officer access to shipyard (#5251)
first thing
2026-01-20 23:52:09 -06:00
Delta-V bot 469603ca32 Automatic changelog update 2026-01-21 06:17:25 +01:00
turtlemutt ebf2bd7246 More Random Names (#5254)
more names
2026-01-20 23:17:05 -06:00
Delta-V bot 4b6f56785f Automatic changelog update 2026-01-21 00:30:27 +01:00
Colin-Tel fdc3ce6284 Division & Chibi updates (#5241)
* updated maps

* adjust surgeon role amount
2026-01-20 17:30:07 -06:00
Halo3moth 6b16212f18 Buff and fixes for energy shotgun (#5204)
* Buffs and fixes

* Direction changes
2026-01-20 15:29:18 -06:00
Delta-V bot 55bacdaa07 Automatic changelog update 2026-01-20 22:15:41 +01:00
ConstantlyConfused 5169b5324e Make space pens stop killing avali (#5181)
* make avali no longer spawn with space pens

* blows up test fail with mind

* un-modify awawi survial kits

* give space pens "stabilizine" (a modified lepo
2026-01-20 15:15:21 -06:00
Delta-V bot 81c323df20 Automatic changelog update 2026-01-20 12:50:19 +01:00
4364eaa388 real traits system (#5208)
* holy shit?

* final touches

* this is dumb

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* whatever go my integration tests

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* whoopsie forgot blacklists

* load bearing loc

* minor stuff

* whoopsie

* cool

* I LOVE REFLECTION

* got a call from the stink department

* i love fluent yes

* direction changes

* waiter more migrations please

* typo ops

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-20 12:49:59 +01:00
pootslapandVanessa f05e2613df Long range examining (#5219)
* no more up close examines

* Update Content.Shared/Examine/ExamineSystemShared.cs

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Update Content.Shared/Examine/ExamineSystemShared.cs

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-20 12:49:48 +01:00
Tobias Berger 0c62185537 idk why I didn't do this in the first place (#5244) 2026-01-19 13:24:59 +01:00
Vanessa ed1a3d6af1 Medical Cyborg Tweaks (#5126)
* Allow health analyzers to work if you switch hands

* Added consistency to empty hand borg locales

* Added pills and jet injectors to chemical module. Added soap to advanced surgery. Fixed borg locale strings.

* DeltaV comment

* Also added the ability for surgery modules to hold organs. Fixes #4479.
2026-01-19 08:56:45 +00:00
Delta-V bot 3470957717 Automatic changelog update 2026-01-19 03:21:51 +01:00
turtlemutt afb9184f2c Lighthouse Tweaks (again) (#5154)
* Update lighthouse.yml

* Update lighthouse.yml

* Update lighthouse.yml

* Update lighthouse.yml
2026-01-19 03:21:31 +01:00
Delta-V bot 0cf93249c5 Automatic changelog update 2026-01-18 19:47:27 +01:00
Dorragon 0f3eb79aa7 Port Ready Manifest from Impstation (#5187)
Meow meow moew meow emweo
2026-01-18 12:47:07 -06:00
ConstantlyConfused 428ca45cdb Remove the duplicate syndicate radio uplink entry (#5240)
remove the duplicate syndicate radio uplink entry
2026-01-18 11:29:16 -06:00
Delta-V bot f25f84cc07 Automatic changelog update 2026-01-18 18:19:04 +01:00
96b1623016 Reinforced cameras / ai cameras and router (#5027)
* AI cam router

* reinforced camera try one

* reinforced camera try two

* reinforced camera try 3

* reinforced camera try 4

* reinforced camera try 5

* reinforced camera try 6

* reinforced camera try 7

* reinforced camera try 8

* AI router fix

* test balance

* Test construction rework

* name fix

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* New reinforced camera code

Recommend by ShepardToTheStars thanks a lot for the recommendation and code start

* fixed the one missing lv wire

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Name fix agian

* removed the extra frequency

* AHHHHHHHHH

* fuck

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* 1

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Structures/Wallmounts/WallmountMachines/reinforced_surveillance_camera.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* last part

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

* now the last batch

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>

---------

Signed-off-by: snowywinters <134970424+snowywinters@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-18 11:18:45 -06:00
Delta-V bot bd18a7f1f8 Automatic changelog update 2026-01-18 05:41:07 +01:00
DisposableCrewmember42 d022112deb fix: You can no longer drink the deep fryer (#5238)
Signed-off-by: DisposableCrewmember42 <disposablecrewmember42@proton.me>
2026-01-17 22:40:48 -06:00
Delta-V bot 5f7d5c29e9 Automatic changelog update 2026-01-18 02:55:15 +01:00
biddygelson 7e6e96ca99 Academy 1.5.0 (#5130)
* * replaced distro and waste pumps with enabled versions
* added vacuum tiles to unused atmos chambers, now trit recycling won't be mixed in chamber.
* split epi artifact APCs to better manage power, wasn't a problem at idle but one scrubber would go over 20k for an APC.
* added fishing spot in park with fishing vendor.
* Robotics Control Console added to robotics.
* Added arrivals signs to arrivals.
* Added AI restoration console to Mystagogue Office
* Added anti-meteor zones for Arrivals and Evac
* Added anti-anomaly zone to PA exterior, no anoms in the Tesla/Singularity!
* Made botany/hydro larger for more trays and grinder.
* Named air alarm in armory.

* removed bombing targets from waypoints to keep up with upstream.

* Added basic materials and plasteel to cargo.
Moved all department holopad fronts behind the counter rather than public access.

* tweaks; replaced toilets with filled versions, named APC in AI core, added valve in atmos exterior, changed most* bedroom lights to have warm lights.
2026-01-18 01:54:55 +00:00
DeltaV Bot e68610febd Merge pull request #5237 from DeltaV-Station/automated/credits-2026-01-17T22-06-15
Update Credits
2026-01-17 23:06:22 +01:00
DeltaV-Bot f9853b5d8d Update Credits 2026-01-17 22:06:17 +00:00
Delta-V bot 8ddd156e23 Automatic changelog update 2026-01-17 22:37:04 +01:00
Halo3moth 344481771e Readding the slim version of T1 vest to sec (#5220)
* God i hope i didnt fuck up where to put this

* Forgot lockers existed for a moment
2026-01-17 15:36:45 -06:00
Tobias Berger 5b25fcb2c5 Fix indentation in workflow
Bypass rules yolo

Signed-off-by: Tobias Berger <toby@tobot.dev>
2026-01-17 22:22:40 +01:00
Delta-V bot c4ffead268 Automatic changelog update 2026-01-17 22:14:18 +01:00
VelcroboyandVelcroboy 718dcabb6f Clean up perma chefvend and add dull bread knife (#5234)
* Clean up perma chefvend and add dull bread knife

* add more s&P

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-17 15:13:59 -06:00
Tobias Berger 645d8b6b26 Maintaining (#5214)
* Try and touch up workflows, god help me if this breaks something

* Remove unused email

* Remove Breaking changes, we don't do those here

* Better PR template

* Change header in new pr template

* Use different token

* No approval workflow
2026-01-17 15:12:52 -06:00
Vanessa b9202e5955 Fixed RubberStampGreytide Heisentest Fail (#5233)
Fixed a failing DV test because RubberStampGreytide inherited a component that said it shouldn't be mapped, but it now appears in maints lockers
2026-01-17 22:11:07 +01:00
Delta-V bot f4837ba87e Automatic changelog update 2026-01-17 17:52:49 +01:00
This_Is_Gray 2f549d5522 Minor Elegance Fix (#5198)
* Update elegance.yml

* many fish dancing OUTSIDE the pot, wait get back in there . GUYS WHERE ARE YOU GOING PLEASE!!
2026-01-17 10:52:29 -06:00
Delta-V bot 922c4a5e50 Automatic changelog update 2026-01-16 20:08:05 +01:00
Tobias BergerandVanessa ce5817ebd4 No more footprint prediction (#5224)
* Revert "footprints prediction (#5111)"

This reverts commit 0d0d5a17de.

* No footprint slowdown

---------

Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
2026-01-16 13:07:45 -06:00
Delta-V bot a79352cbb7 Automatic changelog update 2026-01-16 19:59:50 +01:00
Proxy also works :3 134b2d59b8 remove prison knife (#4934)
* remove prison knife

* as per suggestion

* topy i cant accept changes to lines that no longer exist, its not letting me this is your fault i had to redo all of this cmon
2026-01-16 12:59:31 -06:00
Delta-V bot 1a47a607e8 Automatic changelog update 2026-01-16 19:59:11 +01:00
Charlie MorleyandTobias Berger f94e1ce0eb oracle no longer requests items that are far away in the research tree (#4430)
* oracle no longer requests items blocked by lots of research

* review comments: improve Oracle GetAllProtos efficiency, remove "dv change" comments from nyano code

* review comments: remove more "dv change" comments in nyano code

* review comment: oracle, ditch the "1 tech remaining in tier" check

* Update Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Charlie Morley <cmorley191@gmail.com>

* minor review comment

---------

Signed-off-by: Charlie Morley <cmorley191@gmail.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-16 12:58:50 -06:00
Delta-V bot 4ae44109e4 Automatic changelog update 2026-01-16 19:41:30 +01:00
Astra dc44f4dd7c Engi Void Suit printable (#5222)
Engi Void Suit Real
2026-01-16 12:41:11 -06:00
Delta-V bot 48185ad218 Automatic changelog update 2026-01-16 19:37:52 +01:00
Vanessaandpre-commit-ci[bot] 58e500d254 CentComm Shipyard (#5172)
* Added CentComm shipyard console. Brought some things in Shipyard console up to modern standards.

* More shipyard stuff

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* PR Feedback

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-16 19:37:33 +01:00
VelcroboyandVelcroboy fce57f5120 Fix Asakim Shuttle warp point (#5230)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-16 19:37:24 +01:00
Delta-V bot 47a196e896 Automatic changelog update 2026-01-16 19:32:40 +01:00
Charlie Morley 6117b7b5e1 harpy gasp when pollutant gases are present (#5158)
* harpy suffocate in the presence of trace pollutant gases

(cherry picked from commit 1a618f3f12716d22c3879ba0760c83d6419a2fd6)

# Conflicts:
#	Resources/Prototypes/_DV/Body/Organs/harpy.yml

* harpy asphyxiation finally accurate in the guidebook
2026-01-16 12:32:20 -06:00
Delta-V bot aaf12704af Automatic changelog update 2026-01-16 19:29:34 +01:00
pootslap f89bc2b1be New toys for Carpy (#5169)
* carpWithHands prototype

* adds stamp and pen

* Update carp.yml

* Update pets.yml

* Update pets.yml

* Update pets.yml

* how many things can I take out until it breaks

* adds stamp for LPO and silly name for carpy

* removed double chaplain stamp too

* made pen do damage

* added the lpo stamp to the right locker

why are there two identical ones
2026-01-16 12:29:14 -06:00
Delta-V bot cef1a4f4ac Automatic changelog update 2026-01-16 19:27:41 +01:00
BungleBoss e7b97149a1 Make AI Nanites good (#5210)
* Make AI Nanites NOT horrid

Makes AI nanites a actual competitor to metal foam

* Increase useDelay from 60 to 75

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Changed to even heal 50. hopefully

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

---------

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>
2026-01-16 12:27:22 -06:00
Delta-V bot e36b636cef Automatic changelog update 2026-01-16 19:26:26 +01:00
DisposableCrewmember42 92cda3be15 feat: nudge singularity towards station periodically [mald PR] (#5209)
feat: nudge singularity towards station periodically
2026-01-16 12:26:06 -06:00
Delta-V bot cd228f717d Automatic changelog update 2026-01-16 19:19:24 +01:00
Astra 6405b2284e Microwave Emitter (#5205)
Add microwave emitter
2026-01-16 12:19:04 -06:00
ConstantlyConfusedandpre-commit-ci[bot] 1a319993eb Fix a handful of chemistry guidebook issues (#5206)
* fix some chem locale issues

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-16 12:17:00 -06:00
Delta-V bot 532dee9dd6 Automatic changelog update 2026-01-16 19:13:20 +01:00
ecad26f937 Increase devil chance to match wizard (#5225)
* yippeee yay yippee

* Apply suggestions from code review

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-16 18:12:59 +00:00
Delta-V bot c09395f432 Automatic changelog update 2026-01-16 19:10:13 +01:00
BarryNorfolk a022aae6fe [Mapping] Add new command for showing network links (#5188)
* Add new command for showing network links

* Use AllEntityQueryEnumerator to bypass EntityPaused check

* Localise description
2026-01-16 12:09:53 -06:00
Delta-V bot 7465b2c5d0 Automatic changelog update 2026-01-16 18:59:31 +01:00
Pharaz4 3765f61952 Fix upstream hardsuit spawning in Sec suit storage (#5201)
* Commented out Extra hardsuit given to Sec from upstream.

* Fixed my laziness

* Un-Commented upstreams suit storage

Also got rid of dv tweak, i thought i fixed this in my last commit? guess not

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

* Forgot to uncomment, again

I should stop being lazy and rushing the commit...

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

* made the cahnged files look cleaner

im silly

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

* Removed Archivist PDA from pTech

* Fixes #4714 (Parent of library airlocks being service based).

* Remove LawyerPDA from ptech

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

---------

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>
2026-01-16 11:59:12 -06:00
Delta-V bot c92f2b7a40 Automatic changelog update 2026-01-16 18:58:20 +01:00
Halo3moth 7863d2e4fd Maints locker changes (#5221)
gamer loot changes
2026-01-16 11:58:01 -06:00
Delta-V bot 8429054fa2 Automatic changelog update 2026-01-16 18:55:41 +01:00
Minerva da47e5fdf2 Fixes Ovinia mimes not getting a survival box (#5207) 2026-01-16 11:55:21 -06:00
Delta-V bot 0e2ac6c10c Automatic changelog update 2026-01-16 18:46:36 +01:00
Halo3mothandTobias Berger 5962801f41 Head of Security briefcase (#5203)
* vaguely functional

* Well it didnt crash my game

* what If i capitized Things properly

* I forgor

* poke 1 at fixing the fail?

* Update Resources/Locale/en-US/_DV/objectives/conditions/steal-target-groups.ftl

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/_DV/Objectives/stealTargetGroups.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Locale/en-US/_DV/tools/Hos-pistol.ftl

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Specific/HosBriefcase.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/_DV/Catalog/HosSidarms.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/_DV/Objectives/traitor.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* what if i didnt shitcode?

* Should fix the fail again....

* That should be the last of it?

* Hate visual studio

* Update steal-target-groups.ftl

* Everything but fr this time surely

* im out of joke commit titles

* Tada

---------

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-16 11:46:16 -06:00
Delta-V bot 369fb5687e Automatic changelog update 2026-01-15 16:45:18 +01:00
Pharaz4 848978bf16 Hard hats tweaked to be protective (#5175)
* Made hardhats reduce incoming blunt damage by 15%

* lowered to 0.90

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

---------

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>
2026-01-15 09:44:56 -06:00
Delta-V bot 4fedd8f40a Automatic changelog update 2026-01-15 14:52:24 +01:00
Field Command 5a9d3115dc New ATS! (#4825)
* New ATS!

* Little bit of polish

* Update trading_outpost_dv.yml

* Small update, plus defib.

* Small fix
2026-01-15 14:52:04 +01:00
Delta-V bot 363580c8b9 Automatic changelog update 2026-01-15 08:30:05 +01:00
VelcroboyandVelcroboy aa98f49eab Update warp points on non-station grids to use ghost-only (#5213)
Update warp points on no-station grids to use ghost-only

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-15 08:29:44 +01:00
Delta-V bot 887ccf8c55 Automatic changelog update 2026-01-15 08:14:23 +01:00
Field Command c2654a68fb DV default evac shuttle! (#4970)
DV default evac shuttle
2026-01-15 01:14:03 -06:00
Delta-V bot 454ef8648d Automatic changelog update 2026-01-14 21:23:59 +01:00
Milonandpre-commit-ci[bot] e0fd0cb2cd tips / tutorial system (#5199)
* somewhat functional yes

* some cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* review

* missed one

* why not params…

* review 2

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-14 14:23:39 -06:00
Delta-V bot 885d6e8872 Automatic changelog update 2026-01-14 14:23:42 +01:00
Pharaz4 2f048b06de Syndiborg fixes (#5197)
* - Increased EngiBorg max modules to 7 to fit the EngiModule that has the RCD
- Gave Syndicate assault, medical, and saboteur borgs cool name generator
- Removed unintentional Extra RCD that came with the kit.

* forgot syndicate medical cyborg was in dv folder and not mainstream

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

---------

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>
2026-01-14 14:23:22 +01:00
Delta-V bot 4d412e71ca Automatic changelog update 2026-01-13 18:23:34 +01:00
VelcroboyandVelcroboy 103c0aed24 Map Edits: The Hive (#5143)
* Map Edits: The Hive

* null data

* The rest

* No mo boms

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-13 18:23:13 +01:00
Delta-V bot 5157b58798 Automatic changelog update 2026-01-13 06:01:16 +01:00
c2c8eaef13 Add ammonia tank that can be purchased at logi for mixing space cleaner (#5167)
* Add ammonia tank that can be purchased at logi for mixing space cleaner

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-12 23:00:57 -06:00
Delta-V bot ce428bde54 Automatic changelog update 2026-01-12 10:13:35 +01:00
SirrRequiem dfc28529a1 Terra: The Throwback Episode (#5089)
THE GRINCH STOLE ALL THE SNOW
2026-01-12 10:13:15 +01:00
Delta-V bot 9cb2ad63e1 Automatic changelog update 2026-01-12 05:42:26 +01:00
Unkn0wn_Gh0standVanessa aef4666593 Gulp Emote from Goob (#5033)
* Gulp...

On skibid ohio rizz

* Yaml Patching and Gulp fixes for IPC & Avali

* Missed one single line

Haha 67.... I'm such a fat fucking chud

* Update Resources/Audio/_Goobstation/Voice/attributions.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>

* Update Resources/Audio/_Goobstation/Voice/Human/attributions.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>

---------

Signed-off-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-11 22:42:07 -06:00
Delta-V bot a1962115f7 Automatic changelog update 2026-01-11 23:08:32 +01:00
Apachito 37d184081f Update 1 to Starlight Makeshift Armory Port (#5129)
* Tide-Update

* Removed the construction graph
2026-01-11 16:08:13 -06:00
Delta-V bot c9bdfb0802 Automatic changelog update 2026-01-11 20:57:57 +01:00
DisposableCrewmember42andVanessa c8bc3a7108 fix: rev ectoplasm can no longer be used to spike drinks (#5125)
* fix: rev ectoplasm can no longer be used to spike drinks

* Revert "fix: rev ectoplasm can no longer be used to spike drinks"

This reverts commit 717d817d98.

* fix: simply adjust yaml instead

* Update Resources/Prototypes/_DV/Entities/Objects/Specific/Medical/morgue.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-11 19:57:37 +00:00
Delta-V bot 68516a036d Automatic changelog update 2026-01-11 20:49:17 +01:00
DisposableCrewmember42 eef49a1573 fix: rev can haunt again (#5124) 2026-01-11 13:48:57 -06:00
Delta-V bot 5d25f1cb38 Automatic changelog update 2026-01-11 17:43:49 +01:00
Minerva c750867ce6 Makes the crash cart obtainable via ordering (#5190) 2026-01-11 10:43:29 -06:00
Delta-V bot 3839387b75 Automatic changelog update 2026-01-11 17:27:25 +01:00
dcd5733185 Some guidebook and localisation touch ups (#5178)
* - Fixed squished Ovinia and Kitsune in species page of guidebook.
- Added Skia to Minor antagonists in guidebook

* Fixed typo posession -> possession

* changed cryoxadone's dec from saying works regardless if alive or dead to needs to be alive

* added documentation

* Fixed failure to follow contribution guidelines (thanks faint)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fixed pump part of guide book showing vol pump max kPa as ???.

* Added empty line at bottom of ftl file

* Update Resources/Locale/en-US/reagents/meta/medicine.ftl

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

* Update Resources/Locale/en-US/_DV/reagents/meta/medicine.ftl

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>

* Fix issue 5151

---------

Signed-off-by: Pharaz4 <143268074+Pharaz4@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-11 10:27:06 -06:00
Delta-V bot b76d723b72 Automatic changelog update 2026-01-11 16:40:21 +01:00
210b8a4d53 Spare ID always unlocks during War Ops (#5104)
* Spare ID will now unlock during war ops

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Increased to 15 seconds.

* summary docs fixes

* Added some docs to MoveToUnlocked. Reworked things a tiny bit.

* Added some docs to MoveToUnlocked. Reworked things a tiny bit.

* Buh

* Remove blank lines that seem to have come from nowhere

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-11 15:40:02 +00:00
Delta-V bot eecaeb9e59 Automatic changelog update 2026-01-11 16:38:43 +01:00
Vanessa 73cbc7ecb2 Revert 'nerf melee when laying down #3173' (#5182) 2026-01-11 09:38:24 -06:00
Delta-V bot 1a8e4bbf71 Automatic changelog update 2026-01-11 16:35:02 +01:00
Milon 857d0291fb fix emergency JOL not using battery (#5189)
fucky wuckies are all gone
2026-01-11 09:34:43 -06:00
github-actions[bot]andDeltaV-Bot facdd4b7de Update Credits (#5185)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2026-01-11 16:09:21 +01:00
Delta-V bot e9e2b4d75a Automatic changelog update 2026-01-11 00:06:23 +01:00
keekee38 6a0bbeeec8 More players required for nukies (#5159)
10 -> 20 and 35 -> 40
2026-01-10 17:06:04 -06:00
Delta-V bot ee21dd3dc1 Automatic changelog update 2026-01-10 23:08:03 +01:00
Joe 66d8e33855 Add Space Cleaner Regen to Janiborg's Adv. Internal Spray Jet (#5155)
* feat: Add space cleaner regeneration to janitor borgs and wall dispensers.

* chore: i managed to accidentally add a space where one doesnt belong. yaml gaming.

* refactor:  Remove SolutionRegeneration from CleanerDispenser and BorgSprayBottle
2026-01-10 16:07:43 -06:00
VanessaandTobias Berger 5f1788c8db Feroxi hardsuit helmet fixes (#5161)
* Feroxi hardsuit helmet fixes

* Comment

* Actually fix feroxi helmets

---------

Co-authored-by: Tobias Berger <toby@tobot.dev>
2026-01-10 23:07:30 +01:00
Delta-V bot 7ee563bfb0 Automatic changelog update 2026-01-10 22:58:31 +01:00
snowywinters d4a64a7cec AI interactables (#5132)
* SMES/Substation

* Techfabs

* Atmos

* wires

* wire panels

* Revert "Atmos"

This reverts commit 7bbc0689d0.
2026-01-10 15:58:12 -06:00
Delta-V bot bb336b13a4 Automatic changelog update 2026-01-10 22:45:14 +01:00
Joe 5c6dae9400 fix: Check if RootContainer is null before referencing its members. (#5173) 2026-01-10 15:44:55 -06:00
Delta-V bot dbc08599b4 Automatic changelog update 2026-01-10 22:44:10 +01:00
ConstantlyConfused 63efa8409b Make feroxi nukies have the correct survival boxes (#5179)
Make feroxi nukies spawn with the correct survival box
2026-01-10 15:43:50 -06:00
Delta-V bot 9b55153b83 Automatic changelog update 2026-01-10 22:43:17 +01:00
ConstantlyConfused 6953199fda Update the Spare Captain's ID announcement (#5177)
make the free aa announcement match current space law
2026-01-10 15:42:58 -06:00
Delta-V bot 554aa30a5a Automatic changelog update 2026-01-10 17:49:18 +01:00
Milon bb529a3f18 fix senior job icons / names (#5176)
fix
2026-01-10 17:48:59 +01:00
Delta-V bot 2e91729348 Automatic changelog update 2026-01-10 15:18:16 +01:00
DisposableCrewmember42 e15dd1a715 feat: adminoverlay command (#5123)
* feat: adminoverlay command

* tweak: move adminoverlay perm under ADMIN
2026-01-10 15:17:57 +01:00
Delta-V bot 68ec2bc672 Automatic changelog update 2026-01-09 17:34:45 +01:00
PureBreadBagel 7a08ab7d73 Hotfix for our makeshift omnitools from Starlight! (#5165)
* Update OrganManipulation.xml

* Merge branch 'DeltaV-Station:master' into master

* Merge branch 'DeltaV-Station:master' into master

* Merge branch 'DeltaV-Station:master' into master

* no more taser!

* Merge branch 'DeltaV-Station:master' into master

* Merge branch 'DeltaV-Station:master' into master

* Merge branch 'DeltaV-Station:master' into master

* fixing le craft

* Fixie my tool of omnipotent

* new verb

* QUick fixes!!

* AAAAAA

* quick fix

* change requests done

* grrg
2026-01-09 17:34:25 +01:00
Delta-V bot 3f778e6da5 Automatic changelog update 2026-01-08 21:53:50 +01:00
Vanessa 053f386122 Redrock Spawn Distance Increase (#5166)
* red rock distance increased
2026-01-08 21:53:31 +01:00
Delta-V bot 64d383b9c0 Automatic changelog update 2026-01-08 18:11:44 +01:00
KOTOB 3ba0c9753e Smooth combat mode rotation (Make Flashlights Awesome) (#5163)
* its so peak
2026-01-08 18:11:25 +01:00
Delta-V bot 453aab5cd7 Automatic changelog update 2026-01-08 17:15:23 +01:00
Field Command 745c401df2 Revert "Asterisk winter update" (#5156)
Revert "Asterisk winter update (#4925)"

This reverts commit 359a7011ff.
2026-01-08 10:15:04 -06:00
Delta-V bot d99b4842ac Automatic changelog update 2026-01-08 17:13:13 +01:00
This_Is_Gray 82a4969e1a Revert "It Snew On Lady Elegance (Christmas PR)" (#5162)
Revert "It Snew On Lady Elegance (Christmas PR) (#4903)"

This reverts commit 0f388ece51.
2026-01-08 10:12:54 -06:00
Delta-V bot b8aa4cd422 Automatic changelog update 2026-01-08 16:53:40 +01:00
Vanessa 33ffbdbcb8 Taser nerfs based on community feedback (#5106)
* Some taser nerfs based on community feedback

* Comment

* Reverted some of the nerfs. Gave tasers a 5 second cooldown.
2026-01-08 09:53:20 -06:00
Delta-V bot c9a1eaba99 Automatic changelog update 2026-01-07 18:53:07 +01:00
VelcroboyandVelcroboy 05b6452ea5 Adjust toilet loot frequency to be less frequent (#5064)
* Adjust toilet loot frequency to be less frequent

* Add perma version

* Update loot pools

* Add random reagents

* sum glassers

* HoW haha

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-07 11:52:48 -06:00
Delta-V bot d8b698e738 Automatic changelog update 2026-01-07 17:35:44 +01:00
Vanessaandpre-commit-ci[bot] 46acbaaf26 Colossus Effigy Blacklist (#5160)
* Added colossus effigy blacklist.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-07 17:35:25 +01:00
Vanessa c0821274f3 Might fix nukie commander not spawning (#5146)
* Might fix current commander whitelist

* Added missing DV comments
2026-01-07 10:30:02 -06:00
Delta-V bot 11ad11cad0 Automatic changelog update 2026-01-07 16:57:49 +01:00
859bd63600 make aac tablet Better (#5153)
* graphic design is my passion

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update Content.Client/_DV/AACTablet/UI/AACWindow.xaml

Milon will probably tell me to.

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-07 15:57:28 +00:00
Delta-V bot 7975aecfc1 Automatic changelog update 2026-01-07 05:02:05 +01:00
6af220451c Medical Crashcarts + small guidebook fix (#5140)
* Update OrganManipulation.xml

* no more taser!

* Crashcart (#2376)

Co-authored-by: funkystationbot <funky@funkystation.org>

* oh boy

* readded the tags cus im silly

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Tag work!

* ergh

* me when there is no tag

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* aaaaghhh im bad at coding

* sick

* edited starting items

* fix!

* fix harpy guidebook

* Update Resources/Prototypes/Catalog/Fills/Items/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/Catalog/Fills/Items/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/Entities/Objects/Tools/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Apply suggestions from code review

EVERYTHING ALL AT ONCE

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/Catalog/Fills/Items/gas_tanks.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Resources/Prototypes/_Funkystation/Entities/Objects/Specific/Medical/crashcart.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: mkanke-real <mikekanke@gmail.com>
Co-authored-by: funkystationbot <funky@funkystation.org>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-06 22:01:46 -06:00
Delta-V bot f0990c33a6 Automatic changelog update 2026-01-07 03:37:53 +01:00
VelcroboyandVelcroboy 54fe7ccf2a Map Edits: Arena (#5085)
* Map Edits: Arena

* enabled pumps

* regent -> []

* feedback

* missing pipe

* Toilers

* WP Edits

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-06 20:37:32 -06:00
Delta-V bot 403a172e8e Automatic changelog update 2026-01-06 22:57:48 +01:00
Vanessa 8384f178db Revert "Remove crate Melting" (#5152)
Revert "Remove crate Melting (#5050)"

This reverts commit 25e5934b04.
2026-01-06 15:57:29 -06:00
Delta-V bot 21fa68f744 Automatic changelog update 2026-01-06 19:41:48 +01:00
fb98bfe575 deepfryer 2.0 (#5043)
* was it worth the hype

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* minor stuff

* multi-ingredient recipe support

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* oil transfer

* explosions and fire

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* make the yaml linter happy

* YML recipes

* typo ops

* review

* Apply suggestions from code review

Milon told me to.

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Stop-Signs <stopsign221@gmail.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-06 12:41:29 -06:00
Delta-V bot 4b4c2ef973 Automatic changelog update 2026-01-06 17:59:51 +01:00
Velcroboy f381af07e4 Revert "It's a Tortuga Xmas!" (#5147)
Revert "It's a Tortuga Xmas! (#4893)"

This reverts commit 566382e75f.
2026-01-06 17:59:31 +01:00
BarryNorfolk bf8cce52a1 Remove warnings in Content.Server for _DV content (#5114)
* Cleanup datafields with matching autogenerated tag [RA0027]

* Remove unused dependencies [CS0414]

* Swap to AddMarkupOrThrow over PushMarkup [CS0618]

* Fix namespacing [CA1050]

* Prefer the generic overload [CA2263]

* Fix exception throwing [CA2208]

* Mark RoundStartCaptain as static [CA1822]

* Don't use string literal [RA0033]

* Remove un-needed null check [CS8073]

* Explicitly set webhookData to null [CS0649]

* Use protoId over bare string

* Prefer HasComp over TryComp with no usage of the actual comp
2026-01-06 10:31:51 -06:00
Delta-V bot f7dbafc607 Automatic changelog update 2026-01-06 16:59:59 +01:00
Stxcking e344e79cdf More Feroxi Mask Sprites (#5149)
guh
2026-01-06 09:59:39 -06:00
Milonandpre-commit-ci[bot] fae22b6e86 mail commands and API (#5150)
* 5 minute adventure

* ftl and comments cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-06 09:57:16 -06:00
Delta-V bot decf64222d Automatic changelog update 2026-01-06 06:27:48 +01:00
Vanessa ef44b2a4f7 Disable Santa Anomalies (#5145)
Until next year~
2026-01-05 22:27:29 -07:00
Delta-V bot ebc0ccc36b Automatic changelog update 2026-01-06 02:31:33 +01:00
Stxcking 1c8be0197f Give Medical Borgs Crew Monitors (#5117)
* guh

* no alerts
2026-01-05 19:31:14 -06:00
Stxcking 93ceaff6a6 Give Player Ghosts Mass Scanner (#5109)
* buh

* remove lines guh

* whatever text

* move to _DV
2026-01-05 19:30:28 -06:00
Delta-V bot 682cda9d67 Automatic changelog update 2026-01-05 22:05:21 +01:00
Vape e36cb563fe Revert "Holidays on Glacier" (#5139)
Revert "Holidays on Glacier (#4936)"

This reverts commit 3bd56db54c.
2026-01-05 15:05:01 -06:00
turtlemutt a345a0b2df Revert "Winterhouse" (#5135)
Revert "Winterhouse (#4910)"

This reverts commit 4f39809ea9.
2026-01-05 01:13:20 -06:00
Delta-V bot db5e43aaa7 Automatic changelog update 2026-01-04 20:26:59 +01:00
Stxcking d9f8961733 Electronic Damage Icon (#5127)
guh
2026-01-04 13:26:40 -06:00
Delta-V bot 721c41a3df Automatic changelog update 2026-01-04 20:26:08 +01:00
Vanessa 334255b84d Fixed footprint system deleting people (#5128)
Fixed footprints deleting the people who left them, and not the footprint itself lmao.
2026-01-04 19:25:48 +00:00
Delta-V bot 4302a7620d Automatic changelog update 2026-01-04 17:37:27 +01:00
Milon 0d0d5a17de footprints prediction (#5111)
* works

* shuffle stuff around

* no more fucky wuckies, fucky wuckies are GONE

* maybe this will just fix my problems?

* usings

* thats not how flying works

* review
2026-01-04 10:37:08 -06:00
Delta-V bot 3a051b65a3 Automatic changelog update 2026-01-04 01:15:28 +01:00
Astra 06c9596b6f Return of the Cyborg Hydra (#5116)
Re-add Borg Hydra
2026-01-03 18:15:09 -06:00
Velcroboy 79d0781320 Revert "Map Edits: Shoukou Xmas" (#5076)
Revert "Map Edits: Shoukou Xmas (#5024)"

This reverts commit d00e19f4b1.
2026-01-03 16:50:46 +01:00
Velcroboy ac9a9762e2 Revert "Map Edits: Edge Xmas" (#5078)
Revert "Map Edits: Edge Xmas (#5022)"

This reverts commit 67fd579fb1.
2026-01-03 16:49:39 +01:00
Velcroboy 0f461b2c9c Revert "Map Edits: Division XMAS" (#5079)
Revert "Map Edits: Division XMAS (#5021)"

This reverts commit 215d42d871.
2026-01-03 16:46:09 +01:00
Velcroboy 90a1ce7c33 Revert "Map Edits: Chibi Xmas" (#5077)
Revert "Map Edits: Chibi Xmas (#5023)"

This reverts commit 7862eb9e8c.
2026-01-03 16:43:52 +01:00
Delta-V bot e13c37508f Automatic changelog update 2026-01-03 14:56:21 +01:00
2502a9fffe New glimmer events! Foxfire & Restyle (#5102)
* Add glimmer restyle and foxfire

* Fix typo

* Fix typo

* Fix test fail and kobold hair bug (thanks to FaintSpeaker)

* Update Content.Server/_DV/StationEvents/Events/GlimmerRestyleRule.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Content.Server/_DV/StationEvents/Events/GlimmerRestyleRule.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update Content.Server/_DV/StationEvents/Components/GlimmerFoxfireSpawnRuleComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Content.Server/_DV/StationEvents/Components/GlimmerFoxfireSpawnRuleComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Content.Server/_DV/StationEvents/Events/GlimmerFoxfireSpawnRule.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Content.Server/_DV/StationEvents/Events/GlimmerRestyleRule.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Only filter for potential psionics

* Lower restyle glimmer requirement

* Semicolon my beloathed

* Popup false when going bald to bald

* Update Content.Server/_DV/StationEvents/Events/GlimmerRestyleRule.cs

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-03 13:56:01 +00:00
IRSMsoso 2e024d43cb Fix debug assert in OnUpdateAlert of Cosmic Cult System (#5112) 2026-01-03 07:41:50 -06:00
Delta-V bot f7faf5c9c1 Automatic changelog update 2026-01-03 14:27:54 +01:00
Sir Warockandpre-commit-ci[bot] 53e4097bbf New Surgery UI (#5107)
* One Commit ops

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Remove one Line

* Readonly variable

* Better Switch cases

* Actually better this way

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-03 07:27:35 -06:00
Delta-V bot 5885d4db79 Automatic changelog update 2026-01-03 01:48:41 +01:00
VelcroboyandVelcroboy f2ffb88d7d Update potted plants with slightly larger interaction zone (#5052)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2026-01-02 17:48:22 -07:00
Delta-V bot 8814144904 Automatic changelog update 2026-01-03 01:47:46 +01:00
3617bc3b53 Fix Cosmic Cult Server Crash (#5097)
* Fixed a bug where the server would crash if there were zero cultists and it would try to hold a vote with zero options.

* Added a check to prevent the vote if a steward already exists.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Added clarity to logs in case a 2nd cult gets added or something.

* Update Content.Server/_DV/CosmicCult/CosmicCultRuleSystem.cs

Co-authored-by: Milon <milonpl.git@proton.me>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Milon <milonpl.git@proton.me>
2026-01-02 17:47:27 -07:00
Delta-V bot 509ffa86c8 Automatic changelog update 2026-01-03 01:42:26 +01:00
Halo3moth db272e7b47 Advanced plate carrier nerf (#5081)
* Fun hater

* She change on my request till I direction
2026-01-02 17:42:07 -07:00
Delta-V bot 117b5433c3 Automatic changelog update 2026-01-03 01:12:49 +01:00
Field Command 3953ef9771 Midpoint: Festive times are over. (#5040)
Festive times are over
2026-01-02 18:12:29 -06:00
Delta-V bot 73b25fcb64 Automatic changelog update 2026-01-03 00:54:56 +01:00
6a1a4e6bc5 Engineering Void Suit (#4944)
* Add engineering void suit

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update Resources/Prototypes/_DV/Catalog/Fills/Lockers/engineering.yml

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Clothing/OuterClothing/softsuits.yml

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Update Resources/Textures/_DV/Clothing/OuterClothing/Suits/engineering-light.rsi/meta.json

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>

* Remove brute resistances

* The great recoloring

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Apply suggestions from code review

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Vulp/feroxi helmets no longer unshaded

---------

Signed-off-by: Astra <226853568+EmberAstra@users.noreply.github.com>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-02 17:54:37 -06:00
Delta-V bot 0d9b339fc5 Automatic changelog update 2026-01-02 20:01:17 +01:00
Corynandpre-commit-ci[bot] dc261bc4d0 Change how Minor Mass Mind Swap Cooldown starts/Fix Telegnosis (#5013)
* Move Cooldown to the Event itself

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Move delay into variable within the component

* Move Cooldown Method into an optional bit within MindSwapPowerSystem

* Remove redundant using and dependency

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-02 13:00:58 -06:00
Delta-V bot 4223bae8aa Automatic changelog update 2026-01-02 08:02:32 +01:00
Vanessa d8ed2ffc59 Fix Duplicate Kill Heads Objectives and Add TargetObjectiveImmune (#4996)
* Added TargetObjectiveImmune to PickObjectiveTargetSystem. Moved early merge component to DV namespace (since its not upstream).

* Fixed traitors rolling only heads for teach a lesson

* Derp

* Added more TargetObjectiveImmune filters.

* Comments.

* More changes
2026-01-02 00:02:12 -07:00
IRSMsoso 2dc78795a0 Fix starlight prototype directory case (#5105) 2026-01-02 04:14:18 +00:00
Delta-V bot 1548baa05a Automatic changelog update 2026-01-02 01:37:40 +01:00
Charlie MorleyandVanessa d9505a1d9a hotfix id card console (#5103)
* hotfix id card console not working due to unintentionally hidden accesses

* Update Content.Shared/Access/Components/IdCardConsoleComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Charlie Morley <cmorley191@gmail.com>

---------

Signed-off-by: Charlie Morley <cmorley191@gmail.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-02 00:37:21 +00:00
Delta-V bot 83436c78ee Automatic changelog update 2026-01-01 22:32:04 +01:00
Stop-Signs 520b2540a6 Fix sharp katana being unable to fit into katana sheathe (#5098)
* shing

* lmao im an idiot
2026-01-01 21:31:44 +00:00
Delta-V bot d052caeb0e Automatic changelog update 2026-01-01 22:15:39 +01:00
Vanessa 95a9aa5880 Fixed cryox working on the dead. (#5096) 2026-01-01 15:15:19 -06:00
0ea6fe67a0 Internal Affairs Agent Role (#5075)
* test for now

* icon fix

* text fix

* fucking around, using it more like changeling yo

* whatever failed tests

* probably works?

* fix

* test test

* messing around yet again

* removed useless file

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* why the fuck do objectives work now

* fix round screen not showing up

* implanter, music track and general fixes added

* text improvement

* slightly fixed formatting

* conflict fix

* Update Resources/Prototypes/_DV/Roles/Antags/ntAgent.yml

NTAgent-round-end-name

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Cepelinas1 <kakelis01@gmail.com>

* Update Resources/Prototypes/_DV/Roles/Antags/ntAgent.yml

NTAgent-role-greeting-human

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Cepelinas1 <kakelis01@gmail.com>

---------

Signed-off-by: Cepelinas1 <kakelis01@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2026-01-01 14:27:31 -06:00
Delta-V bot 6fa8012bbd Automatic changelog update 2025-12-31 22:53:32 +01:00
9ad868b2b7 Detective Module/ SecBorg Buffs and SecBorg PDA (#5005)
* Detective Module/ SecBorg Buffish

Gives a Detective module to the secborg with a PDA to. Also gives them 3 slots instead of 2 and 100 health

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Add SecurityCyborgPDA to borg_modules for patrol

Add SecurityCyborgPDA item to borg modules for patrol

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Add BorgModulesSecurityDeltaVStatic recipe pack and pray it fucking works dear god

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* fixed copywrite info

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* fixed copywrite info again

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* adjusted crew manifest cartridge from bottom to top for cleaner look on PDA

makes PDA programms look more "normal"

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Fixed Merge conflict with upstream (I think upstream atleast)

Fixed a merge issue with upstream and the pack

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Specific/Robotics/borg_modules.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Moved Forensic things to _DV/Robo

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Removed PDA from Patrol mod so it's only in Det mod

Removed SecurityCyborgPDA item from borg modules list.

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

* Removed borg-slot-forensic-empty = Forensic Reports and Bureaucracy Supplies and Moved it to _DV/Robo

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>

---------

Signed-off-by: BungleBoss <100389635+BunglesnortBoss@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-31 15:53:13 -06:00
Delta-V bot 5eaf79d9d8 Automatic changelog update 2025-12-31 21:19:09 +01:00
Sir Warockandpre-commit-ci[bot] 268a1e79e5 The Jetpack Stays On During Harmbatoning (#4990)
* OneCommitOps

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Requested Changes

* Small fix

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-31 14:18:49 -06:00
Delta-V bot c85ee48f17 Automatic changelog update 2025-12-31 21:11:47 +01:00
Corynandpre-commit-ci[bot] 762715f810 Blood Red Super Synth from wyci-thread (#5019)
* Blood Red Super Synth from wyci-thread

* Move the blood red synth into _DV

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Move uplink changes into _DV

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Change cost to 1

* Reparent the Red Super Synth to the Super Synth

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-31 14:11:28 -06:00
58cc793e86 Port Starlight's expanded makeshift items (#4984)
* 1

* 2

* remove dismantle testing changes

* add ammount handling, and add random angle

* code-side things

* code-side things

* code-side things

* 3

* 4

* 5

* 6

* changed description for now

* whoops

* 7

* 8

* 9

* Texture fix

* Tada!

I diiid iiitttt

* Delete .icon.png-autosave.kra

* 10

* test

another

* 11

* Localization fixes 2

Also some minor rebalancing of armor/shield/helmet crafting

* ROOOUND 33333

* test

wawa

* wiz

* fixes

* MORE FIXES

* MORE MORE FIXES

* Smg mag fix

* Why does it have reflet

Removed reflect chance and made the damage the same as a plasteel arming sword

* belt fix

* phosphorus addition

* improvised round bulk crafting

* Update tags

* tags update 2

* Update tags.yml

* fix tags AGAIN

* TAG FIX AGAIN

* Fixed the sound path

* Fixed missing components hopefully

* fix it hopefully

* Update tidebreaker.yml

* fixed errors

* fixed?

* Update shields.yml

* Update tools.yml

* Fixes

* Update tools.yml

* Update tools.yml

* Update tools.yml

* Update tools.yml

* Update tools.yml

* screwdriver fix 200

* Update tools.yml

* Update tools.yml

* Apply suggestions from code review

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update SharedItemSwitchSystem.cs

* review changes

* Fix server and client files

* Namespace fixes.

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Entities/Objects/Tools/crowbars.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Entities/Objects/Tools/tools.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Entities/Objects/Tools/tools.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Entities/Objects/Tools/tools.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Entities/Objects/Tools/tools.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/Entities/Clothing/Belt/belts.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Recipes/Crafting/Graphs/improvised/improvised_omnitool.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Recipes/Crafting/Graphs/improvised/improvised_omnitool.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Recipes/Crafting/Graphs/improvised/improvised_omnitool.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/Recipes/Crafting/Graphs/improvised/improvised_omnitool.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_StarLight/tags.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update SharedWeaponDismantleOnShootSystem.cs

* Update Resources/Prototypes/Recipes/Crafting/Graphs/improvised/improvised_shotgun_shell.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Weapons/Guns/Ammunition/Boxes/improvised.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>

---------

Signed-off-by: Apachito <ivanlopezlegos2004@gmail.com>
Co-authored-by: KillerTheFlareon <tyler443344@outlook.com>
Co-authored-by: Matthew Herber <matthewherber@sbcglobal.net>
Co-authored-by: Athena-AI <AthenaTheAI@outlook.com>
Co-authored-by: stickycheZ101 <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>
Co-authored-by: stickycheZ101 <96800602+stickycheZ101@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
2025-12-31 14:08:48 -06:00
Delta-V bot d7ebd18ad3 Automatic changelog update 2025-12-31 20:04:15 +01:00
verybigman a006cfb67c China Lake Frag Rounds Adjustment (#5002)
* 1

* final

* upstream fix

* balancing

* fix
2025-12-31 13:03:56 -06:00
Delta-V bot d32b2f46cf Automatic changelog update 2025-12-31 19:38:35 +01:00
MD360 ecd24937b3 Borgs must amogus. (#5035)
Xeno/borg can amogus
2025-12-31 12:38:16 -06:00
Delta-V bot ba5e71a897 Automatic changelog update 2025-12-31 19:37:59 +01:00
Delta-V bot d878d26f3e Automatic changelog update 2025-12-31 19:37:41 +01:00
Winter 8425e99a95 Add vox-specific sprites for all security hardsuits, elite ERT hardsuits, and mystagouge hardsuit. (#5086)
* New vox sprites for RD suit, all security hardsuits, and all elite ERT suits

* Fixed accidental inclusion of old sprite version for standard hardsuit
2025-12-31 12:37:37 -06:00
Astra 7fa4c7451c Fix the wings in salvage's suits (#5032)
Cover them wings
2025-12-31 12:37:18 -06:00
Delta-V bot 85298e7a9e Automatic changelog update 2025-12-31 19:37:11 +01:00
Dorragon 193fb89c62 Xenovent event changes (#5008)
* We are so back xisters

* Change parent order instead of adding suffix to everything
2025-12-31 12:36:51 -06:00
Delta-V bot 057ff427b4 Automatic changelog update 2025-12-31 19:36:05 +01:00
810d9616aa Add enabled version of atmos pumps, filters, and mixers (#5015)
* Add enabled version of atmos pumps, filters, and mixers

* spaces

* Comment and move entities to _DV

* Update Content.Shared/Atmos/Components/GasPressurePumpComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>

* Update Content.Shared/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>

---------

Signed-off-by: Velcroboy <107660393+IamVelcroboy@users.noreply.github.com>
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-31 12:35:45 -06:00
Tobias Berger 77328e58e3 less stupid stale workflow (#5046) 2025-12-31 12:34:37 -06:00
Delta-V bot 712ca2b283 Automatic changelog update 2025-12-31 19:33:23 +01:00
Halo3moth 897afe1786 Give energy shotgun back self recharge (#5070)
* Update battery_guns.yml

Gave it back its recharge god bless

* Should fix the yml fail?
2025-12-31 12:33:03 -06:00
Delta-V bot 6354c6df77 Automatic changelog update 2025-12-31 19:27:53 +01:00
MD360 9a1dafde3c Renamed 4 job plushies. (#5088)
Renamed 4 plushies.
2025-12-31 12:27:34 -06:00
Delta-V bot f5d157c1bf Automatic changelog update 2025-12-31 19:22:43 +01:00
dge21 25e5934b04 Remove crate Melting (#5050)
Update crates.yml

more tampering

Signed-off-by: dge21 <129136517+dge21@users.noreply.github.com>
2025-12-31 12:22:23 -06:00
Delta-V bot ed20f2e03b Automatic changelog update 2025-12-31 07:52:48 +01:00
Field Command 896403da6f Pebble fixes (#5041) 2025-12-31 00:52:28 -06:00
Delta-V bot 2284596a5c Automatic changelog update 2025-12-31 07:50:44 +01:00
Field Command 1f99ab9328 Byoin: Festive time is over. (#5039)
Festive time is over
2025-12-31 00:50:25 -06:00
Delta-V bot 7c87a1ae80 Automatic changelog update 2025-12-31 07:48:55 +01:00
biddygelson 348ad6c50a Academy/1.4.0 (#5036)
* * Removed festivities, but still cold out there.
* Fixed robo doors, no more AA.
* Moved E-light in sec hall so is on wall rather than window.
* Replaced intercom in public lawyer office for justice intercom.
* Fixed power in surgeon's hallway
* Fixed psych's maint door to be psych only.
* Added IPC/Borg Medbay in Robotics
* tweaks to ordering in prototype, no changes.

* * tweaked cargo dock for compliant dock, conveyance button, and space for loading/unloading.
2025-12-31 00:48:35 -06:00
Vanessa 14d7977967 Fixed QM mantle. (#5082) 2025-12-30 18:29:44 +00:00
Delta-V bot dd41ad91dc Automatic changelog update 2025-12-30 18:40:03 +01:00
Tobias Berger 69bb5e3ab9 Fix grinder items not being reduced (#5080) 2025-12-30 17:39:44 +00:00
VelcroboyandVelcroboy 41ad4d9269 Fix DV Warp Points (#5060)
* Fix DV Warp Points

* Ghost only on evac

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-30 17:34:23 +00:00
Delta-V bot c233d7ae9e Automatic changelog update 2025-12-30 17:32:13 +01:00
Tobias Berger 6f42855947 Fix #5054 (#5065) 2025-12-30 10:31:53 -06:00
Delta-V bot 6b4b0c74f1 Automatic changelog update 2025-12-30 17:28:52 +01:00
Vanessa 82445918d5 Various Upstream Merge Fixes (#5066)
* Moved migrations to DV migration file.

* Buffed jug size. Oops.

* Removed time requirement from mantles.

* Added missing static packs from fabs
2025-12-30 17:28:33 +01:00
Delta-V bot 0cbd9cbeeb Automatic changelog update 2025-12-30 14:24:23 +01:00
VelcroboyandVelcroboy be356fea82 Fix curtains colliding with other structures (#5053)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-30 07:24:03 -06:00
BarryNorfolk 88bb7fbc7f Add missing syndi states for commander/operative (#5074) 2025-12-30 12:58:12 +00:00
Delta-V bot ae682678e3 Automatic changelog update 2025-12-30 13:57:23 +01:00
Tobias Berger 54c85ec1ce Reparent DV prescription glasses (#5067)
Fixes #5055
2025-12-30 06:57:04 -06:00
Delta-V bot 0799b8edd4 Automatic changelog update 2025-12-30 03:02:07 +01:00
PureBreadBagel 96badc9897 Guidehotfix (#5058)
* Update OrganManipulation.xml

* no more taser!

* Hotfix! xml doesnt like my comments

* more fixes

* Ouchies.

* fixed an error

* fixes indentation

* im bad at commenting

* Thanks toby
2025-12-30 02:01:47 +00:00
Delta-V bot 457caf0c38 Automatic changelog update 2025-12-29 22:44:04 +01:00
Tobias Berger 2025891fc2 Upstream Merge Changelog Fix (September/October Edition) (#5051)
* This vexes me

* Extra fixes for https://github.com/space-wizards/space-station-14/pull/41119

* Missing upmerge CL (here's hoping)

* Remove stray BOM
2025-12-29 22:43:44 +01:00
Tobias Berger d7c803747d Merge pull request #4962 from DeltaV-Station/upstream-merge-september
Upstream Merge (September and October 2025)
2025-12-29 22:03:23 +01:00
Tobias Berger 140179175c Formatting 2025-12-29 21:45:03 +01:00
Tobias Berger fd3c82c38b Extra _DV fixes for https://github.com/space-wizards/space-station-14/pull/40955 2025-12-29 21:44:55 +01:00
Tobias Berger 0f1076ab4c Rename DefaultEmpDamage 2025-12-29 21:43:45 +01:00
Tobias Berger de6b43b069 Extra _DV fixes for https://github.com/space-wizards/space-station-14/pull/39124 2025-12-29 21:43:45 +01:00
Tobias Berger 625d27fd7a Extra _DV fixes for https://github.com/space-wizards/space-station-14/pull/39848 2025-12-29 21:43:34 +01:00
Vanessa 77db8f6722 Added Imp comment to namespace in Rev code. 2025-12-29 14:19:33 -06:00
Vanessa 33677d5b6b Reverted DeltaV-specific ID computer code. Fixes new Grant/Revoke buttons. 2025-12-29 14:16:27 -06:00
Vanessa f326bd3014 Got rid of preloaded grids. Fixed custom shuttles in upstream files. 2025-12-29 12:16:01 -06:00
SlamBamActionman f4240bc373 [Staging] Fix certain projectiles moving faster than intended (#41905)
Return to original value (25)
2025-12-29 11:57:33 -06:00
Vanessa af915ce4fe Reverted KFV ashing value to upstream's damage value. 2025-12-29 11:43:41 -06:00
Vanessa cf76599616 Early merge of #42158. Fixes medibots. 2025-12-29 11:41:54 -06:00
Vanessa 9835041bbb Updated the changelog orders. 2025-12-29 11:41:53 -06:00
Vanessa b9ecad60e6 Added the the revert check to BodySystem's check-if-polymorphed logic 2025-12-29 11:39:38 -06:00
Vanessa b5a2bc243c Added jet injectors to the guidebook. 2025-12-29 11:39:38 -06:00
Vanessa faf16d0c99 Removed the rest of UnsafeOilEffects for Deepfryer because it has never worked appearently. 2025-12-29 11:39:38 -06:00
Vanessa c501daa23d KFV went out of business. 2025-12-29 11:39:38 -06:00
Vanessa a3ccb2eb85 Missing DeltaV comment. 2025-12-29 11:39:38 -06:00
Vanessa 3e20796126 Comments. 2025-12-29 11:39:38 -06:00
Vanessa b6e104a49f Removed HarpySquishes since its not used. 2025-12-29 11:39:38 -06:00
Vanessa ee09eb21a2 Early merge of typo-fix (#41652) 2025-12-29 11:39:38 -06:00
Tobias Berger c9cea03ad8 Update nix dev env (#41886)
Update flake
2025-12-29 11:39:38 -06:00
Vanessa 3812e77da3 Added shotgun drums back to the techfab due to #5014 2025-12-29 11:39:38 -06:00
Vanessa 14a91a0132 Updated damage namespaces in Mail system 2025-12-29 11:39:38 -06:00
pre-commit-ci[bot] 2150807060 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:38 -06:00
Vanessa bab31f5f0b Fixed secborgs in the robotics console. 2025-12-29 11:39:38 -06:00
Princess CheeseballsandPrincess Cheeseballs 8165753e1a Remove remote detonation/disable from the robotics console. (#41834)
End the war

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:37 -06:00
chromiumboyandScarKy0 10aaed5b48 Station AI ghost role (#40607)
* Initial commit

* API

* review

---------

Co-authored-by: ScarKy0 <scarky0@onet.eu>
2025-12-29 11:39:37 -06:00
pre-commit-ci[bot] 640c9ef974 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:37 -06:00
Vanessa 8ca30a135d Added playtime trackers for pet roles that have playtime requirements. 2025-12-29 11:39:37 -06:00
pre-commit-ci[bot] 069a1e4064 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:37 -06:00
Vanessa 0ba6dddb77 Buildable SmartFridge fixes. 2025-12-29 11:39:37 -06:00
Vanessa 360ab9f648 Migrated ERT and pet playtimes to job roles. 2025-12-29 11:39:37 -06:00
Vanessa 4a5764d672 Added an accessible override event to BodyPart to allow surgery to work again. 2025-12-29 11:39:37 -06:00
Vanessa 69504f97ec Revert "Can't crawl over counters (#40099)"
This reverts commit 01a7fc66f0.
2025-12-29 11:39:37 -06:00
Vanessa b5412c8df8 Hopefully fixed a persistant shitmed error that keeps popping up because it cannot re-parent an entity's grid 2025-12-29 11:39:37 -06:00
Princess CheeseballsandPrincess Cheeseballs 29fa901a85 Make Nutriment Work again. (#40869)
Fix nutriment

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:37 -06:00
Vanessa 1e66b9d05e Various unit test fixes. 2025-12-29 11:39:37 -06:00
Vanessa d4393aaf11 Added portafibs back to medical belts. 2025-12-29 11:39:37 -06:00
pre-commit-ci[bot] 137264c756 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:37 -06:00
Vanessa c345039934 Added a dummy component for BombingTarget for mapping compatibility. 2025-12-29 11:39:37 -06:00
Vanessa bcad4d5615 Updated upstream changelog. It's mostly correct. 2025-12-29 11:39:37 -06:00
Sir WarockandPrincess Cheeseballs 7a607871b9 Add jet injectors (#40076)
* Added Jet Injectors

* Small fixes

* YML Linter fix

* Requested Adjustments

* Better Sprites for the Jet Injector

* Actually forgor to give credit

* Fix merge conflicts and refactor

* Undo Oversight

* Introduction of Advanced Jet Injectors

* minor oversight

* Adhere to requests

* Remove Loadout, add Lockers

* harder better faster stronger

* vend shortage

* Sound effect

* will this work or do I just gotta choose one at random???

* alright fine I'll do it this way

* quiet the hissing, raise the pitch

* Merge new sprites

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:37 -06:00
pre-commit-ci[bot] 798e6ca4cc [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:37 -06:00
Vanessa 51e67002c2 Re-enabled deep fryers 2025-12-29 11:39:36 -06:00
Vanessa 7b5444ed37 Addtional YAML fixes from upstream merge changes 2025-12-29 11:39:36 -06:00
Leon Friedrich e77c193fe5 Remove StressTestMovementComponent (#40993) 2025-12-29 11:39:36 -06:00
Vanessa 43a4db57d3 Upstream merge cleanup 2025-12-29 11:39:36 -06:00
Vanessa 232cf8b5e0 Various fixes to DV-specific Battery systems. 2025-12-29 11:39:36 -06:00
slarticodefastandArtisticRoomba 7b8038df14 Cleanup BatterySystem (#41298)
* cleanup

* fix fixtures

* this belongs into the next PR

* review

* misc

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:36 -06:00
Vanessa 80f4492e41 Re-added action system to Rev system for Imp changes. 2025-12-29 11:39:36 -06:00
Princess CheeseballsandPrincess Cheeseballs 74cc4bc12c Conveyors spin fix (#37468)
* Init commit

* And on the third day god said: good enough

* and on the fourth day god said: oops

* Commit of evil

* I hate conveyors

* Switch the numbas

* I hate conveyors

* Master Merge

* And on the third day, God said: Good Enough

* I hate conveyors

* AAAA

* Optimize it a bit

* Move that

* Init Commit

* Oops

* Remove that

* One last commit

* Removed one TryComp

* Remove TryComp

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:36 -06:00
Hitlinemoss 70004b2fb2 Golden plunger + security star(s) moved to job trinkets loadout tab (#41094)
* Golden plunger + security star(s) moved to job trinkets loadout tam

* Fixed being unable to pick both job-plushie and the plunger/star at the same time

* Whoops, forgot to commit the bartender fix

* SecStar playtime baked into prototype itself

* Removed increased job-trinket limit (likely bad to hardcode these for very specific roles)
2025-12-29 11:39:36 -06:00
Justin Pfeifler 83d4239d5f Gravity Generators cannot be unanchored while active (#41256)
* Add unanchor attempt check

* Combine shared component and server component

- Combines SharedGravityGeneratorComponent and GravityGeneratorComponent
- AutoNetworked the GravityActiveBool

* Remove SharedGravityGeneratorComponent

* Update to SharedGravityGeneratorComponent

* Fix to be a complete sentence

* Dirty GravityActive whenever changed

* Rename component and remove view variables

* Update referenced component name

* Move unanchor attempt to shared system

* Add client system

* Revert popup to PopupEntity

* Fix popup to be PopupClient

* Set access restriction on GravityActive
2025-12-29 11:39:36 -06:00
Princess CheeseballsandPrincess Cheeseballs db1f32c9e6 Fix Entity Effect Scaling (Hopefully) for good and some other misc fixes (#41163)
* Fix the last of the entity effects bugs

* aaa

* losing it

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:36 -06:00
chromiumboy 2b3d4a4d9f Gas analyzer fix for gas pipe manifolds (#41325)
Initial commit
2025-12-29 11:39:36 -06:00
JesterX666andslarticodefast 636085892c Log radial menu interractions for the RCD, Issue #40902 (#40986)
* Log radial menu interractions,  Issue #40902

* code review adjustement

* Asked modifications from code review

* Update Content.Shared/RCD/Systems/RCDSystem.cs

Yeah, I'm old and using a very old C# syntax :D  I need to update my brain

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.Shared/RCD/Systems/RCDSystem.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:36 -06:00
eoineoineoin f5129aa9dd Fix changelog button always indicating new changes. (#41277)
* Refresh changelog button when ServerId is changed

* Listen to specific cvar being changed
2025-12-29 11:39:36 -06:00
Kittygyat 75b4d9e18b Fixed several unintended burn groupings with the untrained bible use & clumsy gun explosion (#41307)
Fixed several unintended burn groupings
2025-12-29 11:39:36 -06:00
Centronias db3d2a81c2 Make bleach a better space cleaner (#41276)
* make bleach a better space cleaner

* imagine me cherry picking just the first bad commit and then totally forgetting there was a second commit lel
2025-12-29 11:39:36 -06:00
UpAndLeavesandArtisticRoomba b792068a0b Move TileFireEvent to Shared (#41285)
* Move to shared

* cleanup

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:36 -06:00
ArtisticRoomba fc1bc7b722 Document Atmospherics Hotspot (#41283)
* hotspot partial docs

* Finalize docs
2025-12-29 11:39:36 -06:00
Connor Huffine e18f1cdfd9 Clean up implanter player guides (#41268)
Remove references to rags cleaning DNA
2025-12-29 11:39:36 -06:00
ScarKy0 e676fbb187 Clone toolshed commands (#41261)
* init

* fuck this file its such a mess why wont anyone sort this holy shit

* review
2025-12-29 11:39:36 -06:00
LukaSladeandāda 2bd664ac19 Voice Sensor Item (#41098)
* Voice Signaler can be Linked

* Fixes and Balancing

* a space has officially been added

* thinmfg

* things

* finalized everything I think?

* fixed??

* actually commit please (imagine this fixes everything im gonna cry)

* new fix

* Update Resources/Prototypes/Entities/Objects/Devices/Electronics/misc_linking_utilities.yml

added as per review

Co-authored-by: āda <ss.adasts@gmail.com>

* connection range from 25 to 15

* Renamed state from 'voice' to 'icon'

* Change state from 'voice' to 'icon' in YAML

* removed comma from voicesensor sprite yml

* Modify defaultLinks for Trigger source port

Updated defaultLinks for Trigger source port.

* Changed PNG name from voice to icon

* Removed G menu recipe and added autolathe recipe

* Fixed test fail

* removed empty line

* removed another line

* removed extra lines in meta.json

* test commit to rerun tests

---------

Co-authored-by: āda <ss.adasts@gmail.com>
2025-12-29 11:39:35 -06:00
slarticodefastandScarKy0 1586ae2306 Add DNA injector (#41271)
* add item

* Update Content.Shared/Changeling/Systems/ChangelingClonerSystem.cs

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>

---------

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
ArtisticRoomba f00f084e8b Document Atmospherics ExcitedGroups (#41269)
Document ExcitedGroups
2025-12-29 11:39:35 -06:00
ādaandiaada 832f9ac258 Remove unused tags (#41265)
* the letter R

* the letter S

* extras

* the letter T

* the letter U

* the letter V

* the letter W

* the final letter ( X )

* the easy ones

* Unused b and c

* unused d

* unused G

* unused I

* unused K

* un used m and p

* the letter R

* unused T

* un used W

* re-add heavy rifle, document magazines

* final alphabet

* Merge remote-tracking branch 'upstream/master' into work/tag-nuke

* delete haunted

* Revert "delete haunted"

This reverts commit 870d782f7d97a1d7cb34cd14a288cc0cd0299cce.

* mistake

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
ArtisticRoomba 9b3c84e271 Cleanup and document TileAtmosphere (#41254)
* Cleanup and document TileAtmosphere

* superconduction
2025-12-29 11:39:35 -06:00
ArtisticRoomba e52239050b Cleanup and document AirtightData/MonstermosInfo (#41258)
cleanup and document airtightdata/monstermosinfo
2025-12-29 11:39:35 -06:00
Vanessa b0d80e7471 Cloning fix 2025-12-29 11:39:35 -06:00
Connor Huffine 255430c4d9 Remove warning from CloningPodSystem (#41246)
* Change raw string to protoId

* Address comment
2025-12-29 11:39:35 -06:00
Leon Friedrich ac2c936f6d Improve CreateDeleteCreateTest failure messages (#40996)
* Improve CreateDeleteCreateTest failure messages

* nameof
2025-12-29 11:39:35 -06:00
Hannah Giovanna Dawson eeaf32a410 Migrate random shuttle events to load dynamically (#40326) 2025-12-29 11:39:35 -06:00
Hitlinemoss ab8deb4839 Assorted tweaks to towel trinkets (#39831)
* Added tactical katana + tactical katana shipment (placeholder descriptions)

* Revert "Added tactical katana + tactical katana shipment (placeholder descriptions)"

This reverts commit aa1928be7f4d938df1838943781e63c47a03cc11.

Whoops, committed to master by mistake

* Cleaned up trinket menu

* Fixed dark green towel clothingVisuals color values

* Sorted towels by color

* Undo move of candles

* Sorted towels by actual HSV Hue value

* Remove 10h playtime requirement from white towels

* Removed cheap lighter from PR
2025-12-29 11:39:35 -06:00
Justin Pfeiflerandslarticodefast 3a193e6933 Edible Chameleon Clothing (#41232)
* Remove ignore for WhitelistChameleon tag

* Add correct tags to chameleon clothing

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
SlamBamActionman c6f98a3008 Fix walls and other unanchorable objects being unanchored by the G.O.R.I.L.L.A gauntlet (#41219)
* Initial commit

* Review fixes

* Bitwise? Yeah my wisdom score is a 10

* Review comments
2025-12-29 11:39:35 -06:00
Leon Friedrich 21a4b9ba8e Fix note heisentest (#41244) 2025-12-29 11:39:35 -06:00
Connor Huffine b8cd376ea7 Update SolutionRoundingTest.cs (#41238) 2025-12-29 11:39:35 -06:00
Connor Huffine ea266c5f40 Remove unused dependency (#41231) 2025-12-29 11:39:35 -06:00
Connor Huffineandslarticodefast c780a6baf9 Remove some warnings generated by SolutionTests (#41194)
* Add indirection

* Address feedback

* const

* VSC trolled me

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
eoineoineoinandslarticodefast b9673cc7d9 Borg module action QOL: put module name into tooltips (#38750)
* Borg module action QOL: put module name into tooltips

* Fix tests

* Tidy up component lookups

* formatting

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
Princess CheeseballsandPrincess Cheeseballs cd6a041c0a Make CuffableComponent and CuffableSystem not Crash (Hopefully) (#39123)
* This system is ancient

* Destroy that API

* Address reviews

* Destroy merge conflicts from orbit

* seems to work fine

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:35 -06:00
slarticodefastandArtisticRoomba 98540ecbe7 Allow InteractionTests to load other maps (#41226)
* load maps and marker

* cleanup

* sneaky doc

* sneaky doc2

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:34 -06:00
NoreUhhandNoreUhh 059f74cfbe Add 2 New Reagents (Felinase and Caninase) (#41136)
* Flavors, Flavor Profiles, Reagent Text

* Base Reagent and Mix reaction

* Borkinase, flavor stuff

* Final touches me thinks

* Comment out shit

* Update fun.yml

removed comments

* Update fun.yml

Increased output for borkinase and felinase

* explosive reaction

creates razorium when mixed and makes a radioactive explosion. screaming explosion funny!!!

* reagent descriptions

updated em

* chem is no longer nuclear bomb

* remove tile-break scale

* recipe change

done through web view dont kill me im lazy

* removed cellular, halved rads

done through web again, dont end me thanks

* updated locale to reflect name change

* updated reagent to reflect name change

* updated reactions to reflect name changes

---------

Co-authored-by: NoreUhh <noreuhh@gmail.com>
2025-12-29 11:39:34 -06:00
Connor Huffine 4e8cef60a4 Remove unused dependencies (#41213) 2025-12-29 11:39:34 -06:00
Connor Huffine 869e2d350f Remove double includes (#41211) 2025-12-29 11:39:34 -06:00
ArtisticRoomba e2c40e78b9 Atmospherics Substepping (#40465)
* initial shitcode commit

* command boilerplate

* command flushed out and docs fixes

* missed one important thing in method extraction

* do loc properly

* rest later

* address review

* this worked on my laptop but not on my desktop but okay

* review comments

* address review
2025-12-29 11:39:34 -06:00
Errant e234864fa3 Fix for Tesla Twins Miniboss (#41199)
* increase QA standards on the Tesla Generator production line

* comment

* Inert datafield and code

* I'm not even supposed to be here today
2025-12-29 11:39:34 -06:00
Vanessa 99def04bbe Fixed chitnid alcohol processing. 2025-12-29 11:39:34 -06:00
Super 0880b80bd1 Add multi-job exclusion support to objectives, and add more appropriate job restrictions to certain thief objectives. (#40065)
* multi exclusion!

* quick correction

* migrate all job: fields to jobs fields to avoid test fails. breaking change!!!
2025-12-29 11:39:34 -06:00
Kryyto 407256a93c Add a new gas React() benchmark (#41202)
* Add a new gas React() benchmark

* fix the iteration amount to 100, remove unused using

* fix the iteration amount to 1000
2025-12-29 11:39:34 -06:00
Connor Huffine 6b2d64268f Remove inaccessible code (#41209)
Remove false check
2025-12-29 11:39:34 -06:00
Connor Huffine 263c09a67a Remove unused includes in Ninja (#41207)
* Remove Unused

* Additional cleanup
2025-12-29 11:39:34 -06:00
eoineoineoin c6e799b949 Fix client crash in MeleeWeaponSystem (#41121)
Avoid crash when animating deleted entity
2025-12-29 11:39:34 -06:00
ādaandiaada 42c6edacd4 Fix all ignored recipes in material arbitrage (#41134)
* lights

* drink glasses

* vial chem bottle

* plates n stuff

* boards

* airtank

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:34 -06:00
104eb4b066 General touchups to antagonist flavor text (#41184)
* General touchups to antagonist flavor text

* Update Resources/Locale/en-US/game-ticking/game-presets/preset-wizard.ftl

* Update Resources/Locale/en-US/game-ticking/game-presets/preset-wizard.ftl

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com>
2025-12-29 11:39:34 -06:00
Connor Huffine be2f58dae0 Readd CutWireVariationPass with Cvar (#41191)
* Readd CutWireVariationPass

* Add Cvar to disable cutwirevariationpass

* Revert "Add Cvar to disable cutwirevariationpass"

This reverts commit c8dab794a523a27385f6144ab09e99d19fc02c24.
2025-12-29 11:39:34 -06:00
kosticia 3d7b83c5e5 fix typo in migrations (#41203)
aaaaaa
2025-12-29 11:39:34 -06:00
Connor Huffine 89c0210986 TemperatureSystem Base Class Initialization (#41196)
Add base class initialization
2025-12-29 11:39:34 -06:00
Connor Huffine 61ee871453 Remove warnings in Pow3r (#41195)
Refactor obsolete methods
2025-12-29 11:39:34 -06:00
Errant 3da6f2eadf Remove the remaining CheckButtons (#41073)
remove CheckButtons
2025-12-29 11:39:34 -06:00
Errant bfd25ba11e Rules tab in changelog (#40257)
* add Rules tab to changelog

* rules clear

* make Entries the last field, to reduce merge conflicts for all future edits in these files

* update date

* comment

* This was a nice dream, but it turns out SS14.Changelog just bulldozes it anyway

* update date
2025-12-29 11:39:34 -06:00
rumaks 95393679fa Fix the ethanol guidebook entry (#41192)
change liver metabolism rate to 1
2025-12-29 11:39:34 -06:00
rumaks aed96bb4fe Change the recipe for licoxide to not require lead (#40991)
change licoxide recipe
2025-12-29 11:39:33 -06:00
SnappingOpossum 1104ad85b7 Allow pacifists to use disabling modes of energy magnum and energy shotgun (#41029)
Pacifists can stun with emagnum and eshotgun
2025-12-29 11:39:33 -06:00
Sir Warock d1f545a047 Widen Ammo UI (#40570) 2025-12-29 11:39:33 -06:00
kosticiaandPrincess Cheeseballs b49f9adc86 Rename kira special to the orange-lime soda (#41167)
* rename kira

* these one too

* migration

* Revert "migration"

This reverts commit ae0006ef745909c2e17b37fd18fd1d57204fe773.

* Revert "these one too"

This reverts commit 9757d2cf6898719b158e03c0f3b637cd2b55ce17.

* Revert "rename kira"

This reverts commit 170408c6f7486a6746b7a7c52cf10c597ead2608.

* bless the emo

* aaaaa

* time to end this right here and right now

* Revert "time to end this right here and right now"

This reverts commit b2c38573f9f8b5e8f736443d646d26839a0694cf.

* Revert "aaaaa"

This reverts commit 0f9451e22533b2f646211219e04103ce16d952ca.

* Revert "bless the emo"

This reverts commit 223607accf81e286481cab8d1037b1eb89a44dac.

* rename

* bikeshedding

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:33 -06:00
Princess CheeseballsandPrincess Cheeseballs 7ab349682f [Hotfix] Fix Phalanx (#41170)
feex

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:33 -06:00
Princess CheeseballsandPrincess Cheeseballs f5686383ba [HOTFIX] Fix status effect removal from entity effects and buckets not being draggable (#41168)
just do less work it's that easy!

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:33 -06:00
emberwinters 8c80382feb Diphenhydramine drowsiness maximum fix (#41169)
Update medicine.yml
2025-12-29 11:39:33 -06:00
TheGrimbeeper 74c5aa098d Xenoartifact: Fix phasing effect (#41160) 2025-12-29 11:39:33 -06:00
scrivoy 4802be7dc4 Resprite and refactor wall dispensers (fuel, cleaner) (#36251)
* resprite fuel and cleaner walldispenser

* added sprites and moved walldispensers in own .rsi

* forgot to remove sprites in old location

* meta.json - use 4 spaces instead of 2

* moved reagent from food to tank container

* clean up code inheritance

* replace static sprites with layered sprites and update related code

* added BaseDispenser for shared logic across dispensers

* make BaseDispenser unspawnable

* Add Explosive and PacifismDangerousAttack to FuelDispenser for consistency with WeldingFuelTank

* moved the sprite one pixel down

* reset wall_dispensers.yml to master

* rename sprite states, remove unused sprites, bring back code changes after merge

* really remove every unused sprite

* add maxVol

* indent to 4 spaces

* cleanup

* remove pepper dispenser

* switch to shared fill level sprite
2025-12-29 11:39:33 -06:00
Hitlinemoss 220db6c822 More-generic bar flask name/description (#41144)
More generic bar flask name/description
2025-12-29 11:39:33 -06:00
sleepyyapril fa8516ea1b Discord Command Arguments as List (#41113)
* start (i got distracted)

* feat: list-based arguments for the discord implementation

* chore: unnecessary?

* chore: rename ArgumentList to Arguments

* fix: rename error

* chore: todo

* fix: error, again. I'm silly.

* chore: review

* *sound of flames*
2025-12-29 11:39:33 -06:00
Princess CheeseballsandPrincess Cheeseballs ca58cdbec4 Fix chemical explosion scaling. (#41153)
Fix area reaction scaling

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:33 -06:00
Atakkuandāda f05d3f9220 Implemented parenting and minimum default for loadout groups (#40861)
* Implemented parenting and minimum default for loadouts

* Fix a mistake

* Apply suggestion from @iaada

Co-authored-by: āda <ss.adasts@gmail.com>

* Implement @iaada's suggestion to rename MinDefault to DefaultSelected

* happy little accidents

* Moved Parents and Abstract fields to under ID, added inheritdoc

---------

Co-authored-by: āda <ss.adasts@gmail.com>
2025-12-29 11:39:33 -06:00
Vanessa 1dc29c9e32 Literally all of the damageable system refactor shitmed fixes. 2025-12-29 11:39:33 -06:00
Hannah Giovanna DawsonandPrincess Cheeseballs bd98b9212b Update DamageableSystem to modern standards (#39417)
* Update DamageableSystem to modern standards

* DamageContainerId -> DamageContainerID with lint flag

* Replace strings with protoids

* Make CVar subscription declarations all consistently whitespaced

* ChangeDamage -> TryChangeDamage, cope with C# jank

* Revert event signature changes

* Restore a comment

* Re-add two queries

* Init the queries

* Use appearanceQuery in DamageChanged

* Use damageableQuery in TryChangeDamage

* Use damageableQuery in SetDamageModifierSetId

* Final cleanup, fix sandboxing

* Rectify ExplosionSystem:::ProcessEntity's call to TryChangeDamage

* Re-organize DamageableSystem

* first big fuck you breaking change.

* THATS A LOT OF DAMAGE!!!

* Fix test fails

* test fixes 2

* push it

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:33 -06:00
metalgearslothandSlamBamActionman 6a8e307679 Double bullet speeds (#34971)
* Double bullet speeds

The only reason we had it at 20m/s was tunneling reasons.

The quick maths is (BodyA size + BodyB size) / frametime. Currently the game is doing substepping AFAIK so we can use 0.016 as the frametime therefore with a 0.40 width body we can get up to 40.625 (assuming the target is no narrower than 0.25 which given my thindows change last year should be a decently safe assumption).

* Fix

* Fix impact visuals, as they overshoot otherwise

* Revert changes

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2025-12-29 11:39:33 -06:00
Vanessa 4530e78e86 Add jet injectors (#40076) 2025-12-29 11:39:33 -06:00
Vanessa 504aecba37 More fixes. 2025-12-29 11:39:32 -06:00
Nemanja 2429e7b6b4 fix singulo decay (#28743) 2025-12-29 11:39:32 -06:00
Vanessa fc1d452e39 Various upstream tweaks and fixes. 2025-12-29 11:39:32 -06:00
lzk 3458075a14 make water cup spill when worn (#41148) 2025-12-29 11:39:32 -06:00
eoineoineoin 6d9a34415f Move Monotone button, checkbox styles out of StyleNano and into sheetlets (#41120) 2025-12-29 11:39:32 -06:00
Pieter-Jan Briers b738d805a9 Nanotrasen is a word (#41124) 2025-12-29 11:39:32 -06:00
03cdc0f9f2 Document tags: M-Q (#41141)
* the letter M

* the letter N

* the letter O

* the letter P

* the letter q

* Update Resources/Prototypes/tags.yml

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
ArtisticRoombaandslarticodefast 33002e7485 DeltaPressure Predicted Examine (#41135)
* predicted examine

* atrociously satanic

* do it right this time

* deltafields aren't necessary

* Update Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
sleepyyapril 9965777d04 Fix TryProccessRadioMessage Typo (#41139)
fix proccess typo
2025-12-29 11:39:32 -06:00
16f205b75d Damageable/Destructible Benchmarks (#41064)
* the fard

* oomba

* The woke swarm...

* Review

* review

* Apply suggestions from code review

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
beck-thompson a788927cea Admin alerts now link players with tpto (#40472)
* Admin alerts now link players with tpto

* Add coords

* Slarti tweaks!

* He saw my minor spelling mistake - its over...
2025-12-29 11:39:32 -06:00
ThatGuyUSA c5bb4668f7 Fixes .50 Uranium projectile sprite (#41068)
* 'fixed' .50 uranium displaying what it was set to

* Changed depleted-uranium to uranium
2025-12-29 11:39:32 -06:00
HuaqasandSouthbridge b71726aae4 Add Crazy Lube to the Toy Box. (#36292)
* Add crazy lube to the toy box.

* Decrease volume from 100u to 60u.

* Bring it back to 100u now lube evaporates.

* 4 space indent

Co-authored-by: Southbridge <7013162+southbridge-fur@users.noreply.github.com>

---------

Co-authored-by: Southbridge <7013162+southbridge-fur@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
TheGrimbeeper 1463a83a82 Xenoartifact: Fix teleport effect (#41049)
* Fix teleport effect

Fix teleport effect, teleporting the artifact instead of the node. Also fix the popup happening twice.

* Detach from parent

* Resolve popup

* fix pulling issue

* Fixed via joint system instead of pulling system

* artifact

* requested changes
2025-12-29 11:39:32 -06:00
ArtisticRoomba c035f3bd8b Fix DeltaPressure serialization spam (#41131)
* Fix DeltaPressure serialization spam

* Add TODO
2025-12-29 11:39:32 -06:00
Kyle Tyo 853fda5af2 Remove IsFirstTimePredicted from Ninja systems (#41127)
commit
2025-12-29 11:39:32 -06:00
psykana 7b39355168 Internals: prioritize gas tanks over jetpacks (#35068)
* Internals: prioritize gas tanks over jetpacks

* Use HasComp
2025-12-29 11:39:32 -06:00
slarticodefast f7b1de8255 remove a bunch of redundant IsFirstTimePredicted checks (#41119) 2025-12-29 11:39:32 -06:00
Errant 2f9731cfc9 Set newplayerthreshold cvar for the development serverconfig (#41099)
add ahelp newplayer threshold default to the dev configuration
2025-12-29 11:39:32 -06:00
Princess CheeseballsandPrincess Cheeseballs de5bdbc2f4 Fix eating the whole stack of uranium. (#41092)
* I hate stack system!!!

* a lil bit of fixing, as a treat

* humgry

* mmm burger

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
3901ea4d56 [STAGING] Remove Wizard Roundstart Antag (#40983)
* 1984 the wizard

* this is better actually

* disable wiz preference

* add code comment

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:32 -06:00
slarticodefast d2331ae65c Hotfix: Not all pens embed, exploding pens embed when activated (#41105)
* Revert "All pens embed (#39104)"

This reverts commit 3c1982a85f.

* only activated pens embed

* fix disembedding during prediction
2025-12-29 11:39:31 -06:00
Hitlinemoss d813816007 Backend vault-freezer cleanup (#41097) 2025-12-29 11:39:31 -06:00
beck-thompson 482235dbfd Fix the pin texture not rendering (#41093) 2025-12-29 11:39:31 -06:00
70f775fd8e Purges uses of TransformComponent.Coordinates.set (#34937)
* ECS-TransformComponent-Coordinates
Moves over all uses of the setter to use SharedTransformSystem.SetCoordinates instead

* revert unrelated change

---------

Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:31 -06:00
ad4f64fcd6 Stack System Cleanup (#38872)
* eye on the prize

* OnStackInteractUsing, TryMergeStacks, TryMergeToHands, TryMergeToContacts

* namespace

* Use, get count, getMaxCount

* component access

* add regions, mark TODO

* obsolete TryAdd, public TryMergeStacks

* GetMaxCount

* event handlers

* event handlers

* SetCount

* client server event handlers

* move to shared

* Revert "move to shared"

This reverts commit 45540a2d6b8e1e6d2a8f83a584267776c7edcd73.

* misc changes to shared

* split

* spawn and SpawnNextToOrDrop

* SpawnMultipleAtPosition, SpawnMultipleNextToOrDrop, CalculateSpawns, general server cleanup

* Rename Use to TryUse.

* Small misc changes

* Remove obsolete functions

* Remove some SetCount calls

* Partialize

* small misc change

* don't nuke the git dif with the namespace block

* Comments and reordering

* touchup to UpdateLingering

* Summary comment for StackStatusControl

* Last pass

* Actual last pass (for now)

* I know myself too well

* fixup

* goodbye lingering

* fixes

* review

* fix test

* second look

* fix test

* forgot

* remove early comp getting

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:31 -06:00
Centronias 88b2dcebc6 BaseSpawnEntityEntityEffect scales its spawned entities by default (#41091)
* make basically all entity spawning reactions scaling

* Intelligence
2025-12-29 11:39:31 -06:00
Princess CheeseballsandPrincess Cheeseballs e59a873ae6 Reduce Triggers Boilerplate. (#41086)
* Push 1

* cleanup + master merge

* launchontrigger

* A crumb of cleanup

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:31 -06:00
pre-commit-ci[bot] 460bcebc2e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:31 -06:00
SlamBamActionman 612fd96d7d Fix a single vox jumpsuit displacement pixel (#41080)
fix displacement
2025-12-29 11:39:31 -06:00
Hannah Giovanna Dawson 4afd2fb05d LaunchOnTriggerComponent (#39871)
* LaunchOnTriggerComponent

Launches an object when a trigger on that
object is caused. The launch will be a certain
amount of force. The direction of the force
will be in the direction the object is facing.

* Fire stationary objects in the direction they're facing

* EVIL

* LESS EVIL

* Resolve @ScarKy0 comments
2025-12-29 11:39:31 -06:00
PicklOH bf945e5839 Space Carp are fireproof now (#40820)
Fish are more fireproof
2025-12-29 11:39:31 -06:00
Princess CheeseballsandPrincess Cheeseballs 6bdbcdfb36 Delete an Unused Event. (#41083)
delet

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:31 -06:00
Vanessa 90bd82213d Migrated all other FoodComponent references to Edible 2025-12-29 11:39:31 -06:00
a3db6f513b Delete FoodComponent, migrate prototypes to EdibleComponent (#41070)
* yml

* yml fixes

* cs

* document regression

* comment

* organs fix

* diona consistency

* push

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:31 -06:00
Nox 5e04a7ddb8 HOS & Warden Weapon Spawners (#40860)
* Added HOS weapon spawner

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Added a new file for the weapon spawns, added warden weapon spawner.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Added offset to the spawners

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

---------

Signed-off-by: Nox38 <nebulousnox38@gmail.com>
2025-12-29 11:39:31 -06:00
beck-thompson 03bb462c58 PAIs will no longer get uplinks instead of traitors when a player is selected as an traitor (#41069)
* Fix bug, add logging

* Fixes
2025-12-29 11:39:31 -06:00
slarticodefast 355cf08d43 Fix wielding two-handed items with only one hand (#40966)
* fix

* review
2025-12-29 11:39:31 -06:00
MDuch369 b3fd980ae5 Gas recycler tweaks (#39212)
* allows gas recycler to be rotated

* Add Gas Recycler guide .xml

* Add Gas Recycler to engineereing guidebook yaml

* add loc

* add guide help component

* expanded guidebook entry

* recycler now can rotate pipe ports while keeping the rest in the same orientation

* guidebook edits

* added  teg arrows for recycler

* guidebook tweaks
2025-12-29 11:39:31 -06:00
Silverfur-underscore 2c2b50c277 Fixed Mime Lizard Plush going "weh" when colliding with something or being eaten (#41063)
* nulled EmitSoundOnCollide for mime job lizard plush

* Silenced edible sound
2025-12-29 11:39:30 -06:00
Moomoobeef 128674f542 Banana bread now shows up in the guidebook (#41047)
added banana bread to the correct group
2025-12-29 11:39:30 -06:00
Errant ce339498a6 Remove a code comment (#41052)
literally 1984
2025-12-29 11:39:30 -06:00
Princess CheeseballsandPrincess Cheeseballs 7d888e511d Mild Entity Effect/Condition Cleanup (#41059)
* Commit

* ploop

* borger

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:30 -06:00
Absotively 542447ec6a Hand labeler UI improvements (#40318)
* Populate and select label line edit on window open

* Widen hand labeller UI

* Add reset and clear buttons to hand labeler UI

* Add window resizing fix from https://github.com/space-wizards/space-station-14/pull/40322

* xaml cleanup, button grouping
2025-12-29 11:39:30 -06:00
Pieter-Jan Briers d81594171b Fix pre-round Discord ahelps showing incorrect round number (#41060)
Why was there a +1 ???
2025-12-29 11:39:30 -06:00
slarticodefast 7e6ee4afff Predict DestructibleSystem Part 2: First batch of entity effects (#41039)
* first batch

* fix name

* fix
2025-12-29 11:39:30 -06:00
08dfaf0dd5 Merge Injector & Hypospray Systems & Components (#41833)
* Merge Injector & Hyposprays

* Fixes

* Requested Changes

* Preview

* Inclusion of Prototypes

* Fix

* small oversight

* Further fixes

* A few more fixes & Bluespacesyringe buff

Co-Authored-By: āda <177162775+iaada@users.noreply.github.com>

* Final Commit, hopefully

* Merge conflict no more

* YML fix

* Add required changes

Co-Authored-By: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>

* cleanup warnings removal

* Bug fix & Maintainer Requests

Co-Authored-By: āda <177162775+iaada@users.noreply.github.com>

* Adhere to requested changes

Co-Authored-By: āda <177162775+iaada@users.noreply.github.com>

---------

Co-authored-by: āda <177162775+iaada@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:30 -06:00
Uberration 95cac43684 Fix: LockSystem - HasUserAccess - Set DenyReason Localization Text Properly (#41012)
* Update AccessReaderSystem.cs

Fixes #40987
Related to PR #40883

Set DenyReason in CheckUserHasLockAccessEvent when access is denied to display "Access denied." popup to users. Uses ??= to avoid overriding reasons from possible systems.

* RE-FIX: Localize default deny reason in LockSystem.HasUserAccess

The default deny reason was being passed as a localization key string instead of being localized before display.

* Re-added null coalescing operator

Per maint request
2025-12-29 11:39:30 -06:00
TheSecondLord 2a980af679 Toilet cistern stashes spawn containing basic loot (#41013)
* toilets can have maints loot as a treat

* reviews addressed

* nobody told me oasis maps a diamond ring in the toilet
2025-12-29 11:39:30 -06:00
SolidSyn 4e82c2b694 Changes Slippery Slope to not require a robe and hat for casting. (#41038) 2025-12-29 11:39:30 -06:00
Huaqas caa1f8f616 Remove reference to Velcro (#41032)
Velcro is a brand that is owned by a company that has lawyers. Lawyers are bad.
2025-12-29 11:39:30 -06:00
ToastEnjoyer 8e2c246308 added seclight to hos locker (#41031) 2025-12-29 11:39:30 -06:00
Absotively 4de470b7b6 Move ChemMaster buffer sort button out of transfer/discard button group (#41018)
* Move chemmaster buffer sort button out of transfer/discard button group

* Use margin for layout
2025-12-29 11:39:30 -06:00
JesterX666andslarticodefast 84d7c3d8cc Add Integration Testing for issue #40868 (#40972)
* Integration tests for hunger and thirst

* Adjustements after the code review comments

* cleanup

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:30 -06:00
b7febc7b35 Prevent freindly fauna node from spawning hostile mobs (#40979)
* "friendly"

* remove hostile mobs

* completely remove hostiles

* add hostile fauna

---------

Co-authored-by: Quasr <~182430031+quasr-9@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:30 -06:00
Princess CheeseballsandPrincess Cheeseballs b2f02e6eed Fix Being Drunk! (#41002)
* Drunk moment

* push

* fix test fails + a smidge of cleanup

* two smidges of cleanup

* Unpredicted so don't need the workaround

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:30 -06:00
SlamBamActionmanandPrincess Cheeseballs 6c561b3e9a Add doafter to filling the hypopen (#40538)
* Initial commit

* Small QOL buff

* Review changes

* Ch-ch-ch-ch-chaaaanges

* Review changes

* oops

* Oh ya fix the fill thing

* cleanup warnings make a few more private methods

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
SolidSyn 1fba48236a Changed mindswaps cooldown from 5 minutes to 3 minutes (#41027) 2025-12-29 11:39:29 -06:00
eoineoineoin 53fa40bc39 Add a sheetlet for ConfirmButton (#41011)
* Add a sheetlet for ConfirmButton

* Move sheetlet to central location; alphabetize using statements
2025-12-29 11:39:29 -06:00
eoineoineoin 7bd591ea79 Fix style on paper editing background (#41009) 2025-12-29 11:39:29 -06:00
eoineoineoin c1a644839f Fix refresh button in fax machine (#41024) 2025-12-29 11:39:29 -06:00
Pieter-Jan Briers c20763751a Don't show NaN/infinity if AME has no cores (#41026)
Fixes #41025
2025-12-29 11:39:29 -06:00
Kyle Tyoandslarticodefast d52dd5dcd6 Mosin be tested, Verin be breaded. (#40957)
* Create WeaponSniperTests.cs

* Update SharedGunSystem.cs

* requested changes.

* Update WeaponTests.cs

* rerun tests

* Update WeaponTests.cs

* Update WeaponTests.cs

* Update Content.IntegrationTests/Tests/Weapons/WeaponTests.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
Perry Fraserandslarticodefast 5e59018676 fix: make IdentityComp.IdentityEntitySlot optional (#39357)
* fix: make IdentityComp.IdentityEntitySlot optional

* Revert "fix: make IdentityComp.IdentityEntitySlot optional"

This reverts commit fa25263be916ed142bf2cff9871fca3e64c6da2b.

* fix conflicts

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
MoraandTrixxedHeart b61d90816c Changed Vox Head Marking Point Limit To 4 (#40542)
* Fix vox head marking limit

* Sets Vox head marking points 4

---------

Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
Vanessa 9617c03412 Fixed PrivilegedIdIsAuthorized in DV namespace 2025-12-29 11:39:29 -06:00
96e69b955c Feature/door remote radial (#36378)
* it works! kinda

* so it works now

* minor cleanup

* central button now is useful too

* more cleanup

* minor cleanup

* more cleanup

* refactor: migrated code from toolbox (as it was rejected as too specific)

* feat: moved border drawing for radial menu into RadialMenuTextureButton. Radial menu position setting into was moved to OverrideArrange to not being called on every frame

* refactor: major reworks!

* renamed DrawBagleSector to DrawAnnulusSector

* Remove strange indexing

* Regularize math

* refactor: re-orienting segment elements to be Y-mirrored

* refactor: extracted radial menu radius multiplier property, changed color pallet for radial menu button

* refactor: removed icon backgrounds on textures used in current radial menu buttons with sectors, RadialContainer Radius renamed and now actually changed control radius.

* refactor: in RadialMenuTextureButtonWithSector all sector colors are converted to and from sRGB in property getter-setters

* refactor: renamed srgb to include Srgb suffix so devs gonna see that its srgb clearly

* fix: enabled any functional keys pressed when pushing radial menu buttons

* fix: radial menu sector now scales with UIScale

* fix: accept only one event when clicking on radial menu ContextualButton

* fix: now radial menu buttons accepts only click/alt-click, now clicks outside menu closes menu always

* feat: simple radial menu prototype for easier creation

* refactor: cleanup, restored emote filtering, button models now have class hierarchy

* refactor: remove usage of closure from 'outside code'

* refactor: remove non existing type from UiControlTest

* refactor: remove unused using

* refactor: revert ability to declare radial menu layers in xaml, scale 32px sprites using scale in radial menu

* refactor: whitespaces

* feat: now door remote have some kind of ui to switch mode

* refactor: subscribe for dispose on existing radial menus

* feat: now simple radial menu button models can have custom color for each sector background (and hover background color). Also added OpenOverMouseScreenPosition inside SimpleRadialMenu

* fix: AI door menu now can be closed by verb if it gets unpowered

* refactor: simplify code for DoorRemoteBoundUserInterface

* fix open/close mode sprite

* remove broken merge changes

* refactor: changed DoorRemoteSystem to be fully in shared

* refactor: localize DoorRemoteBoundUserInterface

* refactor: fix multiple invocation for  TryToggleDoor inside DoorRemoteSystem on prediction

* refactor: extracted sprites and loc strings into prototype for cleaner code. Currently selected mode now have different background.

* refactor: changed hover selected color to recommmended

* refactor: reuse stylenano colors!

* review

* refactor: remove StyleNano reference

* refactor: revert removal of item status for door remote

* refactor: fix status control misprediction

* refactor: remove invalid comments, rename client DoorRemoteSystem comp after handle method

* refactor: fix DoorRemoteStatusControl not displaying status on entity pickup

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
Co-authored-by: Eoin Mcloughlin <helloworld@eoinrul.es>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
Kresnyandslarticodefast 64e3332457 Update Controls.xml (#40978)
* initial commit

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
lzkandslarticodefast cc0a81a3a0 fix species name in station records (#36217)
* fix species name in station records

* the hellish commit

* Update GeneralStationRecordConsoleWindow.xaml.cs

* fix

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
Leon Friedrich 374cb51d93 Fix IdCardConsoleSystem NRE (#40994) 2025-12-29 11:39:29 -06:00
qwerltaz f8dc959667 goats eat kudzu again (#40220)
* kudzu edible, food htn starts at peckish, no nutrition needed for npc to eat

* fix kudzu tags

* remove old stomach 2 from ruminant body

* make kudzu nutrition non-zero

* skip targeting food if nutrition is zero

* move edible from baseKudzu
2025-12-29 11:39:29 -06:00
SnappingOpossum 5f03da10c4 Allow upgraded solars to take structural damage (#40992)
Parent Damageable on solars
2025-12-29 11:39:29 -06:00
B_Kirillandslarticodefast b58823ad93 Criminal console status expansion (#36244)
* Criminal console update and new icons sprites

* Change Hostile and Paroled sprites

* Change Hostile sprite

* Return the 8x8 scale, redraw new icons

* Some changes

Redraw eliminated icon and change icons scaling in pda

* Update Resources/Textures/Interface/Misc/security_icons.rsi/meta.json

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.Client/CartridgeLoader/Cartridges/WantedListUiFragment.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
Kittygyat c93661f956 Added the cosmetic carp suit to the autodrobe inventory (#40995)
Added cosmetic carp suit to the autodrobe inventory
2025-12-29 11:39:29 -06:00
Princess CheeseballsandPrincess Cheeseballs b8008309bf Zombies can't hurt II. (#41007)
* Make zombie system not fard

* Actually who cares if our owner is not a zombie, let melee weapons be zombies that's funny as fuck

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
ādaandiaada 348b984c7e Consistency fix for soap making (#40998)
soap

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:29 -06:00
ArtisticRoomba 50b112ab89 Slime organs metabolizing slime restores blood level + halves slime hunger satiation when consumed by a slime organ (#32537)
* metabolizing slime restores blood level

* halved the effectiveness of hunger satiation when slime is consumed by a slime organ

* kaboom

* ref george orwell's 1984

* rewrite george orwell's 1984

* Revert "rewrite george orwell's 1984"

This reverts commit c283a38e584c477f601179ea7504ec2651d22d31.

* this is exactly like doublethink from george orwell's 1984

* this is exactly like the ministry of truth from george orwell's 1984

* this is exactly like the ministry of peace from george orwell's 1984

* i'm going to lose it just like the protagonist in george orwell's 1984
2025-12-29 11:39:28 -06:00
Vanessa 8aeb9082e7 Replaced remaining StyleNano references. 2025-12-29 11:39:28 -06:00
Brandon LiandJanet Blackquill e2f5f4b7fa StyleNano removal: Palette system and Sheetlets (#29903)
* Apply patch https://github.com/moonheart08/space-station-14/compare/1777eea9a42a8bdbc4a865327bb9ef3e10fe57de..6b32bb2b148ef9d312b5332ccea4d8688694dba5

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* make red squiggly line go away

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Add todo list

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Add palette to `TextureButton`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Rename `PalettedButtonSheetlet` to `NTButtonSheetlet` and move useful methods to `ButtonSheetlet`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* migrate `ContextMenu` styles

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Update todo

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* tweak NT colors

* New stylesheet: `InterfaceStylesheet` & `InterfaceTooltipSheetlet`

* Move inheritance of `IButtonConfig` to `NanotransenStylesheet.Buttons`

* move `MenuButtonSheetlet` & actually implement `InterfaceStylesheet` correctly

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* tweak color & update todo

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* chat is this real (update chat palette)

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Update todo

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `SmallButton` and remove some obsolete things from `StyleNano`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* rename `StyleClasses` to `StyleClass` so `Stylesheets.Redux.StyleClasses` syntax is dead

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* replace `ButtonColorGreen` with `Positive`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `Placeholder`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Examine popup buttons

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* move over more things & cleanup `StyleNano` more (under 1000 lines!!!!)

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Remove some more redundant stuff

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Undo style change for chat window

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* paper editing works now

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `OptionButton` styles

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `ListContainer`, move `DefaultWindow` styles (for now) & more cleanup

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* fix `ActionButton` not having highlighting

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* remove imports of `Robust.Client.UserInterface.StylesheetHelpers` & format

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `ButtonBig` and more cleanup

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Move items inheriting from `ISheetletConfig` into their own directory

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Cleanup & move `Label` styles

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Action search box styles

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Moved, stuff is

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* rename `LabelSubtext` to `LabelSubText` & move more stuff (were almost there!!)

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* yap & move over MORE stuff (just like one thing left!!!)

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Change status classes to appropriate existing classes

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* remove remaining references to `StyleNano`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Fix some hardcoding & broken code, `GetFromControl`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Scrollbars!

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* chores

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* clean up `StyleClass.cs`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `ItemListSheetlet` refactor

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* more chores!

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Consistency w/ directory structure

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Move `MainMenuSheetlet`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `ColorPalette`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* whoopsie

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Remove most sheet-specific sheetlets

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* fix warnings, cleanup, & fix scrollbar (this is why we fix warnings boys)

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* yap

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* MASSIVE resharper skill issue

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* actually use `ISheetletConfig`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* have specific sheetlet be specific

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `GetResourceOr`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* cleanup & move / remove `IPalette`s

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* actually do specific stylesheets correctly & fix tooltips

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* cleanup & logging

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* Move `FontKind` and `FontKindExtensions` to their own files

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* rename `InterfaceStylesheet` to `SystemStylesheet`

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* change `ButtonHovered` etc to `PseudoHovered` etc

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* give the palettes fun names

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* `StyleSpace` is no more

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* It should compile now! I am now going to bed (fr) if it fails it fails

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* make squiggly red line go away

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>

* add additional type restrictions to sheetlets

* `CommonStylesheet`

* minor cleanup

* Make `GetSheetletRules` not horrible

* wait this was duplicating style rules. oops!

* move some sheetlets to their associated xamls

* oh wait apparently that was important

* review pass 1

* review pass 2 (font & color stuff)

* review pass 3: remove unused stuff / filename fix

* fix warnings & "replace cast with explicit variable type"

* move `Palette` stuff to its own directory

* tweak colors (they're different now that I actually fixed the OKlab thing)

* review pass 4: little things

* make window close button grey before hovering

* refactor `HLine` to make it less terrible and allow it to be styled

* fix `NanoHeading` (it's been broken for a while whoops) and cleanup hardcoding

* band-aid missing references in `StyleNano`

* move `StyleBox` generating functions out of `IButtonSheetlet` into `StyleBoxHelper`

* remove dictionary field from `IStylesheetManager`

* Add check for unloaded sheetlets

* style tweaks to satisfy OCD

* I somehow missed this: `Caution` styleclass replaced with `negative`, refactor `PowerChargeWindow`

* tweak palettes for like the fourth time

* construct `StyleNano` / `StyleSpace` in `StylesheetManager` and mark them as obsolete

* rename `BackgroundPanel` classes for consistency

* tweak window / `ListContainer`

* oh right you use `///` not `/**`

* font system is bad, make it temporary

* acknowledge Divider funkyness

* remove use of class `Disabled`

* `ColorPalette` allow overriding colors with brace initialization

* review pass again

* tweak disabled button colors

* `StatusPalette` tweaks

* typo

* Make squiggly red line go away

* Delete `Redux`

* Remove all references to `Redux`

* make red less radioactive

* Store stylesheet name inside stylesheet class

* fix merge errors

* use RT's Oklab support instead

* shuffle around `StylesheetManager` fields

* apply stylesheets based off `StylesheetComponent`

* simplify `ColorPalette` construction

* add todo for `SheetletConfigType`

* `OptionButton` has a background color now

* fix disabled buttons

* sigh (red color palette fixed)

* make `ItemList` use primary palette

* Revert "apply stylesheets based off `StylesheetComponent`"

This reverts commit c05b147da845f6e04ff33d1cbd91a18a92c676d7.

* dead code removal

* buttons are green when pressed (we need togglebuttons)

---------

Signed-off-by: Brandon Li <sirbrandonthenerd@gmail.com>
Co-authored-by: Janet Blackquill <uhhadd@gmail.com>
2025-12-29 11:39:28 -06:00
pre-commit-ci[bot] f9e728b547 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:28 -06:00
Vanessa 56023ecef5 Fixed shared chat references. 2025-12-29 11:39:28 -06:00
ArtisticRoombaandPrincess Cheeseballs 3ff4794f99 New job lizard plushies + Job-specific trinkets loadout (#34127)
* add the job wehs, add job crate fill and add purchaseable crate

* add job wehs to new loadout type

* add the MULTIWEH

* fix that one bug in testing

* mime and clown plushies have custom sounds

* was looking at the wrong thing alright

* indecisive

* properly attribute multiweh

* my worst nemesis, yaml linter... how dare they point out my mistakes...

* Remove crate and cargo buy at maintainer request

* add multiweh to bulk lizard plushie crate at a 1% chance

* double whammy

---------

Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
2025-12-29 11:39:28 -06:00
Pgriha 44c31f660e Adding cotton seeds to cargo seeds crate (#40970)
* First one

* Let me count
2025-12-29 11:39:28 -06:00
558f1e74a4 refactor: new overload for SharedRandomExtensions.HashCodeCombine (#40990)
* refactor: new overload for SharedRandomExtensions.HashCodeCombine

* Update Content.Shared/Random/Helpers/SharedRandomExtensions.cs

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:28 -06:00
AsnDen 13c1b9165d Large thruster (#37681)
* Large thruster

* copyright

* remove russian 📣

* Make it stronger (16x of normal)

* More energy consumption

* Update meta.json

* You can't deconstruct this thruster

* price - 1500 (5x)
2025-12-29 11:39:28 -06:00
Vanessa b078351ff0 Changed DV lawboard inheritence 2025-12-29 11:39:28 -06:00
PotentiallyTom c09b328eb0 Silicon lawset book and Law boards can now point to the list of lawsets. (#40944)
* AI compendium book proto added

* added BaseSiliconLawboard and have silicon boards parent it

* color tweaks

* requested change
2025-12-29 11:39:28 -06:00
lzk 30aa781662 fix arachnid lungs (#34381) 2025-12-29 11:39:28 -06:00
Vanessa 79a7609d88 Fixed namespaces in Devil systems 2025-12-29 11:39:28 -06:00
slarticodefastandpa.pecherskij 13abdb6e08 Add virtual chat API methods in Shared (#40895)
* move chat stuff to shared

* refactor: using cleanup +whitespaces + xml-doc

* review

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-12-29 11:39:28 -06:00
slarticodefast 36222ada7a Add EntityEffectOnTrigger and RejuvenateOnTrigger (#40967)
commit
2025-12-29 11:39:28 -06:00
Kittygyat 2238f3fbd0 Lets monkeys & kobolds shove/disarm! (#38542)
Let monkeys shove/disarm
2025-12-29 11:39:28 -06:00
SpaceLizard 64be64a5da Fix some crystals (#40985)
Update crystal_shard.yml
2025-12-29 11:39:28 -06:00
Vanessa 4c70e36022 Vox organ changes. 2025-12-29 11:39:27 -06:00
Princess CheeseballsandPrincess Cheeseballs 7cdd75408a Fix Ninja EMP themselves. (#40968)
* push

* Skibidi toiler

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:27 -06:00
Anri 4275f5ae04 Ninja headset (#40054)
* init-commit

* skill-issue

* happens

* post-review-changes

* desc-fix

* is-it
2025-12-29 11:39:27 -06:00
ādaandiaada b31c47b18f Document tags: H-L (#40976)
* the letter H

* The letter I

* the letter J

* The letter K

* The letter L

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:27 -06:00
JackRyd3randJacobThayil 10d593fab0 Added the sidearm tag to energy magnum (#40974)
Co-authored-by: JacobThayil <jtha821@aucklanduni.ac.nz>
2025-12-29 11:39:27 -06:00
Hitlinemoss 3bc01962b7 Folders and clipboards recycle into what they are actually made of now (#40954)
* Folders recycle into paper, clipboards recycle into wood/plastic and steel

* CC clipboards also contain some cloth

* The nuclear code folder is also made of paper

* Whoops, violated the laws of thermodynamics

* Whoops, broke the laws of economics
2025-12-29 11:39:27 -06:00
MissKay1994 60ebb1dbdc Add sprites for Vox organs (#40555)
* Blue organs for blue blood

* EYES GO IN THE HEAD

* Accidental upload

* Also accidental upload

* skreeching for the future

* SKREEEEEEEEEE

* THese are not the files you are looking for

* Sprite attribution
2025-12-29 11:39:27 -06:00
Vanessa 70eb07aaf8 Fixed some Beer Goggles safe throw logic. 2025-12-29 11:39:27 -06:00
Hitlinemoss 89498177ed Cargo orders that contain beverages now come in freezers (#40955) 2025-12-29 11:39:27 -06:00
f905239b87 Make a lot more puddle stuff predicted (#38871)
* feat: predict evaporation

* refactor: move puddle update logic to shared

* refactor: move more puddle stuff to Shared

Still can't do stuff that creates puddles :(

* refactor: move puddle transfers to shared

* fix: various style fixes + switch to predicted variants

* style: make some puddle stuff private instead of protected

* refactor: move solution dumping to its own system

* docs: clarify Drainable/Dumpable/Refillable docs

Also whacks unneeded VVAccess's.

* fix: audit usages of drainable+refillable

I'm leaving spear and arrow for now... but I don't love it.

* Added an item query I guess

* Review changes

* You can pour out waterguns

* Review changes

* oops

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2025-12-29 11:39:27 -06:00
Mehnix 3456705e86 All pens embed (#39104)
* Embed for all

* Unify all thrown pen damage

Removes PenEmbeddable Abstract Entity as it is redundant. Those that parented to it now just parent to Pen.

* Fancy Pens deserve that damage bonus

Keeps an abstract entity for fancier pens to parent off of. Someone might do different fonts in the future, and them doing more damage is funny.
2025-12-29 11:39:27 -06:00
Absotively 09c4546fa9 Update outdated comment re: borging & borg playtime requirements (#40886)
Update outdated comment
2025-12-29 11:39:27 -06:00
ScarKy0 3807ece40a Trigger On Hitscan (#40964)
* init

* doc

* merge systems

* review
2025-12-29 11:39:27 -06:00
76356eceef AddReagentOnTrigger (#39875)
* Trigger

* Unnecessary(?) Checks

* request

* Update

Co-Authored-By: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* cleanup

* standard name

* don't use name alias

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:27 -06:00
slarticodefast bfde480948 Fix AddReagent modifying to solution being added in some cases (#40959)
fix
2025-12-29 11:39:27 -06:00
Stefano Pigozzi 28f938df79 Fix Space Villain tie message (#40958)
Fix `space-villain-game-enemy-dies-with-player-message`
2025-12-29 11:39:27 -06:00
Vanessa 225bef1fad Added a system to change heat on hitscan hit. 2025-12-29 11:39:27 -06:00
Vanessa f440bc0ebd Migrated hitscan protos to new entity. Fixed vox emotes. 2025-12-29 11:39:27 -06:00
beck-thompson 760f44386e Hitscans are now entities (#38035)
* Hitscans are now entities

* Cleanup

* Cleanup

* Silly mistakes but stop sign testing helps :)

* Address most of the review

* Reviews

* perry :(

* Final reviews

* Add comments

* Split event up

* better comment

* cleanup
2025-12-29 11:39:27 -06:00
Kittygyat 4ab3b160e2 Slightly resprited the service borg (#39764)
* Small resprite of the service borg

* forgot credits

* Spriting fix, merging fix

* Deduplicated meta.json file
2025-12-29 11:39:27 -06:00
PicklOH f3941a7206 Remove rag forensics cleaning (#40818)
Removes rag forensics
2025-12-29 11:39:26 -06:00
Kittygyat 010670cbc6 Made a new generic borg module for art; the Artistry Module! (#39679)
* Made a new generic borg module for art; the Artistry Module!

* Made requested changes, changed the crayon emptyRepresentatives

* Did the thing.

* Added updated action sprite,with thanks to TiniestShark, also Attempted to fix the merge conflict

* changed empty representative of red to rainbow

* Added recharging crayon 'Electric Crayon' and sprite to the borg module, removed redundant extra crayon slot.

* Added requested changes, replaced old spraypainter with new recharging borg spraypainter

* Forgot to readd the recyclable tag to Crayon

* Removed compressed paint hand
2025-12-29 11:39:26 -06:00
ādaandiaada d5411ae965 Fix recharging spray painter (#40953)
* commit

* fix

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
Mora 228986e2b8 Add GenpopLeave and GenpopEnter to Security accesses (#39515)
Add GenpopLeave and GenpopEnter perms to security job accesses
2025-12-29 11:39:26 -06:00
MoraandTrixxedHeart 5a3e0bce66 Added Vox Chitter and Clicking (#40878)
Added Vox chitter and clicking

Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
Wolfkey-SomeoneElseTookMyUsername ca7644132b Fix some food recipe categories (#40949)
Fix some guidebook food categories
2025-12-29 11:39:26 -06:00
Errant f1d2a02d31 Remove two obsolete buttons from the Admin UI (#40904)
remove unused UIs
2025-12-29 11:39:26 -06:00
rlebell33 790d1731aa add the diona typing indicator to the FloraTree entity (#39103)
* add the diona typing indicator to the FloraTree entity

* move diona typing indicator to BaseTree

* add comment
2025-12-29 11:39:26 -06:00
ScarKy0andPrincess Cheeseballs 449bcbb452 Event based lock access (#40883)
* init

* some bonus stuff

* CheckForAnyReaders

* reader

* doc

* review

* fuck yaml

* Me when I push changes myshelf

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
QuasrandQuasr 7a7f67494c Bring sky blue carpet in line with other carpets (#40867)
* add table and curtains as constructables; carpet now in printer

* add textures

* whoops, didn't mean to change that

* textures v2

* add open curtain proto

---------

Co-authored-by: Quasr <~182430031+quasr-9@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
MilenVolfandslarticodefast cb49d8d851 Add "Reset to default" verb to TriggerOnVoice (#35636)
* Add "Reset to default" verb to `TriggerOnVoice`

* Forgor to remove these changes

* Apply requested changes

* Test fail is real

* Apply requested changes

* Update according to refactored trigger system

* cleanup

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
Worldwaker ec966ba1c2 Fixes parcels and parcel wrapped humanoids being invulnerable (#40940)
* Primary Commit

* Made requested changes, fixed line spacing.
2025-12-29 11:39:26 -06:00
slarticodefast 3c0cef7aa2 Make parcelwrap able to wrap humanoids (#40911)
* parcel

* help, I'm being forced to add admin abuse features

* review
2025-12-29 11:39:26 -06:00
Red Mushie 2244bf7360 Fix power sensor looking at wrong electrical network (#40934)
* Fix power sensor looking at wrong electrical network if it happened to be connected

* Remove unnecessary loop in power sensor logic
2025-12-29 11:39:26 -06:00
Dinner a6251e746c Reorganize ID card sprites to use job icon sprites directly (#40414)
* reorganize id card sprites

* add CBURN attribution

* comment offset

* fix captain ID steal icon

* oops

* update attribution

* slightly more precise language in attribution

* add aliases, cleanup parents and inhands

* adjust syndicate sprites

* missed a spot

* fix historic attribution issues, add black inhands to id cards

* errant curly brace begone

* control stripe color through yaml, meta fix

* make deathsquad blue
2025-12-29 11:39:26 -06:00
Leon Friedrich 5b07d02d49 Undo effect logging changes (#40919)
* Undo effect logging changes

* remove ShouldLog
2025-12-29 11:39:26 -06:00
d90050305a Grenade penguin htn (#34935)
* we can do better

* better

* slightlybetter

* remove unused dependency

* uplink description more descriptive

* more intentional explosion stats

* cleanup

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
Vanessa 6319c2e6aa Removed test that we didn't need 2025-12-29 11:39:26 -06:00
Samuka-CandSimon 54d643a2c7 Add bank toolshed commands (#40614)
* add bank commands

* Follow convention

* use protoId

* make logic better

* Move stuff to shared

* Make things dirty

* Move UpdateBankAccount to shared as well

* nullable + resolve

* Fix commands

* make things less legible

* typo

* same typo

* im dumb

* I don't know how to spell

* replace select with foreach

Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com>

* replace select with foreach again

---------

Co-authored-by: Simon <63975668+Simyon264@users.noreply.github.com>
2025-12-29 11:39:26 -06:00
Leon Friedrichandslarticodefast 77df3ccf27 Fix ResearchSystem threading exception (#40917)
* Fix ResearchSystem threading exception

* Update Content.Server/Research/Systems/ResearchSystem.Client.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:25 -06:00
telavivgamers a9d328e632 Ashtrays can contain ashes and matches (#40926) 2025-12-29 11:39:25 -06:00
Leon Friedrichandslarticodefast 40759f556c Add admin ui tests (#40914)
* Add admin ui tests

* fix notes test

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:25 -06:00
Matt Idzik 4f925f4c04 Fixed votekicks putting you on a one hour vote cooldown (#40622)
* Fixed votekick.timeout cvar not configuring behavior as intended.

* Refactor TimeoutStandardVote to include timeoutOverride
2025-12-29 11:39:25 -06:00
YoungThug 577c6d79bb Resprites and keeping consistency for forgotten figurines (#40889)
* Resprites and keeping consistency for forgotten figurines

* Slarti Requests

* fixed sus
2025-12-29 11:39:25 -06:00
ādaandiaada a78a5b6458 Document tags: G (#40898)
* Use more consistent and clear language in documentation

* the letter G

* the friends we made along the way

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:25 -06:00
Connor Huffine bc69e3eec7 Singularity eats carpet (#40896)
* Add carpet fixture

* Remove DoorPassable

* Put DoorPassable Back
2025-12-29 11:39:25 -06:00
QuasrandQuasr f5c22dbcaf Give destroyed machine frames outlines (#40892)
add outline to destroyed frames

Co-authored-by: Quasr <~182430031+quasr-9@users.noreply.github.com>
2025-12-29 11:39:25 -06:00
OnyxTheBrave 109c0e850d Logging for turret controller (#40884)
* Logging for turret controller

* Wording

* MEDIUM

* changed to use ItemConfigure
2025-12-29 11:39:25 -06:00
slarticodefast 22006fdb18 Fix sericulture zombies (#40279)
fix sericulture zombies
2025-12-29 11:39:25 -06:00
Winkarst-cpu 0f1dff9c27 Fix emag sparking animation on doors (#40350)
* Fix

* Update

* Comment
2025-12-29 11:39:25 -06:00
mtrs163 cc39174401 Don't add ImplicitRoof to grids with roof component (#38551)
* Don't add implicitroof to grids with roof component

* changes 1
2025-12-29 11:39:25 -06:00
SlamBamActionman f000f03c82 Improve lying trait grammar (#39370)
* Improvements

* Forgot Sure
2025-12-29 11:39:25 -06:00
Nemanja d53341409d FTL Fixes (#39040)
* FTL fixes

* one. space.

* change this too
2025-12-29 11:39:25 -06:00
Myra f0ca3b1d3d Clean up TitleWindowManager.cs (#36327)
* Clean up TitleWindowManager.cs

- I did not like how `OnHostnameChange()` always needed a string even though that string would always just be the hostname, so now it's just part of its function
- The extra function made to just trigger `OnHostnameChange()` are removed. It just runs the right function off the bat.
- Checking for `ClientRunLevel.InGame` for setting the title without the hostname, which means the previous joined server won't appear for a split second before being corrected by the new cvars being set. Or if the server prefers no host name in the titlebar by the time we connect.

* review

* Sus
2025-12-29 11:39:25 -06:00
Myra 5c28fa8e78 Improve IPIntel reasons (#40071)
* Improve IPIntel reasons

* Better

* Better 2

* Grammarly (aka reviews)

Writing's not that easy, but Grammarly can help. This sentence is grammatically correct, but it's wordy and hard to read. It undermines the writer's message, and the word choice is bland. Grammarly's cutting-edge technology helps you craft compelling, understandable writing that makes an impact on your reader.
2025-12-29 11:39:25 -06:00
Pieter-Jan Briers be28184aa3 Prometheus exporter for github repo stats (#38607)
* Prometheus exporter for github repo stats

I want more grafana charts

Already deployed on moon, this is just so other codebases can use it if they want.

* Add docs and issue/PR priorities

* Sure add merge conflicts too
2025-12-29 11:39:25 -06:00
Partmedia b4d818de44 Fix generating migrations with USE_SYSTEM_SQLITE (#40910) 2025-12-29 11:39:25 -06:00
B_Kirill f507917ab4 Fix zombie locked rotation (#40812)
Fix
2025-12-29 11:39:25 -06:00
temm1ie ffec2e022f New botany poster (#40908)
* init

* change-desc

* PERIOD
2025-12-29 11:39:25 -06:00
0x6273 85e64ab3e2 Add date picker (#40660)
* Add DatePicker

* DatePicker fixes

- Now uses `DateOnly` (currently fails sandbox, but PJB has promised to add
it in engine)
- Add MinDate and MaxDate fields
- Use constructor instead of parsing date string
2025-12-29 11:39:25 -06:00
Leon Friedrich 0bbfa51dda Update engine to v267.3.0 (#40899) 2025-12-29 11:39:24 -06:00
Kit a9706cacae slime guidebook change (#40842)
guidebook change
2025-12-29 11:39:24 -06:00
Princess CheeseballsandPrincess Cheeseballs 27216b971a Fix Cryptobolin and make it use NewStatusEffectSystem. (#40675)
* Push

* Mercury too I guess???

* Update comment

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:24 -06:00
Vanessa 1c3538effe Refactored and added names to DV lawsets. 2025-12-29 11:39:24 -06:00
PotentiallyTom 010b65ef14 Adds a guidebook reference table for silicon lawsets (#38225)
* skeleton

* ok I think I understand this now

* xaml more like xam L

* good enough individual law control

* Works

* Final checks

* Final_Final.exe.docx

* removed unecessary usings

* locstrings

* doc comments

* requested changeds except var

* visual stuff

* I could write a manifesto about how much I dislike var

* color tweak + other thing

* request changed minus the inheritance

* sans Boxcontainer

* :/

* cache find

* requested changed

* removed usings

* Moved margin and removed unecessary BoxContainer
2025-12-29 11:39:24 -06:00
telavivgamers f6560b3357 Changed Soviet soda vending machine name (#40850)
* Changed Soviet soda vending machine name

Now it is not faux-Cyrillic

* Replaced transliteration by real Cyrillic

Moved the Latin transliteration into a suffix
2025-12-29 11:39:24 -06:00
ScarKy0 5235a73dfc Fix AI radial on objects without access (#38444)
* init

* review

* Update SharedStationAiSystem.cs

* bolt
2025-12-29 11:39:24 -06:00
MoraandTrixxedHeart f899bc589a Remove high pitched buzzing noise from spray2.ogg (#40877)
Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:24 -06:00
slarticodefastandpa.pecherskij 8ac76060bb Move ChatSystem.Emotes to shared (#40866)
* move to shared

* entity effect to shared

* refactor: whitespaces+xml-doc typo fixups

* refactor: a little bit more of xml-doc typos fixups

Removed Incompatible RMC Emotes stuff.

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-12-29 11:39:24 -06:00
Mora d633b7321d Rename "trash" reagent to "reprocessed material" (#39761)
* renamed trash to reprocessed material

* minor wording change

* awfully to awful
2025-12-29 11:39:24 -06:00
Vanessa 04f125b31c Fixed lollipop RSI. 2025-12-29 11:39:24 -06:00
slarticodefast 6253cb8fda Predict DestructibleSystem, Part 1: IThresholdTrigger (#40876)
part 1
2025-12-29 11:39:24 -06:00
meganerobotandmeganerobot bb56d6e27a Make SmartFridges airtight (#40196)
* added airtight component to smartfridge.yml

* pulled the Airtight component, replaced mask with Impassable

* back to the way it was i guess

---------

Co-authored-by: meganerobot <andrewoidmk2@gmail.com>
2025-12-29 11:39:24 -06:00
Winkarst-cpu 6db5062c22 Fix barber scissors cancel errors (#40329)
Fix
2025-12-29 11:39:24 -06:00
lzk 39576208e4 food box.yml cleanup (#40873)
* food box.yml cleanup

* Update box.yml
2025-12-29 11:39:24 -06:00
GitHubUser53123 04015f18bc NonSpreaderZombieComponent prevents infection of crit mobs (#40857)
prevent the most critical bug in the history of station space 14
2025-12-29 11:39:24 -06:00
Princess CheeseballsandPrincess Cheeseballs f5a69c4ca8 Fix Plant Mutations (#40870)
Whoops x2

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:24 -06:00
pre-commit-ci[bot] 8f97a7720d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:23 -06:00
Vanessa 6c1589045e There is a god. 2025-12-29 11:39:23 -06:00
Vanessa 57d3798fee Reorganized some of the new ECS code. 2025-12-29 11:39:23 -06:00
Vanessa df9f638eee No one will care. 2025-12-29 11:39:23 -06:00
Vanessa 95557be4ee More ECS fixes. Will I never escape this hell? 2025-12-29 11:39:23 -06:00
Vanessa e54548fcf6 More ECS fixes. 2025-12-29 11:39:23 -06:00
Vanessa ff620be7ff Fixed a typo with the Addicting system. 2025-12-29 11:39:23 -06:00
Princess CheeseballsandPrincess Cheeseballs 66118f024f Cryogenics evenheal + New chem "Arcyrox" (#41696)
* Cryo chems

* Actually cryo eats a lot of this stuff, should probably buff the amount you get...

* minor necrosol buff

* fuck it old recipe

* Fucked up my math, half is closer to 6 here.

* cryox

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:23 -06:00
Vanessa e9cec4a002 Fixed some temperature components that were moved to shared. 2025-12-29 11:39:23 -06:00
Vanessa 075f2f4dfd God fuck deepfryers. 2025-12-29 11:39:23 -06:00
Vanessa ba7dceb2a8 Why are we here? Just to suffer? 2025-12-29 11:39:23 -06:00
Vanessa 9cf3fb6aef Migrated the psionic reolling stuff to the new ECS system. Am I out of this hellhole yet? 2025-12-29 11:39:23 -06:00
Vanessa 3f69342eb4 Removed Trinox for the new upstream cryo chem 2025-12-29 11:39:23 -06:00
Vanessa f8c0f8f5cd Converted addicting and in pain statuses to the new ECS system. 2025-12-29 11:39:23 -06:00
Vanessa 4077f006f4 Converted SupressPain and Suppress Addiction to the new ECS system. 2025-12-29 11:39:23 -06:00
Vanessa 98d9580ae5 Updated all of ReagentThreshold and TotalDamage conditions in non-upstream files 2025-12-29 11:39:22 -06:00
Vanessa 0ecadc915f Migrated some existing code changes from old effect system to refactored system. 2025-12-29 11:39:22 -06:00
kosticia b8f9ddbbb4 Artifact glue reagent (#38670)
* a

* Revert "a"

This reverts commit 2b9ba4ea67a9395d30b7ab37c8065f627f1a961a.

* f

* dev it

* a?

* ad

* forgor

* Revert "f"

This reverts commit 39228c7cbe4d28ba43b73580b55e01c3979eb869.

* derandomisation!

* reviv

* flavor

* fixe

* dwwasdwasdwa

* dwasdwasdwas

* fuck you
2025-12-29 11:39:22 -06:00
f3c49f9294 Entity effects ECS refactor (#40580)
* LOCKED THE FUCK IN

* Forgot this little fella

* Crying

* All entity effects ported, needs cleanup still

* Commit

* HEHEHEHAW

* Shelve for now

* fixe

* Big

* First big chunk of changes

* Big if true

* Commit

* IT BUILDS!!!

* Fix LINTER fails

* Cleanup

* Scale working, cut down on some evil code

* Delete old Entity Effects

* Accidentally breaking shit by fixing bugs

* Fix a bunch of effects not working

* Fix reagent thresholds

* Update damage

* Wait don't change the gas metabolisms A

* Cleanup

* more fixes

* Eh

* Misc fixes and jank

* Remove two things, add bullshit, change condition to inverted

* Remove unused "Shared" system structure

* Namespace fix

* merge conflicts/cleanup

* More fixes

* Guidebook text begins

* Shelve

* Push

* More shit to push

* Fix

* Fix merg conflicts

* BLOOD FOR THE BLOOD GOD!!!

* Mild cleanup and lists

* Fix localization and comments

* Shuffle localization around a bit.

* All done?

* Nearly everything

* Is this the end?

* Whoops forgot to remove that TODO

* Get rid of some warnings for good measure...

* It's done

* Should make those virtual in case we want to override them tbqh...

* Update Content.Shared/EntityEffects/Effects/Botany/PlantAttributes/PlantDestroySeeds.cs

Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>

* Fix test fails real

* Add to codeowners

* Documentation to everything

* Forgot to push whoops

* Standardize Condition names

* Fix up metabolism a little as a treat

* review

* add IsServer checks

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
Princess Cheeseballs f7ca8bdee8 [PRIORITY NEGATIVE ONE/STABLE HOTFIX] ADMIN NOTES CANNOT BE ACCESSED (#40863)
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Fix logger obsolete warnings (#40553)"
2025-12-29 11:39:22 -06:00
Ps3Moira b5f26ed9bf Resprite Maint Hatch + New Syndicate Hatch (#38076)
* Resprite + New Syndicate Hatch

* Add trailing line

* Update airlocks.yml

* Update base_structureairlocks.yml

* Remove Wall IconSmooth for material doors and shutters

* revert iconsmoothing removing lol

* Update shutters.yml

* Update shutters.yml

* Revert Regular Hatch
2025-12-29 11:39:22 -06:00
Callmoreandslarticodefast 28a8b5298b Automatically add trash tag to spent bullet casings (#40829)
* Automatically add trash tag to spent bullet casings

* Resolving comments

* 2

* Update Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
Fildranceandpa.pecherskij 77872ff451 Use PredictedQueueDel in SharedDestructibleSystem.DestroyEntity (#40856)
feat: predict queuedel in SharedDestructibleSystem.DestroyEntity

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-12-29 11:39:22 -06:00
K-Dynamic 8dec76b9d9 Explicitly attribute each state in organs.rsi, exchange CEV-Eris stomach sprite with /tg/station 13 (#39753)
attribute each state, replace cev-eris stomach sprite with tg
2025-12-29 11:39:22 -06:00
DrSmugleafandslarticodefast db3751a5b1 Fix species not being ordered alphabetically in the character customization UI (#39359)
* Fix species not being ordered alphabetically in the character customization UI

* Update Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
B_Kirill 7a2528bdf7 Flash immunity examine visibility toggle (#40848) 2025-12-29 11:39:22 -06:00
Princess CheeseballsandPrincess Cheeseballs 3c81d41709 Quieter Meat Kudzu (#39304)
Init Commit

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
ādaandiaada 5450f81686 Organize StackPrototype with inheritance (#38412)
* In one commit like an animal

* carpet fix

* move materials, more bad commit discipline

* re-add marble

* don't also do materials in the same PR, dude

* the return of floor_tile_stacks.yml for atomizing

* resolve an old issue

* re-add det cable

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
JopogrechkinandArtisticRoomba 8fdf551d6e Brand new hair (#39850)
* Update human_hair.yml

* overeyepigtail

* Update meta.json

* Update human-hair.ftl

* Update meta.json

* Update Resources/Prototypes/Entities/Mobs/Customization/Markings/human_hair.yml

rerun test

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:22 -06:00
Super 004241ea3a Add Syndicate IDs to the uplink for 1 TC (#38381)
* syndie ids :3

* Note that the Syndie ID does not copy accesses.
2025-12-29 11:39:22 -06:00
Jessica MandJessica M b948841be4 Adds swabs and an Emag inventory to the biogenerator (#39037)
* adds swab and emag inv to biogenerator

* lower swab biomass requirement

* add hostile cubes to emag inventory

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
2025-12-29 11:39:22 -06:00
Hitlinemoss 304e1929c8 Ice (the reagent) now actually does stuff (#40149)
* ice now evaporates and quenches thirst

* Ice uses BaseDrink as parent instead of Water

* Misc ice cleanup

* Ice no longer inherits Extinguish reactiveEffect

* Test fixes

* Deparented Ice from BaseDrink (was causing test fails)

* Whoops, forgot to remove the part actually causing the test fails

* Added code comments
2025-12-29 11:39:22 -06:00
Hitlinemoss 0d724a55c3 Durathread can now be printed by autolathes (#40837)
* Durathread can now be printed by autolathes

* Applied material discount
2025-12-29 11:39:22 -06:00
ArtisticRoomba 0df931fd08 hugbox tag fix (#40833) 2025-12-29 11:39:22 -06:00
ādaandiaada 5558e04168 Don't apply discount to reinforced glass (#40839)
* commit

* arby

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
ādaandiaada 245753713f Reorganize tile StackPrototypes and add inheritance (#39491)
* atomize from #38412

* fix curtains in G menu

* re-add marble

* commit

* re-add xenoborg tiles

* re-add new faux

* missed tiles

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
cloudyskiesandslarticodefast 33952336e5 Makes droppers printable by autolathes and medfabs (#40074)
* Made droppers printable by autolathes and medfabs

* added glass to recipe

* Update Resources/Prototypes/Recipes/Lathes/chemistry.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
Winkarst-cpu 0d006a9455 Fix visual bug with masks appearing to be pulled down after re-equipping (#40332)
Fix
2025-12-29 11:39:21 -06:00
Prole 2aba2e0248 Black Gloves Sprite Tweaks (#40825)
* Tweaked

* Clearer Copyright
2025-12-29 11:39:21 -06:00
ScarKy0 76c15026e2 Prevent mice etc from unwrapping parcels (#40838)
* init

* no wrapping yourself

* Revert "no wrapping yourself"

This reverts commit d66cb17e4c306ff95f33bcedf7fd464aa7b4ff90.
2025-12-29 11:39:21 -06:00
Perry Fraserandslarticodefast b86654302c HOTFIX Fix pickup effects occurring with verb creation (#38705)
* fix: don't run pickup effects on verb creation

* review

* redundant

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
Centronias b10c6ea8f7 Adds HugBot (#37557)
* - hugbot
  - bdy with two arms because it needs two arms to hug
  - is constructable from:
    - box of hugs
    - proximity sensor
    - two borg arms
  - lots of voice lines
  - kinda like a medibot, it chases you down and then hugs you
    - except if it's emagged, then it punches you :)
    - it has a 2m cooldown per person by default

- MeleeAttackOperator
  - Read the doc, but it's an operator which makes the NPC hit a target exactly once assuming it's in range.
  - Used to make the hugbot attack
- RaiseEventForOwnerOperator
  - Read the doc, but it's an operator which raises an event on the owning NPC.
  - Used to make the hugbot hug extra code, specifically for the cooldown

- Changes to existing code:
  - `ComponentFilter : UtilityQueryFilter` gets `RetainWithComp` added which, as the name implies, retains entities with the specified comps rather than removing them. Basically, it lets you negate the filter.
  - `SpeakOperator : HTNOperator`'s `speech` field can use a `LocalizedDataSet` instead of just a locstring now
    - (I updated all of the existing usages for this)
  -

* two arms

* wait what if we just used mimebot arms so it doesn't look awful

* smort
2025-12-29 11:39:21 -06:00
HTML/Crystal 9e8aa14445 Infectious anom sprites for moths and arachnids (#39508)
* anoms part 1

* frost and tech anoms

* grav, rock, meta file changes

* rock moth

* moth sprites

* YAMLLinter fixes

* okay make them work now
2025-12-29 11:39:21 -06:00
MoraandTrixxedHeart a556723385 Update Xenoarchaeology Guidebook Page (#40621)
* Update xenoarch guidebook page

* Remove artifact reports from science.yml and word change

* Some adjustments

* Remove references to artifact reports

* fix error and typo

* Various changes

* typo

* THATS NOT BROWN????

* Changed trigger window

* Added new section and notes about reagents

* Split into sub pages and various changes

* Change AnalysisConsole to link to the AnalysisConsole guidebook entry

* slight wording change

* Replace reagent explanations with reagent embeds

---------

Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
Vanessa da81410a08 Minor fixes 2025-12-29 11:39:21 -06:00
qwerltaz 54380b6ddf Hop console grant all and revoke all access buttons (#39375)
* add hop console select and deselect all access buttons

* align the buttons right

* document code
2025-12-29 11:39:21 -06:00
lzkandslarticodefast 0e902e0ba5 make nobody supervisor a locale key and cleanup JobPrototype (#39102)
* make nobody supervisor locale key and cleanup JobPrototype

* Update Content.Shared/Roles/JobPrototype.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
2c3a59aa22 Added more Syndie ammo types to EMAG lathe (#40822)
* Move Bulldog Drum to Emag

Bulldog drum removed from standard techfab
Moved to emag listing

* Update Resources/Prototypes/Recipes/Lathes/Packs/syndicate.yml

* Adds more Syndie ammo to EMAG lathe inventory

* No more L6

---------

Co-authored-by: Connor Huffine <chuffine@gmail.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
slarticodefast 0d3e87d51c Fix NetEntity DataField in AnalysisConsoleComponent (#39984)
* fix analysis console

* fix test

* totally not a web edit
2025-12-29 11:39:21 -06:00
Princess CheeseballsandPrincess Cheeseballs d177570bb0 Very small Shared Storage Optimization (#39092)
Mildly cheesed

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:21 -06:00
slarticodefast e8cd4d39dc fix NetEntity datafield in JointVisualsComponent (#39987)
fix netentity datafield
2025-12-29 11:39:21 -06:00
Crude Oil 5cd3ba3a20 Remove holopad projection verb on station AI core (#39937)
Add check for station AI's projector verb on itself
2025-12-29 11:39:20 -06:00
Connor HuffineandArtisticRoomba 2a18bb524e Ninja Bomb Blacklisting (#40726)
* Ninja Bombing moved to blacklist

* Added blocker to "Solars"

Solars is too generic for a named bombing target.

* Change to AllEntityQuery

More clear intent

* Update migration.yml

Add migration to 'null' for removed WarpPointBombing entity

* Update NinjaConditionsSystem.cs

Undo some tidying

* Changed to tag

Ninja blocking component is now a tag instead of a new component

* Update NinjaConditionsSystem.cs

detidying

* Update NinjaConditionsSystem.cs

Change to efficient enumerator

* Move blacklist to component

Moved blacklist to spidercharge component

* Update migration.yml

fixed component reference

* Update migration.yml

Fixes Saltern. Exo is more complicated.

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
Hitlinemoss 62f657f5f5 Replaces D&D5e-based paladin lawset with PF2e-based laws (#40343)
* Replace D&D5e paladin laws with PF2e paladin laws

* Truncated law 2
2025-12-29 11:39:20 -06:00
Davidandslarticodefast bd6d752b29 Refactor Crayons to use shared charges system and autonetworking. Adds auto recharging crayon. (#40575)
* Added special crayon with infinite charges for borg usage.

* Use battery system to manage charges.

* Reverted extra changes

* Set charge on init

* removed init assignment

* Added comments to crayoncomponent

* tweaked comments

* Working with the new charges component, but at what cost?

* Remvoed extra field

* Apply suggestion from @slarticodefast

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Apply suggestion from @slarticodefast

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Apply suggestion from @slarticodefast

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Apply suggestion from @slarticodefast

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Fix renamed variables and descriptions in comments

* Variable naming, comment cleanup and autonetworking.

* Fix for test case, modified on init

* Cleaned up/merged charges logic

* review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
Pokandpa.pecherskij 3409152873 Attempt to fix all unlocalized lines (#40284)
* missing-localization

* cmd

* fix: fixed patron page throwing exception due to unexpected patron tier in yaml

* Revert "fix: fixed patron page throwing exception due to unexpected patron tier in yaml"

This reverts commit 28458c78b1f2eed30fda898ec26059b27f1766f1.

* review and update

* no cmd

* fix

* fix 99

---------

Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-12-29 11:39:20 -06:00
MilenVolf d9db30932c Fix glassbox prototypes (#40667)
* Fix glassbox prototypes and its construction ghost exception

* Oops
2025-12-29 11:39:20 -06:00
qwerltaz 05142fef18 fix singulo generator triggering failsafe when field is obstructed (#39593)
fix singulo gen failsafe when field obstructed
2025-12-29 11:39:20 -06:00
slarticodefast bd874ed067 Predict artifact crushers (#40180)
predict artifact crushers
2025-12-29 11:39:20 -06:00
slarticodefastandArtisticRoomba 709ebff010 Predict damage examine (#40168)
* predict damage examine

* .

* required true

* nits

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
Vanessa d62a8a54c7 Disable stun visuals for elementals 2025-12-29 11:39:20 -06:00
Davidandslarticodefast 81bc7960fb Fix Error Logged in Graffana for SharedStaminaSystem (#40764)
* Added Appearance component to MobElementalBase

* Added StunVisuals

* Changed MobElementalBase to inherit from BaseMob and MobCombat

* Fix linted error

* Fix damage type

* Apply suggestions from code review

* Update Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
YotaXP 4bfbf387dc Decouple power sink from tickrate (#40789)
* Fix typo in `BatterySystem.ChangeCharge`.

* Decouple power sink behavior from tickrate.

* Fix power sink's price per joule
2025-12-29 11:39:20 -06:00
slarticodefastandArtisticRoomba 4354afdf08 Mindrole trigger condition (#40323)
* mind role trigger condition

* fix

* nits

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
slarticodefast 31da074baf add event to dna scrambling (#39862)
add event
2025-12-29 11:39:20 -06:00
lunarcomets 94395edf26 fixed medical cyborgs not getting movement sprites (#39747)
the fix
2025-12-29 11:39:20 -06:00
45c25fb1ca Add variables to CluwneComponent, allowing for admeme customizing. Also localized two strings. (#40466)
* Add variables to cluwne component, update to the new style, add unremovable option to setoutfit.

* not nullable, shorthand

* Add comments, address reviews

* why, was i drunk?

* Apply suggestions from code review

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:20 -06:00
Connor Huffine 04e63c53bb Fix terminology (#40792)
c20r magazine description changed to "SMG"
2025-12-29 11:39:20 -06:00
FungiFellow a37c5f33a6 Lootpool Tweaks Mail/Maints (#39892)
* Added Claymore to MaintWeaponTable

* SyndieBusinessCard+InsulsTable
2025-12-29 11:39:19 -06:00
24e061bd4e Migrate revenant and PAI shops to use ActionGrant instead of hardcoding them (#40475)
* add intrinsic store, replace revenant store with it.

* migrate PAI and also move to shared where possible

* fix typos and clean up... intrinisic

* oops, hopefully fixes test

* Move to StoreSystem and ActionGrant

* documentation and remove thing

* review

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:19 -06:00
blobadoodle 3c373dbaf2 Add missing uranium glass locales (#40809) 2025-12-29 11:39:19 -06:00
Winkarst-cpu ddec12679f Fix masks with flash, eye, and damage protection working while being pulled down (#40331)
Fix
2025-12-29 11:39:19 -06:00
Vanessa 2b375b5132 Fixed LungComponent reference 2025-12-29 11:39:19 -06:00
thetuerk 5280db52c4 Predict LungSystem (#40729)
* Initial edits of files
Untested yet. I would like to make sure all is accounted for before moving the files.

* trying my best

* Revert "trying my best"

This reverts commit 9aeece466df0169adec97e3947b061b54fd9b388.

* Revert "Initial edits of files"

This reverts commit 45c6e2343844b5fcafadbf2e5115fb2f241086a1.

* an actual meal

* Added networking to LungComponent.cs

* removed duplicate using

* moving GasRagents to SharedAtmosphereSystem.cs
2025-12-29 11:39:19 -06:00
Connor Huffineandslarticodefast 7c57e97624 Move Bulldog Drum to Emag (#40790)
* Move Bulldog Drum to Emag

Bulldog drum removed from standard techfab
Moved to emag listing

* Update Resources/Prototypes/Recipes/Lathes/Packs/syndicate.yml

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:19 -06:00
Princess CheeseballsandPrincess Cheeseballs 138bd6203a PRevent the forever sleep. (#40366)
* Fix

* Rejuvenate

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:19 -06:00
SlamBamActionman 2deccd0e51 Add slowdown to nocturine, buff duration and minor delay reduction (#40797)
* Yawn

* Remove yawning because it's kind of a nerf tbh

* Remove newline

* Begone, condition
2025-12-29 11:39:19 -06:00
Leon Friedrich 43553cc680 Add generic event listener for integration tests (#40367)
* Add generic event listener for integration tests

* cleanup

* assert that the entity has the component

* comments & new overload
2025-12-29 11:39:19 -06:00
ScarKy0 067ca89c4f Change whitelist logic for parcel wrap (#40800)
* init

* review
2025-12-29 11:39:19 -06:00
slarticodefast 74a5d42791 Fix changeling blindness (#40517)
fix changeling blindness
2025-12-29 11:39:19 -06:00
Hitlinemoss a0478b9ee2 Added folders and clipboards to trinkets tab (#39920)
* Added folders to trinkets tab

* Fixed loadout grouping

* Added plastic clipboards to trinkets

* Whoops, forgot to create BoxFolderPlasticClipboardThreePapers prototype

* Added regular clipboards as trinkets (1 hour of command required)

* Reduced folder bloat
2025-12-29 11:39:19 -06:00
Centronias f454fdc8ba Wrapped Parcels can be labelled with Papers (#40783)
* labels

* oop

* Update Resources/Prototypes/Entities/Objects/Misc/parcel_wrap.yml
2025-12-29 11:39:19 -06:00
SlamBamActionman 65aba07f9c Allow more energy projectiles to hit holo creatures (#40782)
* Allow more energy projectiles to hit holo creatures.

* Disabler SMG
2025-12-29 11:39:19 -06:00
B_Kirill efdd361285 Cleanup warnings: CS0414, CS8524 (#40776)
* Cleanup

* CS8524
2025-12-29 11:39:18 -06:00
K-Dynamic 83eeb63b73 Fix: Allow energy shotgun lethal projectiles to hit holos (#37920)
BulletLaser opaque mask
2025-12-29 11:39:18 -06:00
YoungThugandSlamBamActionman 9acdd2f1a7 Fix the temperature gun not reflecting and going through windows (#37581)
* Fix Temp Gun

* Fix mask, muzzle flash

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2025-12-29 11:39:18 -06:00
slarticodefast c6ccf13818 Add disclaimer about AI generated content to Readme.md (#39334)
* Add disclaimer about AI generated content to Readme.md

* Update README.md

* rephrase
2025-12-29 11:39:18 -06:00
ādaandiaada 6035471707 cleanup and reorganize belts.yml (#40773)
commit discipline? Never heard of it

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:18 -06:00
UpAndLeaves c00cae9b7d Slightly re-nerf zombification speed (#37445)
Initial Commit
2025-12-29 11:39:18 -06:00
ādaandiaada 1b798a7ead Clean up bucket.yml (#40772)
SMASH that bucket

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:18 -06:00
Archee 79e57ecf63 Fix- Cobras killing adders (#37424)
* fixed

* adds SimpleHostile to SpaceAdder (the stealth snake)

* whoops i branched this off a branch not master

This reverts commit fe1562581f91a113950cfedd284a1790e51a48e6.
2025-12-29 11:39:18 -06:00
SlamBamActionman 128e4c469e Change Energy Shotgun to fit as a Warden weapon (#40757)
* Initial commit

* Fix toggle mode name and also miscalculated charge times oops
2025-12-29 11:39:18 -06:00
Hitlinemoss a8cca225cb MRE wrappers / cotton nutri-bâtards are no longer twice as nutritious as nutribricks (#40761) 2025-12-29 11:39:18 -06:00
Hitlinemoss 1b961934f4 Added the golden shaker (playtime reward for Bartenders) (#40762)
* Added a golden shaker (playtime reward for Bartenders)

* Removed redundant icon line
2025-12-29 11:39:18 -06:00
David 76f602cb8d (Cleanup) Fix logger obsolete warnings (#40553)
* Switched obsolete logger usages to use Sawmill

Fix the majority of obsolete logger usages outside the engine code.

* Fix injection in ChatManager and revert BuildMech changes

* Removed extra manual injection

* Reduced extra static injection and reverted changes to CommandButton as it needs engine changes.

* Removed two more cases of double injection and an extra using

* Reverted changes for Inventory Display

* Moved sawmill setup outside constructor in Table to resolve test failure
2025-12-29 11:39:18 -06:00
SpankyandSlamBamActionman 519aaee2d8 Head of Security's Energy Magnum (and Warden's Energy Shotgun) (#40615)
* Energy magnum and projectile protos, locker fills, and traitor objective updates.

* Fix objective

* Objective and .rsi tweaks

* Rewrite item description.

* Remove energy shotgun self charging and decrease magnum disabler cost.

* Bring magnum disabler fire cost in line with regular disabler.

* Bunch of sprite improvements including charge status visuals.

* whoops

* Minor sprite edit for clarity

---------

Co-authored-by: SlamBamActionman <slambamactionman@gmail.com>
2025-12-29 11:39:18 -06:00
ādaandiaada a23fde4d21 Standardize state names in drinks yml (#40316)
* drinks_base

* drinks_special

* drinks_fun

* drinks_cans - the holy minus diff

* bottles_glass and metamorphic

* mugs

* Solar's Best Hot Drinks

* misc drinks_cups

* slight addition to base

* lint fix

* metamorphic glass

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:18 -06:00
ādaandiaada 22624cf5aa Cleanup material_doors.yml (#40666)
cleanup

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:18 -06:00
dffdff2423andslarticodefast e3ab862e35 Add log statement for missing guidebook proto (#40380)
* Add log statement for missing guidebook proto

Also removed an unused parameter.

* Update Content.Client/Guidebook/DocumentParsingManager.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:18 -06:00
MoraandTrixxedHeart 8ebc7373d5 Added Vox Beak Types, New Markings, and Sprite Layering Fixes (#40569)
* Added more Vox customizations

* Adds Vox Head Markings

* Update meta.json

* stray comma, woe be upon ye

* added tiny pixel to visage left and right

* Added eyeliner ftl

* Removed duplicate FTL

how the fuck did this happen

* Added cheek marking

* Made tip marking look a bit better

* Fix eyeliner ID

* ok whatever shut up build test. mean to me

* changed underbelly to have more flat transparency

* didnt like how it looked so i adjusted it

* Adjusted base eyeliner color

* Fixed inconsistency with nightling head tattoo

* Updated V tattoo

* Delete chest_v.png

* fix yml

ITS EVEN FUNNIER THE SECOND TIME

* minor sprite fix

* Update head.png

* Re added stray pixel, added square cere beak

* Added hooked beak

---------

Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:17 -06:00
pre-commit-ci[bot] d4f8c81452 [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:17 -06:00
Vanessa 72b3debe1a Playtime format fixes. Other minor fixes. 2025-12-29 11:39:17 -06:00
Errant e00bd6dc47 Replace all time requirements with bats (#40751)
time requirement format update
2025-12-29 11:39:17 -06:00
Deserty0 97ddf11135 New HTN precondition: has status effect (#39781)
* Create HasStatusEffectPrecondition.cs

* Update HasStatusEffectPrecondition.cs

* ok now it works

* Update HasStatusEffectPrecondition.cs
2025-12-29 11:39:17 -06:00
FungiFellow 73b01bd0d3 Biosuit Suit Slots (#39888)
* Added Gastank Storage to Biosuits, Weapon/Gas to Sec Biosuit

* Fixed Error

* Sec Suit no longer Child to General Biosuit

* Update cargo_security.yml
2025-12-29 11:39:17 -06:00
kosticia 7958627bb8 Unpredict MagnetPickupSystem.cs (#39988)
* unpredict

* predict
2025-12-29 11:39:17 -06:00
Vanessa 1be4577e12 Fixed a few Brain references 2025-12-29 11:39:17 -06:00
Kyle Tyoandslarticodefast 1940cc0527 Move BrainSystem and necessary components to Shared (#40499)
* yowza

* Update Content.Shared/Body/Systems/BrainSystem.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.Shared/Ghost/GhostOnMoveComponent.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update BrainSystem.cs

* Update Content.Shared/Body/Systems/BrainSystem.cs

* Update Content.Shared/Body/Systems/BrainSystem.cs

* Update Content.Shared/Body/Systems/BrainSystem.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:17 -06:00
FungiFellowandslarticodefast 31e762adb6 Cancer Mice Ghostrole Info (#40102)
* Adjusted Cancer Mouse Ghost Info

* Updated Smite Snail

* Added ghostrole info

* Remove snail info

* Update space.yml

* Update Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl

* Update Resources/Locale/en-US/ghost/roles/ghost-role-component.ftl

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:17 -06:00
Leon Friedrich 4a98c6e7d7 Fix post-mapinit NPC exception (#40244)
Ensure `NPCBlackboard.Owner` is set during startup
2025-12-29 11:39:17 -06:00
Vanessa 6a296d0b95 Disable KFV pretty much 2025-12-29 11:39:17 -06:00
IProduceWidgets c222abf897 Vox burn into fried chicken (#40115)
* Sir, this is a KFC.

* the curse of multi-parenting

* 11 herbs and spices of intrigue
2025-12-29 11:39:17 -06:00
Lordbrandon12 b5192e29e9 changes the min and max variables in the TargetTemperature clamp to t… (#40453)
changes the min and max variables in the TargetTemperature clamp to the space heater min and max temperatures
2025-12-29 11:39:17 -06:00
SurrealShibe 9da2103b7f Give mimes their french bread back (#40601)
* add the nutri-batard

* i missed this file smh

* add the proper accenting to "bâtard"
2025-12-29 11:39:17 -06:00
GeneralGaws 443424ae04 Change Discord round restart text (#40584)
* discord-notif

* grammar
2025-12-29 11:39:17 -06:00
Proleandāda 1ff2366978 Golden Plunger General Fixes & Tweaks (#40619)
* Plung Plunges

* C# solution replaced with yaml solution, made sprite in-line with normal plunger, & alt click works now

* Update Resources/Textures/Objects/Specific/Janitorial/janitorial_cart.rsi/meta.json

Co-authored-by: āda <ss.adasts@gmail.com>

* Chameleon Tag Added

* a TODO

---------

Co-authored-by: āda <ss.adasts@gmail.com>
2025-12-29 11:39:17 -06:00
Jessica MandJessica M e2c1c3f853 Let gorillas pull things (#40700)
gorilla pull
gorilla bring
gorilla

Co-authored-by: Jessica M <jessica@maybe.sh>
2025-12-29 11:39:17 -06:00
HuaqasandArtisticRoomba 78ecf37292 Remove the Tanakh and Satanic Bible from the game. (#39698)
* Remove the Tanakh and Satanic Bible from the game.

* Update migration.yml

* Renamed to Space Bible

---------

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:17 -06:00
Huaqas b999321bb5 Create more Holy Books based off Spacestation 14 Dieties (#39181)
* Add More Holy Books

* Remove reference of original fork in meta.json

* Removed "rich" reagent description for Blessed Bolognese, and replaced with "holy".

* Updated Holy Liquids to each have their own minor effects.

* Tuned down Nar'sie Blood

* Create playtime requirements, and relocate holy water to it's own category.

All holy waters created through a bible are now located under the "Sacred" section of the guidebook, as to help maintain clutter.

* Replace 'curse' mixing verb with 'bless'.

* Update and fix guidebook to have section for 'Sacred' liquids.

* Add back in Tanakh and Satanic Bibles so they can be removed in other PR.

* Forgot to re-add the prototypes.

* Add back the time requirements I mistakenly removed.

* Remove Italian Bible

* Fix errors.

* Remove Carps & Crypts

* Relocate .ftl designations to their own sacred.ftl

* Forgot to update single_reagent.yml. Updated it now.

* Ended the communist dream. (Removed Communist Manifesto option for Chaplain)

* Give lamp book a little more pizzazz.

* Single line indent applied

* test

* untest

* Update sacred.yml

* Remove Unused Bibles, rename druids, moth bibles.

* Remove custom reagents.

* Error fixes.

* Reorder Bibles to Save my OCD.

* Flip that pentagram.

Bro must of rolled a nat 20 in convincing people this should be flipped. I know its more "accurate", but the layman will probably look at this and say its wrong.
Just a personal thought that escaped my brain and will never be read.

* Rename Druid Tablet, Delete Lantern Path

* Delete icon.png

* Delete inhand-left.png

* Delete inhand-right.png

* Delete meta.json

* Update chaplain.yml

* Update loadout_groups.yml

* Reorder for OCD
2025-12-29 11:39:17 -06:00
79a19e9629 Skeletons are now playable instruments (#40009)
* skeletons are now instruments

* switch to xylophone

* Fixes

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:16 -06:00
ādaandiaada 78fee46d79 Document tags: C - F (#40711)
* one step forward

* the letter C

* some of D

* the letter D

* the letter E

* the letter F

* stay in scope don't stray

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:16 -06:00
AbsotivelyandQuantum-cross 6a5c0d2bef Fix species default skin tones (#40707)
fix so that all default Urist entities don't spawn with the same default human skin tone (cursed skin tone Urist McSlime)

(cherry picked from commit 8d9564c23856c342bc3a35834c462e659f5ebd5b)

Co-authored-by: Quantum-cross <7065792+Quantum-cross@users.noreply.github.com>
2025-12-29 11:39:16 -06:00
Centronias 1b502687dd Prioritize spoon mixing over drinking (#40704)
* no, I can't use a spoon to drink a drink.

* Update Content.Server/Chemistry/EntitySystems/ReactionMixerSystem.cs
2025-12-29 11:39:16 -06:00
mq d2342015ae fix edge case typing indicator error (#40708)
* cleanup rsi error in typingindicatorvisualizersystem

* sprite fix
2025-12-29 11:39:16 -06:00
SlamBamActionman 99bc57bd47 Add Arrivals sign (#40227)
* Arrivals sign

* Waving!!!

* Attribution
2025-12-29 11:39:16 -06:00
NoreUhhandNoreUhh 8fb43be46d Ian Suit gives accent! (#40694)
Ian suit has been made STRONGERgit add Resources/Prototypes/Entities/Clothing/OuterClothing/suits.ymlgit add Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml

Co-authored-by: NoreUhh <noreuhh@gmail.com>
2025-12-29 11:39:16 -06:00
Princess CheeseballsandPrincess Cheeseballs 8de17f06e6 Incendiary rounds do pierce (#39204)
* Incendiary rounds do pierce

* Address review

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:16 -06:00
Kowlin e258e9c64e Add high severity logging to stun prods (#40709) 2025-12-29 11:39:16 -06:00
MoomoobeefandEd e439cf805d made evac signs glow (#38545)
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
2025-12-29 11:39:16 -06:00
Vanessa 19308e6737 Fixed EMPs and Ion damage. Fixes #4989 2025-12-29 11:39:16 -06:00
Vanessa 8f34b7daf2 Moved SiliconEmpSystem to shared. 2025-12-29 11:39:16 -06:00
Vanessa cf05c060b3 EMP systems fixes 2025-12-29 11:39:16 -06:00
slarticodefast d4980c0b9f Predict EMPs (#39802)
* predicted emps

* fixes

* fix

* review
2025-12-29 11:39:16 -06:00
Vanessa faf639faea Fixed VomitSystem refs. 2025-12-29 11:39:16 -06:00
Vanessa 16b0fdb37d Updated DV XenoArch trigger. 2025-12-29 11:39:16 -06:00
Kyle Tyo 1afa833ec6 VomitSystem, Predict! (#39921)
* commit

* Update AdminVerbSystem.Smites.cs

* brrrrr

* reeeee

* skeet

* Update VomitSystem.cs

* didn't know i could do this.

* Update SharedForensicsSystem.cs

* Update SharedForensicsSystem.cs

* Update SharedForensicsSystem.cs

* Update ForensicsSystem.cs

* requested changes.

* Update VomitSystem.cs

* lets try this.
2025-12-29 11:39:16 -06:00
beck-thompson 37028e2b6f Explosives with timers now properly alert admins when detonating (#40471)
* Explosives with timers now properly alert admins when detonating

* add TODO comment

* Check if user is deleted before triggering
2025-12-29 11:39:16 -06:00
slarticodefast bd776148f1 Add integration test for the RCD (#40625)
* rcd test

* fixes

* fix

* space

* review
2025-12-29 11:39:15 -06:00
K-Dynamic 8dd3abb160 Adds smart equip to pocket 1, pocket 2, and suit storage slots (#37975)
* pockets and exosuit smartequip

* add localisation
2025-12-29 11:39:15 -06:00
Nemanja cbe94db2fe Fix xenoarch exceptions + misc. cleanup (#38742) 2025-12-29 11:39:15 -06:00
Tayrtahnandslarticodefast 5dbeb77ffe Add interaction tests for mousetraps (#35502)
* Add interaction tests for mousetraps

* Silly yaml linter

* review

* fix debugging thing

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
Pieter-Jan Briers 1690c86ede You can now stuff the nuke disk in plushies (#40674)
Because there's no reason you shouldn't be able to.

Fixes #40669
2025-12-29 11:39:15 -06:00
Vanessa 464e19065f Moved DV specfic tag to DV namespace 2025-12-29 11:39:15 -06:00
ādaandiaada e9134034ac Document tags.yml: A and B (#40673)
* fix alphabetization

* the letter A

* the letter B

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
Crude Oil 17471babbd Fix PDA point lights (#40687)
tweak pda point light
2025-12-29 11:39:15 -06:00
NoreUhhandNoreUhh 044049bcd8 Cyborg Martyr Module Free Hand Fix (#40224)
* Added and attached tags for BorgGrenade, whitelisted borg hand, added Unremoveable to selfdestructseq.

* Added locales, fixed labels.

* Update borg_modules.yml

I fricked up, its fixed

* Update borg_modules.ftl

Removed Self Destruct label

* Update tags.yml

Removed tag: BorgGrenade

* Update borg_modules.yml

Removed hand whitelist because it hates my guts

* Update grenades.yml

Removed the BorgGrenade tag, made the explosive component repeatable and removed delete after explosion

---------

Co-authored-by: NoreUhh <noreuhh@gmail.com>
2025-12-29 11:39:15 -06:00
kosticia 1a38f3627b nerf cheese prices, part 2: electronics (#38246)
should work now
2025-12-29 11:39:15 -06:00
kosticia 7bfff0eef6 nerf cheese prices, part 1: bedsheets (#38230)
* bedsheet

* Revert "bedsheet"

This reverts commit f76aa18be169bf7daf1ce0e1bd937299827016fa.

* price

* mistake
2025-12-29 11:39:15 -06:00
Leon Friedrich 7240ab57dc Suppress SharedMapSystem info logs in tests (#40592)
* Supress informational `SharedMapSystem` logs in tests

* Why is the client like this
2025-12-29 11:39:15 -06:00
KowlinandPrincess Cheeseballs fd98ce3581 Conditional Meat spike logging severity (#40604)
* Reduce meatspike logging level from Extreme to High on non gibbing interactions

* Update butchering with some more conditionals

* Update Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs

Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>

* Update Content.Shared/Kitchen/SharedKitchenSpikeSystem.cs

Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>

---------

Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
MilenVolf 2a9cf441f8 Localize space villain arcade (#40641) 2025-12-29 11:39:15 -06:00
Myra 3136a831df Remove x86 targets from Content Packaging (#40664)
They don't compile and even if they did, I doubt they would work.
2025-12-29 11:39:15 -06:00
ādaandiaada 9d09916f6d Smuggler Satchel Heisen (#40665)
* heisenburger

* fix

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
Zeneganto 533ecf58e3 Fix lockbox ERRORing (#40642)
bruh
2025-12-29 11:39:15 -06:00
Archeeandiaada 9e082e00f2 Material Door rebalancing (#36597)
* refactors in material_doors.yml,
lowers destructible thresholds on most doors,
changes damageable modifiers for doors lowering their resistances,
adds partial material drops to doors being destroyed

* adds poster break sound to paper door breaking

* merge conflicts

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
lzk 59f6f9948e some entities name fixes (#40663) 2025-12-29 11:39:15 -06:00
Princess CheeseballsandPrincess Cheeseballs e3f8cea8e9 [HOTFIX] Fix Antags failing to roll. (#40658)
Use TryGetCached instead of GetCached

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:15 -06:00
Leon Friedrich ac8873e164 Remove static IoC from client & server EntryPoint (#40562)
* Remove static IoC from client & server EntryPoint

* Fix missing log manager initialization

* file namespace
2025-12-29 11:39:15 -06:00
Schuyler Duryee edaa357387 Add utility knife/box cutter (#39567)
* add sprites for box cutter

* move box cutter to melee, add yaml

* remove unneeded soundHit yaml

* add opening sound effect to box cutter

* modify sprites to look more like actual box cutters

* add BoxCutter tag and add to belts

* rename box cutter to utility knife

* remove accidental backtick

* move utility knife to correct place in tags

* remove SECOND accidental backtick??

* Fix utility knife arbitrage by reducing steel to 50

* Reduce damage to 4

* Reduce knife bounty reward to $2000

* modify utility knife icon to be larger

* Make utility knife extendable/retractable

* move slicing out of ComponentToggler

* change utility knife extend/retract sound

* Use TiniestShark's larger inhand images for utility knife

* utilty knife is now only Slicing when activated
2025-12-29 11:39:15 -06:00
LeahandGeorg Stuewe c354d66f30 moved desoxyephedrine from ambrosia to glasstle (#40638)
Co-authored-by: Georg Stuewe <georg.stuewe@uni-konstanz.de>
2025-12-29 11:39:15 -06:00
Vanessa a04afc05c6 Additional heads locker cleanup. Added totes for CJ. 2025-12-29 11:39:15 -06:00
Vanessa 6daff5d7f4 Gave the shitmed examine icon its own file so it wouldn't crash the client 2025-12-29 11:39:14 -06:00
Mixelz 9f52e5ac5c Organized Head Locker Fills Feat. Circuit Totes. (#39868)
* Initial Commit

Added Circuit Totes, replaced Head Locker fills with Tote fills, also stamp boxes for relevant heads.

* Craftable!

Now craftable: Uses 1 cardboard and 1 cloth (gotta keep the circuits cushioned!)

* Various Fixes

Fixed indenting, added comments, fixed names, tried for 5 hours to get the table fill to work, failed.

* test fail fix

aaaaaaaa

* TEST FAIL WHYYYY

AAAAAAAAAAAAAAAAAAAAA

* test fail fix 3 feat. iaada

*mothscream.oog*

* SURPLUS BOARD USES TOTE NOW

THANK YOU IAADA

* indent fix & storage base fix

Fix for indents and also the storagebase bug

* Master Merge Fix

* Update meta.json

* forgor the important part
2025-12-29 11:39:14 -06:00
K-Dynamic 51709b97d3 Increase puddle spillover volume to 50u (#38044)
* increase puddle spillover volume

* sleepy; 50u volume
2025-12-29 11:39:14 -06:00
YoungThug 4467808e37 Prisoner Eva Suit is now an Emergency Eva Suit (#36696)
* :3

* :3 The Second

* :3 the third
2025-12-29 11:39:14 -06:00
VelcroboyandVelcroboy 99b477739e Adds default "Toggle" to "Status" linking port (#37690)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-29 11:39:14 -06:00
Varen a188e99499 Allow multitool device saving on devices with wireless (#38938)
-Device network list will not override device linking anymore if existing
2025-12-29 11:39:14 -06:00
Fildranceandpa.pecherskij 231d2f6892 fix: scan for ShowAccessReaderSettingsComponent on examiner and not on airlock (#40626)
Co-authored-by: pa.pecherskij <pa.pecherskij@interfax.ru>
2025-12-29 11:39:14 -06:00
Sender 49377ddc2a Stage Name For Musicians (#40640)
added stage name for musicians
2025-12-29 11:39:14 -06:00
Mixelz 94c24a0db7 Ambrosia/Glasstle Prototype Bugfix (#40639)
* Prototype Parity

Ensured Ambrosia/Glasstle prototypes are in parity with their seeds.

* Comment Fix

Change to Max Volume to match new output.
2025-12-29 11:39:14 -06:00
pre-commit-ci[bot] 14af4e730e [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:14 -06:00
Minerva 2fc515a90a Minor typofix for the experiment plushie description (#40635)
Typofix for the experiment plushie description
2025-12-29 11:39:14 -06:00
Minerva 55c4db8f95 Typofixes and rephrases a bunch of job descriptions (#40634)
* Typofixes and rephrases a bunch of job descriptions

* I am not immune to making typos while typofixing
2025-12-29 11:39:14 -06:00
Spanky 8021056eda Hit 'em with the Michaelwave (#40618)
* michaelwave

* Add DamageOnHit to microwaves

* Un-offset the sprite files and add offset component.
2025-12-29 11:39:14 -06:00
Minerva 4caf83f073 Minor change to the Hydra description (#40629) 2025-12-29 11:39:14 -06:00
Minerva 8eed255ad0 Fixes conveyer typos (#40627)
Fixes conveyer typo
2025-12-29 11:39:14 -06:00
Minerva f88047997d Fixes a typo in the leaking SUPERPACMAN description (#40628) 2025-12-29 11:39:14 -06:00
Minerva 4bff799ee0 Rephrases two Whistle descriptions (#40631)
Rephrases the Whistle descriptions
2025-12-29 11:39:14 -06:00
Minerva 7a7736d721 Two bounty typo fixes (#40633)
* Two bounty typo fixes

* Wait I phrased that weirdly
2025-12-29 11:39:14 -06:00
Sir Warock 6a79e627e0 Fix Shotgun ammocount not updating (#40568) 2025-12-29 11:39:14 -06:00
Pieter-Jan Briers 17f418da46 Make file dialog API usages read-only (#37779)
Requires https://github.com/space-wizards/RobustToolbox/commit/4e7de2f272cafc687c775fceb16b88681fcfd7e3

Fixes #37762
2025-12-29 11:39:14 -06:00
Jessica MandJessica M 7952493443 Fix chess dimension smite (#40583)
turns out it works fine if you just keep physicscomponent

Co-authored-by: Jessica M <jessica@maybe.sh>
2025-12-29 11:39:14 -06:00
Kowlin 8c08c53062 Add logging for additional grilles (#40603)
Add logging for missing grille events.
2025-12-29 11:39:14 -06:00
Vanessa d88b18eaa7 Fixed some syndicate PDAs 2025-12-29 11:39:14 -06:00
Stefano PigozziandSteffo99 f8516355ea Replace outdated tip 79 about artifact scanners (#40597)
Co-authored-by: Steffo99 <1540885+Steffo99@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
keronshb 9565c2f54f Removes Taser Bolt Damage & Allows Tasers to be used by Pacifists (#40588)
* Removes damage from the taser bolt

* Allows tasers to be used by pacified players

* Sets the taser damage to 0 or else it'll inherit damage
2025-12-29 11:39:13 -06:00
Vanessa 4b47cf78fa Removed duplicate priority property 2025-12-29 11:39:13 -06:00
Leon Friedrichandslarticodefast ce44c76fc5 Clean up some parts of ExplosionSystem (#40485)
* Clean up some parts of ExplosionSystem

* Update Content.Shared/Damage/DamageSpecifier.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
MoraandTrixxedHeart 032596cf90 Added Vox Mime Hardsuit Sprite (#40567)
* Added Vox Mime Hardsuit

* missing pixels fix

* fixed pixel on hardsuit sprite

* updated vox mime helmet sprite

* made tip slightly smaller

* Add Attribution

---------

Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
Vanessa 24ca1b94e7 Updated the number of max storage windows 2025-12-29 11:39:13 -06:00
Princess CheeseballsandPrincess Cheeseballs b27be42aae Edible Verb Fixes (#39933)
* You cannot drink the cannot drink

* Undo that shit

* Whoops

* Fix test fails

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
keronshb 04344ff872 Readds Tasers to Security (#39087)
* Readds taser to security

* removes item drop from regular tasers, adds item drop to admeme tasers

* Fixes stun on collide options

* Fixes drop

* Lowers fire rate for taser
2025-12-29 11:39:13 -06:00
Vanessa 1a06e97f31 Fixed a vox emote thing 2025-12-29 11:39:13 -06:00
Sender a6c023a59e Salv Instrument Spawn Rework (#40572)
added salv table + replaced instrument table
2025-12-29 11:39:13 -06:00
Vanessa 09fa4c8899 Fixed a few small issues with upstream merge 2025-12-29 11:39:13 -06:00
Mora be494f3714 More Vox Sounds (#39914)
* Added more vox sounds

WHY IS IT ORGANIZED THIS WAY.

* Fix incorrect license fields

* License fix

* move vox_gasp.ogg to gasps

* Update Attributions

* Update attributions.yml

* file path fix

* Update attributions.yml

* Update attributions.yml

* Update attributions.yml

* Update attributions.yml

* Update attributions.yml

* Update attributions.yml

* Standardize Attributions, fixed sources

* Adjusted Vox DeathGasp and sigh to be more auditorily distinct from one-another

* Made vox gasp slightly faster
2025-12-29 11:39:13 -06:00
785e677ad5 Stunned Status and Knockdown Meth fix. (#39547)
* Init Commit

* Remove unused code, fix stun visuals bug

* Update Content.Shared/Stunnable/SharedStunSystem.cs

* Some initial changes

* first batch of changes

* Commit

* One line cleanup

* KnockdownStatusEffect ain't worth it.

* Fix 2 bugs

* Fixes

* Remove that actually,

* Maybe this?

* Meff fix

* Meff fix

* alert cleanup and API

* I expect update loops to be at the top.

* Fix LOC

* Address review

* Address review x 2

* Merg my PR

* Fix

* Update Content.Shared/Alert/AlertsSystem.cs

webedit

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>

* FIX THAT TEST FAIL!!!!

* Me when I forget to actually give you alerts

* Push

* Tests are not failing locally why are they dying on github???

* Fix test fails (real)

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
Princess CheeseballsandPrincess Cheeseballs eb971395de Vulp Plushie (#40303)
* Textures

* Plushie

* Fix sprites and add entity tables

* Copyright info

* Fix food sequence

* I'm dum

* head sprite update

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
ādaandiaada 4677ec0294 Fix instrument crate heisen test (#40558)
* 1984 daw

* too tired to be doing this

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
675c78a435 Minor plushie.yml touchup (#40552)
* horrible commit discipline what else is new

* second pass

* conflict

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
SlamBamActionman aa82894de2 Add a sleep delay to Nocturine (NewStatusEffect version) (#40231)
* Initial commit

* Minor fix

* Why is this uncommented here? Hmmm

* No wait this can't be here, oops

* Do better time

* Also guidebook

* Review changes

* Add rejuvination, fix mispredicts
2025-12-29 11:39:13 -06:00
CraftyRenterandPrincess Cheeseballs fb1ae3a70f Make Closets Less Tanky Than Gun Safes (#35671)
* Reduce ClosetBase's DamageTrigger to 50 from 150.

* Increased LockerBase's DamageTrigger to 75, doubled LockerBaseSecure's DamageTrigger

This and the previous commit aim to improve health scaling of storage closets with their intended level of security. The
damage scale is as follows:

Inheritors of ClosetBase:       50 (old 150)
Inheritors of LockerBase:       75 (old 50)
Inheritors of LockerBaseSecure: 150 (old 75)

I left suit lockers alone because visually they look the tankiest of the lockers, though it may make sense to have them
in between secure lockers and regular lockers.

* COMMIT

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
Leon Friedrich 5249bb9c88 Update engine to v267.2.0 (#40560) 2025-12-29 11:39:13 -06:00
Princess CheeseballsandPrincess Cheeseballs cb73bce194 [BUGFIX/CLEANUP] Edible Plushies and Clothes (#40276)
* Hongry...

* AAAAAAAAAAAAAAAAA

* Extremely silly test fail

* Fix another dumb test fail

* Fix test fails (Real)

* Fix 2

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:13 -06:00
Hitlinemoss 75bbf99491 Added white towels to autolathe and uniform printer (#40160)
* Added white towels to autolathe and uniform printer

* Towel printing cost is now consistent with reagent quantities in uniforms instead
2025-12-29 11:39:12 -06:00
Hitlinemoss 31a6193711 Xenoborg items are now highly illegal (#39856)
* Added tactical katana + tactical katana shipment (placeholder descriptions)

* Revert "Added tactical katana + tactical katana shipment (placeholder descriptions)"

This reverts commit aa1928be7f4d938df1838943781e63c47a03cc11.

Whoops, committed to master by mistake

* Xenoborg contraband is highly illegal now
2025-12-29 11:39:12 -06:00
SenderandPrincess Cheeseballs 8cfea3f9c0 Random Instrument Collection (#40532)
* added random instrument crate + tables

* added limit to SS + added new SS with no limit

* Push

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:12 -06:00
IProduceWidgets 233d9162e8 Admin smite: Homing rods. (#40246)
* add homing rod support

* oop

* speed betterer

* commentia
2025-12-29 11:39:12 -06:00
IProduceWidgets ecec1e3093 Add explosive cord. (#25875) 2025-12-29 11:39:12 -06:00
Mora fcf455d5a2 fix out of bounds pixels on vox neck displacement map (#40495)
fix out of bounds pixels on vox displacement map
2025-12-29 11:39:12 -06:00
c2589751b3 Rat King Refactor Part 0: Separate Rummaging from RatKingComponent. (#40530)
* separate rummager into its own component/system

* thing

* address review and entitytables

* reviews

* review

* warnings

* Update Content.Shared/RatKing/Systems/RummagerSystem.cs

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:12 -06:00
Vanessa f1dc884011 Fixed some devil YAML issues 2025-12-29 11:39:12 -06:00
Vanessa fa7b41b788 Fixed identity namespace in Devil code 2025-12-29 11:39:12 -06:00
ādaandiaada c4f651eca7 Move circuit tiles and faux tiles to the cutter machine (#37982)
* super cutter machine

* split the big tile pack

* re-add new faux

* consistent naming

* missing category

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:12 -06:00
NoxandArtisticRoomba 642bfa1c33 Descriptions for .20 Rifle (#36496)
* Initial commit - added Lecter and munitions descriptions, need to make one for the M-90GL...

* Fixed a formatting issue in the Lecter description, should be ready for review!

* Tests gaslighting me

* Third times the charm

* 99% of gamblers quit before the big win

* Update Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml

Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>

* Updated with roomba's changes

* Formatted descriptions, ready to go!

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Fixed formatting WITHOUT using spaces

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Updated weapon names.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Added Roomba's suggestions

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Reverted AKMS formatting - outside the scope of this PR.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Updated Estoc's description.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Added AugustSun's suggestions.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Slightly rephrased, im happy with it now.

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* Fixed projectile names

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

* thats not even a bullpup dumbass

Signed-off-by: Nox38 <nebulousnox38@gmail.com>

---------

Signed-off-by: Nox38 <nebulousnox38@gmail.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:12 -06:00
Keer-Sar 3f5a3e3c14 Add "Lizard Visage" Snout Markings to lizards (#35294)
* initial commit

* Update attribution in meta.json

* Fix yaml formating in meta.json
2025-12-29 11:39:12 -06:00
Samuka-C b6841b9de5 Xenoborg jammer now ignores xenoborg associated frequencies (#38005)
* stop jammer from jamming radio of certain frequency

* xenoborg jammer no longer jamms xenoborg radio

* stop jammer from jamming device network signals from certain frequency

* xenoborg jammer no longer jamms xenoborg camera signal

* the old tale of the missing ;

* backwards

* fix issue with readonly

* comments to the frequencies excluded

* triple typo

* clearer summary

* add summary

* fixed 4th hidden typo
2025-12-29 11:39:12 -06:00
RedBookcaseandRedBookcase ac3ee45d83 Recharger tweaks. (#38138)
* Recharger tweaks.

* Remove note.

* Fix Potato blacklist.

---------

Co-authored-by: RedBookcase <Usualmoves@gmail.com>
2025-12-29 11:39:12 -06:00
lzk 4b11954c7b bunch of small cleanups (#40529)
* bunch of cleanups and fixes

* AND REMOVE THIS
2025-12-29 11:39:12 -06:00
Kittygyat 37501f74cb Added diagnostic huds to the engi-vend (#40461)
Added diagnostic huds to the engivend
2025-12-29 11:39:12 -06:00
ādaandiaada 7e556107ed Fix dev crash when alt+clicking portals (#37540)
* Ghost portal dev crash

* ent<T>

* better comments

* refuse to reuse

* touchup comments

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:12 -06:00
hoshizora b16ca09b0d Fire helmets alone no longer prevent you from heating up while on fire (#40481)
* do the thing yeah

* tweaked values on regular fire helmet including cooling

* adjusted values again after further testing also to the atmos fire helmet
2025-12-29 11:39:11 -06:00
ādaandiaada afe5bbda9f Miscellaneous Food/Drink/Edible fixes (#40060)
* bugfixes

* Revert "bugfixes"

This reverts commit 7fe31a866fc4dc299a1667291c0744716092db19.

* Revert "bugfixes"

This reverts commit 7fe31a866fc4dc299a1667291c0744716092db19.

* more reverting

* conflicts

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:11 -06:00
āda 755233ab19 TriggerOnPlayerSpawnComplete and ExplosionOnTrigger (#39820) 2025-12-29 11:39:11 -06:00
ādaandiaada 357c3eb1a8 Predict identity (#40185)
* crossing the pond

* share some station records

* share some criminal records

* single system

* comments

* minor touchups

* I always forget this part

* requested changes

* revert predicted spawn

* requested changes

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:11 -06:00
DrSmugleaf a940dfc763 Fix SpawnAndDeleteEntityCountTest Entities and last assert being incorrect (#40511)
Fix SpawnAndDeleteEntityCountTest last assert being incorrect
2025-12-29 11:39:11 -06:00
beck-thompson e21b2d4298 Agent ID verbs now don't require you to pick it up (#40524)
make consitant
2025-12-29 11:39:11 -06:00
Jessica MandJessica M 06800242e6 Weather On Trigger (#40505)
* Weather On Trigger!

* Clearing the weather

* address review, add duration option

---------

Co-authored-by: Jessica M <jessica@maybe.sh>
2025-12-29 11:39:11 -06:00
Prole 7d7cce25e8 Target Dummies Now Show Damage Numbers from Projectiles to User (#40101)
* Uh, guess this works for now

* Review Change
2025-12-29 11:39:11 -06:00
8ddcbba5ee [HOTFIX] Chameleon projector invisibility (#40509)
* GOGOGO

* Hotfix

* TODO

* Update Resources/Prototypes/Entities/Objects/Devices/chameleon_projector.yml

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:11 -06:00
B_KirillandElectroJr 419aaa59a2 Cleanup warnings: CS0067, CS8509, CS8073 (#39770)
* Cleanup

* Bonus

---------

Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
2025-12-29 11:39:11 -06:00
B_Kirill d0b117ec43 Cleanup warnings: Use TransformSystem for anchoring (#39778)
* Cleanup

* Bonus

* I hope this helps

* Revert
2025-12-29 11:39:11 -06:00
LordCarveandElectroJr 00c952a1d5 Cleanup - Use RemoveAllChildren() over DisposeAllChildren() (#39848)
* Content - change the (should-be-obsolete) DisposeAllChildren into the more robust RemoveAllChildren.

* Remove duplicate calls.

---------

Co-authored-by: ElectroJr <leonsfriedrich@gmail.com>
2025-12-29 11:39:11 -06:00
Minerva 0fec40d85d Fixes suprise typo in the guidebook (#40501) 2025-12-29 11:39:11 -06:00
Minerva 512257a394 Fixes all departamental typos (both just in comments) (#40502)
Fixes all departamental typos
2025-12-29 11:39:11 -06:00
beck-thompson 81a270a8d2 Shuttle UI now properly goes into pilot mode only when using the UI (#40491)
Shuttle UI bug fix
2025-12-29 11:39:11 -06:00
Princess CheeseballsandPrincess Cheeseballs 0736809107 Vulpkanin Admin Smite (#40360)
* Cheeborger

* Vulp smite

* validate those ProtoIds

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:11 -06:00
6d48ed086e add silicon smite (#40452)
* add silicon smite

* change string to prototypes

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>

* alphabetitize

* fix stuff scar broke

* clean

* make target have the silicon mindrole

* simple check

* defined a private readonly proto for the silicon mind role

* simple check

---------

Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
2025-12-29 11:39:11 -06:00
chromiumboy d16c5ea8e3 Health increase for station AI cores (#40487)
* Initial commit

* Increased health further
2025-12-29 11:39:11 -06:00
ādaandiaada f31361f4c8 Average min+max in MaterialArbitrageTest (#39578)
* feels too easy

* I guess this counts

* commit

* could have sworn I ran the test

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:11 -06:00
ToastEnjoyer 4a84eeec46 Removed suspicion antags from antags.ftl (#40493) 2025-12-29 11:39:10 -06:00
Samuka-C 8d6a6ab07d Fool players with status command (#40460) 2025-12-29 11:39:10 -06:00
Nyxilath 58ef870a3a bugfix - correcting poster damage resistances (#40489) 2025-12-29 11:39:10 -06:00
ToastEnjoyer e10a6f11dd Changed corpsman description (#40486) 2025-12-29 11:39:10 -06:00
Kowlin 6c3ce57ed9 Add date formatting to admin-notes-unbanned (#40484) 2025-12-29 11:39:10 -06:00
Charlie Morley 0668879577 prevent repeat TriggerOnCollide triggers (#40428)
* prevent repeat TriggerOnCollide triggers

* review comment: remove TriggerOnCollide when out of triggers
2025-12-29 11:39:10 -06:00
Pieter-Jan Briers 2718a9c390 Fix render target caching in overlays (#40181)
Many newer overlays use IRenderTextures that are sized to the rendered viewport. This was completely broken, because a single viewport can be rendered on multiple viewports in a single frame.

The end result of this was that in the better case, constant render targets were allocated and freed, which is  extremely inefficient. In the worse case, many of these overlays completely failed to Dispose() their render targets, leading to *extremely* swift VRAM OOMs.

This fixes all the overlays to properly cache resources per viewport. This uses new engine functionality, so it requires engine master.

This is still a pretty lousy way to do GPU resource management but, well, anything better needs a render graph, so...
2025-12-29 11:39:10 -06:00
Leon Friedrich 8a6fb6ba1b Move TestPair & PoolManager to engine (#36797)
* Move TestPair & PoolManager to engine

* Add to global usings

* A

* Move ITestContextLike to engine

* Readd cvars partial class

* cleanup diff
2025-12-29 11:39:10 -06:00
Leon Friedrich 05cf42d689 Fix explosion grid alignment for static grids (#40193) 2025-12-29 11:39:10 -06:00
Absotively a9f5404730 Show hand labeler label text on examine (#40334) 2025-12-29 11:39:10 -06:00
Absotively 09ea791c1f Don't overwrite values that are mid-edit in air alarm window (#40338) 2025-12-29 11:39:10 -06:00
Minerva 43b17c04c2 Renames the radar console computer board to "mass scanner computer board" (#40430) 2025-12-29 11:39:10 -06:00
slarticodefast 119d17dd46 Fix RCD errors (#40278) 2025-12-29 11:39:10 -06:00
Lordbrandon12 eff34b481c moves magic number from SharedMoverController to InputMoverComponent (#40411) 2025-12-29 11:39:10 -06:00
deltanedas 470ac08b9c fix disposal pipes deleting contents when welded (#40451) 2025-12-29 11:39:10 -06:00
Tiniest Shark 0b611537c0 Inhand Sprites for Clear Glass (#40427) 2025-12-29 11:39:10 -06:00
slarticodefast c34c22c8f0 fix chasm heisentest (#40456)
fix chasm test
2025-12-29 11:39:10 -06:00
IProduceWidgets 31b865f08b The Experimental Lecter 8 (#40372)
* XL8 files

* slap dat on the ERT lead

* oop mag indicator offset

* fix newline
2025-12-29 11:39:10 -06:00
Minerva 9f1850890b Fixes some refuling welder typos (#40447) 2025-12-29 11:39:10 -06:00
Leon Friedrich 04ab4907e4 Update engine to v267.1.0 (#40445) 2025-12-29 11:39:10 -06:00
Hi-Im-Shot 9ab7fb03bb Added Cutting Slicing and Executing options to the cane blade (#40311)
* Added Cutting Slicing and Executing options to the cane blade

* swaped from BaseItem to BaseSword for cleaner code

* fixed a double gap in code
2025-12-29 11:39:09 -06:00
Hitlinemoss 8c44111c25 Ninja items are now highly illegal (#39855)
* Added tactical katana + tactical katana shipment (placeholder descriptions)

* Revert "Added tactical katana + tactical katana shipment (placeholder descriptions)"

This reverts commit aa1928be7f4d938df1838943781e63c47a03cc11.

Whoops, committed to master by mistake

* Made ninja items highly illegal

* Rerun checks
2025-12-29 11:39:09 -06:00
ādaandiaada dfa4a8f3da Silence mime bags (#40317)
silence!!!

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:09 -06:00
Kittygyat 445083441f Made all tarantulas able to drag entities (#40433)
Sent tarantulas to the gym
2025-12-29 11:39:09 -06:00
SlamBamActionman 6c6b49e8f8 Add contraband levels for several reagents (#40426)
* Initial commit

* Minor changes
2025-12-29 11:39:09 -06:00
rumaks 45fd6e985b Make ichor heal brute, burn, and toxin evenly (#39466)
* Make ichor heal brute, burn, and toxin evenly

* Nerf healing to more reasonable values
2025-12-29 11:39:09 -06:00
Vanessa 25b052442d Fixed implant remover description 2025-12-29 11:39:09 -06:00
Mora 2d15986c38 Rename medifab implanter to implant extractor and made it's description clearer (#40375)
* Renamed regular implanter (the extractor from the medifab) to implant extractor

* wrong way
2025-12-29 11:39:09 -06:00
Kittygyat 42ca29206d Crashed the snakeskin boots stock-market by removing their hidden no-slip properties (#40201)
Crashed the snakeskin boots stockmarket by removing their non-slip properties
2025-12-29 11:39:09 -06:00
Skye 9740f2c70f Add chemical analysis goggles to ChemDrobe (#40236) 2025-12-29 11:39:09 -06:00
Minerva a147f1fbc1 Renames the "Integrated GPS" to "integrated GPS" (#40431)
Renames the Integrated GPS to not use title case
2025-12-29 11:39:09 -06:00
PicklOHandPrincess Cheeseballs 05b8e778d9 Adds Nukie IDs and PDAs, makes Nukie IDs able to copy accesses. (#37304)
* Adds Nukie IDs and PDAs, makes IDs able to copy access.

* Fixed PDA and ID parenting

* Meta.json spacing

* PDA parenting

* retest

* Forgot a comma OOPS

* Spacing

* Minor meff fix

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:09 -06:00
Pixel8-dev 9dffab320d Stun rune Fix (#40432)
Added a single line of code
2025-12-29 11:39:09 -06:00
Kittygyat 10bb3f6b32 Updated the cyborg weapon module's uplink description to be accurate (#40429) 2025-12-29 11:39:09 -06:00
Minemoder5000 fc646fd720 Remove drone lawset from ion storms (#40374) 2025-12-29 11:39:08 -06:00
Vanessa 4664b02f04 Antag roleban fixes 2025-12-29 11:39:08 -06:00
Vanessa 50c48c70ca Small fix to AttemptShoot method that returns a bool now 2025-12-29 11:39:08 -06:00
98c9749e2c Antag Rolebans (#35966)
Co-authored-by: beck-thompson <beck314159@hotmail.com>
Co-authored-by: Hannah Giovanna Dawson <karakkaraz@gmail.com>
2025-12-29 11:39:08 -06:00
ādaandiaada 9519c1108d Use an alias in job icons yml (#40415)
commit

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:08 -06:00
SurrealShibe 159a1433e8 Turn the Satanic Bible's pentagram around, fix left inhand (#40234)
change sprites, update meta
2025-12-29 11:39:08 -06:00
Winkarst-cpu 36b4b01759 Update `DoorComponent` to use TimeSpans and fix comments (#40420)
Cleanup
2025-12-29 11:39:08 -06:00
Winkarst-cpu 134fc9a83e Change `GetPryTimeModifierEvent.BaseTime` to the TimeSpan (#40419)
* Cleanup

* Update
2025-12-29 11:39:08 -06:00
ScarKy0 889c918849 Localize vulp emotes (#40418)
init
2025-12-29 11:39:08 -06:00
slarticodefast c6019e5fa6 Add chasm integration tests (#40286)
* add chasm integration test

* fix assert

* fix

* more fixes

* review
2025-12-29 11:39:08 -06:00
Kyle Tyo 5fe5037326 Readyall and Toggleready commands to LEC. Fix an issue with ready button desync. (#38706)
* commit

* commit

* change lobby shell string.
2025-12-29 11:39:08 -06:00
chromiumboy 9cf11a8bc1 Bug fix for Station AI damaged accent (#40399)
Initial commit
2025-12-29 11:39:08 -06:00
ScarKy0 4cdb241a9d Intellicards rename to AI stored on them (#40402)
* intellicard name changing

* review
2025-12-29 11:39:08 -06:00
Vanessa 12182ffb4d Fixed some access system stuff in DV namespaces 2025-12-29 11:39:08 -06:00
Winkarst-cpu c697cc37df `NarcolepsySystem` refactor (#40305)
* Refactor

* Update

* Update
2025-12-29 11:39:08 -06:00
ScarKy0 22144ca30c Add intellicards to AI crates (#40401)
init
2025-12-29 11:39:08 -06:00
chromiumboyandScarKy0 be4a555ae3 The station AI can be destroyed (#39588)
* Initial commit

* Fixing merge conflict

* Merge conflict fixed

* Anchorable entities can now be marked as 'unanchorable'

* Revert "Anchorable entities can now be marked as 'unanchorable'"

This reverts commit 6a502e62a703cf06bd36ed3bdefe655fc074cfc5

This functionality will be made into a separate PR

* Error sprite

* Update AI core appearance with sustained damage, spawn scrap on destroyed

* Added intellicard sprite

* AI damage overlays

* Added fixtures

* AI core accent changes when damaged or low on power

* Bug fix and pop up messages for inserting AIs into inoperable cores

* Updated 'dead' sprite

* Destroying the AI core reduces the number of AI job slots available

* AI battery duration set to 10 minutes

* Initial commit

* Allow MMIs used in the construction of AI cores to take them over

* Initial resources commit

* Initial code commit

* Sprite update

* Bug fixes and updates

* Basic console UI

* Code refactor

* Added lock screen

* Added all outstanding UI features

* Added purge sprites

* Better appearance handling

* Fixed issue with purge sprite

* Finalized UI design

* Major components finalized

* Bit of clean up

* Removed some code that was used for testing

* Tweaked some text

* Removed extra space

* Added the circuitboard to the RD's locker

* Addressed reviewer comments plus tweaks

* Addressed reviewer comments plus tweaks

* Removed instances of granular damage

* Various improvements

* Removed testing code

* Fixed issue with disabled buttons

* Finalized code

* Addressed review comments

* Added a spare Station AI core electronics to the research director's locker

* Fixing build failure

* Addressed review comments

* Addressed review comments

* Added reverse path for construction graph

* Removed unneeded reference

* Parts can be purchased through cargo

* Fixing merge conflict

* Merge conflict resolved

* Fixing merge conflict

* Code update

* Code updates

* Increased AI core health and gave it a sell price to fix test fail

* Added screen static sprite

* Added better support for ghosted AI players plus code tweaks

* Various improvements and clean up

* Increased purge duration to 60 seconds

* Fixed needless complication

* Addressed reviewer comments part 1

* Addressed reviewer comments part 2

* Further fixes

* Trying lower battery values to see if it fixes the test fail

* Adjusted power values again

* Addressed review comments

* Addressed review comments

* Fixed test fail

* Fixed bug with endless rebooting. Using rejuvenation on an AI core revives the AI inside.

* Added pop up text

* Bug fix

* Tweaks and fixes

* Fixed restoration console not updating when the AI finishes rebooting

* Update SharedStationAiSystem.Held.cs

---------

Co-authored-by: ScarKy0 <scarky0@onet.eu>
2025-12-29 11:39:07 -06:00
chromiumboy 5931c3f151 Devices with access restrictions list those restrictions in their examination description (#37712) 2025-12-29 11:39:07 -06:00
SlamBamActionman b8fef9085f Detunes Ninja Stun To Actually Have Some Counterplay (#39707) 2025-12-29 11:39:07 -06:00
Errant 3dff762cad [Hotfix] Remove pull-escape trick (#40368)
* make HandleStopPull byref

* we get signal
2025-12-29 11:39:07 -06:00
5cb862522c Dark/Light Grass & Desert Astrotiles (#37867)
* Added Waterjug, a low-mid pop map with a tropical theme and custom evac shuttle

* Fixed postmapinittest issues (Hopefully)

* Actually fixed the afformentioned issue.

* Added Warden Spawnpoint which I forgot

* Named APCs, Substations, & Cameras, added some more decals

* Decorated some more, notably the bar.

* Minor adjustments, added cans, slightly reworked salv and maints bar

* Fixed some small issues, notably weird closed doors, added a few small things (shutters mostly)

* Added 2 new astrotiles, dark grass and desert sand.

* Removed map. Fixing issue. Please hold.

* Forgot to remove a comma, please god forgive me maptainers. I blame Rider IDE for it's autoaddition of all changes made even on seperate branches.

* Added localization for stacks.

* Actually fixed the loc. issue. Maybe. Please.

* Hopefully fixed the last localization issue.

* Added Light Astro-tiles, and edited the names of the inhand png's for the dark grass astrotiles to be more internally consistant

* Fixed some issues caused by another PR I made, added more maints stuff

* Made some small decorative and practical changes

* Fixed, changed, and added a ton of stuff. I don't think I can list it all, honestly.

* Removed shields to try to fix an issue with the test

* Hopefully fixed issues relating to a failed test.

* Replaced grass/flora decals with randomized ones, readded shields to armory

* Fixed some YML issues, whitelisted files for flora decal spawners

* Added a bridge-beach, added some misc. items and objects.

* Small changes to buttons, fixed wires and flooring

* Fixed AME-Holopad issue.

* Added a Custom Waterjug Parallax, made it so the parallaxes actually work, and made some minor adjustments to the map

* Fixed an accidental adjustment to CoreStation's parallax prototype YML

* Changed some Salvage and Cargo stuff

* Fixed some merge issues, updated Adriatic with a locker and added some little details to Waterjug

* Fixed some stuff, added docking arm near evac

* meta json fix tiles

* fixed again

* fixed once more

* Removed all the waterjug stuff.

* fix spacing

* fix unnecessary formatting

---------

Co-authored-by: SharkSnake98 <sharksnake87@gmail.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
2025-12-29 11:39:07 -06:00
SlamBamActionman 275ae3adf3 Add jetpacks to the Nukie Infiltrator (#39887) 2025-12-29 11:39:07 -06:00
MissKay1994 4dd0462b1f Massively reduce how lethal Man-O-War shuttle is (#40339)
no longer nukies in disguise
2025-12-29 11:39:07 -06:00
Princess CheeseballsandPrincess Cheeseballs 21038e13e2 [STAGING/HOTFIX] Butcher entities in containers. (#40299)
* Kitchen spike and sharp system

* Use transform and parent

* A

* Works

* A

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:07 -06:00
Winkarst-cpu 4f995c8dce Fix wizard's recharge spell not adding charges to wands that use LimitedChargesComponent (#40347)
* Fix

* Update
2025-12-29 11:39:07 -06:00
Vanessa ba7be40ee7 Fixed reference to DrinkComponent in DamageOnLand 2025-12-29 11:39:07 -06:00
pathetic meowmeowandPrincess Cheeseballs 3fc97344af De-enumify humanoid species skin colours (#39175)
* De-enumify humanoid species skin colours

* Change index to resolve

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:07 -06:00
Winkarst-cpuandslarticodefast 5244330d58 Fix throwing objects causing pushback on the player who threw them in a not weightless environment (#40335)
* Fix

* Update Content.Shared/Gravity/SharedGravitySystem.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:07 -06:00
slarticodefast e7711b8000 Change listplayers command permissions to require the PII flag (#40324) 2025-12-29 11:39:07 -06:00
FungiFellow 5bb345e6c3 Cockroach Gib when Stepped on (#40103)
* Cockroach Gib

* Prevent Cockroaches From Gibbing Eachother

* Added - type: RandomChanceTriggerCondition

* Update animals.yml

* Named SuccessChance Datafield

* successChance

* Revert Change

* Uncapitalize C

* RECAPITALIZE THE C
2025-12-29 11:39:07 -06:00
ApolloVector b228ae50f4 Clake frag round fix (#40294)
make the frag work
2025-12-29 11:39:07 -06:00
SurrealShibe 4b9b947163 Toilet fixes: Exception when constructing, proper seat layering (#40313)
they call me a plumber the
the way i fix da toiler
2025-12-29 11:39:07 -06:00
Princess CheeseballsandPrincess Cheeseballs a3d19e4068 Chameleon Projector Physics Fix (#37960)
* One commit

* Move files

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:06 -06:00
Vanessa 6361b9090b Cleaned up drink components in DV namespaces. 2025-12-29 11:39:06 -06:00
slarticodefast 10dcb9e451 Delete DrinkComponent, migrate prototypes to EdibleComponent (#40308) 2025-12-29 11:39:06 -06:00
Vanessa 4d0d42e12c Fixed some drink inheritence. 2025-12-29 11:39:06 -06:00
Princess CheeseballsandPrincess Cheeseballs 44ce3d2350 Edible Sound Specifier Override (#40312)
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:06 -06:00
Redandslarticodefast 37d93e2eaa Stop microwaving! (#40132)
* Create KillMicrowaveTest.cs

* Update KillMicrowaveTest.cs

* Update Content.IntegrationTests/Tests/Microwave/KillMicrowaveTest.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.IntegrationTests/Tests/Microwave/KillMicrowaveTest.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* Update Content.IntegrationTests/Tests/Microwave/KillMicrowaveTest.cs

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>

* documentation

* Apply suggestions from code review

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:06 -06:00
InsoPL d511f70e55 Fix for can't stop pulling when cuffed (#40233)
* fix

* fix

* spaces added
2025-12-29 11:39:06 -06:00
SlamBamActionman 4fca79df67 Food Item Size Adjustment (#39203) 2025-12-29 11:39:06 -06:00
SlamBamActionman ab9a97e87d Reorganize and refactor drinks yml (#39221) 2025-12-29 11:39:06 -06:00
Vanessa 3d507e726c Cryox evenheal (#41696 Partial) 2025-12-29 11:39:06 -06:00
Vanessa 43f0c6a33f Fixed shared radio references. Removed custom DV radio implant code for now. Will re-do later. 2025-12-29 11:39:06 -06:00
Preston Smithandslarticodefast 273eff37e2 Syndicate and CentComm Radio Implanters (#33533)
* Add Syndicate Radio Implant

* Fix description grammar

* remove unused var

* Update - Small fixes

* Un mess with imports

* Remove unused tag

* Correction

* Clear lists instead of remove

* Update 0 check

* Add Centcomm implant

* Correct centcom channel

* Correct params

* No more crying

* Update Content.Shared/Implants/Components/RadioImplantComponent.cs

* Update Content.Server/Implants/RadioImplantSystem.cs

* Update Content.Server/Implants/RadioImplantSystem.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:06 -06:00
pre-commit-ci[bot] 15f9bacd3d [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
2025-12-29 11:39:06 -06:00
Vanessa ff9795f82c Fixed duplicate components in Burgers 2025-12-29 11:39:05 -06:00
Vanessa d1cb9ab958 Moved shitmed stuff to its namespace 2025-12-29 11:39:05 -06:00
slarticodefastandwalksanatora 6b57b9bd6b move all the radio components and system to Shared (#40293)
* move all the radio components and system to Shared.

* duh split impl

* address reviews

* cleanup

---------

Co-authored-by: walksanatora <walkerffo22@gmail.com>
2025-12-29 11:39:05 -06:00
UpAndLeaves 95063b86c0 storage and inventory toolshed commands (#39046)
* First commit

* CommandImplementation on singletons is die, a la moony

* Fix duplicated thingy because yes

* Prototypes, bugfixes, refactoring oh my

* Remember to actually stage your ftl changes next time, leaf
2025-12-29 11:39:05 -06:00
Lillian Industries 59d925efce Added SmartFridge circuitboards (#39879) 2025-12-29 11:39:05 -06:00
Perry Fraserandslarticodefast 7220b41437 Make vending machine restocks predicted (and its sound not spammable) (#38609)
* feat: make vending machine restocks predicted

* refactor: VendingMachineRestockComponent cleanup

* refactor: minor simplification

* revert: refactor: minor simplification; load bearing IsFirstTimePredicted

lol second guessed myself

* chore: unneeded VendingMachineSystem dep

* Update Content.Shared/VendingMachines/VendingMachineComponent.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:05 -06:00
ScarKy0 6f09e1fe61 Remove unused BulletTennis (#40285)
init
2025-12-29 11:39:05 -06:00
IProduceWidgetsandScarKy0 b315cd2ee4 No take; Only throw. (#40143)
* commit atrocities

* hail satan

* Channel Pavlovian horror

* pet kitty cat

* Taint universe forever

* Assault sensibilities

* sully existence

* tarnish morality

* The degunnening

* encratening

* Update toys.yml

* add few pixels to fix vulp inhands

---------

Co-authored-by: ScarKy0 <scarky0@onet.eu>
2025-12-29 11:39:05 -06:00
SlamBamActionman 7d35f9b10e Fix Linter errors (#40283)
Fix yoml
2025-12-29 11:39:05 -06:00
Charlie Morley 172650c136 Clip the WindowTitle of FancyWindows, so close buttons don't get hidden (#40272)
ClipText of FancyWindow title, so close buttons don't get hidden
2025-12-29 11:39:05 -06:00
slarticodefast 73c5ae5b31 fix chasmsystem resolve error (#40281) 2025-12-29 11:39:05 -06:00
Absotively 76087970cc Fix APC breaker toggle button prediction by setting ToggleMode True (#40273)
* Use ToggleMode for toggle button

* Actually this bit doesn't require changing apparently
2025-12-29 11:39:05 -06:00
GeneralGawsandGeneralGaws 5f553c8b37 Fix darts inhand sprites (#40207)
fix

Co-authored-by: GeneralGaws <limonmessi@mail.ru>
2025-12-29 11:39:05 -06:00
ToastEnjoyer d1b0bfbeed Laser rifle is contraband again (#40253)
* Fixed contraband tag

* practice isnt contraband

* Added base

* Removal
2025-12-29 11:39:05 -06:00
IProduceWidgets 451daa8222 Add admin shuttles (#32139)
* dis da shuttles tho

* power checking

* rerun tests

* purge invalids

* attributions

* Update shuttle save files for new serialization.

* get regexed nerd

* fix shuttle yml guh

* Kill actions
2025-12-29 11:39:05 -06:00
Stefano Pigozzi caae8caa5b Fix RGB staff not working (#40258)
Add missing `TargetAction` to `ActionRgbLight`

This fixes the RGB staff not working.
2025-12-29 11:39:05 -06:00
Deerstop 90574a14c8 Decal spawners spawn on a higher layer (#39956)
changed decal spawn layer
2025-12-29 11:39:04 -06:00
ādaandiaada 59062d1dd8 SpawnEntityTableOnTrigger (#39909)
* commit

* comment

* empty

* better xform

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:04 -06:00
202579939b PopupOnTrigger (#39913)
* commit

* comment

* changes

* Update Content.Shared/Trigger/Systems/PopupOnTriggerSystem.cs

---------

Co-authored-by: iaada <iaada@users.noreply.github.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:04 -06:00
Princess CheeseballsandPrincess Cheeseballs 7db368a6a0 [HOTFIX] Fix Loadout Validations (#40189)
p0 bugfix

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:04 -06:00
imatsoup d292de3b60 Make Butterflies zombie immune (#40265)
butterfly zombie no longer
2025-12-29 11:39:04 -06:00
Tayrtahn 9930cc8c45 Improve Do Not Map test to whitelist specific prototypes per map and whitelist entire directories (#36117)
* Enable whitelisting specific DNM prototypes per map

* Enable whitelisting directories

* Rename fields

* Use a HashSet instead of an array

* Add check for unused whitelist entries

* Remove whitelisting for meta (warden's rubber stamp was removed)

* Add glob support courtesy of @IProduceWidgets

* Update xmldoc
2025-12-29 11:39:04 -06:00
Vanessa 61e85d5c82 Fixed word replacements not working. 2025-12-29 11:39:04 -06:00
SweetAplleandTayrtahn 17791ea633 "idk" no longer shrugs, instead sanitizing to "I don't know" (#39024)
* idk no longer shrugs

* accidentally had this in here!

* this was accidentally in here too!

* fucked up the removal

* fucked it up again this should HOPEFULLY be the last one

turns out it's hard to revert the edit of a file that's just numbers and spaces who woulda thunk?

* Restore SpaceStation14.sln to master

* Restore development.toml

---------

Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
2025-12-29 11:39:04 -06:00
c4llv07eandPrincess Cheeseballs 1f177804dc Allow to run mappingclientsidesetup and showsubfloor with +MAPPING permissions (#34455)
Allow +MAPPING admins to call mappingclientsidesetup and showsubfloor

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:04 -06:00
Pieter-Jan Briers 5ed496a4c5 Ignore non-content commands in AllCommandsHavePermissions (#39336)
Causing a test failure every time a Toolshed command gets added to engine is ridiculous.
2025-12-29 11:39:04 -06:00
InsoPL 14f0b88295 Do after checks for being inside container (#39880)
fix
2025-12-29 11:39:04 -06:00
Winkarst-cpu 89ed29f5f1 Fix emergency evac shuttle console early launch mispredict (#39751)
* Fix

* Yes

* Mess

* Update

* Like that?
2025-12-29 11:39:04 -06:00
SlamBamActionmanandslarticodefast 56e7be5a6c Add support for contraband text to the reagent guidebook (#37113)
* Add contraband text to reagent guidebook

* Add reagent for examining

* Update Content.Client/Guidebook/Controls/GuideReagentEmbed.xaml.cs

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:04 -06:00
Ser11y 87ce22fe8c Make "Confirm" in VerbMenuUIController localizable (#40248) 2025-12-29 11:39:03 -06:00
Fildrance 345caaf69a feat: SimpleRadial menu support for sprite-view and more extensibility (#39223) 2025-12-29 11:39:03 -06:00
Centronias 8ee7f6996a Make Foldable Clothing Hidden Layers "reset" Hidden Layers when un/Folding (#40251)
foldable clothing hidden layers fix
2025-12-29 11:39:03 -06:00
Vanessa 8e8e19e11e Fixed alerts in GrapplerSystem and CorticalBorerSystem 2025-12-29 11:39:03 -06:00
Vanessa 706abdaa06 Fixed Alerts in CosmicCult files. Converted params to upstream conventions. 2025-12-29 11:39:03 -06:00
Ser11y e948958e08 Make location in crew monitoring console localizable (#40247) 2025-12-29 11:39:03 -06:00
Winkarst-cpu d3f0290c5c Cleanup: Remove unnecessary `IEntityManager reference from the EmotesUIController` (#40243)
Cleanup
2025-12-29 11:39:03 -06:00
Pieter-Jan Briersandslarticodefast b7f297f612 Fix usages of TryIndex() (#39124)
* Fix usages of TryIndex()

Most usages of TryIndex() were using it incorrectly. Checking whether prototype IDs specified in prototypes actually existed before using them. This is not appropriate as it's just hiding bugs that should be getting caught by the YAML linter and other tools. (#39115)

This then resulted in TryIndex() getting modified to log errors (https://github.com/space-wizards/RobustToolbox/commit/94f98073b07bd3fa3133ae6799b34d90f46f467e), which is incorrect as it causes false-positive errors in proper uses of the API: external data validation. (#39098)

This commit goes through and checks every call site of TryIndex() to see whether they were correct. Most call sites were replaced with the new Resolve(), which is suitable for these "defensive programming" use cases.

Fixes #39115

Breaking change: while doing this I noticed IdCardComponent and related systems were erroneously using ProtoId<AccessLevelPrototype> for job prototypes. This has been corrected.

* fix tests

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
2025-12-29 11:39:03 -06:00
Kittygyat 7e8c50246b Reworded the Galoshes description to be more clear about what they actually do. (#40200)
Reworded the Galoshes description to be more clear about what they do
2025-12-29 11:39:03 -06:00
Vanessa 651a00d644 Added Kitsune healthbars to the Derelict Mediborg 2025-12-29 11:39:03 -06:00
Centronias 3d9b6556d3 Derelict Mediborgs can Scan Solutions and see Mob Health (#40206)
Add mediborg unique components to derelict mediborg
2025-12-29 11:39:03 -06:00
SlamBamActionman b9ccca1c27 Lets diona sap trigger artifact blood nodes (#40211) 2025-12-29 11:39:02 -06:00
keronshbandPrincess Cheeseballs 081f4c5cda DoAfter support for Actions (#38253)
* Adds Action DoAfter Events

* Adds DoAfterArgs fields to DoAfterComp

* Adds a base doafter action

* Adds Attempt action doafter logic

* Adds doafter logic to actions

* Changes Action Attempt Doafter and action doafter to take in Performer and the original use delay. Use delay now triggers when a repeated action  is cancelled.

* Readds the TryPerformAction method and readds request perform action into the action doafter events

* Adds a force skip to DoAfter Cancel so we can skip the complete check

* Adds a Delay Reduction field to the comp and to the comp state

* Fixes doafter mispredict, changes doafter comp check to a guard clause, sets delay reduction if it exists.

* Cancels ActionDoAfter if charges is 0

* Serializes Attempt Frequency

* Comment for rework

* Changes todo into a comment

* Moves doafterargs to doafterargscomp

* Adds DoAfterArgs comp to BaseDoAfterAction

* Removes unused trycomp with actionDoAfter

* Replaces DoAfterRepateUseDelay const with timespan.zero

* Removes unused usings

* Makes SharedActionsSystem partial, adds DoAfter partial class to ActionSystem, moves ActionDoAfter logic to the SharedActionsSystem.DoAfter class

* Cleanup and prediction

* Renames OnActionDoAfterAttempt to OnActionDoAfter, moves both to Shared Action DoAfter

* Removes ActionAttemptDoAfterEvent and moves its summaries to ActionDoAfterEvent. Converts OnActionDoAfterAttempt into TryStartActionDoAfter

* Removes Extra check for charges and actiondoafters

* Sloptimization

* Cleanup

* Cleanup

* Adds param descs

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:02 -06:00
a31dfef43e Being grappled with a grapple gun allows you to cross chasms (#39983)
* Being grappled with a grapple gun allows you to cross chasms

Closes #31698

* Update Content.Shared/Weapons/Misc/SharedGrapplingGunSystem.cs

* AAAAAAAAAAAAAAAAA

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:02 -06:00
chromiumboy be3e1cae37 Bug fix for APCPowerReceiverBattery (#40188)
Initial commit
2025-12-29 11:39:02 -06:00
Vanessa 264f4caa12 Reverted DV's fix for 1u syringes since upstream fixed it. 2025-12-29 11:39:02 -06:00
Crude Oil d6a7989071 Restore transfer amounts on regular syringes to 5, 10, 15 (#40197)
add transferamounts to regular syringes
2025-12-29 11:39:02 -06:00
Hannah Giovanna Dawson fede1a93e1 Allow Vulps With Human Hair To Be Shaved Without Clyde Joining The Circus (#40171)
* Revert "Disable vulpkanin human hair (#40144)"

This reverts commit d02aa1a4e2.

* You can once again shave your pet Vulp

* I can see the ass, I'm safe

* Rectified docstring as I am a good person

* I am doing this instead of playing Silksong please help

* Fix forgetting to re-add shader overriding
2025-12-29 11:39:02 -06:00
Vanessa 5485e4ace8 Fixed cosmic cult window inheritance. 2025-12-29 11:39:02 -06:00
ArtisticRoomba 11ce572527 fix: Atmos dP Window Inheritance (#40192) 2025-12-29 11:39:02 -06:00
Vanessa f360d626b8 Added new delta pressure refactor to cosmic cult windows. 2025-12-29 11:39:02 -06:00
ArtisticRoomba 2fa3ec4fad Atmospherics Delta-Pressure YAML refactor (#40174) 2025-12-29 11:39:02 -06:00
ScarKy0 2c3cc9a876 Revert antique laser and appraisal tool sizes (#40158)
* init

* appraisal antique pistol sounds kinda cool tho ngl

* actually fuck items
2025-12-29 11:39:02 -06:00
Princess CheeseballsandPrincess Cheeseballs eed8c3d22c [Hotfix] Wizard Rod doesn't gib the wizard. (#40041)
* Title

* Tired

* That shit did nothing goddamn

* Fix for real

* Use og code

* Hmmm borgaer

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:02 -06:00
Princess CheeseballsandPrincess Cheeseballs 210dc47b7c [HOTFIX] Fix Burgers (#39773)
* Borgar

* Review

* Predicted queuedel

* Predict

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:02 -06:00
ArtisticRoomba db5d2c34f0 Fix resin windows inheriting wrong dP values (#40151)
Fix resin windows inheriting from regular windows
2025-12-29 11:39:01 -06:00
Skye 1bcfc580f7 Fix bad loop in LogStringHandler.AddFormat (#40147) 2025-12-29 11:39:01 -06:00
IProduceWidgets ba3f800d8a Drink outta da toiler (#40133)
* totally unrelated to any other recent additions

* dispare

* enum
2025-12-29 11:39:01 -06:00
SpaceLizard e4f58bf8ad Fixed a error in the "Adventures of Ian and Renault" books (#39932)
Fixed a publication error in the "Adventures of Ian and Renault" book series.

The editor of these books have been taken out back and shot.
2025-12-29 11:39:01 -06:00
Pieter-Jan Briers 7af1ea6f79 Fix admin logs going to admin chat (#40141)
Oops
2025-12-29 11:39:01 -06:00
Myra cc95f6bd8c Add a space in osx-arm64 to fix arm64 osx builds (#40137) 2025-12-29 11:39:01 -06:00
Tayrtahn bf90fcf1b9 Add water cooler interaction test (#39612)
* Add altInteract option to interaction test helper methods

* Add water cooler interaction test

* Oops, that's not a NetEntity

* Is.Not.Empty

* SPlayer

* Assert.Multiple

* Document parameters
2025-12-29 11:39:01 -06:00
Leon FriedrichandPJB3005 d95318bcc4 Rejig LogStringHandler (#30706)
* Rejig LogStringHandler

* Fix session logs

* Fix properly

* comments

* IAsType support

* Fix mind logs

* Fix mind logging AGAIN

---------

Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-12-29 11:39:01 -06:00
Skye d8b9c34c80 fix a typo in the comments for game.ipintel_exempt_playtime (#40129) 2025-12-29 11:39:01 -06:00
d27ba4cd91 Alerts Cleanup and API (#39544)
* alert cleanup and API

* I expect update loops to be at the top.

* Address review

* Address review x 2

* Merg my PR

* Fix

* Update Content.Shared/Alert/AlertsSystem.cs

webedit

Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>

* FIX THAT TEST FAIL!!!!

* Me when I forget to actually give you alerts

* Hammedborgar

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
2025-12-29 11:39:01 -06:00
ArtisticRoomba 0049117f00 Give shutters the DeltaPressure component (#40126) 2025-12-29 11:39:01 -06:00
ArtisticRoomba cb79611061 Fix DeltaPressure damage not capping beyond a certain pressure (#40125) 2025-12-29 11:39:01 -06:00
DDDragoni e90e583c23 Telepad Label Fix (#39975)
Fixed telapad order labels showing wrong account
2025-12-29 11:39:01 -06:00
CawsForConcern 251e58acec Fixes Theobromine missing from Iced Coffee (#40063)
adding ice to coffee no longer removes its theobromine
2025-12-29 11:39:01 -06:00
ādaandiaada 2ab2039cd2 Organize JobIconPrototype yml (#39774)
grouped

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:01 -06:00
Winkarst-cpu 69f9218215 Fix: Ability to open AHelp in the lobby by pressing the hotkey (#39525)
* Fix

* Update
2025-12-29 11:39:00 -06:00
VoidMeticulous a98f6f0d08 Add 2.25 second delay to scurret petting (#40097)
Add 2.25 second delay to scurret petting rate
2025-12-29 11:39:00 -06:00
ādaandiaada 0aa07117c2 Fix xenoborg action icons (#40118)
commit

Co-authored-by: iaada <iaada@users.noreply.github.com>
2025-12-29 11:39:00 -06:00
Pieter-Jan Briers da2a287010 Package win-arm64 and osx-arm64 servers (#40113) 2025-12-29 11:39:00 -06:00
Nemanja cbb72a08a8 Improve Gas Yaml Serialization (#40070)
* Make yaml gas serialization cleaner

* fix exception

* fix validation code

* rudimentary test & permissive loading

* change it a bit

* Test fixes and adjustments
2025-12-29 11:39:00 -06:00
Vanessa 3a208eb97e Removed knuckleduster objective. 2025-12-29 11:39:00 -06:00
jkwookee 6e5648248c Fix QM Golden Knuckledusters not being a objective (#40096)
test
2025-12-29 11:39:00 -06:00
Pieter-Jan Briers ca250ab1f0 Skip MapImages folder in packaging (#38928) 2025-12-29 11:39:00 -06:00
Quantum-cross 20e1de2376 Dynamic anomaly scanner texture (#37585) 2025-12-29 11:39:00 -06:00
Princess CheeseballsandPrincess Cheeseballs c1621e0fe8 Can't crawl over counters (#40099)
Counters and Tables separation

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:00 -06:00
ScarKy0andPrincess Cheeseballs 289b20b9a3 Reuse lathe queue instead of redrawing (#39886)
* init

* init

* PUSH!!!

* //

* Me when the when the me when the

* review

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-29 11:39:00 -06:00
Myra 1b7fc3a4fe Stop packaging Resources/ServerInfo and Resources/Changelog on the server (#39897)
* Stop packaging `Resources/ServerInfo`

This is only used by the client, it is unneccery to pack into the server. Plus it keeps getting people to think that just editing the server resources will modify the guidebook even though that needs a custom dev enviroment.

* Add credits too
2025-12-29 11:39:00 -06:00
Samuka-CandErrant e863725cb4 Fool players with decoy presets (#40053)
* added secret gamepresets

* cut down on alias

* remove all secret presets

* change the command to allow for a secret argument

* update test

* moved the secret argument after the number of rounds argument

* added completions

* localization and use of CompletionHelper.Booleans

* command now has a option for a decoy preset

* fixed decoy message in the end

* ops

* clean up

* hint 2

* improve localization

---------

Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com>
2025-12-29 11:38:59 -06:00
ArtisticRoomba 4c3bd78be5 Give inflatable walls the DeltaPressure component (#40098)
give inflatable walls the deltapressure component
2025-12-29 11:38:59 -06:00
Delta-V bot 1b7a9ca1e0 Automatic changelog update 2025-12-29 17:24:20 +01:00
PureBreadBagel 55c9ab3f9c Nomore taser (fixed) (#5045)
* Update OrganManipulation.xml

* Oops wrong branch pull 💀

* aaa my forgotten s
2025-12-29 17:24:00 +01:00
Delta-V bot 91d0b13132 Automatic changelog update 2025-12-28 19:51:31 +01:00
dc9cc37203 Bagels guidebookagloo fixes V1 (#5004)
* Update OrganManipulation.xml

* Update Command.xml

Renamed commands from Research Director and QuarterMaster to Mystagouge and Logistic Officer.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Radio.xml

Highlighting examine your radio

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update CharacterCreation.xml

Added some extra traits, and changed unrevivable to include cloning.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update MedicalDoctor.xml

Added some information regarding cryogenics for rotting bodies, and added information about the unrevivable trait.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Cloning.xml

Added information regarding the unrevivable trait for cloning.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Surgery.xml

Added the cleaning of surgery tools.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Science.xml

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update AnomalousResearch.xml

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update CosmicCultDeconversion.xml

Updated the deconversion to fix the censer from holywater to Mindbreaker toxin

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update CosmicCultDeconversion.xml

bible removal

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update CosmicCultDeconversion.xml

Added mindbreaker toxins recipe.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update PartManipulation.xml

Added extra information regarding limbs that cannot be biofabbed.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Create Logistics

Renamed logistics guidebook entry

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update cargo.yml

Renamed from cargo to logistics

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* rename cargo to logistic

rena

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Revise trial and hearing procedures in Justice.xml

Updated trial and hearing procedures, including time limits and roles.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Enhance Psionics.xml with glimmer tracking details

Added details about the sophic scribe's functionality and glimmer emergency handling.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Rename guide entry for altars in epistemics.yml

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update Altar.xml by removing Golemancy note

Removed note about Golemancy not being implemented.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Enhance forensic information retrieval process

Updated instructions for recognizing DNA and added references to Medical and Criminal Records Computers.

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Decked out the MedicalDoctor.xml with the new traits and CPR!

* Recoloured Medical doctor and added a better guide for dead bodies.

* Reworded medical doctor alot.

* Added another surgery textlink

* Rechanged medical doctor, too colourful so i toned it down

* Finalised the doctor

* fixed a missing "

* Some grammar and invalid pages fixes.

* Edited the Bartender page to add restocking as well. Along with some rewording.

* Added operating tables to surgery, and fixed a typo, its sutures not satures!

* Fixed some stuff

* Fixed some things regarding a review.

* Rewriting my medical doctor. Part 1

* Rewrite medical doctor.xml part 2

* Some extra changes, added umbroxol and holywater to core medications

* added topicals

* finished rewriting medical doctor

* copied medical doctor to the DV folder for namespacing, while replacing the original one with wizdens

* Edited something about psionics.

* Fixed forensics.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* namespaced medical doctor.

* quick bug fix

* moved umbroxol and holy water to speciality medications

* added extra traits such as unrevivable to medicaldoctor

* Update Resources/ServerInfo/Guidebook/_DV/Justice.xml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Fixed everything for review

* fixed an entry not showing

* ack invalid comment

* Hotfix for him again

* To apply with the changes

* aaaaa MY YAML

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update guides.ftl

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update MedicalDoctor.xml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Update CharacterCreation.xml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>

* Fixed a serious blunder

* Moved cloning into _DV and changed the .yml address

* Quick fix to surgery.

* updated surgery again.

* removed the commentz from the main guide

* oops I accidentally deleted

* Update Resources/Locale/en-US/guidebook/guides.ftl

Signed-off-by: Tobias Berger <toby@tobot.dev>

* Update Resources/Locale/en-US/guidebook/guides.ftl

Signed-off-by: Tobias Berger <toby@tobot.dev>

---------

Signed-off-by: PureBreadBagel <146181383+PureBreadBagel@users.noreply.github.com>
Signed-off-by: Tobias Berger <toby@tobot.dev>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-28 18:51:12 +00:00
Delta-V bot c87f9d334e Automatic changelog update 2025-12-28 18:51:21 +01:00
Milon 4e62806b45 fix vulp helmet sprites for paramed, CE and engineer (#5038)
fixes!
2025-12-28 17:51:01 +00:00
github-actions[bot]andDeltaV-Bot f2a93c9e3a Update Credits (#5037)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2025-12-28 04:11:48 +01:00
Delta-V bot 9862306cf8 Automatic changelog update 2025-12-27 14:46:29 +01:00
MD360 77dbecd817 Fix magboots doubling in Warden's locker. (#5006)
* Add screwdriver to ward locker.

* Ward Harduit -> Hardsuit in yml.

* Removed magboots from hardsuit.

* Move from locker to hardsuit locker.

* Screwdriver no more.
2025-12-27 07:46:10 -06:00
Delta-V bot c81d47ee48 Automatic changelog update 2025-12-27 14:45:44 +01:00
pootslapandpre-commit-ci[bot] 0a16d42240 Harpy emote tweaks 2.0 (#5030)
* redo caw + add squawk and quack

* quack and squawk real

* Update speech_emotes.yml

* let women quack!!!

* this time for real

* moo and baa

* BAA AND MOO

* why is it oviniaBaa but the other one is just moo

* i'm gonna flip my lid

* give harpies oviniaEmotes tag

* LET MEN QUACK

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-27 13:45:25 +00:00
Delta-V bot 5e6f0ec4e0 Automatic changelog update 2025-12-27 14:41:21 +01:00
Dorragon fb17196839 Flesh anomalite doesn't get damaged by meat kudzu (#5009)
* Meow

* make floors slippery again :( never forgiving direction for this btw, it is now my life's mission to see delta-v downfall
2025-12-27 07:41:01 -06:00
Delta-V bot 474662bbaa Automatic changelog update 2025-12-27 14:28:25 +01:00
KOTOBandVanessa 2c132089e8 Two new lobby songs by Oliver Buckland (#5018)
* im mrping it

* this will drive me insane if i dont change it

* WHOOPSIES

* Update attributions.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: KOTOB <59124164+kotobdev@users.noreply.github.com>

* Update attributions.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: KOTOB <59124164+kotobdev@users.noreply.github.com>

---------

Signed-off-by: KOTOB <59124164+kotobdev@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-27 07:28:05 -06:00
5c527dc6a2 mail refactor + predicted mail (#5031)
* scope? i don't know her

* more cleanup, Entity<T>

* priority mail timer, shared dependencies

* MailSystem file-scoped namespace

* change FTL text

* TODOs

* mailteleporter file-scoped namespace

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* remove the evil nyano mail

* Update Content.Shared/_DV/Mail/MailTeleporterComponent.cs

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Milon <plmilonpl@gmail.com>

---------

Signed-off-by: Milon <plmilonpl@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-27 07:27:24 -06:00
Delta-V bot 1835d7678f Automatic changelog update 2025-12-27 14:27:11 +01:00
Halo3moth a67f32773b Adjutant Rekitting (#5014)
* THANK GOD THIS IS ALL IN _DV

Adjutant changes

* Forgot to use my full discord user for the metajason

:3c

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* 1.3 to 1.5

---------

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>
2025-12-27 07:26:51 -06:00
Delta-V bot d5141d4f7c Automatic changelog update 2025-12-26 06:45:12 +01:00
Coryn 13050a58e2 Small to Medium Battery for Handheld Crew Monitor (#5029) 2025-12-25 23:44:52 -06:00
Tobias Berger 93c0ce0e81 change publish time 2025-12-25 22:02:21 +01:00
Milon 325ba79241 random perf improvements: part 1 (#5025)
* a lot

* quadruple enumerator

would you like to talk about our lord and savior arch ecs
2025-12-25 21:52:16 +01:00
Delta-V bot 7e13047664 Automatic changelog update 2025-12-24 12:16:46 +01:00
DisposableCrewmember42andeoineoineoin b5ae2263a6 cherry-pick: Fix missing scrollbars in Admin Player List window (upstream #40525) (#5028)
Fix missing scrollbars in Admin Player List window (#40525)

* Fix missing scrollbars in Admin Player List window

* Revert "Fix missing scrollbars in Admin Player List window"

This reverts commit c5aea1a0550deb1d1d7aae4e2dec964e93d2d8ae.

* Invalidate cached item height when item generation callback changes

Signed-off-by: DisposableCrewmember42 <disposablecrewmember42@proton.me>
Co-authored-by: eoineoineoin <helloworld@eoinrul.es>
2025-12-24 12:16:26 +01:00
VelcroboyandVelcroboy d00e19f4b1 Map Edits: Shoukou Xmas (#5024)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-23 22:03:43 -06:00
VelcroboyandVelcroboy 7862eb9e8c Map Edits: Chibi Xmas (#5023)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-23 22:02:50 -06:00
VelcroboyandVelcroboy 67fd579fb1 Map Edits: Edge Xmas (#5022)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-23 22:00:59 -06:00
Delta-V bot 57739441a5 Automatic changelog update 2025-12-24 05:00:26 +01:00
VelcroboyandVelcroboy 215d42d871 Map Edits: Division XMAS (#5021)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-23 22:00:06 -06:00
Delta-V bot eceed908f8 Automatic changelog update 2025-12-24 04:59:56 +01:00
VelcroboyandVelcroboy 74574a9453 Map Edits: Arena Xmas (#5020)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-23 21:59:36 -06:00
github-actions[bot]andDeltaV-Bot 4fd93df4cd Update Credits (#5010)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2025-12-22 20:39:38 +01:00
ConstantlyConfused 9f361717b7 Make pride scarvess count as scarvess (#5012)
make pride scarfs count as scarfs
2025-12-22 09:31:14 +10:00
Delta-V bot 3cad564a62 Automatic changelog update 2025-12-21 01:36:12 +01:00
fa77b25204 Epistemics EVA Suit (#4908)
* engi and epi suits

* feroxi helmet updates

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fuck

* remove engi suit, pending work from Astra

Co-Authored-By: Astra <226853568+EmberAstra@users.noreply.github.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update softsuits.yml

* Update eva-helmets.yml

* helmet nerf

* Update Resources/Textures/_DV/Clothing/Head/Helmets/eva_epistemics.rsi/meta.json

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: This_Is_Gray <167829864+IAmNotGray@users.noreply.github.com>

* Update Resources/Textures/_DV/Clothing/OuterClothing/Suits/eva_epistemics.rsi/meta.json

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: This_Is_Gray <167829864+IAmNotGray@users.noreply.github.com>

* Update eva-helmets.yml

* Update science.yml

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Signed-off-by: This_Is_Gray <167829864+IAmNotGray@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Astra <226853568+EmberAstra@users.noreply.github.com>
Co-authored-by: Charlie Morley <cmorley191@gmail.com>
2025-12-20 17:35:52 -07:00
Delta-V bot 29b76a445b Automatic changelog update 2025-12-20 06:13:46 +01:00
SirSmith148andCharlie Morley d431bf3b2f Xenoarch Research Mult Balance (#4995)
* First balance pass to clamp glimmer multiplier at 3x

* Balance pass 2 New formula and removed old variable

* Adjusted formula after reviewing curve

* New Equation

* Update Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: SirSmith148 <64059804+SirSmith148@users.noreply.github.com>

* Update Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs

Co-authored-by: Charlie Morley <cmorley191@gmail.com>
Signed-off-by: SirSmith148 <64059804+SirSmith148@users.noreply.github.com>

* Small formatting

---------

Signed-off-by: SirSmith148 <64059804+SirSmith148@users.noreply.github.com>
Co-authored-by: Charlie Morley <cmorley191@gmail.com>
2025-12-19 22:13:27 -07:00
Delta-V bot ee114b125f Automatic changelog update 2025-12-20 01:29:47 +01:00
verybigmanandpre-commit-ci[bot] 482fb43fb1 Better SFX for Throwing a Pipe at the Floor (#5003)
* 1

* 2

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* updated attributions

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-19 18:29:28 -06:00
Delta-V bot 19ed9d4b3f Automatic changelog update 2025-12-20 00:13:50 +01:00
2cca8da7dc New(ish) evil borg to uplink (sabotuer) (#4919)
* Saboteur Borg

Adds Saboteur Borg

* Oopsies

fixed a oopsies deleted line

* That should be the final change?

Description clean up and small bugs found

* Direction changes part1

Most the direction changes but I missed something

* Direction changes part 2

:3c

* Updated saboteur borg to use a cloaking module, similar to the xenoborg's cloaking module

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fixed parent

* One more time

---------

Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-19 17:13:31 -06:00
Tobias Berger 32a5ae94cd Manual changelog update 2025-12-19 11:51:20 +01:00
Vanessa efac8d0287 Sort Accesses and Jukebox UIs (#4998)
* Sorted the ID card computer's buttons.

* Sorted the Jukebox song list

* Sorted the jukebox entries.

* Sorted access config.

* Forgot a comment.

* Changed collection expression

* Also updated Door electronics bound interface.

* Used the existing method now that I can lol
2025-12-19 03:31:12 -07:00
Delta-V bot d187742ea9 Automatic changelog update 2025-12-19 04:04:34 +01:00
verybigman 6d3655aed0 Security borg action icons, Syndicate borg action icons, and Syndicate module sprites (#4920)
* hypo changed

* sprites put into rsi's

* json updated

* actions done

* mane

* fix

* fix

* updated parents

* wow

* escalation edit

* wan last fix
2025-12-18 21:04:15 -06:00
Delta-V bot f150786d93 Automatic changelog update 2025-12-18 20:33:22 +01:00
75fbb95ace Adds Christmas Kobolds: Defenders of The Yule Tree (#4940)
* Adds Christmas Kobolds: Defenders of The Yule Tree

* update comments

* Add candy spear sprite

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* no shoes for now

* Revert "no shoes for now"

This reverts commit 8bece94b57.

* No shoes for now

* maybe

* Ain't

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-18 20:33:03 +01:00
Delta-V bot 1a9a67521f Automatic changelog update 2025-12-17 21:57:47 +01:00
Vanessa 31626399c3 Fixed bloodsuckers getting poisoned from drinking blood (#4963)
Fixed bloodsuckers getting poisoned from drinking blood.
2025-12-17 13:57:27 -07:00
Delta-V bot cff1688df5 Automatic changelog update 2025-12-17 19:41:59 +01:00
Field Commandandpre-commit-ci[bot] 95e475eb19 Pebble event map hotfix (#4999)
* Pebble event map hotfix

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-17 12:41:39 -06:00
Delta-V bot d7e059e3d2 Automatic changelog update 2025-12-17 14:52:09 +01:00
verybigman fe544932a6 Working Musket Bayonet, Musket Tweaks, and Pipe Sounds. (#4852)
* musket complete

* done

* added comment

* tada

* changed!

* fix

* fix

* migration thing

* test

* fixed comments
2025-12-17 07:51:49 -06:00
Vanessa 4dba8fd0c7 Removed direction from Texture directory changes (#4997) 2025-12-17 14:03:30 +01:00
Delta-V bot a95c444488 Automatic changelog update 2025-12-17 13:46:19 +01:00
KOTOBandpre-commit-ci[bot] fe4d0c812c Trait - Arm Amputee (#4988)
* absolute cinema

* cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* gamer ops

* lgtm

---------

Signed-off-by: KOTOB <59124164+kotobdev@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-17 06:46:00 -06:00
Delta-V bot 6eccdaa0b8 Automatic changelog update 2025-12-16 20:15:28 +01:00
c454503bfb Festive lights now fit around your body (#4972)
* add sprites and YML + JSON changes

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update theater.yml

* Update Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Averi <AveriV1@protonmail.com>

* Update Resources/Prototypes/Catalog/VendingMachines/Inventories/theater.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

* Update cargo_vending.yml

---------

Signed-off-by: Averi <AveriV1@protonmail.com>
Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-16 20:15:09 +01:00
Delta-V bot 640a58b4b5 Automatic changelog update 2025-12-16 18:15:41 +01:00
marigaugeandVanessa ecc5e41c28 Give Ifrit EPI requirement (#4964)
* Update ghost_roles.yml

* Update Resources/Prototypes/_DV/Entities/Markers/Spawners/ghost_roles.yml

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>

---------

Signed-off-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
2025-12-16 17:15:21 +00:00
Delta-V bot 468d3bcec3 Automatic changelog update 2025-12-16 16:24:10 +01:00
Vanessa 96cc961611 Brains no longer edible (#4992) 2025-12-16 15:23:50 +00:00
Delta-V bot 22f8000d52 Automatic changelog update 2025-12-16 16:09:01 +01:00
marigauge 6ab7d60ab0 cybernetic eyes are OFF the menu (#4967)
Update cybernetic.yml
2025-12-16 09:08:41 -06:00
VelcroboyandVelcroboy 47eaddf0ba Add infinite-ish present (#4966)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-16 07:51:22 -06:00
Delta-V bot e3cedf148d Automatic changelog update 2025-12-16 14:41:53 +01:00
marigauge c2b42211f0 IPC fibers (#4968)
Update ipc.yml
2025-12-16 07:41:33 -06:00
VelcroboyandVelcroboy 93f92b7957 Map Hotfix: Arena (#4985)
* Arena Xmas

* Atmos tweaks

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-16 14:27:44 +01:00
Delta-V bot 46fe874f3c Automatic changelog update 2025-12-16 14:25:16 +01:00
Stxcking c588a3152f Declutter corpsman starting gear and add corpsman uniform to secdrobe (#4979)
* yml

* requested changes
2025-12-16 07:24:56 -06:00
Stxcking 259357496e Gibbing (via nymphing, artifact crusher, psionic eruption, and anomaly critting) now drops items (#4980)
* nymph

* acidify: false

* anomaly crit
2025-12-16 07:18:27 -06:00
Delta-V bot 861075b7a4 Automatic changelog update 2025-12-16 14:15:30 +01:00
MD360 d1444f9387 Rev hand no more. (#4987)
Infinite blood crayon fr
2025-12-16 07:15:10 -06:00
Delta-V bot fcd0a54407 Automatic changelog update 2025-12-16 14:07:57 +01:00
Proxy also works :3 9c14eefedf Fixed SoP Employee References (#4947)
* entity culling

* what the fuck is a 'person'

* i transhate the guidebook
2025-12-16 15:07:37 +02:00
Delta-V bot de28f2062a Automatic changelog update 2025-12-16 06:54:29 +01:00
Field Commandandpre-commit-ci[bot] cb678246b6 Pebble Event Map (#4890)
* Pebble Event Map

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-15 23:54:09 -06:00
Delta-V bot 99563e2060 Automatic changelog update 2025-12-16 06:05:01 +01:00
Stxcking 5cda7d5de4 More Glasses loadout tweaks (#4977)
* guh

* force sec sunglasses
2025-12-15 23:04:41 -06:00
Delta-V bot 62790aaed0 Automatic changelog update 2025-12-16 02:34:22 +01:00
KOTOBandpre-commit-ci[bot] 13fa008f31 Trait - Redshirt (#4974)
* uhmmm

* health analyzer gaming

* cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* yeah

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* text update

* cleanup

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2025-12-15 19:34:02 -06:00
Charlie Morley e5cbab1155 xenoarch: fix "node scanner target deleted" console error (#4978)
fixed annoying error if you delete an artifact connected to a handheld node scanner
2025-12-15 17:34:08 -06:00
Charlie Morley 3fcd73eb29 xenoarch: artifacts no longer irradiate themselves (much) (#4976) 2025-12-15 17:10:17 -06:00
Proxy also works :3 ef1653c20a resync .wiki (#4961)
* resync SpaceLaw

* ♥typod

* okay send it
2025-12-15 09:55:47 +01:00
github-actions[bot]andDeltaV-Bot 0af4ecf6d6 Update Credits (#4973)
Co-authored-by: DeltaV-Bot <github@deltav.gay>
2025-12-14 18:46:10 +01:00
Delta-V bot d3065a49a6 Automatic changelog update 2025-12-13 20:19:12 +01:00
VelcroboyandVelcroboy 7c6de97004 Map Edits: Arena (#4965)
* Map Edits: Arena

* Remove fun

* typo

* Additional edits

* fixes

---------

Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-13 19:18:52 +00:00
Delta-V bot 279aff0382 Automatic changelog update 2025-12-13 07:43:23 +01:00
Colin-Tel a6e5489793 Division Update 12DEC2025 (#4960)
* Update division.yml

fishy

* added camera
2025-12-13 00:43:03 -06:00
Delta-V bot b9a02068d9 Automatic changelog update 2025-12-13 07:40:09 +01:00
Field Command 990193d448 Festive times at Pebble! (#4955)
Festive times at Pebble
2025-12-13 00:39:49 -06:00
Delta-V bot 96b23f58cb Automatic changelog update 2025-12-13 07:33:25 +01:00
Field Command de38af47e0 Festive times at Byoin! (#4954)
Festive times at Byoin
2025-12-13 00:33:05 -06:00
Delta-V bot 31cce8c457 Automatic changelog update 2025-12-13 07:31:55 +01:00
Vape 3bd56db54c Holidays on Glacier (#4936)
Update glacier.yml
2025-12-13 00:31:35 -06:00
Delta-V bot 0ab997d133 Automatic changelog update 2025-12-13 07:21:44 +01:00
snowywinters 359a7011ff Asterisk winter update (#4925)
Update asterisk.yml
2025-12-13 00:21:24 -06:00
Delta-V bot 1f6f9e5d86 Automatic changelog update 2025-12-12 23:40:53 +01:00
AirlineFood001andAirlineFood b55c92e72b The DREADED Advanced Plate Carrier Buffs (#4942)
APC needs some love dude it's so underutilized

Co-authored-by: AirlineFood <pickeldabfrug@gmail.com>
2025-12-12 16:40:34 -06:00
VelcroboyandVelcroboy 78146cfadf Update landmine spawner (#4958)
Co-authored-by: Velcroboy <velcroboy333@hotmail.com>
2025-12-12 16:36:16 -06:00
Velcroboy 29c819ec15 Fix beacon map colors (#4945) 2025-12-12 16:25:20 -06:00
Delta-V bot af050b3636 Automatic changelog update 2025-12-12 23:24:07 +01:00
Spielern 964465efcf Cherrypick Santa/Christmas Anomaly (#4957)
Enable Santa Anoamly

Signed-off-by: Spielern <iesteed2@gmail.com>
2025-12-12 16:23:46 -06:00
Velcroboy 0bfb5cd451 Detective and Library Signs (#4943)
* Update signs with DV color schemes
	new file:   Resources/Textures/_DV/Structures/Wallmounts/signs.rsi/detective.png
	new file:   Resources/Textures/_DV/Structures/Wallmounts/signs.rsi/library.png
	modified:   Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml
	modified:   Resources/Textures/_DV/Structures/Wallmounts/signs.rsi/meta.json

* other files

* library
2025-12-12 22:24:48 +01:00
Delta-V bot b80b07e0ab Automatic changelog update 2025-12-12 20:22:15 +01:00
Astra 0adba6d9b6 Buff/fix forensic pads (#4932)
* Buff/fix forensic pads

* single line change no longer...

* Fix LOC

* Fix null check

* Pretty up the code (thanks to ShepardToTheStars)
2025-12-12 13:21:56 -06:00
Delta-V bot 59937ab927 Automatic changelog update 2025-12-12 12:05:19 +01:00
IRSMsoso 0c23548d6f Make every wingflap sound effect mono (#4952)
Make wingflapx.ogg mono
2025-12-12 11:04:59 +00:00
Delta-V bot 7feeadac7a Automatic changelog update 2025-12-12 11:54:56 +01:00
Halo3mothandTobias Berger 90eb644f9b minor lawyer kit tweaks (#4879)
* Slop changes

lots of things

* Surely webedit wont break anything

lots of errors fixed a few wordings clarified

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml

maintainer change

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/Entities/Objects/Devices/pda.yml

maintainer change

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Update Resources/Prototypes/Entities/Objects/Devices/pda.yml

maintainer change

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* Direction wants the changes seperated

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* missed a line

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

* oopsies grammer 

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>

---------

Signed-off-by: Halo3moth <mdavid.wininger@gmail.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
2025-12-12 11:54:36 +01:00
Delta-V bot f5e0dc5fcd Automatic changelog update 2025-12-11 23:39:42 +01:00
b9843fa450 Purifying salts (#4682)
* healing

* aaaaaaa

* i'm too tired for this

* Update Resources/Prototypes/_DV/Stacks/medical_stacks.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: AeraAulin <133451603+AeraAuling@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Specific/Medical/healing.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: AeraAulin <133451603+AeraAuling@users.noreply.github.com>

* thing

* tired feverish webedit

Signed-off-by: AeraAulin <133451603+AeraAuling@users.noreply.github.com>

* comment change to retrigger CI

Signed-off-by: Charlie Morley <cmorley191@gmail.com>

---------

Signed-off-by: AeraAulin <133451603+AeraAuling@users.noreply.github.com>
Signed-off-by: Charlie Morley <cmorley191@gmail.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
Co-authored-by: Charlie Morley <cmorley191@gmail.com>
2025-12-11 15:39:23 -07:00
Delta-V bot 31c3751a11 Automatic changelog update 2025-12-11 23:05:42 +01:00
Sir Warock 550546300b Added Truncheon to Security Firearm Loadout (#4838)
* Let Secoffs spawn with Truncheon

* Fix

* move defib to belt
2025-12-11 15:05:22 -07:00
Delta-V bot a639e8cd1d Automatic changelog update 2025-12-11 15:59:17 +01:00
ConstantlyConfused 85baec2532 Update the Crime Assist App (again) (#4937)
* update crime descriptions

* make questions not refer to sophonts

* meow
2025-12-11 08:58:57 -06:00
Delta-V bot 4fde260ca4 Automatic changelog update 2025-12-10 22:59:58 +01:00
verybigman fb086d98b0 Circular Saws and Mining Drills revert/fix (#4886)
* tada

* comments fix

* changes plied

* balancing
2025-12-10 14:59:39 -07:00
5820 changed files with 438428 additions and 133199 deletions
-3
View File
@@ -9,9 +9,6 @@
# Server config files
/Resources/ConfigPresets/ @Toby222
# Sprites - Direction in lack of art director
/Resources/Textures/ @DeltaV-Station/direction
# Lobby art and music - automatically direction issues since its immediately visible to players
/Resources/Audio/Lobby/ @DeltaV-Station/direction
/Resources/Textures/LobbyScreens/ @DeltaV-Station/direction
+12 -6
View File
@@ -10,22 +10,28 @@
<!-- Summary of code changes for easier review. -->
## Media
<!-- Attach media if the PR makes ingame changes (clothing, items, features, etc).
<!-- Attach media if the PR makes in-game changes (clothing, items, features, etc).
Small fixes/refactors are exempt. -->
## Requirements
<!-- Confirm the following by placing an X in the brackets: [X] -->
<!-- Confirm the following by placing an X in the brackets without spaces inside (for example: [X] ): -->
- [ ] I have tested all added content and changes.
- [ ] I have added media to this PR or it does not require an ingame showcase.
- [ ] I have added media to this PR or it does not require an in-game showcase.
<!-- You should understand that not following the above may get your PR closed at maintainer’s discretion -->
## Breaking changes
<!-- List any breaking changes, including namespaces, public class/method/field changes, prototype renames; and provide instructions for fixing them. -->
## Licensing
<!-- This is for the benefit of other forks wishing to port features from DeltaV
Our repository is AGPL, meaning projects using the MIT license would have to ask for permission from the PR author (ideally that's you, reading this) before being allowed to port it over
This just saves them the trouble. Note that AGPL or MIT licensing is only applicable to SOFTWARE, and that assets such as textures and audio have their own licensing scheme that is defined in the codebase itself. -->
- [ ] I confirm that I am the creator of the code in this PR, and allow licensing it under the following license(s), or that the original author(s) has given me permission to do so:
- [X] AGPL (https://github.com/DeltaV-Station/Delta-v/blob/master/LICENSE-AGPLv3.txt) <!-- This one is required to contribute to DeltaV -->
- [X] MIT (https://github.com/DeltaV-Station/Delta-v/blob/master/LICENSE-MIT.txt) <!-- Optional - A lot of other SS14 forks use MIT -->
<!-- Feel free to add more licenses as you see fit -->
**Changelog**
<!-- Add a Changelog entry to make players aware of new features or changes that could affect gameplay.
Make sure to read the guidelines and take this Changelog template out of the comment block in order for it to show up.
Changelogs must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog. -->
Changelog must have a :cl: symbol, so the bot recognizes the changes and adds them to the game's changelog. -->
<!--
:cl:
- add: Added fun!
+1 -1
View File
@@ -2,7 +2,7 @@
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
+1 -1
View File
@@ -2,7 +2,7 @@ name: Build & Test Debug
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
+1 -30
View File
@@ -2,19 +2,11 @@
on:
pull_request_target:
types: [review_requested]
pull_request_review:
types: [submitted]
permissions:
pull-requests: write
issues: write
contents: write
types: [review_requested, opened]
jobs:
add_label:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request_target'
steps:
- uses: actions-ecosystem/action-add-labels@v1
with:
@@ -22,24 +14,3 @@ jobs:
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: "S: Awaiting Changes"
# Doesn't work on prs from foreign repos currently
#handle_review:
# runs-on: ubuntu-latest
# if: github.event_name == 'pull_request_review'
# steps:
# - uses: actions-ecosystem/action-add-labels@v1
# if: |
# github.event.review.state == 'changes_requested' &&
# (github.event.review.author_association == 'OWNER' ||
# github.event.review.author_association == 'MEMBER')
# with:
# labels: "S: Awaiting Changes"
#
# - uses: actions-ecosystem/action-remove-labels@v1
# if: |
# github.event.review.state == 'changes_requested' &&
# (github.event.review.author_association == 'OWNER' ||
# github.event.review.author_association == 'MEMBER')
# with:
# labels: "S: Needs Review"
+24
View File
@@ -0,0 +1,24 @@
# The PAT does not have the correct permissions to make this work; Eventually we'll want to replace this workflow with a proper bot
# name: "Labels: Approved"
# on:
# pull_request_review:
# types: [submitted]
# jobs:
# add_label:
# # Change the repository name after you've made sure the team name is correct for your fork!
# if: ${{ (github.repository == 'DeltaV-Station/Delta-v') && (github.event.review.state == 'APPROVED') }}
# permissions:
# contents: read
# pull-requests: write
# runs-on: ubuntu-latest
# steps:
# - uses: tspascoal/get-user-teams-membership@v3
# id: checkUserMember
# with:
# username: ${{ github.actor }}
# team: "maintainers"
# GITHUB_TOKEN: ${{ secrets.LABELER_PAT }}
# - if: ${{ steps.checkUserMember.outputs.isTeamMember == 'true' }}
# uses: actions-ecosystem/action-add-labels@v1
# with:
# labels: "S: Approved"
+2 -2
View File
@@ -7,7 +7,7 @@ concurrency:
on:
workflow_dispatch:
schedule:
- cron: '0 10 * * *'
- cron: '45 16 * * *'
jobs:
build:
@@ -37,7 +37,7 @@ jobs:
run: dotnet build Content.Packaging --configuration Release --no-restore /m
- name: Package server
run: dotnet run --project Content.Packaging server --platform win-x64 --platform linux-x64 --platform osx-x64 --platform linux-arm64
run: dotnet run --project Content.Packaging server --platform win-x64 --platform win-arm64 --platform linux-x64 --platform linux-arm64 --platform osx-x64 --platform osx-arm64
- name: Package client
run: dotnet run --project Content.Packaging client --no-wipe-release
+11 -6
View File
@@ -20,11 +20,16 @@ jobs:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
exempt-issue-labels: 'Priority: 1-Urgent,ignore-stale'
days-before-stale: 90
stale-issue-message: 'This issue will close in 2 days due to inactivity'
days-before-close: 2
stale-pr-message: 'This Pull Request will close in 2 days due to inactivity'
stale-issue-label: 'stale'
stale-pr-label: 'stale'
remove-stale-when-updated: true
stale-issue-message: 'This issue has not been triaged for 90 days'
only-issue-labels: 'S: Untriaged'
stale-issue-label: 'Stale'
days-before-issue-close: -1
stale-pr-message: 'This Pull Request has not seen activity in 90 days, and will be closed in 2 days without activity'
exempt-pr-labels: 'Ignore Stale'
stale-pr-label: 'Stale'
days-before-pr-close: 2
+2 -2
View File
@@ -2,7 +2,7 @@
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
paths:
- '**.cs'
- '**.csproj'
@@ -60,7 +60,7 @@ jobs:
run: dotnet build Content.Packaging --configuration Release --no-restore /m
- name: Package server
run: dotnet run --project Content.Packaging server --platform win-x64 --platform linux-x64 --platform osx-x64 --platform linux-arm64
run: dotnet run --project Content.Packaging server --platform win-x64 --platform win-arm64 --platform linux-x64 --platform linux-arm64 --platform osx-x64 --platform osx-arm64
- name: Package client
run: dotnet run --project Content.Packaging client --no-wipe-release
+18 -5
View File
@@ -34,17 +34,19 @@ jobs:
# Uncomment this and comment the other line if you do this.
# https://github.com/stefanzweifel/git-auto-commit-action#push-to-protected-branches
#- name: Commit new credit files
# uses: stefanzweifel/git-auto-commit-action@v4
# with:
# commit_message: Update Credits
# commit_author: PJBot <pieterjan.briers+bot@gmail.com>
# - name: Commit new credit files
# uses: stefanzweifel/git-auto-commit-action@v7
# with:
# commit_message: Update Credits
# commit_author: DeltaV-Bot <github@deltav.gay>
# token: ${{ secrets.GITHUB_TOKEN }}
# This will make a PR
- name: Set current date as env variable
run: echo "NOW=$(date +'%Y-%m-%dT%H-%M-%S')" >> $GITHUB_ENV
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v5
with:
commit-message: Update Credits
@@ -52,3 +54,14 @@ jobs:
body: This is an automated Pull Request. This PR updates the github contributors in the credits section.
author: DeltaV-Bot <github@deltav.gay>
branch: automated/credits-${{env.NOW}}
- name: Auto-merge PR with bypass
if: steps.cpr.outputs.pull-request-number != ''
env:
GH_TOKEN: ${{secrets.CREDITS_TOKEN}}
run: |
gh pr merge ${{ steps.cpr.outputs.pull-request-number }} \
--squash \
--admin \
--delete-branch \
--repo ${{ github.repository }}
+1 -1
View File
@@ -1,7 +1,7 @@
name: RGA schema validator
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
+1 -1
View File
@@ -2,7 +2,7 @@ name: RSI Validator
on:
push:
branches: [ staging, trying ]
branches: [ master ]
merge_group:
pull_request:
paths:
+1 -1
View File
@@ -1,7 +1,7 @@
name: Map file schema validator
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
+1 -1
View File
@@ -2,7 +2,7 @@ name: YAML Linter
on:
push:
branches: [ master, staging, trying ]
branches: [ master ]
merge_group:
pull_request:
types: [ opened, reopened, synchronize, ready_for_review ]
+35 -35
View File
@@ -6,15 +6,15 @@ It is highly recommended to read the '''[[Standard Operating Procedure|Standard
* '''[[Standard Operating Procedure#Controlled Items|Controlled Items]]:''' If a member of station crew requires access to a Controlled Item for use in their job, or for regular function, they must obtain the signed and stamped approval of a relevant member of Station Command or the CO. The latter is able to override the decisions of Station Command in this regard, however.
* '''[[Standard Operating Procedure#Entity Definitions|Entity]]:''' Any thing with distinct, independent existence.
* '''[[Standard Operating Procedure#Entity Definitions|Employee]]:''' An entity who has an employment contract with a Company.
* '''[[Standard Operating Procedure#Entity Definitions|Pet]]:''' Any Entity that is provided to Company's Space Stations - either through the station's Logistics Department, or brought on board by the crew - for the purposes of emotional support.
* '''[[Standard Operating Procedure#Entity Definitions|Pet]]:''' Any Entity that is provided to the Company's Space Stations - either through the station's Logistics Department, or brought on board by the crew - for the purposes of emotional support.
* '''[[Standard Operating Procedure#Security Jurisdiction|Security Jurisdiction]]:''' Station law enforcement officers are bound by Space Law; they cannot operate outside of standard accessible areas, or perform searches, unless such action is allowed by either Alert Procedure or a valid warrant.
* '''[[Standard Operating Procedure#Arrest|Arrest]]:'''Any entity may be arrested, during which they are restrained, informed of their charges, and taken to the brig for search and processing under '''[[Standard Operating Procedure#Brig Procedure|Brig Procedure]]'''.
* '''[[Standard Operating Procedure#Sentencing|Sentencing]]:''' Any member of law enforcement is allowed to pass sentence on Misdemeanor, Felony, and Grand Felony charges. The Chief Justice, or in their absence, the Head of Security are allowed to pass sentence on all Charges.
* '''[[Standard Operating Procedure#Treatment of Prisoners|Treatment of Prisoners]]:''' Prisoners must be provided with food, water, clothing, free movement within the brig, adequate medical care, access to the Common and Prison radio channels, and moral, spiritual, or legal counseling if requested and available. If the brig becomes uninhabitable, prisoners must be securely and safely relocated to another area until the brig is functional once more. Prisoners sentenced to Extended Confinement have additional rights and firmer restrictions that must be upheld by law enforcement officials.
* '''[[Standard Operating Procedure#Paroles and Pardons|Paroles & Pardons]]:''' Parole may be offered under the discretion of the Warden, Head of Security, or CO. A parole hearing requires only a Judge, as discussed within Trial Procedure. Pardons may be issued by the arresting officer, the Judge of a trial, by the Warden (to those within the permanent brig), or by the CO, when deemed in the best interest of the crew or vessel, or when the circumstances of the crime warrant suspension of sentence.
* '''[[Standard Operating Procedure#Arrest|Arrest and Sentencing]]:''' Any entity may be arrested, during which they are restrained, informed of their charges, and taken to the brig for search and processing under '''[[Standard Operating Procedure#Brig Procedure|Brig Procedure]]'''.
* '''[[Standard Operating Procedure#Sentencing|Arrest and Sentencing]]:''' Any member of law enforcement is allowed to pass sentence on Misdemeanor, Felony, and Grand Felony charges. The Chief Justice, or in their absence, the Head of Security are allowed to pass sentence on all Charges.
* '''[[Standard Operating Procedure#Treatment of Prisoners|Treatment of Prisoners]]:''' Prisoners must be provided with food, water, clothing, free movement within the brig, adequate medical care, access to the Common and Prison radio channels, and moral, spiritual, or legal counseling if requested and available. If the brig becomes uninhabitable, prisoners must be securely and safely relocated to another area until the brig is functional once more. Prisoners sentenced to Permanent Confinement have additional rights and firmer restrictions that must be upheld by law enforcement officials.
* '''[[Standard Operating Procedure#Paroles and Pardons|Paroles & Pardons]]:''' Parole may be offered under the discretion of the Warden, Head of Security, or CO. Pardons may be issued by the arresting officer, the Judge of a trial, by the Warden (to those within the permanent brig), or by the CO, when deemed in the best interest of the crew or vessel, or when the circumstances of the crime warrant suspension of sentence.
* '''[[Standard Operating Procedure#Pressing Charges|Pressing Charges]]:''' Any Employee may press charges against any other entity. Individuals may only be charged with a crime if it can be proven beyond reasonable doubt that they have committed the crime.
* '''[[Standard Operating Procedure#Trial Procedure|Trial Procedure]]:''' A criminal trial’s Judge must be, in sequential order: The Chief Justice, the Court Clerk, an impartial member of Justice or Station Command, or the Warden. The Prosecution should ideally be the Prosecutor, or an available member of Station Command or Station Security in that order. The Defense should ideally be a member of the Justice department assigned to the defendant, though they are allowed to represent themselves if they wish. If insufficient crew are available, the Judge is fully authorized and strongly encouraged to pass a sentence of Extended Confinement until a proper trial can be held.
* '''[[Alert Procedure]]:''' Codes Blue, Red, Gamma, and Delta authorize Security to carry progressively more advanced equipment, and loosen '''[[Standard Operating Procedure#Rules of Engagement|Rules of Engagement]]''' regarding their use. The former two codes disallow openly carrying firearms by non-Security personnel; the latter two suspend many rights to privacy, and grant Security the power to do whatever neccessary to retake or scuttle the station.
* '''[[Standard Operating Procedure#Hearing Procedure|Hearing Procedure]]:''' A criminal hearing’s Judge must be, in sequential order: The Chief Justice, the Court Clerk, an impartial member of Justice or Station Command, or the Warden. The Prosecution should ideally be the Prosecutor, or an available member of Station Command or Station Security in that order. The Defense should ideally be a member of the Justice department assigned to the defendant, though they are allowed to represent themselves if they wish.
* '''[[Alert Procedure]]:''' Codes Blue, Red, Gamma, and Delta authorize Security to carry progressively more advanced equipment, and loosen '''[[Standard Operating Procedure#Rules of Engagement|Rules of Engagement]]''' regarding their use. The former two codes discourage openly carrying firearms by personnel; the latter two suspend many rights to privacy, and grant Security the power to do whatever neccessary to retake or scuttle the station.
==Procedural Defense==
If a defendant is accused of a crime, they are granted the privilege to challenge the legitimacy of charges of claims brought against them. Any of the following may be invoked:
@@ -165,7 +165,7 @@ Sentencing modifiers are to be applied by the sentencing officer, judge, or arbi
| style="border: 1px solid black;" | [[File:SL_Terrorism.png]]
! style="border: 1px solid black;" | '''Terrorism'''
| style="border: 1px solid black;" | Capital
| style="border: 1px solid black;" | To maliciously commit an act or take hostages with reckless indifference to life in order to provoke a state of terror in, intimidate, or otherwise compel an entity to act or abstain from acting.
| style="border: 1px solid black;" | To maliciously commit an act or take hostages with reckless indifference to life in order to provoke a state of terror in, intimidate, or otherwise compel an Employee to act or abstain from acting.
|-
| style="border: 1px solid black;" | 403
| style="border: 1px solid black;" | [[File:SL_GrandSabotage.png]]
@@ -204,49 +204,49 @@ Sentencing modifiers are to be applied by the sentencing officer, judge, or arbi
|style="border:1px solid black;" | 301
|style= "border:1px solid black;"| [[File:SL_Manslaughter.png]]
|style= "border:1px solid black;"| Manslaughter
|style= "border:1px solid black;"| 16 minutes
|style= "border:1px solid black;"| 10 minutes
|style= "border:1px solid black;"| To act without malice in a manner which, directly or indirectly, leads to the death of an Employee.
|-
|style= "border:1px solid black;"| 302
|style= "border:1px solid black;"| [[File:SL_Kidnapping.png]]
|style= "border:1px solid black;"| Kidnapping
|style= "border:1px solid black;"| 16 minutes
|style= "border:1px solid black;"| To unlawfully confine or restrict the free movement of an Employee against its will.
|style= "border:1px solid black;"| 10 minutes
|style= "border:1px solid black;"| To unlawfully confine or restrict the free movement of an Employee against their will.
|-
| style="border:1px solid black;" | 303
| style="border:1px solid black;" | WIP
| style="border:1px solid black;" | Grand Possession
| style="border:1px solid black;" | 15-25 minutes
| style="border:1px solid black;" | 12-20 minutes
| style="border:1px solid black;" | To be in the possession of a Category C, D, or E Controlled Armament.
|-
| style="border:1px solid black;" | 304
| style="border:1px solid black;" | [[File:SL_Mindbreaking.png]]
| style="border:1px solid black;" | Noöspheric Tampering
| style="border:1px solid black;" | 14 minutes
| style="border:1px solid black;" | 8 minutes
| style="border:1px solid black;" | To maliciously tamper with or create noöspheric anomalies, entities, aberrations, or other elements; Or to otherwise deliberately perform actions that would raise Glimmer or other anomalous reading levels in a way that threatens normative reality.
|-
| style="border:1px solid black;" | 305
| style="border:1px solid black;" | [[File:SL_Sabotage.png]]
| style="border:1px solid black;" | Sabotage
| style="border:1px solid black;" | 14 minutes
| style="border:1px solid black;" | 8 minutes
| style="border:1px solid black;" | To maliciously commit an act that, directly or indirectly, hinders the operation of a vessel of its part; or, to commit an act that modifies and/or damages technology or equipment one is not authorized to access.
|-
| style="border:1px solid black;" | 306
| style="border:1px solid black;" | [[File:SL_AbuseOfPower.png]]
| style="border:1px solid black;" | Abuse of Power
| style="border:1px solid black;" | 14 minutes
| style="border:1px solid black;" | To intentionally misuse or wrongfully exercise one’s own authority, influence, or control, resulting in harm, unjust treatment, or demonstratable loss to another entity.
| style="border:1px solid black;" | 10 minutes
| style="border:1px solid black;" | To intentionally misuse or wrongfully exercise one’s own authority, influence, or control, resulting in harm, unjust treatment, or demonstratable loss to another Employee.
|-
| style="border:1px solid black;" | 307
| style="border:1px solid black;" | [[File:SL_GrandTheft.png]]
| style="border:1px solid black;" | Grand Larceny
| style="border:1px solid black;" | 12 minutes
| style="border:1px solid black;" | To deprive an entity of any Controlled Item in their lawful possession.
| style="border:1px solid black;" | 8 minutes
| style="border:1px solid black;" | To deprive an Employee of any Controlled Item in their lawful possession.
|-
| style="border:1px solid black;" | 308
| style="border:1px solid black;" | [[File:SL_BlackMarketeering.png]]
| style="border:1px solid black;" | Black Marketeering
| style="border:1px solid black;" | 12 minutes
| style="border:1px solid black;" | 8 minutes
| style="border:1px solid black;" | To sell, distribute, or otherwise circulate Controlled Items to unauthorized entities.
|}
----
@@ -262,49 +262,49 @@ Sentencing modifiers are to be applied by the sentencing officer, judge, or arbi
| style="border: 1px solid black;" | 201
| style="border: 1px solid black;" | [[File:SL_Assault.png]]
! style="border: 1px solid black;" | {{anchor|Assault}}Assault
| style="border: 1px solid black;" | 10 minutes
| style="border: 1px solid black;" | 5 minutes
| style="border: 1px solid black;" | To cause physical harm or to effect unwanted physical contact on an Employee, without the apparent intent to kill them, or to threaten such actions with both capability and intent to do so.
|-
| style="border: 1px solid black;" | 202
| style="border: 1px solid black;" | [[File:SL_BreakingAndEntering.png]]
! style="border: 1px solid black;" | {{anchor|Breaking and Entering}}Breaking and Entering
| style="border: 1px solid black;" | 10 minutes
| style="border: 1px solid black;" | 5 minutes
| style="border: 1px solid black;" | To break and enter into a high security area where one is not authorised nor invited, with intent to commit a crime within.
|-
| style="border: 1px solid black;" | 203
| style="border: 1px solid black;" | [[File:SL_Rioting.png]]
! style="border: 1px solid black;" | {{anchor|Rioting}}Rioting
| style="border: 1px solid black;" | 8 minutes
| style="border: 1px solid black;" | 4 minutes
| style="border: 1px solid black;" | To partake in an unauthorised riotous, tumultuous, and disruptive public assembly that refuses to disperse after warning.
|-
| style="border: 1px solid black;" | 204
| style="border: 1px solid black;" | [[File:SL_Endangerment.png]]
! style="border: 1px solid black;" | {{anchor|Endangerment}}Endangerment
| style="border: 1px solid black;" | 8 minutes
| style="border: 1px solid black;" | 6 minutes
| style="border: 1px solid black;" | To recklessly abandon obligations involving the continued wellbeing and/or protection of life and property, through malpractice, action, or inaction.
|-
| style="border: 1px solid black;" | 205
| style="border: 1px solid black;" | [[File:SL_Possession.png]]
! style="border: 1px solid black;" | {{anchor|Possession}}Possession
| style="border: 1px solid black;" | 5-10 minutes
| style="border: 1px solid black;" | 3-8 minutes
| style="border: 1px solid black;" | To be in unauthorised possession of restricted items or items of particular danger. See [[Standard_Operating_Procedure#Controlled_Substances/Items|Controlled Substances/Items]], [[Standard_Operating_Procedure#Controlled_Armaments|Controlled Armaments]].
|-
| style="border: 1px solid black;" | 206
| style="border: 1px solid black;" | [[File:SL_ObstructionOfJustice.png]]
! style="border: 1px solid black;" | {{anchor|Obstruction of Justice}}Obstruction of Justice
| style="border: 1px solid black;" | 8 minutes
| style="border: 1px solid black;" | 4 minutes
| style="border: 1px solid black;" | To wilfully disobey, interfere with, or refuse a decree of the court, warrant, or arrest.
|-
| style="border: 1px solid black;" | 207
| style="border: 1px solid black;" | [[File:SL_PerjuryOrFalseReport.png]]
! style="border: 1px solid black;" | {{anchor|Perjury or False Report}}Perjury or False Report
| style="border: 1px solid black;" | 6 minutes
| style="border: 1px solid black;" | 4 minutes
| style="border: 1px solid black;" | To wilfully and maliciously tell an untruth either in court or in the process of making an actionable report to law enforcement.
|-
| style="border: 1px solid black;" | 208
| style="border: 1px solid black;" | [[File:SL_ContemptOfCourt.png]]
! style="border: 1px solid black;" | {{anchor|Contempt of Court}}Contempt of Court
| style="border: 1px solid black;" | 6 minutes
| style="border: 1px solid black;" | 4 minutes
| style="border: 1px solid black;" | To conduct oneself disruptively and disrespectfully before the court.
|-
|style= "border:1px solid black;"| 209
@@ -329,14 +329,14 @@ Sentencing modifiers are to be applied by the sentencing officer, judge, or arbi
| style="border: 1px solid black;" | 101
| style="border: 1px solid black;" | [[File:SL_AnimalCruelty.png]]
! style="border: 1px solid black;" | {{anchor|Animal Cruelty}}Animal Cruelty
| style="border: 1px solid black;" | 5 minutes
| style="border: 1px solid black;" | 2 minutes
| style="border: 1px solid black;" | To inflict unnecessary suffering on a Pet with malicious intent.
|-
|style= "border:1px solid black;"| 102
|style= "border:1px solid black;"| WIP
!style= "border:1px solid black;"| Harassment
|style= "border:1px solid black;"| 5 minutes
|style= "border:1px solid black;"| To verbally demean, humiliate, or harass an entity with malice; or maliciously spread false information amongst a population.
|style= "border:1px solid black;"| 3 minutes
|style= "border:1px solid black;"| To verbally demean, humiliate, or harass an Employee with malice; or maliciously spread false information amongst a population.
|-
|style= "border:1px solid black;"| 103
|style= "border:1px solid black;"| WIP
@@ -347,20 +347,20 @@ Sentencing modifiers are to be applied by the sentencing officer, judge, or arbi
| style="border: 1px solid black;" | 104
| style="border: 1px solid black;" | [[File:SL_Theft.png]]
! style="border: 1px solid black;" | {{anchor|Theft}}Petty Larceny
| style="border: 1px solid black;" | 4 minutes
| style="border: 1px solid black;" | To deprive an entity of an item in their lawful property without consent.
| style="border: 1px solid black;" | 2 minutes
| style="border: 1px solid black;" | To deprive an Employee of an item in their lawful property without consent.
|-
| style="border: 1px solid black;" | 105
| style="border: 1px solid black;" | [[File:SL_Trespass.png]]
! style="border: 1px solid black;" | {{anchor|Trespass}}Trespass
| style="border: 1px solid black;" | 3 minutes
| style="border: 1px solid black;" | 2 minutes
| style="border: 1px solid black;" | To enter into an area where one is not authorised nor invited.
|-
| style="border: 1px solid black;" | 106
| style="border: 1px solid black;" | [[File:SL_Vandalism.png]]
! style="border: 1px solid black;" | {{anchor|Vandalism}}Vandalism
| style="border: 1px solid black;" | 3 minutes
| style="border: 1px solid black;" | To deface or superficially damage public property, or property belonging to another person.
| style="border: 1px solid black;" | 2 minutes
| style="border: 1px solid black;" | To deface or superficially damage public property, or property belonging to another Employee.
|-
| style="border: 1px solid black;" | 107
| style="border: 1px solid black;" | [[File:SL_Hooliganism.png]]
@@ -19,7 +19,7 @@ All crew operating within their designated job locations are given the right to
The following definitions are provided to clarify the legal protections- and obligations- that Standard Operating Procedures and Space Law provide to any given entity. Unless explicitly covered by a more distinctive term, all Entities are to be treated as such until clarification is provided.
== Entity ==
Any individual with a distinct existence. Entities may also encompass a plurality of identities contained within a single physical form. NanoTrasen does not require Entities be offered the protections of Standard Operating Procedure, Space Law, or Rules of Engagement unless further defined below. Security Officers are encouraged to be reasonable with their use of force regarding circumstances, especially if Entity's termination would leave lawsuits or tarnish reputation for NanoTrasen.
Any individual with a distinct existence. Entities may also encompass a plurality of identities contained within a single physical form. NanoTrasen does not require Entities be offered the protections of Standard Operating Procedure, Space Law, or Rules of Engagement unless further defined below. Security Officers are encouraged to be reasonable with their use of force regarding circumstances, especially if the Entity's termination would leave lawsuits or tarnish reputation for NanoTrasen.
== Pet ==
Any Entity that is provided to NanoTrasen Space Stations - either through the station's Logistics Department, or brought on board by the crew - for the purposes of emotional support. Any harm against such a Pet may render the offender liable to the crime of Animal Cruelty.
Examples of Pets include, but are not limited to:
@@ -102,25 +102,25 @@ A list of such Substances follow:
Controlled Armaments are grouped into categories of increasing severity. If the offender possesses several categories of contraband, only the highest severity of said items should be charged.
'''Category A:''' ''Illegal possession of Cat. A controlled armaments may incur a sentence of up to 5min brig and further legal action as the situation demands.''
'''Category A:''' ''Illegal possession of Cat. A controlled armaments may incur a sentence of up to 3min brig and further legal action as the situation demands.''
* Any object or instrument specifically designed, adapted, or used to cause physical harm in close combat
* Any object or equipment specifically designed or adapted to protect against physical harm caused by weapons, projectiles, or other forms of direct assault
* Any object or instrument specifically designed or adapted to incapacitate or disorient by using light or sound without causing permanent injury
* Any object or equipment specifically designed or adapted for explicitly training purposes that would otherwise fall under another category
'''Category B:''' ''Illegal possession of Cat. B controlled armaments may incur a sentence of up to 10min brig and further legal action as the situation demands.''
'''Category B:''' ''Illegal possession of Cat. B controlled armaments may incur a sentence of up to 8min brig and further legal action as the situation demands.''
* Any object or instrument specifically designed or adapted to cause physical harm in close combat, which employs a powered system to enhance performance
* Any manually-operated ballistic arms that possess an internal magazine or feeding system, or lack an internal magazine or feeding system altogether
'''Category C:''' ''Illegal possession of Cat. C controlled armaments may incur a sentence of up to 15min brig and further legal action as the situation demands.''
'''Category C:''' ''Illegal possession of Cat. C controlled armaments may incur a sentence of up to 12min brig and further legal action as the situation demands.''
* Any manually-operated ballistic arms that use an external magazine or feeding system
* Any semi-automatic ballistic arms not easily concealable within a pocket or coat
* Any object or instrument specifically designed or adapted for explicitly less-lethal purposes that would otherwise fall under another category
'''Category D:''' ''Illegal possession of Cat. D controlled armaments may incur a sentence of up to 20min brig and further legal action as the situation demands.''
'''Category D:''' ''Illegal possession of Cat. D controlled armaments may incur a sentence of up to 15min brig and further legal action as the situation demands.''
* Any semi-automatic ballistic arms that are easily concealable
* Any fully-automatic ballistic arms
@@ -128,7 +128,7 @@ Controlled Armaments are grouped into categories of increasing severity. If the
* Any object or device specifically designed or adapted to cause physical harm through detonation of an explosive charge
* Any object or equipment specifically designed or adapted to protect against both a space environment and physical harm caused by weapons, projectiles, or other forms of direct assault
'''Category E:''' ''Illegal possession of Cat. E controlled armaments may incur a sentence of up to 25min brig and further legal action as the situation demands.''
'''Category E:''' ''Illegal possession of Cat. E controlled armaments may incur a sentence of up to 20min brig and further legal action as the situation demands.''
* Any crew-served or emplaced weapon
* Any object or instrument specifically designed or adapted to launch large-calibre explosives or projectiles for offensive or defensive purposes
+160
View File
@@ -0,0 +1,160 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes;
using Content.IntegrationTests;
using Content.IntegrationTests.Pair;
using Content.Server.Destructible;
using Content.Shared.Damage;
using Content.Shared.Damage.Components;
using Content.Shared.Damage.Prototypes;
using Content.Shared.Damage.Systems;
using Content.Shared.FixedPoint;
using Content.Shared.Maps;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Maths;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Benchmarks;
[Virtual]
[GcServer(true)]
[MemoryDiagnoser]
public class DestructibleBenchmark
{
/// <summary>
/// Number of destructible entities per prototype to spawn with a <see cref="DestructibleComponent"/>.
/// </summary>
[Params(1, 10, 100, 1000, 5000)]
public int EntityCount;
/// <summary>
/// Amount of blunt damage we do to each entity.
/// </summary>
[Params(10000)]
public FixedPoint2 DamageAmount;
[Params("Blunt")]
public ProtoId<DamageTypePrototype> DamageType;
private static readonly EntProtoId WindowProtoId = "Window";
private static readonly EntProtoId WallProtoId = "WallReinforced";
private static readonly EntProtoId HumanProtoId = "MobHuman";
private static readonly ProtoId<ContentTileDefinition> TileRef = "Plating";
private readonly EntProtoId[] _prototypes = [WindowProtoId, WallProtoId, HumanProtoId];
private readonly List<Entity<DamageableComponent>> _damageables = new();
private readonly List<Entity<DamageableComponent, DestructibleComponent>> _destructbiles = new();
private DamageSpecifier _damage;
private TestPair _pair = default!;
private IEntityManager _entMan = default!;
private IPrototypeManager _protoMan = default!;
private IRobustRandom _random = default!;
private ITileDefinitionManager _tileDefMan = default!;
private DamageableSystem _damageable = default!;
private DestructibleSystem _destructible = default!;
private SharedMapSystem _map = default!;
[GlobalSetup]
public async Task SetupAsync()
{
ProgramShared.PathOffset = "../../../../";
PoolManager.Startup();
_pair = await PoolManager.GetServerClient();
var server = _pair.Server;
var mapdata = await _pair.CreateTestMap();
_entMan = server.ResolveDependency<IEntityManager>();
_protoMan = server.ResolveDependency<IPrototypeManager>();
_random = server.ResolveDependency<IRobustRandom>();
_tileDefMan = server.ResolveDependency<ITileDefinitionManager>();
_damageable = _entMan.System<DamageableSystem>();
_destructible = _entMan.System<DestructibleSystem>();
_map = _entMan.System<SharedMapSystem>();
if (!_protoMan.Resolve(DamageType, out var type))
return;
_damage = new DamageSpecifier(type, DamageAmount);
_random.SetSeed(69420); // Randomness needs to be deterministic for benchmarking.
var plating = _tileDefMan[TileRef].TileId;
// We make a rectangular grid of destructible entities, and then damage them all simultaneously to stress test the system.
// Needed for managing the performance of destructive effects and damage application.
await server.WaitPost(() =>
{
// Set up a thin line of tiles to place our objects on. They should be anchored for a "realistic" scenario...
for (var x = 0; x < EntityCount; x++)
{
for (var y = 0; y < _prototypes.Length; y++)
{
_map.SetTile(mapdata.Grid, mapdata.Grid, new Vector2i(x, y), new Tile(plating));
}
}
for (var x = 0; x < EntityCount; x++)
{
var y = 0;
foreach (var protoId in _prototypes)
{
var coords = new EntityCoordinates(mapdata.Grid, x + 0.5f, y + 0.5f);
_entMan.SpawnEntity(protoId, coords);
y++;
}
}
var query = _entMan.EntityQueryEnumerator<DamageableComponent, DestructibleComponent>();
while (query.MoveNext(out var uid, out var damageable, out var destructible))
{
_damageables.Add((uid, damageable));
_destructbiles.Add((uid, damageable, destructible));
}
});
}
[Benchmark]
public async Task PerformDealDamage()
{
await _pair.Server.WaitPost(() =>
{
_damageable.ApplyDamageToAllEntities(_damageables, _damage);
});
}
[Benchmark]
public async Task PerformTestTriggers()
{
await _pair.Server.WaitPost(() =>
{
_destructible.TestAllTriggers(_destructbiles);
});
}
[Benchmark]
public async Task PerformTestBehaviors()
{
await _pair.Server.WaitPost(() =>
{
_destructible.TestAllBehaviors(_destructbiles);
});
}
[GlobalCleanup]
public async Task CleanupAsync()
{
await _pair.DisposeAsync();
PoolManager.Shutdown();
}
}
+253
View File
@@ -0,0 +1,253 @@
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes;
using Content.IntegrationTests;
using Content.IntegrationTests.Pair;
using Content.Server.Atmos;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Atmos.Reactions;
using Content.Shared.Atmos;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
namespace Content.Benchmarks;
/// <summary>
/// Benchmarks the performance of different gas reactions.
/// Tests each reaction type with realistic gas mixtures to measure computational cost.
/// </summary>
[Virtual]
[GcServer(true)]
[MemoryDiagnoser]
public class GasReactionBenchmark
{
private const int Iterations = 1000;
private TestPair _pair = default!;
private AtmosphereSystem _atmosphereSystem = default!;
// Grid and tile for reactions that need a holder
private EntityUid _testGrid = default!;
private TileAtmosphere _testTile = default!;
// Reaction instances
private PlasmaFireReaction _plasmaFireReaction = default!;
private TritiumFireReaction _tritiumFireReaction = default!;
private FrezonProductionReaction _frezonProductionReaction = default!;
private FrezonCoolantReaction _frezonCoolantReaction = default!;
private AmmoniaOxygenReaction _ammoniaOxygenReaction = default!;
private N2ODecompositionReaction _n2oDecompositionReaction = default!;
private WaterVaporReaction _waterVaporReaction = default!;
// Gas mixtures for each reaction type
private GasMixture _plasmaFireMixture = default!;
private GasMixture _tritiumFireMixture = default!;
private GasMixture _frezonProductionMixture = default!;
private GasMixture _frezonCoolantMixture = default!;
private GasMixture _ammoniaOxygenMixture = default!;
private GasMixture _n2oDecompositionMixture = default!;
private GasMixture _waterVaporMixture = default!;
[GlobalSetup]
public async Task SetupAsync()
{
ProgramShared.PathOffset = "../../../../";
PoolManager.Startup();
_pair = await PoolManager.GetServerClient();
var server = _pair.Server;
// Create test map and grid
var mapData = await _pair.CreateTestMap();
_testGrid = mapData.Grid;
await server.WaitPost(() =>
{
var entMan = server.ResolveDependency<IEntityManager>();
_atmosphereSystem = entMan.System<AtmosphereSystem>();
_plasmaFireReaction = new PlasmaFireReaction();
_tritiumFireReaction = new TritiumFireReaction();
_frezonProductionReaction = new FrezonProductionReaction();
_frezonCoolantReaction = new FrezonCoolantReaction();
_ammoniaOxygenReaction = new AmmoniaOxygenReaction();
_n2oDecompositionReaction = new N2ODecompositionReaction();
_waterVaporReaction = new WaterVaporReaction();
SetupGasMixtures();
SetupTile();
});
}
private void SetupGasMixtures()
{
// Plasma Fire: Plasma + Oxygen at high temperature
// Temperature must be > PlasmaMinimumBurnTemperature for reaction to occur
_plasmaFireMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.PlasmaMinimumBurnTemperature + 100f // ~673K
};
_plasmaFireMixture.AdjustMoles(Gas.Plasma, 20f);
_plasmaFireMixture.AdjustMoles(Gas.Oxygen, 100f);
// Tritium Fire: Tritium + Oxygen at high temperature
// Temperature must be > FireMinimumTemperatureToExist for reaction to occur
_tritiumFireMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.FireMinimumTemperatureToExist + 100f // ~473K
};
_tritiumFireMixture.AdjustMoles(Gas.Tritium, 20f);
_tritiumFireMixture.AdjustMoles(Gas.Oxygen, 100f);
// Frezon Production: Oxygen + Tritium + Nitrogen catalyst
// Optimal temperature for efficiency (80% of max efficiency temp)
_frezonProductionMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.FrezonProductionMaxEfficiencyTemperature * 0.8f // ~48K
};
_frezonProductionMixture.AdjustMoles(Gas.Oxygen, 50f);
_frezonProductionMixture.AdjustMoles(Gas.Tritium, 50f);
_frezonProductionMixture.AdjustMoles(Gas.Nitrogen, 10f);
// Frezon Coolant: Frezon + Nitrogen
// Temperature must be > FrezonCoolLowerTemperature (23.15K) for reaction to occur
_frezonCoolantMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.T20C + 50f // ~343K
};
_frezonCoolantMixture.AdjustMoles(Gas.Frezon, 30f);
_frezonCoolantMixture.AdjustMoles(Gas.Nitrogen, 100f);
// Ammonia + Oxygen reaction (concentration-dependent, no temp requirement)
_ammoniaOxygenMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.T20C + 100f // ~393K
};
_ammoniaOxygenMixture.AdjustMoles(Gas.Ammonia, 40f);
_ammoniaOxygenMixture.AdjustMoles(Gas.Oxygen, 40f);
// N2O Decomposition (no temperature requirement, just needs N2O moles)
_n2oDecompositionMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.T20C + 100f // ~393K
};
_n2oDecompositionMixture.AdjustMoles(Gas.NitrousOxide, 100f);
// Water Vapor - needs water vapor to condense
_waterVaporMixture = new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.T20C
};
_waterVaporMixture.AdjustMoles(Gas.WaterVapor, 50f);
}
private void SetupTile()
{
// Create a tile atmosphere to use as holder for all reactions
var testIndices = new Vector2i(0, 0);
_testTile = new TileAtmosphere(_testGrid, testIndices, new GasMixture(Atmospherics.CellVolume)
{
Temperature = Atmospherics.T20C
});
}
private static GasMixture CloneMixture(GasMixture original)
{
return new GasMixture(original);
}
[Benchmark]
public async Task PlasmaFireReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_plasmaFireMixture);
_plasmaFireReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task TritiumFireReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_tritiumFireMixture);
_tritiumFireReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task FrezonProductionReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_frezonProductionMixture);
_frezonProductionReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task FrezonCoolantReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_frezonCoolantMixture);
_frezonCoolantReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task AmmoniaOxygenReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_ammoniaOxygenMixture);
_ammoniaOxygenReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task N2ODecompositionReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_n2oDecompositionMixture);
_n2oDecompositionReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[Benchmark]
public async Task WaterVaporReaction()
{
await _pair.Server.WaitPost(() =>
{
for (var i = 0; i < Iterations; i++)
{
var mixture = CloneMixture(_waterVaporMixture);
_waterVaporReaction.React(mixture, _testTile, _atmosphereSystem, 1f);
}
});
}
[GlobalCleanup]
public async Task CleanupAsync()
{
await _pair.DisposeAsync();
PoolManager.Shutdown();
}
}
+3
View File
@@ -0,0 +1,3 @@
// Global usings for Content.Benchmarks
global using Robust.UnitTesting.Pool;
+24 -2
View File
@@ -23,6 +23,8 @@ public class RaiseEventBenchmark
PoolManager.Startup(typeof(BenchSystem).Assembly);
_pair = PoolManager.GetServerClient().GetAwaiter().GetResult();
var entMan = _pair.Server.EntMan;
var fact = _pair.Server.ResolveDependency<IComponentFactory>();
var bus = (EntityEventBus)entMan.EventBus;
_sys = entMan.System<BenchSystem>();
_pair.Server.WaitPost(() =>
@@ -30,6 +32,8 @@ public class RaiseEventBenchmark
var uid = entMan.Spawn();
_sys.Ent = new(uid, entMan.GetComponent<TransformComponent>(uid));
_sys.Ent2 = new(_sys.Ent.Owner, _sys.Ent.Comp);
_sys.NetId = fact.GetRegistration<TransformComponent>().NetID!.Value;
_sys.EvSubs = bus.GetNetCompEventHandlers<BenchSystem.BenchEv>();
})
.GetAwaiter()
.GetResult();
@@ -60,6 +64,12 @@ public class RaiseEventBenchmark
return _sys.RaiseICompEvent();
}
[Benchmark]
public int RaiseNetEvent()
{
return _sys.RaiseNetIdEvent();
}
[Benchmark]
public int RaiseCSharpEvent()
{
@@ -74,6 +84,8 @@ public class RaiseEventBenchmark
public delegate void EntityEventHandler(EntityUid uid, TransformComponent comp, ref BenchEv ev);
public event EntityEventHandler? OnCSharpEvent;
public ushort NetId;
internal EntityEventBus.DirectedEventHandler?[] EvSubs = default!;
public override void Initialize()
{
@@ -92,7 +104,7 @@ public class RaiseEventBenchmark
public int RaiseCompEvent()
{
var ev = new BenchEv();
EntityManager.EventBus.RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev);
RaiseComponentEvent(Ent.Owner, Ent.Comp, ref ev);
return ev.N;
}
@@ -100,7 +112,16 @@ public class RaiseEventBenchmark
{
// Raise with an IComponent instead of concrete type
var ev = new BenchEv();
EntityManager.EventBus.RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev);
RaiseComponentEvent(Ent2.Owner, Ent2.Comp, ref ev);
return ev.N;
}
public int RaiseNetIdEvent()
{
// Raise a "IComponent" event using a net-id index delegate array (for PVS & client game-state events)
var ev = new BenchEv();
ref var unitEv = ref Unsafe.As<BenchEv, EntityEventBus.Unit>(ref ev);
EvSubs[NetId]?.Invoke(Ent2.Owner, Ent2.Comp, ref unitEv);
return ev.N;
}
@@ -118,6 +139,7 @@ public class RaiseEventBenchmark
}
[ByRefEvent]
[ComponentEvent(Exclusive = false)]
public struct BenchEv
{
public int N;
@@ -1,3 +1,4 @@
using System.Linq; // DeltaV
using Content.Shared.Access;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
@@ -50,8 +51,8 @@ namespace Content.Client.Access.UI
if (EntMan.TryGetComponent<AccessOverriderComponent>(Owner, out var accessOverrider))
{
accessLevels = accessOverrider.AccessLevels;
accessLevels.Sort();
// DeltaV - Sort Better
accessLevels = accessOverrider.AccessLevels.OrderBy(x => _prototypeManager.TryIndex<AccessLevelPrototype>(x.Id, out var access) ? access.GetAccessLevelName() : x.Id).ToList();
}
else
{
@@ -25,11 +25,11 @@ namespace Content.Client.Access.UI
public void SetAccessLevels(IPrototypeManager protoManager, List<ProtoId<AccessLevelPrototype>> accessLevels)
{
_accessButtons.Clear();
AccessLevelGrid.DisposeAllChildren();
AccessLevelGrid.RemoveAllChildren();
foreach (var access in accessLevels)
{
if (!protoManager.TryIndex(access, out var accessLevel))
if (!protoManager.Resolve(access, out var accessLevel))
{
continue;
}
@@ -76,7 +76,7 @@ namespace Content.Client.Access.UI
public void SetAllowedIcons(string currentJobIconId)
{
IconGrid.DisposeAllChildren();
IconGrid.RemoveAllChildren();
var jobIconButtonGroup = new ButtonGroup();
var i = 0;
@@ -84,12 +84,12 @@ namespace Content.Client.Access.UI
icons.Sort((x, y) => string.Compare(x.LocalizedJobName, y.LocalizedJobName, StringComparison.CurrentCulture));
foreach (var jobIcon in icons)
{
String styleBase = StyleBase.ButtonOpenBoth;
String styleBase = StyleClass.ButtonOpenBoth;
var modulo = i % JobIconColumnCount;
if (modulo == 0)
styleBase = StyleBase.ButtonOpenRight;
styleBase = StyleClass.ButtonOpenRight;
else if (modulo == JobIconColumnCount - 1)
styleBase = StyleBase.ButtonOpenLeft;
styleBase = StyleClass.ButtonOpenLeft;
// Generate buttons
var jobIconButton = new Button
@@ -57,7 +57,7 @@ public sealed partial class GroupedAccessLevelChecklist : BoxContainer
foreach (var accessGroup in _accessGroups)
{
if (!_protoManager.TryIndex(accessGroup, out var accessGroupProto))
if (!_protoManager.Resolve(accessGroup, out var accessGroupProto))
continue;
_groupedAccessLevels.Add(accessGroupProto, new());
@@ -65,13 +65,13 @@ public sealed partial class GroupedAccessLevelChecklist : BoxContainer
// Ensure that the 'general' access group is added to handle
// misc. access levels that aren't associated with any group
if (_protoManager.TryIndex(GeneralAccessGroup, out var generalAccessProto))
if (_protoManager.Resolve(GeneralAccessGroup, out var generalAccessProto))
_groupedAccessLevels.TryAdd(generalAccessProto, new());
// Assign known access levels with their associated groups
foreach (var accessLevel in _accessLevels)
{
if (!_protoManager.TryIndex(accessLevel, out var accessLevelProto))
if (!_protoManager.Resolve(accessLevel, out var accessLevelProto))
continue;
var assigned = false;
@@ -99,8 +99,8 @@ public sealed partial class GroupedAccessLevelChecklist : BoxContainer
private bool TryRebuildAccessGroupControls()
{
AccessGroupList.DisposeAllChildren();
AccessLevelChecklist.DisposeAllChildren();
AccessGroupList.RemoveAllChildren();
AccessLevelChecklist.RemoveAllChildren();
// No access level prototypes were assigned to any of the access level groups.
// Either the turret controller has no assigned access levels or their names were invalid.
@@ -119,11 +119,11 @@ public sealed partial class GroupedAccessLevelChecklist : BoxContainer
if (_groupedAccessLevels.Count > 1)
{
if (AccessGroupList.ChildCount == 0)
accessGroupButton.AddStyleClass(StyleBase.ButtonOpenLeft);
accessGroupButton.AddStyleClass(StyleClass.ButtonOpenLeft);
else if (_groupedAccessLevels.Count > 1 && AccessGroupList.ChildCount == (_groupedAccessLevels.Count - 1))
accessGroupButton.AddStyleClass(StyleBase.ButtonOpenRight);
accessGroupButton.AddStyleClass(StyleClass.ButtonOpenRight);
else
accessGroupButton.AddStyleClass(StyleBase.ButtonOpenBoth);
accessGroupButton.AddStyleClass(StyleClass.ButtonOpenBoth);
}
accessGroupButton.Pressed = _accessGroupTabIndex == orderedAccessGroups.IndexOf(accessGroup);
@@ -165,7 +165,7 @@ public sealed partial class GroupedAccessLevelChecklist : BoxContainer
/// </summary>
public void RebuildAccessLevelsControls()
{
AccessLevelChecklist.DisposeAllChildren();
AccessLevelChecklist.RemoveAllChildren();
_accessLevelEntries.Clear();
// No access level prototypes were assigned to any of the access level groups
@@ -1,9 +1,11 @@
using System.Linq; // DeltaV
using Content.Shared.Access;
using Content.Shared.Access.Components;
using Content.Shared.Access.Systems;
using Content.Shared.CCVar;
using Content.Shared.Containers.ItemSlots;
using Content.Shared.CrewManifest;
using Content.Shared.Roles;
using Robust.Shared.Configuration;
using Robust.Shared.Prototypes;
using static Content.Shared.Access.Components.IdCardConsoleComponent;
@@ -37,7 +39,8 @@ namespace Content.Client.Access.UI
if (EntMan.TryGetComponent<IdCardConsoleComponent>(Owner, out var idCard))
{
accessLevels = idCard.AccessLevels;
// DeltaV - Sort the access list
accessLevels = idCard.AccessLevels.OrderBy(x => _prototypeManager.TryIndex<AccessLevelPrototype>(x.Id, out var access) ? access.GetAccessLevelName() : x.Id).ToList();
}
else
{
@@ -53,7 +56,6 @@ namespace Content.Client.Access.UI
_window.CrewManifestButton.OnPressed += _ => SendMessage(new CrewManifestOpenUiMessage());
_window.PrivilegedIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(PrivilegedIdCardSlotId));
_window.TargetIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent(TargetIdCardSlotId));
_window.OnToggleAccess += id => SendMessage(new IdCardConsoleToggleMessage(id)); // DeltaV
_window.OnClose += Close;
_window.OpenCentered();
@@ -75,7 +77,7 @@ namespace Content.Client.Access.UI
_window?.UpdateState(castState);
}
public void SubmitData(string newFullName, string newJobTitle, List<ProtoId<AccessLevelPrototype>> newAccessList, string newJobPrototype)
public void SubmitData(string newFullName, string newJobTitle, List<ProtoId<AccessLevelPrototype>> newAccessList, ProtoId<JobPrototype> newJobPrototype)
{
if (newFullName.Length > _maxNameLength)
newFullName = newFullName[.._maxNameLength];
@@ -1,6 +1,7 @@
<DefaultWindow xmlns="https://spacestation14.io"
MinSize="650 290">
<BoxContainer Orientation="Vertical">
<!-- Privileged and target IDs, crew manifest button. -->
<GridContainer Columns="2">
<GridContainer Columns="3" HorizontalExpand="True">
<Label Text="{Loc 'id-card-console-window-privileged-id'}" />
@@ -16,6 +17,7 @@
</BoxContainer>
</GridContainer>
<Control MinSize="0 8" />
<!-- Full name and job title editing. -->
<GridContainer Columns="3" HSeparationOverride="4">
<Label Name="FullNameLabel" Text="{Loc 'id-card-console-window-full-name-label'}" />
<LineEdit Name="FullNameLineEdit" HorizontalExpand="True" />
@@ -26,10 +28,19 @@
<Button Name="JobTitleSaveButton" Text="{Loc 'id-card-console-window-save-button'}" Disabled="True" />
</GridContainer>
<Control MinSize="0 8" />
<GridContainer Columns="2">
<Label Text="{Loc 'id-card-console-window-job-selection-label'}" />
<OptionButton Name="JobPresetOptionButton" />
</GridContainer>
<!-- Job preset selection, grant/revoke all access buttons. -->
<BoxContainer Margin="0 8 0 4">
<BoxContainer>
<Label Text="{Loc 'id-card-console-window-job-selection-label'}" />
<OptionButton Name="JobPresetOptionButton" />
</BoxContainer>
<Control HorizontalExpand="True"/>
<BoxContainer>
<Button Name="SelectAllButton" Text="{Loc 'id-card-console-window-select-all-button'}" />
<Button Name="DeselectAllButton" Text="{Loc 'id-card-console-window-deselect-all-button'}" />
</BoxContainer>
</BoxContainer>
<!-- Individual access buttons -->
<Control Name="AccessLevelControlContainer" />
</BoxContainer>
</DefaultWindow>
@@ -37,8 +37,6 @@ namespace Content.Client.Access.UI
// The job that will be picked if the ID doesn't have a job on the station.
private static ProtoId<JobPrototype> _defaultJob = "Passenger";
public event Action<ProtoId<AccessLevelPrototype>>? OnToggleAccess; // DeltaV
public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeManager prototypeManager,
List<ProtoId<AccessLevelPrototype>> accessLevels)
{
@@ -81,19 +79,37 @@ namespace Content.Client.Access.UI
JobPresetOptionButton.AddItem(Loc.GetString(job.Name), _jobPrototypeIds.Count - 1);
}
SelectAllButton.OnPressed += _ =>
{
SetAllAccess(true);
SubmitData();
};
DeselectAllButton.OnPressed += _ =>
{
SetAllAccess(false);
SubmitData();
};
JobPresetOptionButton.OnItemSelected += SelectJobPreset;
_accessButtons.Populate(accessLevels, prototypeManager);
AccessLevelControlContainer.AddChild(_accessButtons);
foreach (var (id, button) in _accessButtons.ButtonsList)
{
var copied = id; // DeltaV
button.OnPressed += _ => OnToggleAccess?.Invoke(id);
button.OnPressed += _ => SubmitData();
}
}
// DeltaV - removed as part of job preset access fix
// private void ClearAllAccess()
/// <param name="enabled">If true, every individual access button will be pressed. If false, each will be depressed.</param>
private void SetAllAccess(bool enabled)
{
foreach (var button in _accessButtons.ButtonsList.Values)
{
if (!button.Disabled && button.Pressed != enabled)
button.Pressed = enabled;
}
}
private void SelectJobPreset(OptionButton.ItemSelectedEventArgs args)
{
@@ -105,28 +121,34 @@ namespace Content.Client.Access.UI
JobTitleLineEdit.Text = Loc.GetString(job.Name);
args.Button.SelectId(args.Id);
// DeltaV - start of job preset access fix
SubmitData();
SetAllAccess(false);
// this is a sussy way to do this
foreach (var access in job.Access)
{
if (_accessButtons.ButtonsList.TryGetValue(access, out var button) && !button.Disabled)
{
button.Pressed = true;
}
}
var targetAccesses = job.Access.ToHashSet();
foreach (var group in job.AccessGroups)
{
if (!_prototypeManager.TryIndex(group, out AccessGroupPrototype? groupPrototype))
if (!_prototypeManager.Resolve(group, out AccessGroupPrototype? groupPrototype))
{
continue;
}
targetAccesses.UnionWith(groupPrototype.Tags);
}
// this is a sussy way to do this
foreach (var (id, button) in _accessButtons.ButtonsList)
{
if (!button.Disabled && button.Pressed != targetAccesses.Contains(id))
foreach (var access in groupPrototype.Tags)
{
OnToggleAccess?.Invoke(id);
if (_accessButtons.ButtonsList.TryGetValue(access, out var button) && !button.Disabled)
{
button.Pressed = true;
}
}
}
// DeltaV - end of job preset access fix
SubmitData();
}
public void UpdateState(IdCardConsoleBoundUserInterfaceState state)
@@ -200,7 +222,7 @@ namespace Content.Client.Access.UI
FullNameLineEdit.Text,
JobTitleLineEdit.Text,
// Iterate over the buttons dictionary, filter by `Pressed`, only get key from the key/value pair
[], // DeltaV - don't send list of accesses
_accessButtons.ButtonsList.Where(x => x.Value.Pressed).Select(x => x.Key).ToList(),
jobProtoDirty ? _jobPrototypeIds[JobPresetOptionButton.SelectedId] : string.Empty);
}
}
+23 -3
View File
@@ -33,6 +33,7 @@ namespace Content.Client.Actions
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly IResourceManager _resources = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly ISerializationManager _serialization = default!;
public event Action<EntityUid>? OnActionAdded;
public event Action<EntityUid>? OnActionRemoved;
@@ -287,8 +288,27 @@ namespace Content.Client.Actions
continue;
}
if (assignmentNode is SequenceDataNode sequenceAssignments)
{
try
{
var nodeAssignments = _serialization.Read<List<(byte Hotbar, byte Slot)>>(sequenceAssignments, notNullableOverride: true);
foreach (var index in nodeAssignments)
{
assignments.Add(new SlotAssignment(index.Hotbar, index.Slot, actionId));
}
}
catch (Exception ex)
{
Log.Error($"Failed to parse action assignments: {ex}");
}
}
AddActionDirect((user, actions), actionId);
}
AssignSlot?.Invoke(assignments);
}
// DeltaV - begin changes
@@ -401,10 +421,10 @@ namespace Content.Client.Actions
// this is the actual entity-world targeting magic
EntityUid? targetEnt = null;
if (TryComp<EntityTargetActionComponent>(ent, out var entity) &&
args.Input.EntityUid != null &&
ValidateEntityTarget(user, args.Input.EntityUid, (uid, entity)))
args.Input.EntityUid is { Valid: true } entityUid &&
ValidateEntityTarget(user, entityUid, (uid, entity)))
{
targetEnt = args.Input.EntityUid;
targetEnt = entityUid;
}
if (action.ClientExclusive)
@@ -23,9 +23,10 @@ namespace Content.Client.Actions.UI
public ActionAlertTooltip(FormattedMessage name, FormattedMessage? desc, string? requires = null)
{
Stylesheet = IoCManager.Resolve<IStylesheetManager>().SheetSystem;
_gameTiming = IoCManager.Resolve<IGameTiming>();
SetOnlyStyleClass(StyleNano.StyleClassTooltipPanel);
SetOnlyStyleClass(StyleClass.TooltipPanel);
BoxContainer vbox;
AddChild(vbox = new BoxContainer
@@ -36,7 +37,7 @@ namespace Content.Client.Actions.UI
var nameLabel = new RichTextLabel
{
MaxWidth = TooltipTextMaxWidth,
StyleClasses = {StyleNano.StyleClassTooltipActionTitle}
StyleClasses = { StyleClass.TooltipTitle }
};
nameLabel.SetMessage(name);
vbox.AddChild(nameLabel);
@@ -46,7 +47,7 @@ namespace Content.Client.Actions.UI
var description = new RichTextLabel
{
MaxWidth = TooltipTextMaxWidth,
StyleClasses = {StyleNano.StyleClassTooltipActionDescription}
StyleClasses = { StyleClass.TooltipDesc }
};
description.SetMessage(desc);
vbox.AddChild(description);
@@ -55,7 +56,7 @@ namespace Content.Client.Actions.UI
vbox.AddChild(_cooldownLabel = new RichTextLabel
{
MaxWidth = TooltipTextMaxWidth,
StyleClasses = {StyleNano.StyleClassTooltipActionCooldown},
StyleClasses = { StyleClass.TooltipDesc },
Visible = false
});
@@ -64,7 +65,7 @@ namespace Content.Client.Actions.UI
var requiresLabel = new RichTextLabel
{
MaxWidth = TooltipTextMaxWidth,
StyleClasses = {StyleNano.StyleClassTooltipActionRequirements}
StyleClasses = { StyleClass.TooltipDesc }
};
if (!FormattedMessage.TryFromMarkup("[color=#635c5c]" + requires + "[/color]", out var markup))
@@ -1,6 +1,5 @@
<DefaultWindow xmlns="https://spacestation14.io"
Title="{Loc admin-camera-window-title-placeholder}"
SetSize="425 550"
MinSize="200 225"
Name="Window">
MinSize="200 225">
</DefaultWindow>
@@ -7,7 +7,7 @@
</PanelContainer.PanelOverride>
<Control HorizontalAlignment="Center" VerticalAlignment="Center" MaxWidth="600">
<PanelContainer StyleClasses="AngleRect" />
<PanelContainer StyleClasses="BackgroundPanel" />
<BoxContainer Orientation="Vertical" Margin="4">
<RichTextLabel Name="Description" />
@@ -12,17 +12,19 @@ namespace Content.Client.Administration.UI.AdminRemarks;
[GenerateTypedNameReferences]
public sealed partial class AdminMessagePopupWindow : Control
{
[Dependency] private readonly IStylesheetManager _styleMan = default!;
private float _timer = float.MaxValue;
public event Action? OnDismissPressed;
public event Action? OnAcceptPressed;
public AdminMessagePopupWindow()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
Stylesheet = IoCManager.Resolve<IStylesheetManager>().SheetSpace;
Stylesheet = _styleMan.SheetSystem;
AcceptButton.OnPressed += OnAcceptButtonPressed;
DismissButton.OnPressed += OnDismissButtonPressed;
@@ -49,7 +51,8 @@ public sealed partial class AdminMessagePopupWindow : Control
MessageContainer.AddChild(new AdminMessagePopupMessage(message));
}
Description.SetMessage(FormattedMessage.FromMarkupOrThrow(Loc.GetString("admin-notes-message-desc", ("count", state.Messages.Length))));
Description.SetMessage(
FormattedMessage.FromMarkup(Loc.GetString("admin-notes-message-desc", ("count", state.Messages.Length))));
}
private void OnDismissButtonPressed(BaseButton.ButtonEventArgs obj)
@@ -24,7 +24,7 @@ namespace Content.Client.Administration.UI.BanPanel;
[GenerateTypedNameReferences]
public sealed partial class BanPanel : DefaultWindow
{
public event Action<string?, (IPAddress, int)?, bool, ImmutableTypedHwid?, bool, uint, string, NoteSeverity, string[]?, bool>? BanSubmitted;
public event Action<Ban>? BanSubmitted;
public event Action<string>? PlayerChanged;
private string? PlayerUsername { get; set; }
private (IPAddress, int)? IpAddress { get; set; }
@@ -37,8 +37,8 @@ public sealed partial class BanPanel : DefaultWindow
// This is less efficient than just holding a reference to the root control and enumerating children, but you
// have to know how the controls are nested, which makes the code more complicated.
// Role group name -> the role buttons themselves.
private readonly Dictionary<string, List<Button>> _roleCheckboxes = new();
private readonly ISawmill _banpanelSawmill;
private readonly Dictionary<string, List<(Button, IPrototype)>> _roleCheckboxes = new();
private readonly ISawmill _banPanelSawmill;
[Dependency] private readonly IGameTiming _gameTiming = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
@@ -79,7 +79,7 @@ public sealed partial class BanPanel : DefaultWindow
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
_banpanelSawmill = _logManager.GetSawmill("admin.banpanel");
_banPanelSawmill = _logManager.GetSawmill("admin.banpanel");
PlayerList.OnSelectionChanged += OnPlayerSelectionChanged;
PlayerNameLine.OnFocusExit += _ => OnPlayerNameChanged();
PlayerCheckbox.OnPressed += _ =>
@@ -110,7 +110,7 @@ public sealed partial class BanPanel : DefaultWindow
TypeOption.SelectId(args.Id);
OnTypeChanged();
};
LastConnCheckbox.OnPressed += args =>
LastConnCheckbox.OnPressed += _ =>
{
IpLine.ModulateSelfOverride = null;
HwidLine.ModulateSelfOverride = null;
@@ -164,7 +164,7 @@ public sealed partial class BanPanel : DefaultWindow
var antagRoles = _protoMan.EnumeratePrototypes<AntagPrototype>()
.OrderBy(x => x.ID);
CreateRoleGroup("Antagonist", Color.Red, antagRoles);
CreateRoleGroup(AntagPrototype.GroupName, AntagPrototype.GroupColor, antagRoles);
}
/// <summary>
@@ -226,7 +226,7 @@ public sealed partial class BanPanel : DefaultWindow
var roleGroupCheckbox = new Button
{
Name = $"{groupName}GroupCheckbox",
Text = "Ban all",
Text = Loc.GetString("role-bans-ban-group"),
Margin = new Thickness(0, 0, 5, 0),
ToggleMode = true,
};
@@ -236,14 +236,14 @@ public sealed partial class BanPanel : DefaultWindow
{
foreach (var role in _roleCheckboxes[groupName])
{
role.Pressed = args.Pressed;
role.Item1.Pressed = args.Pressed;
}
if (args.Pressed)
{
if (!Enum.TryParse(_cfg.GetCVar(CCVars.DepartmentBanDefaultSeverity), true, out NoteSeverity newSeverity))
{
_banpanelSawmill
_banPanelSawmill
.Warning("Departmental role ban severity could not be parsed from config!");
return;
}
@@ -255,14 +255,14 @@ public sealed partial class BanPanel : DefaultWindow
{
foreach (var button in roleButtons)
{
if (button.Pressed)
if (button.Item1.Pressed)
return;
}
}
if (!Enum.TryParse(_cfg.GetCVar(CCVars.RoleBanDefaultSeverity), true, out NoteSeverity newSeverity))
{
_banpanelSawmill
_banPanelSawmill
.Warning("Role ban severity could not be parsed from config!");
return;
}
@@ -294,30 +294,44 @@ public sealed partial class BanPanel : DefaultWindow
}
/// <summary>
/// Adds a checkbutton specifically for one "role" in a "group"
/// Adds a toggle button specifically for one "role" in a "group"
/// E.g. it would add the Chief Medical Officer "role" into the "Medical" group.
/// </summary>
private void AddRoleCheckbox(string group, string role, GridContainer roleGroupInnerContainer, Button roleGroupCheckbox)
{
var roleCheckboxContainer = new BoxContainer();
var roleCheckButton = new Button
var roleToggleButton = new Button
{
Name = $"{role}RoleCheckbox",
Name = role,
Text = role,
ToggleMode = true,
};
roleCheckButton.OnToggled += args =>
roleToggleButton.OnToggled += args =>
{
// Checks the role group checkbox if all the children are pressed
if (args.Pressed && _roleCheckboxes[group].All(e => e.Pressed))
if (args.Pressed && _roleCheckboxes[group].All(e => e.Item1.Pressed))
roleGroupCheckbox.Pressed = args.Pressed;
else
roleGroupCheckbox.Pressed = false;
};
IPrototype rolePrototype;
if (_protoMan.TryIndex<JobPrototype>(role, out var jobPrototype))
rolePrototype = jobPrototype;
else if (_protoMan.TryIndex<AntagPrototype>(role, out var antagPrototype))
rolePrototype = antagPrototype;
else
{
_banPanelSawmill.Error($"Adding a role checkbox for role {role}: role is not a JobPrototype or AntagPrototype.");
return;
}
// This is adding the icon before the role name
// Yeah, this is sus, but having to split the functions up and stuff is worse imo.
if (_protoMan.TryIndex<JobPrototype>(role, out var jobPrototype) && _protoMan.TryIndex(jobPrototype.Icon, out var iconProto))
// TODO: This should not be using raw strings for prototypes as it means it won't be validated at all.
// // I know the ban manager is doing the same thing, but that should not leak into UI code.
if (jobPrototype is not null && _protoMan.TryIndex(jobPrototype.Icon, out var iconProto))
{
var jobIconTexture = new TextureRect
{
@@ -329,12 +343,12 @@ public sealed partial class BanPanel : DefaultWindow
roleCheckboxContainer.AddChild(jobIconTexture);
}
roleCheckboxContainer.AddChild(roleCheckButton);
roleCheckboxContainer.AddChild(roleToggleButton);
roleGroupInnerContainer.AddChild(roleCheckboxContainer);
_roleCheckboxes.TryAdd(group, []);
_roleCheckboxes[group].Add(roleCheckButton);
_roleCheckboxes[group].Add((roleToggleButton, rolePrototype));
}
public void UpdateBanFlag(bool newFlag)
@@ -377,7 +391,7 @@ public sealed partial class BanPanel : DefaultWindow
TimeLine.Text = args.Text;
if (!double.TryParse(args.Text, out var result))
{
ExpiresLabel.Text = "err";
ExpiresLabel.Text = Loc.GetString("ban-panel-expiry-error");
ErrorLevel |= ErrorLevelEnum.Minutes;
TimeLine.ModulateSelfOverride = Color.Red;
UpdateSubmitEnabled();
@@ -487,7 +501,7 @@ public sealed partial class BanPanel : DefaultWindow
newSeverity = serverSeverity;
else
{
_banpanelSawmill
_banPanelSawmill
.Warning("Server ban severity could not be parsed from config!");
}
@@ -500,7 +514,7 @@ public sealed partial class BanPanel : DefaultWindow
}
else
{
_banpanelSawmill
_banPanelSawmill
.Warning("Role ban severity could not be parsed from config!");
}
break;
@@ -545,34 +559,51 @@ public sealed partial class BanPanel : DefaultWindow
private void SubmitButtonOnOnPressed(BaseButton.ButtonEventArgs obj)
{
string[]? roles = null;
ProtoId<JobPrototype>[]? jobs = null;
ProtoId<AntagPrototype>[]? antags = null;
if (TypeOption.SelectedId == (int) Types.Role)
{
var rolesList = new List<string>();
var jobList = new List<ProtoId<JobPrototype>>();
var antagList = new List<ProtoId<AntagPrototype>>();
if (_roleCheckboxes.Count == 0)
throw new DebugAssertException("RoleCheckboxes was empty");
foreach (var button in _roleCheckboxes.Values.SelectMany(departmentButtons => departmentButtons))
{
if (button is { Pressed: true, Text: not null })
if (button.Item1 is { Pressed: true, Name: not null })
{
rolesList.Add(button.Text);
switch (button.Item2)
{
case JobPrototype:
jobList.Add(button.Item2.ID);
break;
case AntagPrototype:
antagList.Add(button.Item2.ID);
break;
}
}
}
if (rolesList.Count == 0)
if (jobList.Count + antagList.Count == 0)
{
Tabs.CurrentTab = (int) TabNumbers.Roles;
return;
}
roles = rolesList.ToArray();
jobs = jobList.ToArray();
antags = antagList.ToArray();
}
if (TypeOption.SelectedId == (int) Types.None)
{
TypeOption.ModulateSelfOverride = Color.Red;
Tabs.CurrentTab = (int) TabNumbers.BasicInfo;
return;
}
@@ -584,6 +615,7 @@ public sealed partial class BanPanel : DefaultWindow
ReasonTextEdit.GrabKeyboardFocus();
ReasonTextEdit.ModulateSelfOverride = Color.Red;
ReasonTextEdit.OnKeyBindDown += ResetTextEditor;
return;
}
@@ -592,6 +624,7 @@ public sealed partial class BanPanel : DefaultWindow
ButtonResetOn = _gameTiming.CurTime.Add(TimeSpan.FromSeconds(3));
SubmitButton.ModulateSelfOverride = Color.Red;
SubmitButton.Text = Loc.GetString("ban-panel-confirm");
return;
}
@@ -600,7 +633,22 @@ public sealed partial class BanPanel : DefaultWindow
var useLastHwid = HwidCheckbox.Pressed && LastConnCheckbox.Pressed && Hwid is null;
var severity = (NoteSeverity) SeverityOption.SelectedId;
var erase = EraseCheckbox.Pressed;
BanSubmitted?.Invoke(player, IpAddress, useLastIp, Hwid, useLastHwid, (uint) (TimeEntered * Multiplier), reason, severity, roles, erase);
var ban = new Ban(
player,
IpAddress,
useLastIp,
Hwid,
useLastHwid,
(uint)(TimeEntered * Multiplier),
reason,
severity,
jobs,
antags,
erase
);
BanSubmitted?.Invoke(ban);
}
protected override void FrameUpdate(FrameEventArgs args)
@@ -14,8 +14,7 @@ public sealed class BanPanelEui : BaseEui
{
BanPanel = new BanPanel();
BanPanel.OnClose += () => SendMessage(new CloseEuiMessage());
BanPanel.BanSubmitted += (player, ip, useLastIp, hwid, useLastHwid, minutes, reason, severity, roles, erase)
=> SendMessage(new BanPanelEuiStateMsg.CreateBanRequest(player, ip, useLastIp, hwid, useLastHwid, minutes, reason, severity, roles, erase));
BanPanel.BanSubmitted += ban => SendMessage(new BanPanelEuiStateMsg.CreateBanRequest(ban));
BanPanel.PlayerChanged += player => SendMessage(new BanPanelEuiStateMsg.GetPlayerInfoRequest(player));
}
@@ -18,7 +18,7 @@
<Button Visible="True" Name="PopOut" Access="Public" Text="{Loc 'admin-logs-pop-out'}" StyleClasses="OpenBoth" HorizontalAlignment="Left" />
<Control HorizontalExpand="True" />
<Button Visible="False" Name="Bans" Text="{Loc 'admin-player-actions-bans'}" StyleClasses="OpenRight" />
<Button Visible="False" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" StyleClasses="OpenBoth" />
<Button Visible="False" Access="Public" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" StyleClasses="OpenBoth" />
<controls:ConfirmButton Visible="False" Name="Kick" Text="{Loc 'admin-player-actions-kick'}" ConfirmationText="{Loc 'admin-player-actions-confirm'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Ban" Text="{Loc 'admin-player-actions-ban'}" StyleClasses="OpenBoth" />
<controls:ConfirmButton Visible="False" Name="Respawn" Text="{Loc 'admin-player-actions-respawn'}" ConfirmationText="{Loc 'admin-player-actions-confirm'}" StyleClasses="OpenBoth" />
@@ -3,12 +3,16 @@ using Content.Shared.Administration;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
namespace Content.Client.Administration.UI.CustomControls;
[GenerateTypedNameReferences]
public sealed partial class PlayerListEntry : BoxContainer
{
private readonly ResPath _pinnedResPath = new("/Textures/Interface/Bwoink/pinned.png");
private readonly ResPath _unPinnedResPath = new("/Textures/Interface/Bwoink/un_pinned.png");
public PlayerListEntry()
{
RobustXamlLoader.Load(this);
@@ -42,15 +46,6 @@ public sealed partial class PlayerListEntry : BoxContainer
private void UpdatePinButtonTexture(bool isPinned)
{
if (isPinned)
{
PlayerEntryPinButton?.RemoveStyleClass(StyleNano.StyleClassPinButtonUnpinned);
PlayerEntryPinButton?.AddStyleClass(StyleNano.StyleClassPinButtonPinned);
}
else
{
PlayerEntryPinButton?.RemoveStyleClass(StyleNano.StyleClassPinButtonPinned);
PlayerEntryPinButton?.AddStyleClass(StyleNano.StyleClassPinButtonUnpinned);
}
PlayerEntryPinButton.TexturePath = isPinned ? _pinnedResPath.CanonPath : _unPinnedResPath.CanonPath;
}
}
@@ -88,7 +88,7 @@ public sealed class AdminLogsEui : BaseEui
ClydeWindow = _clyde.CreateWindow(new WindowCreateParameters
{
Maximized = false,
Title = "Admin Logs",
Title = Loc.GetString("admin-logs-title"),
Monitor = monitor,
Width = 1100,
Height = 400
@@ -67,7 +67,7 @@ namespace Content.Client.Administration.UI.ManageSolutions
/// </summary>
public void UpdateReagents()
{
ReagentList.DisposeAllChildren();
ReagentList.RemoveAllChildren();
if (_selectedSolution == null || _solutions == null)
return;
@@ -92,7 +92,7 @@ namespace Content.Client.Administration.UI.ManageSolutions
/// <param name="solution">The selected solution.</param>
private void UpdateVolumeBox(Solution solution)
{
VolumeBox.DisposeAllChildren();
VolumeBox.RemoveAllChildren();
var volumeLabel = new Label();
volumeLabel.HorizontalExpand = true;
@@ -131,7 +131,7 @@ namespace Content.Client.Administration.UI.ManageSolutions
/// <param name="solution">The selected solution.</param>
private void UpdateThermalBox(Solution solution)
{
ThermalBox.DisposeAllChildren();
ThermalBox.RemoveAllChildren();
var heatCap = solution.GetHeatCapacity(null);
var specificHeatLabel = new Label();
specificHeatLabel.HorizontalExpand = true;
@@ -5,7 +5,7 @@
<BoxContainer Orientation="Vertical" Name="Notes" Access="Public" VerticalExpand="True"/>
</ScrollContainer>
<Button Name="ShowMoreButton" Text="{Loc admin-notes-show-more}" Visible="False" HorizontalAlignment="Center" />
<Button Name="NewNoteButton" Text="{Loc admin-notes-new-note}" Disabled="True" />
<Button Name="NewNoteButton" Access="Public" Text="{Loc admin-notes-new-note}" Disabled="True" />
</BoxContainer>
</PanelContainer>
</Control>
@@ -82,7 +82,11 @@ public sealed partial class AdminNotesLine : BoxContainer
if (Note.UnbannedTime is not null)
{
ExtraLabel.Text = Loc.GetString("admin-notes-unbanned", ("admin", Note.UnbannedByName ?? "[error]"), ("date", Note.UnbannedTime));
ExtraLabel.Text = Loc.GetString(
"admin-notes-unbanned",
("admin", Note.UnbannedByName ?? "[error]"),
("date", Note.UnbannedTime.Value.ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss"))
);
ExtraLabel.Visible = true;
}
else if (Note.ExpiryTime is not null)
@@ -139,7 +143,7 @@ public sealed partial class AdminNotesLine : BoxContainer
private string FormatRoleBanMessage()
{
var banMessage = new StringBuilder($"{Loc.GetString("admin-notes-banned-from")} {string.Join(", ", Note.BannedRoles ?? new []{"unknown"})} ");
var banMessage = new StringBuilder($"{Loc.GetString("admin-notes-banned-from")} {string.Join(", ", Note.BannedRoles ?? new[] { "unknown" })} ");
return FormatBanMessageCommon(banMessage);
}
@@ -3,7 +3,7 @@
Title="Loading..."
MinSize="400 200">
<BoxContainer Orientation="Vertical" Margin="4">
<TextEdit Name="NoteTextEdit" HorizontalExpand="True" VerticalExpand="True" />
<TextEdit Name="NoteTextEdit" Access="Public" HorizontalExpand="True" VerticalExpand="True" />
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<Label Name="ExpiryLabel" Text="{Loc admin-note-editor-expiry-label}" Visible="False" />
<HistoryLineEdit Name="ExpiryLineEdit" PlaceHolder="{Loc admin-note-editor-expiry-placeholder}"
@@ -17,7 +17,7 @@
ToolTip="{Loc admin-note-editor-secret-tooltip}" />
<CheckBox Name="PermanentCheckBox" Pressed="True" Text="{Loc admin-note-editor-expiry-checkbox}"
ToolTip="{Loc admin-note-editor-expiry-checkbox-tooltip}" />
<Button Name="SubmitButton" Text="{Loc admin-note-editor-submit}" HorizontalAlignment="Right" />
<Button Name="SubmitButton" Access="Public" Text="{Loc admin-note-editor-submit}" HorizontalAlignment="Right" />
</BoxContainer>
</BoxContainer>
</controls:FancyWindow>
@@ -133,7 +133,7 @@ public sealed partial class NoteEdit : FancyWindow
private bool IsSecret { get; set; }
private NoteType NoteType { get; set; }
private NoteSeverity? NoteSeverity
public NoteSeverity? NoteSeverity
{
get => _noteSeverity;
set
@@ -27,7 +27,7 @@ namespace Content.Client.Administration.UI
[Dependency] private readonly IClientAdminManager _adminManager = default!;
private readonly Menu _menu;
private readonly List<DefaultWindow> _subWindows = new();
private readonly List<BaseWindow> _subWindows = new();
private Dictionary<int, PermissionsEuiState.AdminRankData> _ranks =
new();
@@ -216,7 +216,7 @@ namespace Content.Client.Administration.UI
var titleControl = new Label { Text = admin.Title ?? Loc.GetString("permissions-eui-edit-admin-title-control-text").ToLowerInvariant() };
if (admin.Title == null) // none
{
titleControl.StyleClasses.Add(StyleBase.StyleClassItalic);
titleControl.StyleClasses.Add(StyleClass.Italic);
}
al.AddChild(titleControl);
@@ -240,7 +240,7 @@ namespace Content.Client.Administration.UI
var rankControl = new Label { Text = rank };
if (italic)
{
rankControl.StyleClasses.Add(StyleBase.StyleClassItalic);
rankControl.StyleClasses.Add(StyleClass.Italic);
}
al.AddChild(rankControl);
@@ -340,10 +340,9 @@ namespace Content.Client.Administration.UI
tab.AddChild(adminVBox);
tab.AddChild(rankVBox);
Contents.AddChild(tab);
ContentsContainer.AddChild(tab);
ContentsContainer.MinSize = new(600, 400);
}
protected override Vector2 ContentsMinimumSize => new Vector2(600, 400);
}
private sealed class EditAdminWindow : DefaultWindow
@@ -419,21 +418,21 @@ namespace Content.Client.Administration.UI
var inherit = new Button
{
Text = "I",
StyleClasses = { StyleBase.ButtonOpenRight },
StyleClasses = { StyleClass.ButtonOpenRight },
Disabled = disable,
Group = group,
};
var sub = new Button
{
Text = "-",
StyleClasses = { StyleBase.ButtonOpenBoth },
StyleClasses = { StyleClass.ButtonOpenBoth },
Disabled = disable,
Group = group
};
var plus = new Button
{
Text = "+",
StyleClasses = { StyleBase.ButtonOpenLeft },
StyleClasses = { StyleClass.ButtonOpenLeft },
Disabled = disable,
Group = group
};
@@ -479,7 +478,7 @@ namespace Content.Client.Administration.UI
bottomButtons.AddChild(SaveButton);
Contents.AddChild(new BoxContainer
ContentsContainer.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children =
@@ -605,7 +604,7 @@ namespace Content.Client.Administration.UI
bottomButtons.AddChild(SaveButton);
Contents.AddChild(new BoxContainer
ContentsContainer.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children =
@@ -8,10 +8,8 @@
MinSize="50 50">
<BoxContainer Orientation="Vertical">
<GridContainer Columns="3">
<cc:UICommandButton Command="kick" Text="{Loc admin-player-actions-window-title}" WindowType="{x:Type at:PlayerActionsWindow}" />
<cc:CommandButton Command="banpanel" Text="{Loc admin-player-actions-window-ban}" />
<cc:CommandButton Command="aghost" Text="{Loc admin-player-actions-window-admin-ghost}" />
<cc:UICommandButton Command="tpto" Text="{Loc admin-player-actions-window-teleport}" WindowType="{x:Type at:TeleportWindow}" />
<cc:CommandButton Command="permissions" Text="{Loc admin-player-actions-window-permissions}" />
<cc:CommandButton Command="announceui" Text="{Loc admin-player-actions-window-announce}"/>
<cc:UICommandButton Command="callshuttle" Text="{Loc admin-player-actions-window-shuttle}" WindowType="{x:Type at:AdminShuttleWindow}"/>
@@ -1,19 +0,0 @@
<DefaultWindow
xmlns="https://spacestation14.io"
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
Title="{Loc admin-player-actions-window-title}" MinSize="425 272">
<BoxContainer Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc admin-player-actions-reason}" MinWidth="100" />
<Control MinWidth="50" />
<LineEdit Name="ReasonLine" MinWidth="100" HorizontalExpand="True" />
</BoxContainer>
<cc:PlayerListControl Name="PlayerList" VerticalExpand="True" />
<BoxContainer Orientation="Horizontal">
<controls:ConfirmButton Name="SubmitKickButton" Text="{Loc admin-player-actions-kick}" ConfirmationText="{Loc 'admin-player-actions-confirm'}" Disabled="True"/>
<Button Name="SubmitAHelpButton" Text="{Loc admin-player-actions-ahelp}" Disabled="True"/>
<controls:ConfirmButton Name="SubmitRespawnButton" Text="{Loc admin-player-actions-respawn}" ConfirmationText="{Loc 'admin-player-actions-confirm'}" Disabled="True"/>
</BoxContainer>
</BoxContainer>
</DefaultWindow>
@@ -1,64 +0,0 @@
using Content.Shared.Administration;
using JetBrains.Annotations;
using Robust.Client.AutoGenerated;
using Robust.Client.Console;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
namespace Content.Client.Administration.UI.Tabs.AdminTab
{
[GenerateTypedNameReferences]
[UsedImplicitly]
public sealed partial class PlayerActionsWindow : DefaultWindow
{
private PlayerInfo? _selectedPlayer;
public PlayerActionsWindow()
{
RobustXamlLoader.Load(this);
SubmitKickButton.OnPressed += SubmitKickButtonOnPressed;
SubmitAHelpButton.OnPressed += SubmitAhelpButtonOnPressed;
SubmitRespawnButton.OnPressed += SubmitRespawnButtonOnPressed;
PlayerList.OnSelectionChanged += OnListOnOnSelectionChanged;
}
private void OnListOnOnSelectionChanged(PlayerInfo? obj)
{
_selectedPlayer = obj;
var disableButtons = _selectedPlayer == null;
SubmitKickButton.Disabled = disableButtons;
SubmitAHelpButton.Disabled = disableButtons;
SubmitRespawnButton.Disabled = disableButtons;
}
private void SubmitKickButtonOnPressed(BaseButton.ButtonEventArgs obj)
{
if (_selectedPlayer == null)
return;
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
$"kick \"{_selectedPlayer.Username}\" \"{CommandParsing.Escape(ReasonLine.Text)}\"");
}
private void SubmitAhelpButtonOnPressed(BaseButton.ButtonEventArgs obj)
{
if (_selectedPlayer == null)
return;
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
$"openahelp \"{_selectedPlayer.SessionId}\"");
}
private void SubmitRespawnButtonOnPressed(BaseButton.ButtonEventArgs obj)
{
if (_selectedPlayer == null)
return;
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
$"respawn \"{_selectedPlayer.Username}\"");
}
}
}
@@ -1,9 +0,0 @@
<DefaultWindow
xmlns="https://spacestation14.io"
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
Title="{Loc admin-ui-teleport}" MinSize="425 230">
<BoxContainer Orientation="Vertical">
<cc:PlayerListControl Name="PlayerList" />
<Button Name="SubmitButton" Text="{Loc admin-ui-teleport}" />
</BoxContainer>
</DefaultWindow>
@@ -1,38 +0,0 @@
using Content.Shared.Administration;
using JetBrains.Annotations;
using Robust.Client.AutoGenerated;
using Robust.Client.Console;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.IoC;
namespace Content.Client.Administration.UI.Tabs.AdminTab
{
[GenerateTypedNameReferences]
[UsedImplicitly]
public sealed partial class TeleportWindow : DefaultWindow
{
private PlayerInfo? _selectedPlayer;
protected override void EnteredTree()
{
SubmitButton.OnPressed += SubmitButtonOnOnPressed;
PlayerList.OnSelectionChanged += OnListOnOnSelectionChanged;
}
private void OnListOnOnSelectionChanged(PlayerInfo? obj)
{
_selectedPlayer = obj;
SubmitButton.Disabled = _selectedPlayer == null;
}
private void SubmitButtonOnOnPressed(BaseButton.ButtonEventArgs obj)
{
if (_selectedPlayer == null)
return;
// Execute command
IoCManager.Resolve<IClientConsoleHost>().ExecuteCommand(
$"tpto \"{_selectedPlayer.Username}\"");
}
}
}
@@ -60,8 +60,24 @@ public sealed class ClientAlertsSystem : AlertsSystem
if (args.Current is not AlertComponentState cast)
return;
// Save all client-sided alerts to later put back in
var clientAlerts = new Dictionary<AlertKey, AlertState>();
foreach (var alert in alerts.Comp.Alerts)
{
if (alert.Key.AlertType != null && TryGet(alert.Key.AlertType.Value, out var alertProto))
{
if (alertProto.ClientHandled)
clientAlerts[alert.Key] = alert.Value;
}
}
alerts.Comp.Alerts = new(cast.Alerts);
foreach (var alert in clientAlerts)
{
alerts.Comp.Alerts[alert.Key] = alert.Value;
}
UpdateHud(alerts);
}
@@ -0,0 +1,40 @@
using Robust.Client.Graphics;
using SixLabors.ImageSharp.PixelFormats;
namespace Content.Client.Anomaly;
/// <summary>
/// This component creates and handles the drawing of a ScreenTexture to be used on the Anomaly Scanner
/// for an indicator of Anomaly Severity.
/// </summary>
/// <remarks>
/// In the future I would like to make this a more generic "DynamicTextureComponent" that can contain a dictionary
/// of texture components like "Bar(offset, size, minimumValue, maximumValue, AppearanceKey, LayerMapKey)" that can
/// just draw a bar or other basic drawn element that will show up on a texture layer.
/// </remarks>
[RegisterComponent]
[Access(typeof(AnomalyScannerSystem))]
public sealed partial class AnomalyScannerScreenComponent : Component
{
/// <summary>
/// This is the texture drawn as a layer on the Anomaly Scanner device.
/// </summary>
public OwnedTexture? ScreenTexture;
/// <summary>
/// A small buffer that we can reuse to draw the severity bar.
/// </summary>
public Rgba32[]? BarBuf;
/// <summary>
/// The position of the top-left of the severity bar in pixels.
/// </summary>
[DataField(readOnly: true)]
public Vector2i Offset = new Vector2i(12, 17);
/// <summary>
/// The width and height of the severity bar in pixels.
/// </summary>
[DataField(readOnly: true)]
public Vector2i Size = new Vector2i(10, 3);
}
@@ -0,0 +1,110 @@
using System.Numerics;
using Content.Shared.Anomaly;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
using Robust.Shared.Utility;
using SixLabors.ImageSharp.PixelFormats;
namespace Content.Client.Anomaly;
/// <inheritdoc cref="SharedAnomalyScannerSystem"/>
public sealed class AnomalyScannerSystem : SharedAnomalyScannerSystem
{
[Dependency] private readonly IClyde _clyde = default!;
[Dependency] private readonly SpriteSystem _sprite = default!;
private const float MaxHueDegrees = 360f;
private const float GreenHueDegrees = 110f;
private const float RedHueDegrees = 0f;
private const float GreenHue = GreenHueDegrees / MaxHueDegrees;
private const float RedHue = RedHueDegrees / MaxHueDegrees;
// Just an array to initialize the pixels of a new OwnedTexture
private static readonly Rgba32[] EmptyTexture = new Rgba32[32*32];
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<AnomalyScannerScreenComponent, ComponentInit>(OnComponentInit);
SubscribeLocalEvent<AnomalyScannerScreenComponent, ComponentStartup>(OnComponentStartup);
SubscribeLocalEvent<AnomalyScannerScreenComponent, AppearanceChangeEvent>(OnScannerAppearanceChanged);
}
private void OnComponentInit(Entity<AnomalyScannerScreenComponent> ent, ref ComponentInit args)
{
if(!_sprite.TryGetLayer(ent.Owner, AnomalyScannerVisualLayers.Base, out var layer, true))
return;
// Allocate the OwnedTexture
ent.Comp.ScreenTexture = _clyde.CreateBlankTexture<Rgba32>(layer.PixelSize);
if (layer.PixelSize.X < ent.Comp.Offset.X + ent.Comp.Size.X ||
layer.PixelSize.Y < ent.Comp.Offset.Y + ent.Comp.Size.Y)
{
// If the bar doesn't fit, just bail here, ScreenTexture and BarBuf will remain null, and appearance updates
// will do nothing.
DebugTools.Assert(false, "AnomalyScannerScreenComponent: Bar does not fit within sprite");
return;
}
// Initialize the texture
ent.Comp.ScreenTexture.SetSubImage((0, 0), layer.PixelSize, new ReadOnlySpan<Rgba32>(EmptyTexture));
// Initialize bar drawing buffer
ent.Comp.BarBuf = new Rgba32[ent.Comp.Size.X * ent.Comp.Size.Y];
}
private void OnComponentStartup(Entity<AnomalyScannerScreenComponent> ent, ref ComponentStartup args)
{
if (!TryComp<SpriteComponent>(ent, out var sprite))
return;
_sprite.LayerSetTexture((ent, sprite), AnomalyScannerVisualLayers.Screen, ent.Comp.ScreenTexture);
}
private void OnScannerAppearanceChanged(Entity<AnomalyScannerScreenComponent> ent, ref AppearanceChangeEvent args)
{
if (args.Sprite is null || ent.Comp.ScreenTexture is null || ent.Comp.BarBuf is null)
return;
args.AppearanceData.TryGetValue(AnomalyScannerVisuals.AnomalySeverity, out var severityObj);
if (severityObj is not float severity)
severity = 0;
// Get the bar length
var barLength = (int)(severity * ent.Comp.Size.X);
// Calculate the bar color
// Hue "angle" of two colors to interpolate between depending on severity
// Just a lerp from Green hue at severity = 0.5 to Red hue at 1.0
var hue = Math.Clamp(2*GreenHue * (1 - severity), RedHue, GreenHue);
var color = new Rgba32(Color.FromHsv(new Vector4(hue, 1f, 1f, 1f)).RGBA);
var transparent = new Rgba32(0, 0, 0, 255);
for(var y = 0; y < ent.Comp.Size.Y; y++)
{
for (var x = 0; x < ent.Comp.Size.X; x++)
{
ent.Comp.BarBuf[y*ent.Comp.Size.X + x] = x < barLength ? color : transparent;
}
}
// Copy the buffer to the texture
try
{
ent.Comp.ScreenTexture.SetSubImage(
ent.Comp.Offset,
ent.Comp.Size,
new ReadOnlySpan<Rgba32>(ent.Comp.BarBuf)
);
}
catch (IndexOutOfRangeException)
{
Log.Warning($"Bar dimensions out of bounds with the texture on entity {ent.Owner}");
}
}
}
+2 -1
View File
@@ -7,7 +7,7 @@ using Robust.Shared.Timing;
namespace Content.Client.Anomaly;
public sealed class AnomalySystem : SharedAnomalySystem
public sealed partial class AnomalySystem : SharedAnomalySystem
{
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly FloatingVisualizerSystem _floating = default!;
@@ -24,6 +24,7 @@ public sealed class AnomalySystem : SharedAnomalySystem
SubscribeLocalEvent<AnomalySupercriticalComponent, ComponentShutdown>(OnShutdown);
}
private void OnStartup(EntityUid uid, AnomalyComponent component, ComponentStartup args)
{
_floating.FloatAnimation(uid, component.FloatingOffset, component.AnimationKey, component.AnimationTime);
@@ -14,7 +14,7 @@
VerticalExpand="True"
Margin="0 0 0 0"
VerticalAlignment="Center">
<Label Text="{Loc 'anomaly-generator-fuel-display'}" StyleClasses="StatusFieldTitle" />
<Label Text="{Loc 'anomaly-generator-fuel-display'}" StyleClasses="highlight" />
<ProgressBar Name="FuelBar"
HorizontalExpand="True"
MaxValue="1"
@@ -27,8 +27,8 @@
Text="0 %" />
</ProgressBar>
</BoxContainer>
<RichTextLabel Name="CooldownLabel" StyleClasses="StatusFieldTitle" />
<RichTextLabel Name="ReadyLabel" StyleClasses="StatusFieldTitle" />
<RichTextLabel Name="CooldownLabel" StyleClasses="highlight" />
<RichTextLabel Name="ReadyLabel" StyleClasses="highlight" />
</BoxContainer>
<!--Sprite View-->
<PanelContainer Margin="12 0 0 0"
+1 -1
View File
@@ -338,7 +338,7 @@ namespace Content.Client.Arcade
menuInnerPanel.AddChild(menuContainer);
#endregion
Contents.AddChild(_mainPanel);
ContentsContainer.AddChild(_mainPanel);
CanKeyboardFocus = true;
}
@@ -86,7 +86,7 @@ namespace Content.Client.Arcade
newGame.OnPressed += _ => OnPlayerAction?.Invoke(SharedSpaceVillainArcadeComponent.PlayerAction.NewGame);
grid.AddChild(newGame);
Contents.AddChild(grid);
ContentsContainer.AddChild(grid);
}
private void UpdateMetadata(SharedSpaceVillainArcadeComponent.SpaceVillainArcadeMetaDataUpdateMessage message)
+1
View File
@@ -1,3 +1,4 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Content.Tests")]
[assembly: InternalsVisibleTo("Content.IntegrationTests")]
+1 -1
View File
@@ -134,7 +134,7 @@ public sealed class AlignAtmosPipeLayers : SnapgridCenter
var newProtoId = altPrototypes[(int)layer];
if (!_protoManager.TryIndex(newProtoId, out var newProto))
if (!_protoManager.Resolve(newProtoId, out var newProto))
return;
if (newProto.Type != ConstructionType.Structure)
@@ -0,0 +1,5 @@
using Content.Shared.Atmos.EntitySystems;
namespace Content.Client.Atmos.EntitySystems;
public sealed class DeltaPressureSystem : SharedDeltaPressureSystem;
@@ -1,6 +1,6 @@
using Content.Client.Atmos.Monitor.UI.Widgets;
using Content.Client.Message;
using Content.Client.Stylesheets;
using Content.Client.Stylesheets.Palette;
using Content.Client.UserInterface.Controls;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Monitor;
@@ -17,7 +17,7 @@ namespace Content.Client.Atmos.Monitor.UI;
public sealed partial class AirAlarmWindow : FancyWindow
{
public event Action<string, IAtmosDeviceData>? AtmosDeviceDataChanged;
public event Action<IAtmosDeviceData>? AtmosDeviceDataCopied;
public event Action<IAtmosDeviceData>? AtmosDeviceDataCopied;
public event Action<string, AtmosMonitorThresholdType, AtmosAlarmThreshold, Gas?>? AtmosAlarmThresholdChanged;
public event Action<AirAlarmMode>? AirAlarmModeChanged;
public event Action<bool>? AutoModeChanged;
@@ -131,7 +131,7 @@ public sealed partial class AirAlarmWindow : FancyWindow
case GasVentPumpData pump:
if (!_pumps.TryGetValue(addr, out var pumpControl))
{
var control= new PumpControl(pump, addr);
var control = new PumpControl(pump, addr);
control.PumpDataChanged += AtmosDeviceDataChanged;
control.PumpDataCopied += AtmosDeviceDataCopied;
_pumps.Add(addr, control);
@@ -186,11 +186,9 @@ public sealed partial class AirAlarmWindow : FancyWindow
{
return curAlarm switch
{
AtmosAlarmType.Danger => StyleNano.DangerousRedFore,
AtmosAlarmType.Warning => StyleNano.ConcerningOrangeFore,
_ => StyleNano.GoodGreenFore,
AtmosAlarmType.Danger => Palettes.Status.Critical,
AtmosAlarmType.Warning => Palettes.Status.Warning,
_ => Palettes.Status.Good,
};
}
}
@@ -1,3 +1,4 @@
using Content.Client.Stylesheets;
using Content.Shared.Atmos.Monitor;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
@@ -30,7 +31,10 @@ public sealed partial class ThresholdBoundControl : BoxContainer
public void SetValue(float value)
{
_value = value;
CSpinner.Value = ScaledValue;
if (!CSpinner.HasKeyboardFocus())
{
CSpinner.Value = ScaledValue;
}
}
public void SetEnabled(bool enabled)
@@ -39,11 +43,11 @@ public sealed partial class ThresholdBoundControl : BoxContainer
if (enabled)
{
CBoundLabel.RemoveStyleClass("Disabled");
CBoundLabel.RemoveStyleClass(StyleClass.LabelWeak);
}
else
{
CBoundLabel.SetOnlyStyleClass("Disabled");
CBoundLabel.SetOnlyStyleClass(StyleClass.LabelWeak);
}
}
@@ -3,6 +3,7 @@ using Content.Client.Atmos.Components;
using Content.Client.Atmos.EntitySystems;
using Content.Shared.Atmos;
using Content.Shared.Atmos.Components;
using Content.Shared.Atmos.EntitySystems;
using Content.Shared.Atmos.Prototypes;
using Robust.Client.GameObjects;
using Robust.Client.Graphics;
@@ -23,6 +24,7 @@ namespace Content.Client.Atmos.Overlays
private readonly IEntityManager _entManager;
private readonly IMapManager _mapManager;
private readonly SharedAtmosphereSystem _atmosphereSystem;
private readonly SharedMapSystem _mapSystem;
private readonly SharedTransformSystem _xformSys;
@@ -54,6 +56,7 @@ namespace Content.Client.Atmos.Overlays
{
_entManager = entManager;
_mapManager = IoCManager.Resolve<IMapManager>();
_atmosphereSystem = entManager.System<SharedAtmosphereSystem>();
_mapSystem = entManager.System<SharedMapSystem>();
_xformSys = xformSys;
_shader = protoMan.Index(UnshadedShader).Instance();
@@ -67,7 +70,7 @@ namespace Content.Client.Atmos.Overlays
for (var i = 0; i < _gasCount; i++)
{
var gasPrototype = protoMan.Index<GasPrototype>(system.VisibleGasId[i].ToString());
var gasPrototype = _atmosphereSystem.GetGas(system.VisibleGasId[i]);
SpriteSpecifier overlay;
@@ -4,7 +4,7 @@
MinSize="480 400" Title="Canister">
<BoxContainer Orientation="Vertical" Margin="5 5 5 5" SeparationOverride="10">
<BoxContainer Orientation="Vertical" VerticalExpand="True">
<Label Text="{Loc comp-gas-canister-ui-canister-status}" FontColorOverride="{x:Static s:StyleNano.NanoGold}" StyleClasses="LabelBig"/>
<Label Text="{Loc comp-gas-canister-ui-canister-status}" StyleClasses="LabelHeading"/>
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc comp-gas-canister-ui-canister-pressure}"/>
<Label Name="CanisterPressureLabel" Align="Center" HorizontalExpand="True"/>
@@ -16,7 +16,7 @@
</BoxContainer>
<BoxContainer Orientation="Vertical" VerticalExpand="True">
<Label Text="{Loc comp-gas-canister-ui-holding-tank-status}" FontColorOverride="{x:Static s:StyleNano.NanoGold}" StyleClasses="LabelBig"/>
<Label Text="{Loc comp-gas-canister-ui-holding-tank-status}" StyleClasses="LabelHeading"/>
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc comp-gas-canister-ui-holding-tank-label}"/>
<Label Name="TankLabelLabel" Text="{Loc comp-gas-canister-ui-holding-tank-label-empty}" Align="Center" HorizontalExpand="True"/>
@@ -29,7 +29,7 @@
</BoxContainer>
<BoxContainer Orientation="Vertical" VerticalExpand="True">
<Label Text="{Loc comp-gas-canister-ui-release-valve-status}" FontColorOverride="{x:Static s:StyleNano.NanoGold}" StyleClasses="LabelBig"/>
<Label Text="{Loc comp-gas-canister-ui-release-valve-status}" StyleClasses="LabelHeading"/>
<BoxContainer Orientation="Horizontal">
<BoxContainer Orientation="Vertical">
<Label Text="{Loc comp-gas-canister-ui-release-pressure}"/>
@@ -52,14 +52,18 @@ namespace Content.Client.Atmos.UI
private void OnSelectGasPressed()
{
if (_window is null) return;
if (_window is null)
return;
if (_window.SelectedGas is null)
{
SendMessage(new GasFilterSelectGasMessage(null));
}
else
{
if (!int.TryParse(_window.SelectedGas, out var gas)) return;
if (!Enum.TryParse<Gas>(_window.SelectedGas, out var gas))
return;
SendMessage(new GasFilterSelectGasMessage(gas));
}
}
@@ -58,7 +58,7 @@ public sealed class JukeboxBoundUserInterface : BoundUserInterface
_menu.SetAudioStream(jukebox.AudioStream);
if (_protoManager.TryIndex(jukebox.SelectedSongId, out var songProto))
if (_protoManager.Resolve(jukebox.SelectedSongId, out var songProto))
{
var length = EntMan.System<AudioSystem>().GetAudioLength(songProto.Path.Path.ToString());
_menu.SetSelectedSong(songProto.Name, (float) length.TotalSeconds);
@@ -1,3 +1,4 @@
using System.Linq; // DeltaV
using Content.Shared.Audio.Jukebox;
using Robust.Client.Audio;
using Robust.Client.AutoGenerated;
@@ -88,7 +89,7 @@ public sealed partial class JukeboxMenu : FancyWindow
{
MusicList.Clear();
foreach (var entry in jukeboxProtos)
foreach (var entry in jukeboxProtos.OrderBy(x => x.Name)) // DeltaV - Sort the jukebox list
{
MusicList.AddItem(entry.Name, metadata: entry.ID);
}
+1 -1
View File
@@ -39,7 +39,7 @@ public sealed class BarSignSystem : VisualizerSystem<BarSignComponent>
if (powered
&& sign.Current != null
&& _prototypeManager.TryIndex(sign.Current, out var proto))
&& _prototypeManager.Resolve(sign.Current, out var proto))
{
SpriteSystem.LayerSetSprite((id, sprite), 0, proto.Icon);
sprite.LayerSetShader(0, "unshaded");
@@ -35,7 +35,7 @@ public sealed class BarSignBoundUserInterface(EntityUid owner, Enum uiKey) : Bou
public void Update(ProtoId<BarSignPrototype>? sign)
{
if (_prototype.TryIndex(sign, out var signPrototype))
if (_prototype.Resolve(sign, out var signPrototype))
_menu?.UpdateState(signPrototype);
}
@@ -7,10 +7,7 @@
Orientation="Vertical"
HorizontalExpand="True"
Margin="0 0 0 5">
<PanelContainer>
<PanelContainer.PanelOverride>
<graphics:StyleBoxFlat BackgroundColor="{xNamespace:Static style:StyleNano.ButtonColorDisabled}" />
</PanelContainer.PanelOverride>
<PanelContainer StyleClasses="PanelDark">
<Collapsible Name="Collapsible">
<CollapsibleHeading Name="Heading" MinHeight="35"/>
<CollapsibleBody Name="Body">
@@ -14,10 +14,8 @@
<PanelContainer
VerticalExpand="True"
HorizontalExpand="True"
Margin="15">
<PanelContainer.PanelOverride>
<graphics:StyleBoxFlat BackgroundColor="{xNamespace:Static style:StyleNano.PanelDark}" />
</PanelContainer.PanelOverride>
Margin="15"
StyleClasses="PanelDark">
<ScrollContainer VerticalExpand="True" HorizontalExpand="True">
<Control>
<Label Text="{Loc 'cryostorage-ui-label-no-bodies'}" Name="EmptyLabel" HorizontalAlignment="Center" VerticalAlignment="Center"/>
@@ -1,7 +1,7 @@
<DefaultWindow
xmlns="https://spacestation14.io"
Title="{Loc 'ui-bql-results-title'}">
<BoxContainer Orientation="Vertical">
<BoxContainer Orientation="Vertical" MinSize="500 700">
<Label Name="StatusLabel" />
<ScrollContainer VerticalExpand="True">
<BoxContainer Orientation="Vertical" Name="ItemList" VerticalExpand="True" />
@@ -21,8 +21,6 @@ internal sealed partial class ToolshedVisualizeWindow : DefaultWindow
RobustXamlLoader.Load(this);
}
protected override Vector2 ContentsMinimumSize => new(500, 700);
public void Update((string name, NetEntity entity)[] entities)
{
StatusLabel.Text = _loc.GetString("ui-bql-results-status", ("count", entities.Length));
+1 -1
View File
@@ -3,7 +3,7 @@
Margin="10 10 10 0"
HorizontalExpand="True"
Visible="True">
<PanelContainer StyleClasses="AngleRect" HorizontalExpand="True">
<PanelContainer StyleClasses="BackgroundPanel" HorizontalExpand="True">
<BoxContainer Orientation="Vertical"
HorizontalExpand="True">
<BoxContainer Orientation="Horizontal">
+1 -1
View File
@@ -29,7 +29,7 @@ public sealed partial class BountyEntry : BoxContainer
UntilNextSkip = untilNextSkip;
if (!_prototype.TryIndex<CargoBountyPrototype>(bounty.Bounty, out var bountyPrototype))
if (!_prototype.Resolve<CargoBountyPrototype>(bounty.Bounty, out var bountyPrototype))
return;
var items = new List<string>();
@@ -19,7 +19,7 @@ public sealed partial class BountyHistoryEntry : BoxContainer
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
if (!_prototype.TryIndex(bounty.Bounty, out var bountyPrototype))
if (!_prototype.Resolve(bounty.Bounty, out var bountyPrototype))
return;
var items = new List<string>();
@@ -206,7 +206,7 @@ namespace Content.Client.Cargo.UI
if (!_orderConsoleQuery.TryComp(_owner, out var orderConsole))
return;
Requests.DisposeAllChildren();
Requests.RemoveAllChildren();
foreach (var order in orders)
{
@@ -30,7 +30,7 @@ namespace Content.Client.Cargo.UI
public void SetOrders(SpriteSystem sprites, IPrototypeManager protoManager, List<CargoOrderData> orders)
{
Orders.DisposeAllChildren();
Orders.RemoveAllChildren();
foreach (var order in orders)
{
@@ -1,4 +1,4 @@
using Content.Client.CrewManifest.UI;
using Content.Client.CrewManifest.UI;
using Content.Shared.CrewManifest;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
@@ -21,7 +21,6 @@ public sealed partial class CrewManifestUiFragment : BoxContainer
public void UpdateState(string stationName, CrewManifestEntries? entries)
{
CrewManifestListing.DisposeAllChildren();
CrewManifestListing.RemoveAllChildren();
StationNameContainer.Visible = entries != null;
@@ -1,4 +1,7 @@
using Content.Shared.Changeling.Systems;
using Content.Client.Stylesheets.Palette;
using Content.Client.UserInterface.Controls;
using Content.Shared.Changeling.Components;
using Content.Shared.Changeling.Systems;
using JetBrains.Annotations;
using Robust.Client.UserInterface;
@@ -7,28 +10,58 @@ namespace Content.Client.Changeling.UI;
[UsedImplicitly]
public sealed partial class ChangelingTransformBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey)
{
private ChangelingTransformMenu? _window;
private SimpleRadialMenu? _menu;
private static readonly Color SelectedOptionBackground = Palettes.Green.Element.WithAlpha(128);
private static readonly Color SelectedOptionHoverBackground = Palettes.Green.HoveredElement.WithAlpha(128);
protected override void Open()
{
base.Open();
_window = this.CreateWindow<ChangelingTransformMenu>();
_window.OnIdentitySelect += SendIdentitySelect;
_window.Update(Owner);
_menu = this.CreateWindow<SimpleRadialMenu>();
Update();
_menu.OpenOverMouseScreenPosition();
}
public override void Update()
{
if (_window == null)
if (_menu == null)
return;
_window.Update(Owner);
if (!EntMan.TryGetComponent<ChangelingIdentityComponent>(Owner, out var lingIdentity))
return;
var models = ConvertToButtons(lingIdentity.ConsumedIdentities, lingIdentity?.CurrentIdentity);
_menu.SetButtons(models);
}
public void SendIdentitySelect(NetEntity identityId)
private IEnumerable<RadialMenuOptionBase> ConvertToButtons(
IEnumerable<EntityUid> identities,
EntityUid? currentIdentity
)
{
var buttons = new List<RadialMenuOptionBase>();
foreach (var identity in identities)
{
if (!EntMan.TryGetComponent<MetaDataComponent>(identity, out var metadata))
continue;
var option = new RadialMenuActionOption<NetEntity>(SendIdentitySelect, EntMan.GetNetEntity(identity))
{
IconSpecifier = RadialMenuIconSpecifier.With(identity),
ToolTip = metadata.EntityName,
BackgroundColor = (currentIdentity == identity) ? SelectedOptionBackground : null,
HoverBackgroundColor = (currentIdentity == identity) ? SelectedOptionHoverBackground : null
};
buttons.Add(option);
}
return buttons;
}
private void SendIdentitySelect(NetEntity identityId)
{
SendPredictedMessage(new ChangelingTransformIdentitySelectMessage(identityId));
}
@@ -1,8 +0,0 @@
<ui:RadialMenu
xmlns:ui="clr-namespace:Content.Client.UserInterface.Controls"
CloseButtonStyleClass="RadialMenuCloseButton"
VerticalExpand="True"
HorizontalExpand="True">
<ui:RadialContainer Name="Main">
</ui:RadialContainer>
</ui:RadialMenu>
@@ -1,62 +0,0 @@
using System.Numerics;
using Content.Client.UserInterface.Controls;
using Content.Shared.Changeling.Components;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.Changeling.UI;
[GenerateTypedNameReferences]
public sealed partial class ChangelingTransformMenu : RadialMenu
{
[Dependency] private readonly IEntityManager _entity = default!;
public event Action<NetEntity>? OnIdentitySelect;
public ChangelingTransformMenu()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
}
public void Update(EntityUid uid)
{
Main.DisposeAllChildren();
if (!_entity.TryGetComponent<ChangelingIdentityComponent>(uid, out var identityComp))
return;
foreach (var identityUid in identityComp.ConsumedIdentities)
{
if (!_entity.TryGetComponent<MetaDataComponent>(identityUid, out var metadata))
continue;
var identityName = metadata.EntityName;
var button = new ChangelingTransformMenuButton()
{
StyleClasses = { "RadialMenuButton" },
SetSize = new Vector2(64, 64),
ToolTip = identityName,
};
var entView = new SpriteView()
{
SetSize = new Vector2(48, 48),
VerticalAlignment = VAlignment.Center,
HorizontalAlignment = HAlignment.Center,
Stretch = SpriteView.StretchMode.Fill,
};
entView.SetEntity(identityUid);
button.OnButtonUp += _ =>
{
OnIdentitySelect?.Invoke(_entity.GetNetEntity(identityUid));
Close();
};
button.AddChild(entView);
Main.AddChild(button);
}
}
}
public sealed class ChangelingTransformMenuButton : RadialMenuTextureButtonWithSector;
+2 -2
View File
@@ -36,12 +36,12 @@ namespace Content.Client.Changelog
if (_changelogManager.NewChangelogEntries)
{
Text = Loc.GetString("changelog-button-new-entries");
StyleClasses.Add(StyleBase.ButtonCaution);
StyleClasses.Add(StyleClass.Negative);
}
else
{
Text = Loc.GetString("changelog-button");
StyleClasses.Remove(StyleBase.ButtonCaution);
StyleClasses.Remove(StyleClass.Negative);
}
}
}
@@ -52,6 +52,7 @@ namespace Content.Client.Changelog
// Open changelog purely to compare to the last viewed date.
var changelogs = await LoadChangelog();
UpdateChangelogs(changelogs);
_configManager.OnValueChanged(CCVars.ServerId, OnServerIdCVarChanged);
}
private void UpdateChangelogs(List<Changelog> changelogs)
@@ -81,6 +82,11 @@ namespace Content.Client.Changelog
MaxId = changelog.Entries.Max(c => c.Id);
CheckLastSeenEntry();
}
private void CheckLastSeenEntry()
{
var path = new ResPath($"/changelog_last_seen_{_configManager.GetCVar(CCVars.ServerId)}");
if (_resource.UserData.TryReadAllText(path, out var lastReadIdText))
{
@@ -92,6 +98,11 @@ namespace Content.Client.Changelog
NewChangelogEntriesChanged?.Invoke();
}
private void OnServerIdCVarChanged(string newValue)
{
CheckLastSeenEntry();
}
public Task<List<Changelog>> LoadChangelog()
{
return Task.Run(() =>
@@ -58,7 +58,7 @@ public sealed partial class ChangelogTab : Control
ChangelogBody.AddChild(new Label
{
Text = dayNice,
StyleClasses = { StyleBase.StyleClassLabelHeading },
StyleClasses = { StyleClass.LabelHeading },
Margin = new Thickness(4, 6, 0, 0)
});
@@ -117,7 +117,7 @@ public sealed partial class ChangelogTab : Control
};
readDivider.AddChild(hBox);
readDivider.AddChild(new PanelContainer { StyleClasses = { StyleBase.ClassLowDivider } });
readDivider.AddChild(new PanelContainer { StyleClasses = { StyleClass.LowDivider } });
ChangelogBody.AddChild(readDivider);
if (first)
@@ -2,8 +2,9 @@
xmlns:ui="clr-namespace:Content.Client.Changelog"
Title="{Loc 'changelog-window-title'}"
MinSize="500 400"
SetSize="500 400">
<PanelContainer StyleClasses="AngleRect" />
SetSize="500 400"
Stylesheet="Interface">
<PanelContainer StyleClasses="BackgroundPanel" />
<BoxContainer Orientation="Vertical">
<TabContainer Name="Tabs" Access="Public" HorizontalExpand="True" VerticalExpand="True" />
<PanelContainer StyleClasses="LowDivider" />
@@ -21,8 +21,7 @@ namespace Content.Client.Changelog
public ChangelogWindow()
{
RobustXamlLoader.Load(this);
WindowTitle.AddStyleClass(StyleBase.StyleClassLabelHeading);
Stylesheet = IoCManager.Resolve<IStylesheetManager>().SheetSpace;
WindowTitle.AddStyleClass(StyleClass.LabelHeading);
}
protected override void Opened()
@@ -55,7 +54,7 @@ namespace Content.Client.Changelog
// Changelog is not kept in memory so load it again.
var changelogs = await _changelog.LoadChangelog();
Tabs.DisposeAllChildren();
Tabs.RemoveAllChildren();
var i = 0;
foreach (var changelog in changelogs)
@@ -32,6 +32,11 @@ internal sealed class ChatManager : IChatManager
// See server-side manager. This just exists for shared code.
}
public void SendAdminAlertNoFormatOrEscape(string message)
{
// See server-side manager. This just exists for shared code.
}
public void SendMessage(string text, ChatSelectChannel channel)
{
var str = text.ToString();
@@ -35,7 +35,7 @@ public sealed class TypingIndicatorVisualizerSystem : VisualizerSystem<TypingInd
}
// End DeltaV Additions
if (!_prototypeManager.TryIndex(currentTypingIndicator, out var proto))
if (!_prototypeManager.Resolve(currentTypingIndicator, out var proto))
{
Log.Error($"Unknown typing indicator id: {component.TypingIndicatorPrototype}");
return;
@@ -45,7 +45,7 @@ public sealed class TypingIndicatorVisualizerSystem : VisualizerSystem<TypingInd
if (!layerExists)
layer = SpriteSystem.LayerMapReserve((uid, args.Sprite), TypingIndicatorLayers.Base);
SpriteSystem.LayerSetRsi((uid, args.Sprite), layer, proto.SpritePath, proto.TypingState); // DeltaV - Combine path and state calls to avoid missing state error on alternate indicators
SpriteSystem.LayerSetRsi((uid, args.Sprite), layer, proto.SpritePath, proto.TypingState);
args.Sprite.LayerSetShader(layer, proto.Shader);
SpriteSystem.LayerSetOffset((uid, args.Sprite), layer, proto.Offset);
@@ -1,16 +0,0 @@
using Content.Client.Chemistry.UI;
using Content.Client.Items;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
namespace Content.Client.Chemistry.EntitySystems;
public sealed class HyposprayStatusControlSystem : EntitySystem
{
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainers = default!;
public override void Initialize()
{
base.Initialize();
Subs.ItemStatus<HyposprayComponent>(ent => new HyposprayStatusControl(ent, _solutionContainers));
}
}
@@ -0,0 +1,20 @@
using Content.Client.Chemistry.UI;
using Content.Client.Items;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
using Robust.Shared.Prototypes;
namespace Content.Client.Chemistry.EntitySystems;
public sealed class InjectorStatusControlSystem : EntitySystem
{
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainers = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
public override void Initialize()
{
base.Initialize();
Subs.ItemStatus<InjectorComponent>(injector => new InjectorStatusControl(injector, _solutionContainers, _prototypeManager));
}
}
@@ -1,16 +0,0 @@
using Content.Client.Chemistry.UI;
using Content.Client.Items;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
namespace Content.Client.Chemistry.EntitySystems;
public sealed class InjectorSystem : SharedInjectorSystem
{
public override void Initialize()
{
base.Initialize();
Subs.ItemStatus<InjectorComponent>(ent => new InjectorStatusControl(ent, SolutionContainer));
}
}
@@ -33,10 +33,10 @@
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'chem-master-window-buffer-text'}" />
<Control HorizontalExpand="True" />
<Button MinSize="80 0" Margin="0 0 10 0" Name="BufferSortButton" Access="Public" Text="{Loc 'chem-master-window-sort-type-none'}" />
<!-- DeltaV - Removed discarding
<Button MinSize="80 0" Name="BufferTransferButton" Access="Public" Text="{Loc 'chem-master-window-transfer-button'}" ToggleMode="True" StyleClasses="OpenRight" />
-->
<Button MinSize="80 0" Name="BufferSortButton" Access="Public" Text="{Loc 'chem-master-window-sort-type-none'}" StyleClasses="OpenBoth" />
<!-- DeltaV - Removed discarding
<Button MinSize="80 0" Name="BufferDiscardButton" Access="Public" Text="{Loc 'chem-master-window-discard-button'}" ToggleMode="True" StyleClasses="OpenLeft" />
-->
@@ -86,7 +86,7 @@
<Label Text="{Loc 'chem-master-window-packaging-text'}" />
<Control HorizontalExpand="True"/>
<Label Text="{Loc 'chem-master-window-container-label'}" /> <!-- DeltaV-->
<Label Name="BufferCurrentVolume" StyleClasses="LabelSecondaryColor" />
<Label Name="BufferCurrentVolume" StyleClasses="LabelWeak" />
</BoxContainer>
<!-- Wrap the packaging info-->
@@ -116,9 +116,9 @@
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'chem-master-window-pills-label'}" />
<Control HorizontalExpand="True" MinSize="50 0" />
<Label Text="{Loc 'chem-master-window-pills-number-label'}" Margin="5 0 0 0" StyleClasses="LabelSecondaryColor" />
<Label Text="{Loc 'chem-master-window-pills-number-label'}" Margin="5 0 0 0" StyleClasses="LabelWeak" />
<SpinBox MinSize="100 0" Name="PillNumber" Access="Public" Value="0" />
<Label Text="{Loc 'chem-master-window-dose-label'}" Margin="5 0 0 0" StyleClasses="LabelSecondaryColor" />
<Label Text="{Loc 'chem-master-window-dose-label'}" Margin="5 0 0 0" StyleClasses="LabelWeak" />
<SpinBox MinSize="100 0" Name="PillDosage" Access="Public" Value="1" />
<Button MinSize="80 0" Name="CreatePillButton" Access="Public" Text="{Loc 'chem-master-window-create-button'}" />
</BoxContainer>
@@ -126,7 +126,7 @@
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'chem-master-window-bottles-label'}" />
<Control HorizontalExpand="True" MinSize="50 0" />
<Label Text="{Loc 'chem-master-window-dose-label'}" Margin="5 0 0 0" StyleClasses="LabelSecondaryColor" />
<Label Text="{Loc 'chem-master-window-dose-label'}" Margin="5 0 0 0" StyleClasses="LabelWeak" />
<SpinBox MinSize="100 0" Name="BottleDosage" Access="Public" Value="0" />
<Button MinSize="80 0" Name="CreateBottleButton" Access="Public" Text="{Loc 'chem-master-window-create-button'}" />
</BoxContainer>
@@ -53,14 +53,14 @@ namespace Content.Client.Chemistry.UI
{
// For every button decide which stylebase to have
// Every row has 10 buttons
String styleBase = StyleBase.ButtonOpenBoth;
String styleBase = StyleClass.ButtonOpenBoth;
uint modulo = i % 10;
if (i > 0 && modulo == 0)
styleBase = StyleBase.ButtonOpenRight;
styleBase = StyleClass.ButtonOpenRight;
else if (i > 0 && modulo == 9)
styleBase = StyleBase.ButtonOpenLeft;
styleBase = StyleClass.ButtonOpenLeft;
else if (i == 0)
styleBase = StyleBase.ButtonOpenRight;
styleBase = StyleClass.ButtonOpenRight;
// Generate buttons
PillTypeButtons[i] = new Button
@@ -113,13 +113,16 @@ namespace Content.Client.Chemistry.UI
var buttonConfigs = new (string text, ChemMasterReagentAmount amount, string styleClass)[]
{
("1", ChemMasterReagentAmount.U1, StyleBase.ButtonOpenBoth),
("5", ChemMasterReagentAmount.U5, StyleBase.ButtonOpenBoth),
("10", ChemMasterReagentAmount.U10, StyleBase.ButtonOpenBoth),
("25", ChemMasterReagentAmount.U25, StyleBase.ButtonOpenBoth),
("50", ChemMasterReagentAmount.U50, StyleBase.ButtonOpenBoth),
("100", ChemMasterReagentAmount.U100, StyleBase.ButtonOpenBoth),
(Loc.GetString("chem-master-window-buffer-all-amount"), ChemMasterReagentAmount.All, StyleBase.ButtonOpenLeft),
("1", ChemMasterReagentAmount.U1, StyleClass.ButtonOpenBoth),
("5", ChemMasterReagentAmount.U5, StyleClass.ButtonOpenBoth),
("10", ChemMasterReagentAmount.U10, StyleClass.ButtonOpenBoth),
("15", ChemMasterReagentAmount.U15, StyleClass.ButtonOpenBoth),
("20", ChemMasterReagentAmount.U20, StyleClass.ButtonOpenBoth),
("25", ChemMasterReagentAmount.U25, StyleClass.ButtonOpenBoth),
("30", ChemMasterReagentAmount.U30, StyleClass.ButtonOpenBoth),
("50", ChemMasterReagentAmount.U50, StyleClass.ButtonOpenBoth),
("100", ChemMasterReagentAmount.U100, StyleClass.ButtonOpenBoth),
(Loc.GetString("chem-master-window-buffer-all-amount"), ChemMasterReagentAmount.All, StyleClass.ButtonOpenLeft),
};
var buttons = new List<ReagentButton>();
@@ -246,7 +249,7 @@ namespace Content.Client.Chemistry.UI
var bufferVol = new Label
{
Text = $"{state.BufferCurrentVolume}u",
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor }
StyleClasses = { StyleClass.LabelWeak }
};
bufferHBox.AddChild(bufferVol);
@@ -315,7 +318,7 @@ namespace Content.Client.Chemistry.UI
new Label
{
Text = $"{info.CurrentVolume}/{info.MaxVolume}",
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor }
StyleClasses = { StyleClass.LabelWeak }
}
}
});
@@ -370,7 +373,7 @@ namespace Content.Client.Chemistry.UI
new Label
{
Text = $"{quantity}u",
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor }
StyleClasses = { StyleClass.LabelWeak }
},
// Padding
@@ -1,58 +0,0 @@
using Content.Client.Message;
using Content.Client.Stylesheets;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.FixedPoint;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Timing;
namespace Content.Client.Chemistry.UI;
public sealed class HyposprayStatusControl : Control
{
private readonly Entity<HyposprayComponent> _parent;
private readonly RichTextLabel _label;
private readonly SharedSolutionContainerSystem _solutionContainers;
private FixedPoint2 PrevVolume;
private FixedPoint2 PrevMaxVolume;
private bool PrevOnlyAffectsMobs;
public HyposprayStatusControl(Entity<HyposprayComponent> parent, SharedSolutionContainerSystem solutionContainers)
{
_parent = parent;
_solutionContainers = solutionContainers;
_label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } };
AddChild(_label);
}
protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
if (!_solutionContainers.TryGetSolution(_parent.Owner, _parent.Comp.SolutionName, out _, out var solution))
return;
// only updates the UI if any of the details are different than they previously were
if (PrevVolume == solution.Volume
&& PrevMaxVolume == solution.MaxVolume
&& PrevOnlyAffectsMobs == _parent.Comp.OnlyAffectsMobs)
return;
PrevVolume = solution.Volume;
PrevMaxVolume = solution.MaxVolume;
PrevOnlyAffectsMobs = _parent.Comp.OnlyAffectsMobs;
var modeStringLocalized = Loc.GetString((_parent.Comp.OnlyAffectsMobs && _parent.Comp.CanContainerDraw) switch
{
false => "hypospray-all-mode-text",
true => "hypospray-mobs-only-mode-text",
});
_label.SetMarkup(Loc.GetString("hypospray-volume-label",
("currentVolume", solution.Volume),
("totalVolume", solution.MaxVolume),
("modeString", modeStringLocalized)));
}
}
@@ -2,29 +2,35 @@ using Content.Client.Message;
using Content.Client.Stylesheets;
using Content.Shared.Chemistry.Components;
using Content.Shared.Chemistry.EntitySystems;
using Content.Shared.Chemistry.Prototypes;
using Content.Shared.FixedPoint;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
namespace Content.Client.Chemistry.UI;
public sealed class InjectorStatusControl : Control
{
private readonly IPrototypeManager _prototypeManager;
private readonly Entity<InjectorComponent> _parent;
private readonly SharedSolutionContainerSystem _solutionContainers;
private readonly RichTextLabel _label;
private FixedPoint2 PrevVolume;
private FixedPoint2 PrevMaxVolume;
private FixedPoint2 PrevTransferAmount;
private InjectorToggleMode PrevToggleState;
private FixedPoint2 _prevVolume;
private FixedPoint2 _prevMaxVolume;
private FixedPoint2? _prevTransferAmount;
private InjectorBehavior _prevBehavior;
public InjectorStatusControl(Entity<InjectorComponent> parent, SharedSolutionContainerSystem solutionContainers)
public InjectorStatusControl(Entity<InjectorComponent> parent, SharedSolutionContainerSystem solutionContainers, IPrototypeManager prototypeManager)
{
_prototypeManager = prototypeManager;
_parent = parent;
_solutionContainers = solutionContainers;
_label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } };
_label = new RichTextLabel { StyleClasses = { StyleClass.ItemStatus } };
AddChild(_label);
}
@@ -32,33 +38,38 @@ public sealed class InjectorStatusControl : Control
{
base.FrameUpdate(args);
if (!_solutionContainers.TryGetSolution(_parent.Owner, _parent.Comp.SolutionName, out _, out var solution))
if (!_solutionContainers.TryGetSolution(_parent.Owner, _parent.Comp.SolutionName, out _, out var solution)
|| !_prototypeManager.Resolve(_parent.Comp.ActiveModeProtoId, out var activeMode))
return;
// only updates the UI if any of the details are different than they previously were
if (PrevVolume == solution.Volume
&& PrevMaxVolume == solution.MaxVolume
&& PrevTransferAmount == _parent.Comp.CurrentTransferAmount
&& PrevToggleState == _parent.Comp.ToggleState)
if (_prevVolume == solution.Volume
&& _prevMaxVolume == solution.MaxVolume
&& _prevTransferAmount == _parent.Comp.CurrentTransferAmount
&& _prevBehavior == activeMode.Behavior)
return;
PrevVolume = solution.Volume;
PrevMaxVolume = solution.MaxVolume;
PrevTransferAmount = _parent.Comp.CurrentTransferAmount;
PrevToggleState = _parent.Comp.ToggleState;
_prevVolume = solution.Volume;
_prevMaxVolume = solution.MaxVolume;
_prevTransferAmount = _parent.Comp.CurrentTransferAmount;
_prevBehavior = activeMode.Behavior;
// Update current volume and injector state
var modeStringLocalized = Loc.GetString(_parent.Comp.ToggleState switch
// Seeing transfer volume is only important for injectors that can change it.
if (activeMode.TransferAmounts.Count > 1 && _parent.Comp.CurrentTransferAmount.HasValue)
{
InjectorToggleMode.Draw => "injector-draw-text",
InjectorToggleMode.Inject => "injector-inject-text",
_ => "injector-invalid-injector-toggle-mode"
});
_label.SetMarkup(Loc.GetString("injector-volume-label",
("currentVolume", solution.Volume),
("totalVolume", solution.MaxVolume),
("modeString", modeStringLocalized),
("transferVolume", _parent.Comp.CurrentTransferAmount)));
_label.SetMarkup(Loc.GetString("injector-volume-transfer-label",
("currentVolume", solution.Volume),
("totalVolume", solution.MaxVolume),
("modeString", Loc.GetString(activeMode.Name)),
("transferVolume", _parent.Comp.CurrentTransferAmount.Value)));
}
else
{
_label.SetMarkup(Loc.GetString("injector-volume-label",
("currentVolume", solution.Volume),
("totalVolume", solution.MaxVolume),
("modeString", Loc.GetString(activeMode.Name))));
}
}
}
@@ -107,7 +107,7 @@ namespace Content.Client.Chemistry.UI
var quantityLabel = new Label
{
Text = Loc.GetString("reagent-dispenser-window-quantity-label-text", ("quantity", quantity)),
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor },
StyleClasses = { StyleClass.LabelWeak },
};
ContainerInfo.Children.Add(new BoxContainer
@@ -29,7 +29,7 @@ public sealed class SolutionStatusControl : PollingItemStatusControl<SolutionSta
_parent = parent;
_entityManager = entityManager;
_solutionContainers = solutionContainers;
_label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } };
_label = new RichTextLabel { StyleClasses = { StyleClass.ItemStatus } };
AddChild(_label);
}
@@ -17,7 +17,7 @@ namespace Content.Client.Cloning.UI
Title = Loc.GetString("accept-cloning-window-title");
Contents.AddChild(new BoxContainer
ContentsContainer.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Vertical,
Children =
@@ -45,7 +45,7 @@ public sealed class ChameleonBoundUserInterface : BoundUserInterface
var newTargets = new List<EntProtoId>();
foreach (var target in targets)
{
if (string.IsNullOrEmpty(target) || !_proto.TryIndex(target, out EntityPrototype? proto))
if (string.IsNullOrEmpty(target) || !_proto.Resolve(target, out EntityPrototype? proto))
continue;
if (!proto.TryGetComponent(out TagComponent? tag, EntMan.ComponentFactory) || !_tag.HasTag(tag, st.RequiredTag))
@@ -54,7 +54,7 @@ public sealed partial class ChameleonMenu : DefaultWindow
foreach (var id in _possibleIds)
{
if (!_prototypeManager.TryIndex(id, out EntityPrototype? proto))
if (!_prototypeManager.Resolve(id, out EntityPrototype? proto))
continue;
var lowId = id.Id.ToLowerInvariant();
@@ -67,7 +67,7 @@ public sealed partial class ChameleonMenu : DefaultWindow
MinSize = new Vector2(48, 48),
HorizontalExpand = true,
Group = group,
StyleClasses = {StyleBase.ButtonSquare},
StyleClasses = {StyleClass.ButtonSquare},
ToggleMode = true,
Pressed = _selectedId == id,
ToolTip = proto.Name
@@ -0,0 +1,52 @@
using System.Linq;
using Content.Shared.CCVar;
using Content.Shared.Input;
using Robust.Client.Input;
using Robust.Shared.Configuration;
using Robust.Shared.Console;
namespace Content.Client.Commands;
/// <summary>
/// Sets the a <see cref="CCVars.DebugQuickInspect"/> CVar to the name of a component, which allows the client to quickly open a VV window for that component
/// by using the Alt+C or Alt+B hotkeys.
/// </summary>
public sealed class QuickInspectCommand : LocalizedEntityCommands
{
[Dependency] private readonly IConfigurationManager _configurationManager = default!;
[Dependency] private readonly IInputManager _inputManager = default!;
public override string Command => "quickinspect";
public override void Execute(IConsoleShell shell, string argStr, string[] args)
{
if (args.Length != 1)
{
shell.WriteLine(Loc.GetString("shell-wrong-arguments-number"));
return;
}
_configurationManager.SetCVar(CCVars.DebugQuickInspect, args[0]);
var serverKey = _inputManager.GetKeyFunctionButtonString(ContentKeyFunctions.InspectServerComponent);
var clientKey = _inputManager.GetKeyFunctionButtonString(ContentKeyFunctions.InspectClientComponent);
shell.WriteLine(Loc.GetString($"cmd-quickinspect-success", ("component", args[0]), ("serverKeybind", serverKey), ("clientKeybind", clientKey)));
}
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
{
if (args.Length == 1)
{
// Not ideal since it only shows client-side components, but you can still type in any name you want.
// If you know how to get server component names on the client then please fix this.
var options = EntityManager.ComponentFactory.AllRegisteredTypes
.Select(p => new CompletionOption(
EntityManager.ComponentFactory.GetComponentName(p)
));
return CompletionResult.FromOptions(options);
}
return CompletionResult.Empty;
}
}

Some files were not shown because too many files have changed in this diff Show More