From 97761e49cabe4da259459ea90c400e3b2aeb0bbc Mon Sep 17 00:00:00 2001 From: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:24:29 -0400 Subject: [PATCH 01/26] Change "they're" to "their" in the lungs cargo bounty: Fixes #29051 (#29064) change they're to their --- Resources/Locale/en-US/cargo/bounties.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/cargo/bounties.ftl b/Resources/Locale/en-US/cargo/bounties.ftl index b332517c70d..09424e49097 100644 --- a/Resources/Locale/en-US/cargo/bounties.ftl +++ b/Resources/Locale/en-US/cargo/bounties.ftl @@ -89,7 +89,7 @@ bounty-description-instrument = The hottest new band in the galaxy, Cindy Kate a bounty-description-knife = One of our top commanders recently won a brand new set of knives on an official Nanotrasen gameshow. Unforunately, we don't have a set on hand. Send us a bunch of sharp things so we can throw something together, bounty-description-lemon = Dr Jones's kid is starting up a lemonade stand. Small issue: lemons don't get shipped to this sector. Fix that for a nice reward. bounty-description-lime = After a heavy drinking session, Admiral Pastich developed a strong addiction to fresh lime wedges. Send us some limes so we can prepare him his new favorite snack. -bounty-description-lung = The pro-smoking league has been fighting to keep cigarettes on our stations for millennia. Unfortunately, they're lungs aren't fighting so hard anymore. Send them some new ones. +bounty-description-lung = The pro-smoking league has been fighting to keep cigarettes on our stations for millennia. Unfortunately, their lungs aren't fighting so hard anymore. Send them some new ones. bounty-description-monkey-cube = Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes. bounty-description-mouse = Station 13 ran out of freeze-dried mice. Ship some fresh ones so their janitor doesn't go on strike. bounty-description-pancake = Here at Nanotrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen. From ddd7008bfe146967fdf01ec58df29051f96f6c2c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:25:34 -0400 Subject: [PATCH 02/26] Update Credits (#29065) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index f240c952475..15d75d4487a 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, DuskyJay, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, hitomishirichan, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aeshus, Aexxie, Afrokada, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUm418, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BellwetherLogic, BGare, bhenrich, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blueDev2, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, Ciac32, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DexlerXD, dffdff2423, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, hitomishirichan, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, K-Dynamic, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, pigeonpeas, pissdemon, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, RamZ, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, RumiTiger, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulFN, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, superjj18, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, Terraspark4941, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UBlueberry, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Voomra, Vordenburg, vulppine, wafehling, waylon531, weaversam8, whateverusername0, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zonespace27, Zumorica, Zymem From 17aa1f98a1f779eecb3c4f8b9198ca3e1935f604 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 00:25:34 +0000 Subject: [PATCH 03/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0a127c4684e..b5522bd050d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Boaz1111 - changes: - - message: Added an industrial reagent grinder to the basic hydroponics research. - It grinds things into reagents like a recycler. - type: Add - id: 6254 - time: '2024-03-30T02:46:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25020 - author: SonicHDC changes: - message: Added unzipping for lab coats! @@ -3860,3 +3852,10 @@ id: 6753 time: '2024-06-15T22:38:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29018 +- author: Keer-Sar + changes: + - message: Fixed a spelling error in the cargo bounty for lungs. + type: Fix + id: 6754 + time: '2024-06-16T00:24:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29064 From e633fe801bb4755aa6015612b432571b687ce6ca Mon Sep 17 00:00:00 2001 From: Partmedia Date: Sat, 15 Jun 2024 17:06:54 -0800 Subject: [PATCH 04/26] Widen power monitoring widget (#29062) --- Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs b/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs index 1427df05153..74752ddc534 100644 --- a/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs +++ b/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs @@ -482,7 +482,7 @@ public PowerMonitoringButton() { HorizontalAlignment = HAlignment.Right, Align = Label.AlignMode.Right, - SetWidth = 72f, + SetWidth = 80f, Margin = new Thickness(10, 0, 0, 0), ClipText = true, }; From c2f88b2e17981bfa5f11ffc9807b61e7197a6a8f Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 15 Jun 2024 21:10:21 -0400 Subject: [PATCH 05/26] fix exclusive borg module bug (#29038) --- Content.Server/Silicons/Borgs/BorgSystem.Modules.cs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs index f372f7df1a5..8f43635ccc8 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs @@ -281,15 +281,13 @@ public bool CanInsertModule(EntityUid uid, EntityUid module, BorgChassisComponen if (!TryComp(containedModuleUid, out var containedItemModuleComp)) continue; - for (int i = 0; i < itemModuleComp.Items.Count; i++) + if (containedItemModuleComp.Items.All(itemModuleComp.Items.Contains) && + containedItemModuleComp.Items.Count == itemModuleComp.Items.Count) { - if (itemModuleComp.Items[i] != containedItemModuleComp.Items[i]) - continue; + if (user != null) + Popup.PopupEntity(Loc.GetString("borg-module-duplicate"), uid, user.Value); + return false; } - - if (user != null) - Popup.PopupEntity(Loc.GetString("borg-module-duplicate"), uid, user.Value); - return false; } } From 2fde5ac580c63637004c7fe24cb6fa64ba5c9830 Mon Sep 17 00:00:00 2001 From: Cojoke <83733158+Cojoke-dot@users.noreply.github.com> Date: Sat, 15 Jun 2024 20:25:51 -0500 Subject: [PATCH 06/26] Cleans up ClothingShoesBootsMagSyndie in magboots.yml (#28653) * Remove Explosive Component from ClothingShoesBootsMagSyndie * Makes BaseJetpack a parent of ClothingShoesBootsMagSyndie * fix boots in hand looking like jetpack bug * make syndicate magboots child of magboots --- .../Entities/Clothing/Shoes/magboots.yml | 26 +++---------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index e80ed74305c..d934a8b97e1 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -81,7 +81,7 @@ price: 3000 - type: entity - parent: ClothingShoesBase + parent: [ClothingShoesBootsMag, BaseJetpack] id: ClothingShoesBootsMagSyndie name: blood-red magboots description: Reverse-engineered magnetic boots that have a heavy magnetic pull and integrated thrusters. @@ -106,27 +106,9 @@ moles: - 0.153853429 # oxygen - 0.153853429 # nitrogen - - type: ActivatableUI - key: enum.SharedGasTankUiKey.Key - - type: UserInterface - interfaces: - enum.SharedGasTankUiKey.Key: - type: GasTankBoundUserInterface - - type: Explosive - explosionType: Default - maxIntensity: 20 - - type: Jetpack - moleUsage: 0.00085 - - type: CanMoveInAir - - type: InputMover - toParent: true - - type: MovementSpeedModifier - weightlessAcceleration: 1 - weightlessFriction: 0.3 - weightlessModifier: 1.2 - - type: Tag - tags: - - WhitelistChameleon + - type: Item + sprite: null + size: Normal - type: entity id: ActionBaseToggleMagboots From dfe9d5264c9d2aa706b97e3dcfb4ad1eb7c5aa14 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 15 Jun 2024 21:32:01 -0400 Subject: [PATCH 07/26] Slightly speed up borgsystem module check (#29070) --- Content.Server/Silicons/Borgs/BorgSystem.Modules.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs index 8f43635ccc8..746d75f0d85 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Modules.cs @@ -281,8 +281,8 @@ public bool CanInsertModule(EntityUid uid, EntityUid module, BorgChassisComponen if (!TryComp(containedModuleUid, out var containedItemModuleComp)) continue; - if (containedItemModuleComp.Items.All(itemModuleComp.Items.Contains) && - containedItemModuleComp.Items.Count == itemModuleComp.Items.Count) + if (containedItemModuleComp.Items.Count == itemModuleComp.Items.Count && + containedItemModuleComp.Items.All(itemModuleComp.Items.Contains)) { if (user != null) Popup.PopupEntity(Loc.GetString("borg-module-duplicate"), uid, user.Value); From 65af00afc4fec803288f819ca4cdc45d2193adf3 Mon Sep 17 00:00:00 2001 From: Keer-Sar <144283718+Keer-Sar@users.noreply.github.com> Date: Sat, 15 Jun 2024 22:06:12 -0400 Subject: [PATCH 08/26] Fixes capitalization mistake when non-humanoids insert things into machines: Fixes #28997 (#29071) add CAPITALIZE() --- Resources/Locale/en-US/machine/machine.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/machine/machine.ftl b/Resources/Locale/en-US/machine/machine.ftl index ce8873df6f8..13d9e76b9d2 100644 --- a/Resources/Locale/en-US/machine/machine.ftl +++ b/Resources/Locale/en-US/machine/machine.ftl @@ -1,4 +1,4 @@ -machine-insert-item = {THE($user)} inserted {THE($item)} into {THE($machine)}. +machine-insert-item = {CAPITALIZE(THE($user))} inserted {THE($item)} into {THE($machine)}. machine-upgrade-examinable-verb-text = Upgrades machine-upgrade-examinable-verb-message = Examine the machine upgrades. From a341c3a1e93545af8e63b0802e2ef68a406117eb Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 02:07:18 +0000 Subject: [PATCH 09/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b5522bd050d..fca8bcdaad2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SonicHDC - changes: - - message: Added unzipping for lab coats! - type: Add - id: 6255 - time: '2024-03-30T03:31:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26494 - author: Zealith-Gamer changes: - message: Items being pulled no longer spin when being thrown. @@ -3859,3 +3852,11 @@ id: 6754 time: '2024-06-16T00:24:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29064 +- author: Keer-Sar + changes: + - message: Non-humanoids' names are now capitalized when inserting materials into + machines. + type: Fix + id: 6755 + time: '2024-06-16T02:06:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29071 From 3644602fb830004428464eb35b80cc71520838d2 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 15 Jun 2024 23:38:17 -0400 Subject: [PATCH 10/26] Fix magboots not needing a grid to work (#29034) * Fix magboots not needing a grid to work * ok fix it for realsies --- Content.Shared/Clothing/MagbootsComponent.cs | 6 ++++ .../Clothing/SharedMagbootsSystem.cs | 5 +++ Content.Shared/Gravity/SharedGravitySystem.cs | 32 ++++++++++++++++--- 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Clothing/MagbootsComponent.cs b/Content.Shared/Clothing/MagbootsComponent.cs index 0d074ff38b6..b3fb607a38b 100644 --- a/Content.Shared/Clothing/MagbootsComponent.cs +++ b/Content.Shared/Clothing/MagbootsComponent.cs @@ -20,4 +20,10 @@ public sealed partial class MagbootsComponent : Component [DataField] public ProtoId MagbootsAlert = "Magboots"; + + /// + /// If true, the user must be standing on a grid or planet map to experience the weightlessness-canceling effect + /// + [DataField] + public bool RequiresGrid = true; } diff --git a/Content.Shared/Clothing/SharedMagbootsSystem.cs b/Content.Shared/Clothing/SharedMagbootsSystem.cs index bb3b05074f2..68145936152 100644 --- a/Content.Shared/Clothing/SharedMagbootsSystem.cs +++ b/Content.Shared/Clothing/SharedMagbootsSystem.cs @@ -17,6 +17,7 @@ public sealed class SharedMagbootsSystem : EntitySystem [Dependency] private readonly AlertsSystem _alerts = default!; [Dependency] private readonly ClothingSpeedModifierSystem _clothingSpeedModifier = default!; [Dependency] private readonly ClothingSystem _clothing = default!; + [Dependency] private readonly SharedGravitySystem _gravity = default!; [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly SharedActionsSystem _sharedActions = default!; [Dependency] private readonly SharedActionsSystem _actionContainer = default!; @@ -147,6 +148,10 @@ private void OnIsWeightless(Entity ent, ref InventoryRelayedE if (!ent.Comp.On) return; + // do not cancel weightlessness if the person is in off-grid. + if (ent.Comp.RequiresGrid && !_gravity.EntityOnGravitySupportingGridOrMap(ent.Owner)) + return; + args.Args.IsWeightless = false; args.Args.Handled = true; } diff --git a/Content.Shared/Gravity/SharedGravitySystem.cs b/Content.Shared/Gravity/SharedGravitySystem.cs index 42a6d5d1f80..2f532d0f1d3 100644 --- a/Content.Shared/Gravity/SharedGravitySystem.cs +++ b/Content.Shared/Gravity/SharedGravitySystem.cs @@ -17,6 +17,8 @@ public abstract partial class SharedGravitySystem : EntitySystem [ValidatePrototypeId] public const string WeightlessAlert = "Weightless"; + private EntityQuery _gravityQuery; + public bool IsWeightless(EntityUid uid, PhysicsComponent? body = null, TransformComponent? xform = null) { Resolve(uid, ref body, false); @@ -36,15 +38,35 @@ public bool IsWeightless(EntityUid uid, PhysicsComponent? body = null, Transform return true; // If grid / map has gravity - if (TryComp(xform.GridUid, out var gravity) && gravity.Enabled || - TryComp(xform.MapUid, out var mapGravity) && mapGravity.Enabled) - { + if (EntityGridOrMapHaveGravity((uid, xform))) return false; - } return true; } + /// + /// Checks if a given entity is currently standing on a grid or map that supports having gravity at all. + /// + public bool EntityOnGravitySupportingGridOrMap(Entity entity) + { + entity.Comp ??= Transform(entity); + + return _gravityQuery.HasComp(entity.Comp.GridUid) || + _gravityQuery.HasComp(entity.Comp.MapUid); + } + + + /// + /// Checks if a given entity is currently standing on a grid or map that has gravity of some kind. + /// + public bool EntityGridOrMapHaveGravity(Entity entity) + { + entity.Comp ??= Transform(entity); + + return _gravityQuery.TryComp(entity.Comp.GridUid, out var gravity) && gravity.Enabled || + _gravityQuery.TryComp(entity.Comp.MapUid, out var mapGravity) && mapGravity.Enabled; + } + public override void Initialize() { base.Initialize(); @@ -54,6 +76,8 @@ public override void Initialize() SubscribeLocalEvent(OnGravityChange); SubscribeLocalEvent(OnGetState); SubscribeLocalEvent(OnHandleState); + + _gravityQuery = GetEntityQuery(); } public override void Update(float frameTime) From 732576b518e0baf156868e7241a6f79cd518e009 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 03:39:23 +0000 Subject: [PATCH 11/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fca8bcdaad2..8ceaead4355 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Zealith-Gamer - changes: - - message: Items being pulled no longer spin when being thrown. - type: Fix - id: 6256 - time: '2024-03-30T03:35:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26504 - author: Plykiya changes: - message: Hyposprays can now be toggled to draw from solution containers like jugs @@ -3860,3 +3853,10 @@ id: 6755 time: '2024-06-16T02:06:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29071 +- author: EmoGarbage404 + changes: + - message: Magboots no longer work when off-grid. + type: Fix + id: 6756 + time: '2024-06-16T03:38:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29034 From 9348a5cea609f6ccb5045341bd83422a20cc0e8c Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sun, 16 Jun 2024 06:43:22 -0400 Subject: [PATCH 12/26] Apc & Substation resprite (#28998) * substation * apcs * top pixels * new screens --- .../Power/APC/ApcVisualizerComponent.cs | 2 +- .../Entities/Structures/Power/apc.yml | 15 +- .../Entities/Structures/Power/substation.yml | 11 +- .../Structures/Power/apc.rsi/base.png | Bin 370 -> 676 bytes .../Structures/Power/apc.rsi/broken.png | Bin 673 -> 1061 bytes .../Power/apc.rsi/channel0-auto_off.png | Bin 154 -> 0 bytes .../Power/apc.rsi/channel0-auto_on.png | Bin 156 -> 0 bytes .../Power/apc.rsi/channel0-manual_off.png | Bin 157 -> 0 bytes .../Power/apc.rsi/channel0-manual_on.png | Bin 158 -> 0 bytes .../Power/apc.rsi/channel1-auto_off.png | Bin 154 -> 0 bytes .../Power/apc.rsi/channel1-auto_on.png | Bin 156 -> 0 bytes .../Power/apc.rsi/channel1-manual_off.png | Bin 157 -> 0 bytes .../Power/apc.rsi/channel1-manual_on.png | Bin 158 -> 0 bytes .../Power/apc.rsi/channel2-auto_off.png | Bin 154 -> 0 bytes .../Power/apc.rsi/channel2-auto_on.png | Bin 156 -> 0 bytes .../Power/apc.rsi/channel2-manual_off.png | Bin 157 -> 0 bytes .../Power/apc.rsi/channel2-manual_on.png | Bin 158 -> 0 bytes .../Power/apc.rsi/display-charging.png | Bin 434 -> 809 bytes .../Structures/Power/apc.rsi/display-full.png | Bin 275 -> 381 bytes .../Structures/Power/apc.rsi/display-lack.png | Bin 282 -> 557 bytes .../Power/apc.rsi/display-remote.png | Bin 337 -> 510 bytes .../Structures/Power/apc.rsi/emag-unlit.png | Bin 387 -> 436 bytes .../Structures/Power/apc.rsi/frame.png | Bin 436 -> 610 bytes .../Structures/Power/apc.rsi/lock0-locked.png | Bin 155 -> 131 bytes .../Power/apc.rsi/lock0-unlocked.png | Bin 158 -> 0 bytes .../Structures/Power/apc.rsi/lock1-locked.png | Bin 154 -> 131 bytes .../Power/apc.rsi/lock1-unlocked.png | Bin 158 -> 0 bytes .../Structures/Power/apc.rsi/meta.json | 166 ++++++++++++------ .../Structures/Power/apc.rsi/panel.png | Bin 142 -> 162 bytes .../Structures/Power/apc.rsi/static.png | Bin 384 -> 452 bytes .../Power/substation.rsi/charging.png | Bin 1105 -> 197 bytes .../Structures/Power/substation.rsi/dead.png | Bin 1110 -> 162 bytes .../Structures/Power/substation.rsi/full.png | Bin 1108 -> 124 bytes .../Structures/Power/substation.rsi/meta.json | 65 +++++-- .../Power/substation.rsi/screen.png | Bin 1652 -> 182 bytes .../Power/substation.rsi/screen_wall.png | Bin 0 -> 330 bytes .../Power/substation.rsi/substation.png | Bin 2291 -> 657 bytes .../substation.rsi/substation_static.png | Bin 2444 -> 650 bytes .../Power/substation.rsi/substation_wall.png | Bin 1364 -> 588 bytes .../substation.rsi/substation_wall_static.png | Bin 1504 -> 339 bytes 40 files changed, 186 insertions(+), 73 deletions(-) delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel0-auto_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel0-auto_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel0-manual_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel0-manual_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel1-auto_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel1-auto_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel1-manual_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel1-manual_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel2-auto_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel2-auto_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel2-manual_off.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/channel2-manual_on.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/lock0-unlocked.png delete mode 100644 Resources/Textures/Structures/Power/apc.rsi/lock1-unlocked.png create mode 100644 Resources/Textures/Structures/Power/substation.rsi/screen_wall.png diff --git a/Content.Client/Power/APC/ApcVisualizerComponent.cs b/Content.Client/Power/APC/ApcVisualizerComponent.cs index 87cb70019f5..e356a801772 100644 --- a/Content.Client/Power/APC/ApcVisualizerComponent.cs +++ b/Content.Client/Power/APC/ApcVisualizerComponent.cs @@ -87,7 +87,7 @@ public sealed partial class ApcVisualsComponent : Component /// [DataField("screenColors")] [ViewVariables(VVAccess.ReadWrite)] - public Color[] ScreenColors = new Color[(byte)ApcChargeState.NumStates]{Color.FromHex("#d1332e"), Color.FromHex("#2e8ad1"), Color.FromHex("#3db83b"), Color.FromHex("#ffac1c")}; + public Color[] ScreenColors = new Color[(byte)ApcChargeState.NumStates]{Color.FromHex("#d1332e"), Color.FromHex("#dcdc28"), Color.FromHex("#82ff4c"), Color.FromHex("#ffac1c")}; /// /// The sprite state of the unlit overlay used for the APC screen when the APC has been emagged. diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml index 71e45064954..1621ac858cd 100644 --- a/Resources/Prototypes/Entities/Structures/Power/apc.yml +++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml @@ -35,21 +35,26 @@ - state: display-charging shader: unshaded map: ["enum.ApcVisualLayers.ChargeState"] - - state: lock0-unlocked + - state: lock0-locked shader: unshaded map: ["enum.ApcVisualLayers.InterfaceLock"] - - state: lock1-unlocked + visible: false + - state: lock1-locked shader: unshaded map: ["enum.ApcVisualLayers.PanelLock"] - - state: channel0-auto_on + visible: false + - state: lock1-locked #when these are implemented get actual sprites. shader: unshaded map: ["enum.ApcVisualLayers.Equipment"] - - state: channel1-auto_on + visible: false + - state: lock1-locked shader: unshaded map: ["enum.ApcVisualLayers.Lighting"] - - state: channel2-auto_on + visible: false + - state: lock1-locked shader: unshaded map: ["enum.ApcVisualLayers.Environment"] + visible: false - type: Appearance - type: ApcVisuals - type: Battery diff --git a/Resources/Prototypes/Entities/Structures/Power/substation.yml b/Resources/Prototypes/Entities/Structures/Power/substation.yml index 347b18ecaee..692f027386b 100644 --- a/Resources/Prototypes/Entities/Structures/Power/substation.yml +++ b/Resources/Prototypes/Entities/Structures/Power/substation.yml @@ -23,8 +23,8 @@ - type: ExaminableBattery - type: PointLight radius: 1.5 - energy: 1.6 - color: "#3db83b" + energy: 1 + color: "#ff6900" castShadows: false - type: NodeContainer examinable: true @@ -126,10 +126,11 @@ path: /Audio/Ambience/Objects/buzzing.ogg - type: PointLight radius: 1.5 - energy: 1.6 - color: "#3db83b" + energy: 1 + color: "#ff6900" netsync: false castShadows: false + offset: 0, -0.2 - type: Clickable - type: AccessReader access: [["Engineering"]] @@ -151,7 +152,7 @@ sprite: Structures/Power/substation.rsi layers: - state: substation_wall - - state: screen + - state: screen_wall shader: unshaded - type: Battery maxCharge: 2000000 diff --git a/Resources/Textures/Structures/Power/apc.rsi/base.png b/Resources/Textures/Structures/Power/apc.rsi/base.png index 2b42c54935a53e44d836c54983a944700b94b17d..68b83101d21fc74be03e53fcb4682cefeba232d7 100644 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>V2bl}aSW-L z^LCbD_8|v}ws`M@sz*KZ!rVK%7k`tt_$r^GSyK8!{>3}{j>XjnbssFbuvFws*o6yA z1*|;t3pWKX-D0})$)~$tUwrpzteJCi`tAySe}-rE!JBItBY*6xUy(G&qR;={^GZ>B zhm$Erj=S%+J+J&=^FC$n6rmumobAzHs%#k!RP8-hVRKIA|9Nu;2CKP!MY$rb0_IF- z%M;3^pI)=R$iN`r^yJ!-OfH6uea!jivmVcT88aobN#Q`&Rws!zjwXh$Re!JVI?esS ztI#Jsje&uu-I<52`OhJD2K}sLD^uoar@oD zjeqObhfM!k{!=zx>ch{r^-}6m8*b)s<+d!Daw^$+qv*S`-5Fb>)L&0hv7Gn6%4Ys~ zMvFb7eUEpjwOI7HDS!E0Ya-PvZ@T*~A4A`B@$RD^E3D=!`CdNLKIbNbaH31AiszK` z&#%_0e?C-m-#$dptwc(pbc>T$q5#; zlYM1y$bjcC2=$0^y}!INXQD25=qcWy+FfpcJ@4dCnYK7&+lei$mo^;+(o0$|{d4O$ zB{p+Yz^(i20XLO`#k{K7AoOlVpn@r_m*SWpbQZ%@U8Br}Ugixz_1glLZa)-yTPa#> z)d!vhn_Rc)guGOBNbUBCUJ-Py?UdNY)+C9xM2TZ6@_ygWM2RYL+yo{&22WQ%mvv4F FO#t9gD2)IB literal 370 zcmV-&0ge8NP)VQ!Pj5=V{0R$ajXyg8$QcKPs*~v(@13Zl$9a#G@88abZvsiR2Px&-$_J4RCt{2n!igUX&A>pImgTpJfq?=K|%y;)0~Q=xWaDW4i;`(!AiU9x3s+G z{(%cyq&O=r7F@70g@`K}@8G%=6HXHF<%*!0hy%i0k(*f;*U99^JCp3qr^%biJ8$0i z$@9+hJo&y5^ZzCh^#uIL=kpGLrfJ@_hlhu*_s!4Gdu_|IxVX4@ah=LQGYo;<-CeTT zEU8qAR4N5PCX;#A&$28m%i`qZ1VvG3x7%2j#o^(h@AxBcfa&RJ*4Nj)_vv){S)be6 zTd#d^aKM}2-|(shZ;fA>oSgI>f8-6|QYaKKP4kPNX_|(rs$5@R1MsQ^|5U-=u)B`? z%}{44kw&9|VHhkeEq!)fRaF2sHa38c$9(@S`~=L*%+PE$ea9Ue1K74rxm@P#>v$wbBZI_oA=_rs)CJ{maolxh7yHct2tgq`4 zuE#W+P1@}?M@L7#-!ak#a48mxsH#dPlVN#z*}HyobK|wArlzng3)3{I*X!7}&Gz;- z#bVKS?2%4|*VfjYWHQO(;-Z)RO-xLnC<>2{k6yoey-qfpMNt%LwHgZx3jmy-p964u zdivrzN7?`Yx~@Ay2y|WNgAn}iUuYBJHE_lL{#z=Q3M(rsq|<4RkB`0f=H@0s2;VjO zZhmoW$x5aMg8z-3S~7WECSpS-AvOJMF|O3HWU& z;|5NIWECSp=`4Eq1U7)IVkByMN`++L{0rLs#~sT$c2)KFF}Qawn-)3z!e^s>VW zBJ;M3NB;wF!-GeK9d_Aqh|=R&D?2!UAa21eTBL&#qLNvNPD~5E)jZF5LqwOPztls& zP@X*R`;zbHee&jM4&fhb05AX;01N;E0WM5jYjtb#_C+z$F#sud@lwa;&oy_e4cL1c1W{snwC@7c9?sztv<(#6bs=SU&mzNiL zJ|2%FI+W}lK#0up`8+C>3g?Dlu!$FnG&_46=57UvcmkUn8@&UdosxMblR>FeI&ht+ zz{v10wl(d*1K2hI?UZ&*l4Y4I@F!6PY}3{xa^(#p^dYan&7r z{%XtjzM%jfE-a#73Iy2sphl=2r^aM#t82L4u<`ix4McXH@H`#L>FHb0w3kSwQqXms zkK=ejP$0d$QDebNgQYZjw#|>Dx7X|J{ zld!+7BkAdI@87AY*X!8QsvIc~t55*+7|xtkTI)Y-#L{VecgAAJBo~fUtJNaTPh9sF z0K#zZ6JIB-*G@&8_k2`FVl;*?y9PQ{TaD=Hk&_r1im|DXBuRe;p}$-4 zIQj}e=fDZAbLSP;ST`jx-hTiuL@$gx0`NfeO#lB^aliEw>ZkBEYp;2j6))`IJQz8yUO$r7lTfk8mnAmsVI rJhiK~w(L``O_CA&%mfw(5)HG(PMzQs*>mIBR*;aVtDnm{r-UW|8(uC3 diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel0-auto_on.png b/Resources/Textures/Structures/Power/apc.rsi/channel0-auto_on.png deleted file mode 100644 index 6cce72f795f187e080345f39b4b5a6e9535b9b2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCp%t!6k@D=*di|ena_m6W3=IERZag`D sD{fYZ{8uZ5-3vC|oG%U*2N82j7=6_^m7e&ye*kekUHx3vIVCg!0K)?-FaQ7m diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel0-manual_off.png b/Resources/Textures/Structures/Power/apc.rsi/channel0-manual_off.png deleted file mode 100644 index 61ae057d5085bb2a6c165614501c52abdf490ffe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCqC$ z;uumf=k3LfybJ;&t{3$;wx5fz3if=nXjAh!hI+OnW+|ba+biFC&YOCi5vZP_!Jg6f t=f-UzQzu-FVc&71C+FL9R**OtsQbQ|#POi8Amks2>*?y}vd$@?2>`gKFL(d| diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel0-manual_on.png b/Resources/Textures/Structures/Power/apc.rsi/channel0-manual_on.png deleted file mode 100644 index 6cc48bd1a558767f688af4a78c0bf534ee09ea7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y@B z;uumf=k3KnUIqaP*N6AjIyIbDC^ZXkaVR&;%sgcBp!Mvz%AM=)mu58YJL&AdJz#MV@n8w(H+hbuTrIOQKwM8(KbLh*2~7YMBQbOU diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel1-auto_off.png b/Resources/Textures/Structures/Power/apc.rsi/channel1-auto_off.png deleted file mode 100644 index b31bed6c6ba591c8660a9e211dd27d4db3d469b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCpzq z;uumf=k3LfoD2#)tQR@@9vMX*biI4fZf>Yp;2j6))`IJQz8yUO$r7j-2o%&3R-D^= q*Jo9A6`#ghRZE>`tPlx?hS_3jTAU(@U(S?*L_A&nT-G@yGywn(LoBNR diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel1-auto_on.png b/Resources/Textures/Structures/Power/apc.rsi/channel1-auto_on.png deleted file mode 100644 index 959a05cde084609af24c0ab328d3801f3c99a511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCp%t!6k@D=*di|ena_m6WK=6li!^!@w rdrel_y()Dmb4=ZAuMd%6V3=dVI4hP@=|aSUwICr+S3j3^P6Y1uO tCFicxQe3^0uVAC(%{S+{ArcG>>b^BG91k>gZ-b0x@O1TaS?83{1OQgvEN=h+ diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel1-manual_on.png b/Resources/Textures/Structures/Power/apc.rsi/channel1-manual_on.png deleted file mode 100644 index bd8b013310c1d9c9f962be5514144a43fa8e4d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5C>Y@B z;uumf=k3KnUIqaP*N6AjIyIbDC^ZXkaVR&;%sgcBp!Mvz%AM=)mug>Ojj1U=y2TM2?%5xl*wb88viFmsDxvXYp;2j6))`IJQz8yUO$r7j-1RQ)01kA18 pJu~F{7ny)4@1lq^+z^R|*%t!6k@D=*di|ena_m6WAn-#tVX}O7 qb!JfQmDde#nogzF$3Y|*=9n-(pTeoMUew?rNW|0C&t;ucLK6UwsVd|E diff --git a/Resources/Textures/Structures/Power/apc.rsi/channel2-manual_off.png b/Resources/Textures/Structures/Power/apc.rsi/channel2-manual_off.png deleted file mode 100644 index 5ac134cb54b5c3e8c1e8e04cc5059eb8eb7e741e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 157 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?4jBOuH;Rhv&5DCqC$ z;uumf=k3LfybJ;&t{3$;wx5fz3if=nXjAh!hI+OnW+|ba+biFC&YOCi5vU#n{;_;{ sa{N|Ms8d+6?1LoZO*iL@LnIi~eRY@B z;uumf=k3KnUIqaP*N6AjIyIbDC^ZXkaVR&;%sgcBp!Mvz%AM=)muyWa~%D0H}Momz|+;wWt~$(69A*fFO2{I diff --git a/Resources/Textures/Structures/Power/apc.rsi/display-charging.png b/Resources/Textures/Structures/Power/apc.rsi/display-charging.png index 67e3b3df19b80ff3a55403d46b12617316b41bcb..0f26ba31bd31de4d7dcedb7a37e94fbac440a1a3 100644 GIT binary patch literal 809 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58aUX1(0r%WME)=?CIhd zQZeW4UE82f4h#(suP&Sb`MR{&%<3TXHtw`*U)?!Vvn#n`nzEh_v}Gc8o{{Cwxw{jFDDZT(ce> z>;L|H^nCi8TJiYxll$HMYj5v;@%s3?d^3H;7J*A9otMskuKj;ukK6v^><6yb*M0u> z+2Pni`Tg-Czr$v!1^zl4)>9Yx?)~zYHOKyc+|IrwPW||c8})zIe(7FhHIK#cS7g{+ zo*!5KZsIvU`GMT=`o6#Cj2m{{+v?Z&s_Oge<`=i}XEXU;%&%iU@?!qw>+-kcYXm-mw*!N!jHWbkDA_S^OEPd^Qg&=XfbpB^dt>5t`=uh9`} zK&X0Mg_yXnq-|I7O=|Mg$DS@6}$((U-a$N5X+MXr8S z>9}}))2oyN%im2;wV229-Qr*UUi%ETfa|-jX$Hi;Z`)J5yzaJ0MpxZuX$80cbN1EE z|ED3&$p0}y+!5ri_srNl1QvU)mnUt~UVHxQ*RSHm&OI>f$@TJ8}1ruv>4>#Rlh|FCsjv|qm7-fjPN*8|Qq?|#n% hhEcIRit~1;{%7RxoaJMay;lh&;pyt^s+d%^$! literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^2|(?c^ovTa+^IhvZX^Yb?vx$2l@rImepd-&=9 z)sxOnGM_wsf@T^I&|C(F1@^8vmtMTs6j|o~*P^p-e~97FeE#csKOaBVp8j+F@q0UV zmS$A{w%)(*pH21FTWTwRUQGIATY1)gSHsTV-FM#~e}4JayK`=3Ri7VO{ZxFeE-v8o zzv^9X#?Nd`^Z7mVC#_o_b%OK$jvIxQPq!bRFnRtT?u!3EVs?~mxM;b5@;8ZJ=eA#y zDEbu1>iQ{)btiAc!pv!PZtJ>~{yz5k#ed*cV1oo}2RX!z1!c!9^GzPtG<>RYIPkN9 z@maB*!<_jc4ma52r#*G5*imPF`<#@=^gll(ru=ja4W0XWbC_dd{~!P7tiP6=JAYJ5 kV_wNWaQHAVeCVHfQ{38TwjER2t4D%0W^={ zkAC-+=KTBX|9(o8oF_NG-ZuNY?+d=ziu#`(|Mo2`dfr~|yZhbYbc@N`{8nt=9>2T$byeuxcUM#f${~6t%&(G%YNYcNp1crx?d&T62BXa80% z3e`z`H~-bEikf%D|3fY^O)>cHFM5~%gl+kGkfjbU>li{-AJ&OCeCQ0)?dj_0vd$@? F2>@!9sZ0O> delta 260 zcmV+f0sH>_0+Rxe7k?lK1^@s6qMd$(0002mNkl^F_}-3RWAgG+beE1OMO)N$^}SA=isjsR*IUX zDh-!Yx`~TcI9C+;tO8oK#@m_v#9%x!7|Sf*w0u?p-k`F5dJg|dLHTm;ZqCsckSS(g z_LJ?*KNp%GFwOVQT+KI?3%Kr1wC+2aG3LIV4*&oF0000#gNPn&21IoY-A3mC0000< KMNUMnLSTZ}9CMKX diff --git a/Resources/Textures/Structures/Power/apc.rsi/display-lack.png b/Resources/Textures/Structures/Power/apc.rsi/display-lack.png index c4c103eeb9637ba3dd9fa8325d5cfc68a16a8bb1..e360f9c6bb03889b661d04fb010294d449fd8beb 100644 GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D%zpL@DEhE&XX zd&e;Aj)Mr>gXs?%93*O5WYVR>6+;W&E9c4wv4-c>%#l${U}4sLbf_ZmNu<%e$jT*m z->(*PdojH%y|wFm91GA`FetFHn0{ohf?`u|5A zm3~ktQPw}F_I2^BXa4J#rUGrer&_O*YrZ@CMV>t0IsH0zpnLv3)7y1s@w2C@DSns# ze6(Ls`fvX1-IMp%LwphD;dw*w)6^DC&S0T3J=MsypQpB@+HF4T>Vbugod`5cKQbdE5QV-tWJ1?^{9b|JUz+>rcJQ@ay08``_cWe)BDOAAjE- bV%&x@f6mDT`gvbNjX?sQu6{1-oD!M;@Vm)1VnF3^p7%gG|T$=iK!B zmAgCc&UfzN5&!@I0Kk9JSZ}?xth(>aKFgTv@!HvTZ~h_Ax$||_gJaXAiR-@oevV__ zY%ZV5XCAzUvJiC2(tOyFQ9xiZO<2OfQ#o-)$K^3T`3h+xY+h g00000@H2?$1|ncVj%3iX=>Px#07*qoM6N<$f-?Ji%>V!Z diff --git a/Resources/Textures/Structures/Power/apc.rsi/display-remote.png b/Resources/Textures/Structures/Power/apc.rsi/display-remote.png index be343a987b0cc7cde7d68596c08969209dccc843..089eb9345e78d51c68b75681f40f1d1ebb87f34d 100644 GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^3xK$RgAGXbBqvD&DaPU;cPEB*=VV?2**iR4978JR zyuIt_ci2FHH6Yw6hFR}|?00*|$il`VUbDnTt;k%Cjgu>UKHXauDE_z5GS*V+nJyJuUx%jN$%&l^^-r(PrHAhhk4$;XaD0gfBrsGueERT^XbRm z@3ZT!Uv^9Pe~s_U$EJGr$H;R*C*-M zm;a3Vl>NEb{q*%o_2sokru}$Pqx-WFC>Xw2b-!A?w;jy&$aKkpS4_|2tNyuuj{UyN z%As!epHGq(ldB?RCrrA^JMrh#)za5A55$GBKe_H6Ggn}4{Kj30bD7>GmO7Q}yUH61 zlzVaUukDlQyU1pO*aa-l?pfBa{@l+ec=PZb%b)+1>#HmR`HPjE={PU}$`1_*I+Ry%-HH~esJ#)AFocZ_s;LEHMw%^yb*A)MUncNV$kMYOCfK56+ Qf|4LHPgg&ebxsLQ0H*We{Qv*} literal 337 zcmV-X0j~auP)fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+u^>6$Sl3vIi!&v&s2C_>$iJ`a59%3GQY)wNEBst*-oiXVyuN{hje&t-cVm7QkYX$ja(7}_cTVOdke%o0;uumf=j|<9FXli2h6jQn z0!&ISZ+OBO{TIe&aqB;n-P3yQn%K&>k2EjcIASC*#lb;9F|5nJbKi7dkFvk})NbBA zkkeLq_KXYAWQKs4^*3eWW#9Bq|0}0?Ex7(hM(O`Q&fn|J+p`4)x9guTG?x*pT<`R; zSVdhyDQSIN_vXvX<-hB%D_>+UQ5z$lo9CM2e&lh@rX89|N)g8Im-S9iWqU3q@h2CHxl zM!~1?bG7F*bQG;WC+g>LGyFN%+O469rRxedyk3EWje&t-(cHQg1_nkiPZ!6KjK*XM*2M`TJxzfITy6(7K%5jNx1?I# zEQ^o!il*z&Jr&HATj_8nL&))W{QUFkH|xZbM2k9i8+CMlcrc~@=QHjZdOB;8Ey`bN zHNS1$`#;!KRpLqhodsSC1hVZ{HoRbHXneEbyF^lOIOn4J53VjQ66~Jgh^tW4HmyW*Lq(xN90G*Z*f*ja96>Vh)_}sLD%Tv`x9}@9$6dPv7l! zbiY2MF*>5<*0EsO09%H%{dEUFytwII;AjC0C0LLtu=4QmFg!kzZFMp3pa(E`89ZJ6 KT-G@yGywn&NS)*W diff --git a/Resources/Textures/Structures/Power/apc.rsi/frame.png b/Resources/Textures/Structures/Power/apc.rsi/frame.png index 7d3529f63f585d058a609a523196e357fe83a8d1..4f8ba4d56effeee7f96e45ec924337bb6f6d9b2b 100644 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>V3P54aSW-L z^LCbD-XRA8*ZM^z5sU6f1uN}V{CCOx@x%UdgYn~Cqjt!~p&w|?9!z`*dxVqLH1 z=}jMZ?G-#A(R}&kmk)n3Og=?@ziPhle-p=nxeVreE7=+To!{AekE6gwZf^3{Yv(rZ z6?jl!VUpFN$0Xt!xVub0>fz0twv#EJ4A!k$_4?=S$8XEH58UIj-^#$SV2V}t+K;>s zWakHDF|V~>aD|OwL)`j_&n=&QwmkOOux$6;uN5039I|uwy1!PwaMa+@DRG7e&)4s% zUza-Xx#g-=yN=zJ+nwO6<2k8V`mjd_gV)Lh@`@{%^aA*lORwB@&^Y&>DdaGR`8lQl zUgbMH`$WYUcL+aN7N~va`tv(&n;AfIeoR2ccdnE*F}yW6Ys<>E&D; zI}dCQZ&2W90wJC$$7-#nMjv_VRJrqTNc8m;+mGBmd|PgLQTML0g-zes19rN`?h0^Z zg3!(1SzQ?3vFzZyr{elltn{f9E2jgHe(6-n4Wi#VRc=3&yW2HJZ_0J^YOU=Zhg-R- qphnyi6(|afW(`=Q4Ys(TKVG!?@I}9CHM+n=!{F)a=d#Wzp$P!LVGZ2? literal 436 zcmV;l0ZaagP)Px$Zb?KzR9J=Wl)p;?VHn3hMT3Z87eQc$6>kJC9+A{gkW)dUOARgl18p^gThb5& z{t^8XIXTqO5P^#j9C2a?!j(uCZZ?F6zs@^Pp@#RfJP$n2`#fKshxY-AL?ZcPrrZ)X zb`M(PHhI3kbL=zYrNCZd3n5hh3XW1OU9XVKUG@oa74Y?L0if$851nQaLM4+q?~A0< zrvqPjnn2mC5{(2Y6bb++ibAbc>++MyBxSRT5GsK{U|Ol z%_qr70tRt)@&-VC|Iyd`kynsP9ov2)c*Di*5-Vp-!uf6Ld;`#EG$tz`8d(HB(KM~= zH|QLqX+XX+51P%ULk*t-0ECFS=ID9_fNb{KG1iOgC0vhfj(rJVN>7e`Tm``IIbMw{ zJB|^cSbQKJ-?44ktnz9aL(edbuma1nhQCDa*wfX|Wt~$(69A9_B_03( literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!pn<20V@QPi+hYp_85DRJHp<=JXtl2|_CQIa w+=(N9*cll9YmdKI;Vst0Nr^n-2eap diff --git a/Resources/Textures/Structures/Power/apc.rsi/lock0-unlocked.png b/Resources/Textures/Structures/Power/apc.rsi/lock0-unlocked.png deleted file mode 100644 index f6377a36b127b33b6209ce3c8704f33b2c08f5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!ps}ZmV@QPi+hZFA83Y6v4$AAU^q4v;pd~_B z<$irD0oy&cRiBUv8jg_@oLYG?3t^>bP0l+XkK6U{F8 diff --git a/Resources/Textures/Structures/Power/apc.rsi/lock1-locked.png b/Resources/Textures/Structures/Power/apc.rsi/lock1-locked.png index f92c04aac46374de8c4d906075a9c0e424b7c63c..3dfeb215d2ff01d79fb46bf242d484906ca36ce3 100644 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|Y&~5ZLn`LH zz3IpcRK@Ig=fVApmW-lLoMr@G$lol;z;J*~e{)?vP$gfH8;}G7z1gc=wM2k26WF%3 Va%^2SnQI?N*wfX|Wt~$(6999eBoqJu literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!puVSzV@QPi+hYp_85DRJHp<=JXtl2|_CQHP v*Qq0a*cljnc31DeH7!)O*yuIGi;f@XeOR8P^-Em>YGv?r^>bP0l+XkKsT40S diff --git a/Resources/Textures/Structures/Power/apc.rsi/lock1-unlocked.png b/Resources/Textures/Structures/Power/apc.rsi/lock1-unlocked.png deleted file mode 100644 index 44f9af733faa8274b9eed4cb3bd2add8b2d10d28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!ps}ZmV@QPi+hc};3<^998|9`2w0QX_G)W3? y2ytLPmhzLIf#Jv6^@YXWQQu}8m&-AT3i2O{WO=+I&R{!GJA*+#TaGXscmE#u_{vKib)d=*p?lTm=ER1E&-*S@Jln7pS=_$>FMg{vd$@? F2>|c6G7A6z literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJP)`@fkcie~3D(64B0Wuk23&3j zH6&P-c8#2y0nP3Ql}17Wb;P!w70iEe0O)Z%FJe-86H;?jvqgLKs$wf mn?#E{NEgtE02T=e35F}-TufZmLFPaU7(8A5T-G@yGywocj4ZkU diff --git a/Resources/Textures/Structures/Power/apc.rsi/static.png b/Resources/Textures/Structures/Power/apc.rsi/static.png index 43089d0d81144d506157dafe4d56335d3d60f0a3..7275cfc9feb5182fb6fd1c14eaf65a667ea4a70f 100644 GIT binary patch delta 427 zcmV;c0aX5g1H=Q6BYyw^b5ch_0Itp)=>Px$en~_@R9J=Wl|5_1P!xtAp{SJn9>HqelFR0}&KC~S^TmwiYKh(G z15ld6*QXq?8~~8Z=4gGm(Y$GxJP&%&yrJDkKA{0p^R@uPfff=8IVrd+(TliRXEj16Zz>0I{2JqqyJoJb*UX z?Y>;a2kGAO0K?(%q=QHZAq^mP6l@ zL9tjo@JuEXfGF>}ZZz(8yM$pFyGW@|5CnmAKFPbUSR^_CRaO6VBPP9pRH;&>`Ub7& ViNA_R8r=W@002ovPDHLkV1k@l%Zva3 delta 358 zcmV-s0h#{91AqgNBYy!$Nkl`lxVl$B-3vV7jkb$I0oI^gTuHw+963=GXTW)rk5iq(@rSy_hR?%gLC`Y8&5N6%g| zu41BOSJUot2w%P<^{fjHpp-)s znsWyje!cpNqRw^+EV^VEwlO@To&%yhyfMT=j2sx2?bwPUMzaurS;QvB4YwQ{pjikA z>x!W8cRoD{7k~BS3++NcPD-5N$cu9fkLO<|sE%eKP^*zjPz@~mky2(5<$!HFw+&oT z3@eTmrR3p3j9(2Lj(NghyF>;~KYI3(;r_FSc#C0@qTtON{3Y6}?GG3pJ!6H_gw&H1 z0&1GZ1S_PE@18L53(3G~7`S!)EF;4x7zLwX6bxnn00FUl$Y5zb(*OVf07*qoM6N<$ Ef-a$)!Tzopr0K*kYegFUf literal 1105 zcmZ`&J8aWH7Ru-7;_w#$?;~1=}jY5IBNY2w_(($qUl&o<#zlI24 zi_WPd&&r<}=AdgLXCFxF^*9@l)dB5!jEZLXHu??}t`fbZblAqxMghbBN3^+D` z;8upK7K-em<3aWsFYp4FO|UF0dqzVlDa$=N`O0wX7`qYx-ENofUgjOI2~z2F8VDi~ z#Uw!_(R~|he$qx~Lnr%w6o_=sbg}8!EcL6^oes`$91YYTVV;KGkK=YcD~Mv~09vpO zZHz#QPl0hfY&HfN+NdW75eCpdgeHuosV>&95T%xUl25NblBgcUMc4ol01yS?dQuRR zVjA@8Bk9YAE@2Z}Fc7X^PoQAV!oyaIrxI8uRaUYzyP4tqqyZaR$HH6|b?OLfR4EyR zxM6;19d;{&F&W6TZfUIqkz;kJzij%d9EdSw99%(2sE#8YUQ)8Dt3zO$06%e{)cj^^u71OKh z;yae>Ur=CLT01(c9zcRQ)ETk+keP5fyyh3%--ku-{j*otg6jok-0?9(`3@|b^RGxXWZ2q zB7j{wC#IgS|6rJtu34$#YVnq&J1t%_oCf5BmK(C z*bsuZa$L1oVwW5bve$Tl7dR!svaIYGO{rYC(WR5G9Jh(FD*@p9KJQ=V9d84qv)L>V zL?DVOf=HozHr9fajm}3-j{OuM(mm6~rem|zuhwwdILC1`P;W$e8hS5|+xDz5ilGB& z!4|YJ0%<-CM)9!O>}P1Bt{g-dK>rY$Fp{RaSieG)S`J7)-TRS5^)N2N28aQGCygOek$S*dZ0=nYwCY z=(!%Lt}ve14L2S!?5iL9wryhN*ujuF#)`d;l=rajcw3e5CE_xU1$7-olE!K@YJgCF z(g8|B2EA@l5;xz?Pm&gcY9U{#&gk{zF~#Dg=Pw|9TOqCKrH LuNC$d>-UcUeh*F) diff --git a/Resources/Textures/Structures/Power/substation.rsi/full.png b/Resources/Textures/Structures/Power/substation.rsi/full.png index d179742669917dc41f20ab033580a2627040ed23..d0b9726cacf1f8b56586214f2694b0c88393ffb7 100644 GIT binary patch delta 81 zcmV-X0IvVk2z-z+OEyVFK~z|U?ai?b03Zwl!7tcWFmgB|r$Jb0T2J&Ww%LC=C9xcXkw^^5kw`^Z1P-~Z$H-v3#7eQhD0h%*ec zP%LN_va@u~T_!6!IQUJr8B|%zGsmBoev*%?uvTo8O3W>Co+FcvFB?Z>o%afLL;$bp zoVoIH;~T@oJgZv6wbDb`aGShty4#QsnqJ6K0+}3}5bJEvv>hY|SuRA#`i6AS@>Cj6AR^Qz5r&Q9gz~P7UGk!Q%P2Y+`kqf- zR~S$1g`18T_ce&U=~!63a4=>bVh!Dnobz$p_4lgbO$^I871VPSNjmgKqXr1&Cmo>1 z70~Y{HU8lJ(ky8)qp0PowRvM}arRA8NL-q-bdsH?r;pyQo^`vwzJL6&_;3F_lQ?ipiHqqFWO;7Ru1o7ZFY!bws~bn?&T4~Ij|GP|m{6xS>_xKJGTXXlA_C36;_au8Tx7MoWrb@*dh z#_i9~_bKg<`S&3t;<-t`chvExt6!9VI{oA|L+|tN{;jW%-#s4or}lo(`*qAG*uh%! Y)H&8$t@*seG#|wEboFyt=akR{0GeS&g8%>k literal 1652 zcmeAS@N?(olHy`uVBq!ia0vp^2Y^_CgAGW!%qVXKQjEnx?oJHr&dIz4a`;jsJkxxA z8MJ_G4j=}BOTm+YBxiv~WHAGS#w-wK6t_~`#K6Ful^GII65;D(m7Jfemza{Dl&V*e zTL9K&Q(*;U=BAb;Dpcg=MLA$w zQj+ykb5e6t^Gb^K4fPE5vFR(xOhdRZuNWE}z<|*Q$pEz(VAbYXP?Br{3@O(NpnIVH z13EMrY;SQ%iawG8eIo+{3ta;vT_a0oQqvMkb4rx#fB}`7nrEXAQG==%B8qCHjXoCJZ9smuiVR9E z&d(_Yg}R-QnTZWJBv3>V;SbRffmH{xD7ub-jQo;(V0tRbO!mwxNi8ZU0;Vm9jZph= zt3WpkVR>j?W{I5<)BrSLBwa{xW93*>Ql4Lw9RiLASRmq505t>>ph&3`lJvoW4@~=Z zTsHdfd}PP@W4-g&}~0uI@4EG7uXG;nmXm~n_5;ov;T^-ZSn z@PSYZrVXv4r!9o!4>C0}vOZJE zz`$nEz{r!pz>LNWyX7F5@_mPlhw>hgnmQYS%CNab&IRB1&p&Xy{?V`79IHxp>wWE( z-c}REc}I5dzGVMP_v-Glg5Q_?{~f#j{iXcBrv2;wy^o#x?|j^pfBfm6+n=*- zx;|s&>rFeAx4!*+sq$CYlTiJdv}f=B@A%;GbNkfw+-FNZ|M6D-_xi-2XPQ6lFaAmX z{642^P7Bkqf59J$pUd4dk=U2y5Fb8R$mK$Y4hJAc*eoar>!pTGhgR=zJB2! zm$N&>j{jW#Ap4{A^`xME&oW}VSD)eE?r>Sw#`OH`4nObo10ipDKKxy9z2>@U{p(ku z=jz`vypaF)C+GdQyXztqXH2+p@yD^P60@`K=l@wdd-~Gf|J=9z@!uEzZ)(xg{Fv@% z>Sb^C{CV>F{0_0?g2TEOIs&%t`=Px3%g!*f^1t)#JwN5|U@xnVzc^JveE*FrKNZ#Y zue&>W;{4O~m9M+jZxZ>lQ@eqA_oM9*vM(Aq>ZiNPvR!qo{`B{h@7ehWzG^Vrm;c-O zQ}gfnSjHyt72-kf-m1hh%H-cM`jGqd^ZN;n^R55i`BQj*ck_vV>ER5qMZ16BFL}DQ zH|b$G^LHiBSJu5rVm@BV^0dmq6Noz{xB|UYPx>(f6XCKiSOy^=d#Wzp$P!kmv_$q diff --git a/Resources/Textures/Structures/Power/substation.rsi/screen_wall.png b/Resources/Textures/Structures/Power/substation.rsi/screen_wall.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dfb87b1c1fd33618dd05d25aa959fdd005fd18 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D%zSv*}FLn`LH zy>pPa$v~tb(d69&wN32Jo7(dpiBuU0G`?cIb?EoLZYifagJt5Uv!#Igp`h&jmXZf$ zxp6Cn<`dgZ95kKfkhhe*B&9*&<8dn;-w4 z$9jPsVgTRC`v(vH-qykjR+Y=?tx>ywTgyxF*UT^*pmadz{$)N>=7lZXA8T)^nxk{* z$eNB?ZHEtaMP4^%bS9R5xxSB2yTJ}c*KecBWoy0^XZ))Cz4u6Y9#TH2@(b@;%i(wd3`IzM?2%0*o;X1_P+7 z8p~SOb&N(M5JJ%Hb|FbptbPE;aWI`uBeDnqLI_k~0qM%l*B|6P5 z1D0ha1_yG?fTn4woQ}uiurJyV!ZQEf#w;K3dEaE+Y zR{+010UtgBzkULfuTgTj)xi4L007Uxk7u#oRWraCgRbiUfG^dL(vD|fB$x9d5!r; z>D>u|n<4lGk+*rJQt?}@R<42P^EoJ`VcatUxkf*NC-4Ufo(>}r6%T0u0000!A1s9;GP7E=-8dvv%CNKzW@LC+x=%Y zCx}5a(A%a50DuAA&o>wv5$dk95&BA!lU2|FlLXT!K>eWQ3us};Wzu5<0su#7t^;*- z8wx3ezPcj62nhrzS9h3pQOIKe&=T=NnIJR3pTHKzqgfnb3>Phn7im~T83CHcb3qnD z7S9(*2r?2Sx|CE)Ya$`bf2!4VQthT?EzS&4iQNtPtWNI;faDI#VC_db8c z`o3Et<|7#p)%zwy1al=qexlkR8ShHei1D8B-4U!1m>(moH-1P6Iw}N((2WxF*mMEN z6^q2s?b5`E$6G=eBOS3Ec}N8=Kkh z9UYA9?Ciju)y$dBPN2A`=wuz!sE>%J9ZpRxf4jIifZNeu(Q4{w$B&DPbDin!g?nmK zw|ET<3@~8TpIt6sZBi?AAMciV^#tyl^X!#2qdz* z?wnkjlyvjQt5-W+P$)T%%iU$&Iy;+$vgqy8_nV^_0G(}0rAaBxv4Hx0Tie^Dm>6W$ zl`HaNs@d7#fB<>eCcfMD9DjaoZLN9TCg8yI-pR?yi1JgXxN@5YD42)w<$1@m`%#;mQa z%L4MVbb?!a54t4kduZ!OT01(D`nQt$1_n06JTmk%7Z=kS$4W0E_4M^s=CGr0^1Y56 zx%fw&ogprIBypi?$@NMJXBofY!aUIsh8%dc^y;*;d}q&{sGeDyoTtn`&A!aaI`vpE zS?SJhzg@98@Ik$x(LSAGmX}5KIJBU5>DTYbZ_6ty3zc(YKYmT2P(;!c5(Rhc*n>93 z`1oP@`7u*fNhF|U3Om$hqx-aZI94?>zhv4zH?uV|b*bDnBskc^cp#P@GOVI9Jw`+C z2WbcGnZ9r^I@)!I&uba>-^o_CU!1MX*oPT=%McdXF}%g%#@NDzS);~FCW4H4t9wF{ zpex}Ms638xxmjK_uZlMoEi_Df+ng|{;N<-`J-`h`172@o2^3AU3R=ffYs48OE>`~ors~tNAk)hW%nvU(M zOs@`qN;dJ&7;Rge>v~o;Y^#vIWd59*eG`6|+`o{Jno5*ks!2Dm&&ASZ>m@gL_m*pIZMTd5X+fn@86GcQytr4hFr{oYDt8P_SEkEOr!?&Jt`1t<;{j!dN diff --git a/Resources/Textures/Structures/Power/substation.rsi/substation_static.png b/Resources/Textures/Structures/Power/substation.rsi/substation_static.png index 9d5b8598f4b8d92b0a1af88b799a6f72c26186c4..eee995843f194939f7b115fd33950de15b7016e1 100644 GIT binary patch delta 613 zcmV-r0-F7d6N&|pFnNklbLtBDyhu}8mc_;Xl&+}HNdms_!?G;+zMrWp>VI<%|Hmh&M1rpCv5}a% zNS~$?@m!znc6%c&pzAsh!;ptz$b%r@0C*4tnL4pO$44Yn5lJw{;CWs=7G+h}ZntCI zX0yrd!x)q1DhX?0aWRNECk8Cy1Dq&A00_e{m#(N!A_KN;$hT(7s z!!R;go2H5Jcnm@a`u#pMP0O^8Kq9#bh#x<+PKNb_&iC_#T|1mBe5$xZEj-aPI%@x^66&Rs-*=RlEZ53&7_e0A2&| zfZw+=xzcLDJ2U|J=>Tx{^2=Md0KMp{@(lG|_A}K?o_F0qHh$ z9Or6xL0;-@`1Dl8!^6I!A0PK@)$#p(_Iw`udcB_9+2Ntc0r2_PeJg7$K1y#C0#`%y z38c4qqtW2KUa!=^i^T##5X5m41WJv5fJopEs)!0GE2M_400000NkvXXu0mjf1NJ8< literal 2444 zcmZ`*3pkYN9-j<~jN70@Ok+3M&dfJP4Q9tg2%Si#GO7u4!Dw#H_sLK+;-og!lv25F zxx^Y;CFN9-TQ1wEwB^!J_T)B&9AZ=2nbDSd+V^?h+yDFh{+HkTzR&X=_V@Eb=q}NP z!C(j->up(qiT!vl#T z7ql8dRIXKK0F6>Zpj|F#s;@uFoiAje2v{5zhbHTyP$-g+8Ac57Soe{x+_|75AV@$2 zfavIGY_tQGFAN9lot>Ql93H^qF-immjNw6{A`B0-nRW8F9}gDD5V8djo6ke3{D#u` zQIHE7tqSz1&F0Bue2OE85^~g0m<)i$VR2bJ2n6i0_Q1Dz5IgL1hCJ}297+SljUTX<}U{I`Rz%yU?CPKW3wgrfPvU7OV>F;~Wa1buWgE9sm&I{N_B z@+)5eS(gNSdQD{A^_7-dFql?`kB8f4s*XI6?|nLO@dtS^S5d&YhhjX-A(#|Zu-Uj& zbNw|_$?xtb(^DQKSN~{xf}>}00by20x1ePnsA(kFGA~RyKJah8gSd(@y{30#xlI>s zMO5YEp|`^^*8K)z{bGUxm<5hRfyh3*Zg8zC2+`Vq#)v5#?giA`_EC$L3)G zfWLgghP8L>e?IJm;?B-(7#EkN3D^+U&R6zBh=; zWUlDA-P_jIHah*@V$1rNhF7m%tysA-F}=)45+!JI4Gy-Z)9F&;VDai}TTV*iihub9 zny5`S_}&Rzt~Kzo<4U?lo&}}0T=Rv^s{7h;&PVq=e}hC!R0exBPLA|k;$zb***a3O zRJI%@!f4ySE^9wKt)1q@8+?~9Z@QnhcEL<9^24qtr8=!mO-AwK1Dl-pAP@+nff8}u zozZaZQ3Wz-k4D09PhC=Ftxm*|Wln@P;}cePVqIy2^S&wE+v({|!NGtlcE@#bbMyLJ zW+IXm?c%=XmKH6kd9}@0&;!H3^aR)ba#>>Twc2>8?GkfyqwI`~m6^>4BpMB{%^9YL z4<9Zdw=DiwA`TvM6zz^TH>8BTJ18)v62~1Kz=eUOJKRD;&mW46jQq8{Jnzx7ncm(D zCT0FBlG@v;QmOP%w^?Moq6UpW3yz9`wrQBTibg1vN_td=%N8k4mS>4?`H+5-9 z2J-f>^3kIAgdOL)>YbcsZU}aT7(KMUG_kFm+eNS>iToX}Xc^udZbLXB?VIPiAJ`Pj6iWE;Gh(t6tb!{|7YAv5_SVniv{-T4uUY?H22GHlJRqC}GN~ zbIKj|T7!>sAJ)`pJU#D?JkxSDQoB9&p5Bf(JAShK9sNAZFKQ|9II}v*bF#-F#9VL{ zo7lLUeEa63bA7%IwMvK@<)37w+aEVXeaXZ zYy4K%+*^@g=6nOIpNoooJTy>ba`wn@p_exzr1$h)qeY7@9vPsOm2RunFVHJA8h%=t zo38jH$Lj8hOI3FUN@?`l;jLDq>&gQfo*8!gv}+i!jw)bJ4B{z%etzl4m$_I;t2Rw% zULCp8U3UUp(`y+d9L@T1kQleFqksQ_)W@BBUoxI0n{5|d)+FZ`Ad$!r84&E5@~}Nn z*e7LJ$DceJKSd^K_J*gk55;dF{qbgUEZ?`@ZK^X0#W{A|EOM0Ad!{v3d}9*ngb$Wf z5oR2Rev%Cke=n?~+@wh^g;)PucUMXIb}Mih+BP<1t;K%5{T0FZ8jIr68bb*gnH{f4 z;3ragUhmWU^DV7J{}e($_trC-Cihr`CTz7$pPikZah=@VyfHRAp)5&$eSD~89fkdW zZHJwN{@@Pum_gc%26pGEiV6KPtx?Z6;RSbm`N-F(j3oALuF-U6@)xxb2urIGBKIRePM|LfQ`A)7i6ia dsa&9AKWtwQgnW_xQb+YCW diff --git a/Resources/Textures/Structures/Power/substation.rsi/substation_wall.png b/Resources/Textures/Structures/Power/substation.rsi/substation_wall.png index 155ced7128aadd1cd7719d655ee751d5741d5e57..ab250c6747ddcc8bb5486ae9b54352e4557df9c9 100644 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-HD>U}E!haSW-L z^LD1~rX~l0mfxX!Cm5-=F-N4XnP~p;x!Am;Q<5ce^Rk|#O;DR>I`EDvTlkYKQ5^;|!7h68Dv3*#QYWvNK5 zkItTdZ^71Uk@eP$4X^*zZQI^B&(Gmtfknx+@4sv7)fXg~%}(4IleGQzL5XIa(*-+Y z^1jCTGZg%NDb;^`>(_h!4j-fA-QTM#oHk0|dtKOI{`rZ|EgxB|vthEG&v5&V zM70GICAl))R;|nJIry<+jjejuqT9b4){A>w7O9-qZtT49%n9Z8!;G1;%wn&d-g1jc z5y%g{A2fZ7kirpXk6Du#a*UOHpRyR7?J(II-H__Gq|lC8BF#l=IRlTeQg1Lro8-h} znhb|~Jc6|uPQ%Hnw<)s)GrhRG9`BfV`SU|r)&LRLKp@&T_1gMnv27|nagK{Nu5%J{ zTc2<W8u_b(XcnWmXdu0TS@L~4gRx5Dw@+d~u0eGr z_W>Ty8GHAzCbX%XiHl=0a26_4c&rLi!fxc}e2B+$36tbvvz79 UQXQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRlD1c~)z@`CN5M4t+Mt(^?Fhvz*CVS?Uq!twv0aF*)J|n1g zxK*H=g|Is`FSEoBW&oNnk}jm!v2rXbDbFv;4gtpmaxmgl1T_c}q)2HLk^#WM56l5} zTsHdf++@e)wNr)_m~E3iT^vIqINyfu?rnAuknKCo>ENW-$mX%)z$P851&q5G1(gLS zTQsrBI52y(_$jzHRlHAIy756mE}up0CgrthdyPNedpwiBf#>A`d+P-X^&+lkHm&gu zTD6Ml{&&lBVh#Q>r#{PsgvQQE?`d4r@v*SXzkrctf(mEGEI0e~ov*Dv*yNY(d!C@g z!0B^YQ!rgBH;lV-F1C%^xeEszy7X6F#ex7ouu z{ZQeYrH_5no!ILp_0Mm){g!Pj%(w{6^3y7B$bxqs`n-TYbe%r|n{!|rF1(*AMl t!^?KY-22v>{v^&yL3RS42Ya052iEn!3SOO+k+lSsXr8WqF6*2UngGcE#qIzA diff --git a/Resources/Textures/Structures/Power/substation.rsi/substation_wall_static.png b/Resources/Textures/Structures/Power/substation.rsi/substation_wall_static.png index e810e6a5a4a1f05b179ffa3ce073d8b35b632e6d..f4cc933b4a505d373702a5af5eb4eac868e92d88 100644 GIT binary patch delta 300 zcmV+{0n`5A3)2FSFn<9JNkl1up9W7SR<^YvEWnrRommZ;B9X{{=OH9WYrPAJYno5kd?!%d*Kl!3_WuMS)Uk@f&L`RaMRI-_(Foihn%M0Z5W$u-A1R0Cin2 z<`^|_&HY+y&la%OUe^HZ@Aur@!b%Q!UY_J);K$eZdJcF#Uysk5?Qy-??sZiMP7BSg z@8W27skG#s?nJ7WxO+s+0FArAk8 yOJ_lvra0$D^(96xq?AFE?h>XNh(schKj#N`LZQP8e1RAM0000XQ2>tmIipR1RclAn~SSCLx) z)@4&+1!U%?mLw`v zE(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdw zuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT`K2YcN=hJ$-~i&zlw`O)1*JtfU|Uj> z^;2_Fb5rw5iuDck4E3?;E6GelxG=968XUlY(Fe%@wHaX5=2=jZYyu1^*9xF}p#B3o zG#PAfaY>3kk^+4r0|N_P10!7{OMSTifX=r`NwzA8(5=(PRlD1c~)z@`CN5M4t+Mt(^?Fhvz*CVS?Uq!twv0aF*)J|n1g zxK*H=g|Is`FSEoBW&oNnk}jm!v2rXbDbFv;4gtpmaxmgl1T_c}q)2HLk^#WM56l5} zTsHdf++@e)wNr)_m~G#Cx;TbJaJ~&W=*1K$VtZL+$`z#&W!+O56E7@dGXKn~^eCU@ z(K7zbM2^}P>COurx6V3gt~HzHaZ726+13>+HEQ>kzkbQ%t7a^m`|Qx;xM%mO&pkXd zoAJ*F*&pfbA_wQ6ei~sSRjRTyZoTqcKjA*%2G5NlT2mLSTJ_d0nWyWM@xB|S!YU3- zIWKP?xN<(FBKgMUvL`##Zz?fxYhBstc_u@<;@a$Ho4q?ZzFlZ8yry=^YpIi^Socn` zMA3qOZTF-;R1|m~P|_A=*!|vd=JWL(-#4;UIO^u;9GG>Auh58{^drW~v4+ z3|L?^)$62t-{!RpNzW%V_Hy(@aW{TVRWeu=K4q`Mw60uMiLKk-Ocq;QrfYifbB$fU z-|}W3HRCzO5s~^2#XS;ijaq_5-#N7G{`j&fgX2?yh0UD8z}oVL_nv;Y9g%--r+uuL)7EuV>BsrB3�slRc+-sMO6h ke*a_Z`vx#Ppuuj(uuE|MhnTxx_kl`RPgg&ebxsLQ08&vLBme*a From 32e1d1a3b5bac3b81ad4f580d1001459ed7e2556 Mon Sep 17 00:00:00 2001 From: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Date: Sun, 16 Jun 2024 04:20:54 -0700 Subject: [PATCH 13/26] Use EntityQuery for mob state system resolves (#29021) --- .../Systems/MobStateSystem.StateMachine.cs | 7 ++++--- Content.Shared/Mobs/Systems/MobStateSystem.cs | 18 ++++++++---------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs index 2fa522dea59..5928b3871ff 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.StateMachine.cs @@ -16,7 +16,8 @@ public partial class MobStateSystem /// If the entity can be set to that MobState public bool HasState(EntityUid entity, MobState mobState, MobStateComponent? component = null) { - return Resolve(entity, ref component, false) && component.AllowedStates.Contains(mobState); + return _mobStateQuery.Resolve(entity, ref component, false) && + component.AllowedStates.Contains(mobState); } /// @@ -27,7 +28,7 @@ public bool HasState(EntityUid entity, MobState mobState, MobStateComponent? com /// Entity that caused the state update (if applicable) public void UpdateMobState(EntityUid entity, MobStateComponent? component = null, EntityUid? origin = null) { - if (!Resolve(entity, ref component)) + if (!_mobStateQuery.Resolve(entity, ref component)) return; var ev = new UpdateMobStateEvent {Target = entity, Component = component, Origin = origin}; @@ -46,7 +47,7 @@ public void UpdateMobState(EntityUid entity, MobStateComponent? component = null public void ChangeMobState(EntityUid entity, MobState mobState, MobStateComponent? component = null, EntityUid? origin = null) { - if (!Resolve(entity, ref component)) + if (!_mobStateQuery.Resolve(entity, ref component)) return; ChangeState(entity, component, mobState, origin: origin); diff --git a/Content.Shared/Mobs/Systems/MobStateSystem.cs b/Content.Shared/Mobs/Systems/MobStateSystem.cs index a3886dd42e1..323efa22428 100644 --- a/Content.Shared/Mobs/Systems/MobStateSystem.cs +++ b/Content.Shared/Mobs/Systems/MobStateSystem.cs @@ -2,7 +2,6 @@ using Content.Shared.Administration.Logs; using Content.Shared.Mobs.Components; using Content.Shared.Standing; -using Robust.Shared.GameStates; using Robust.Shared.Physics.Systems; using Robust.Shared.Timing; @@ -20,9 +19,12 @@ public partial class MobStateSystem : EntitySystem [Dependency] private readonly IGameTiming _timing = default!; private ISawmill _sawmill = default!; + private EntityQuery _mobStateQuery; + public override void Initialize() { _sawmill = _logManager.GetSawmill("MobState"); + _mobStateQuery = GetEntityQuery(); base.Initialize(); SubscribeEvents(); } @@ -37,7 +39,7 @@ public override void Initialize() /// If the entity is alive public bool IsAlive(EntityUid target, MobStateComponent? component = null) { - if (!Resolve(target, ref component, false)) + if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState == MobState.Alive; } @@ -50,7 +52,7 @@ public bool IsAlive(EntityUid target, MobStateComponent? component = null) /// If the entity is Critical public bool IsCritical(EntityUid target, MobStateComponent? component = null) { - if (!Resolve(target, ref component, false)) + if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState == MobState.Critical; } @@ -63,7 +65,7 @@ public bool IsCritical(EntityUid target, MobStateComponent? component = null) /// If the entity is Dead public bool IsDead(EntityUid target, MobStateComponent? component = null) { - if (!Resolve(target, ref component, false)) + if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState == MobState.Dead; } @@ -76,7 +78,7 @@ public bool IsDead(EntityUid target, MobStateComponent? component = null) /// If the entity is Critical or Dead public bool IsIncapacitated(EntityUid target, MobStateComponent? component = null) { - if (!Resolve(target, ref component, false)) + if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState is MobState.Critical or MobState.Dead; } @@ -89,14 +91,10 @@ public bool IsIncapacitated(EntityUid target, MobStateComponent? component = nul /// If the entity is in an Invalid State public bool IsInvalidState(EntityUid target, MobStateComponent? component = null) { - if (!Resolve(target, ref component, false)) + if (!_mobStateQuery.Resolve(target, ref component, false)) return false; return component.CurrentState is MobState.Invalid; } #endregion - - #region Private Implementation - - #endregion } From 4954b6d79e194a4dd8b7f2d9942fa707e259493d Mon Sep 17 00:00:00 2001 From: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Date: Sun, 16 Jun 2024 04:21:16 -0700 Subject: [PATCH 14/26] Add cvar to disable ghosting killing your crit mob (#28945) * Add cvar to disable ghosting killing your crit mob * Update Content.Shared/CCVar/CCVars.cs Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> --- Content.Server/GameTicking/GameTicker.GamePreset.cs | 4 +++- Content.Shared/CCVar/CCVars.cs | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/GameTicker.GamePreset.cs index fffacb59dee..6e297789528 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/GameTicker.GamePreset.cs @@ -251,7 +251,9 @@ public bool OnGhostAttempt(EntityUid mindId, bool canReturnGlobal, bool viaComma // (If the mob survives, that's a bug. Ghosting is kept regardless.) var canReturn = canReturnGlobal && _mind.IsCharacterDeadPhysically(mind); - if (canReturnGlobal && TryComp(playerEntity, out MobStateComponent? mobState)) + if (_configurationManager.GetCVar(CCVars.GhostKillCrit) && + canReturnGlobal && + TryComp(playerEntity, out MobStateComponent? mobState)) { if (_mobState.IsCritical(playerEntity.Value, mobState)) { diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 886ace654db..7cc1b341a97 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1948,6 +1948,12 @@ public static readonly CVarDef public static readonly CVarDef GhostRoleTime = CVarDef.Create("ghost.role_time", 3f, CVar.REPLICATED | CVar.SERVER); + /// + /// Whether or not to kill the player's mob on ghosting, when it is in a critical health state. + /// + public static readonly CVarDef GhostKillCrit = + CVarDef.Create("ghost.kill_crit", true, CVar.REPLICATED | CVar.SERVER); + /* * Fire alarm */ From f730d120c72e26e39f4e776622c6e29a676330f6 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 16 Jun 2024 11:26:59 +0000 Subject: [PATCH 15/26] give spiders unique venom reagent (#29066) * add mechanotoxin * make tarantulas use mechanotoxin * trolled --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Locale/en-US/reagents/meta/toxins.ftl | 3 ++ .../Prototypes/Entities/Mobs/NPCs/animals.yml | 2 +- Resources/Prototypes/Reagents/toxins.yml | 43 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/reagents/meta/toxins.ftl b/Resources/Locale/en-US/reagents/meta/toxins.ftl index 09b135e7f54..85dd9a3b6fb 100644 --- a/Resources/Locale/en-US/reagents/meta/toxins.ftl +++ b/Resources/Locale/en-US/reagents/meta/toxins.ftl @@ -78,3 +78,6 @@ reagent-desc-tazinide = A highly dangerous metallic mixture which can interfere reagent-name-lipolicide = lipolicide reagent-desc-lipolicide = A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body. + +reagent-name-mechanotoxin = mechanotoxin +reagent-desc-mechanotoxin = A neurotoxin used as venom by some species of spider. Degrades movement when built up. diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index f216e05cf9a..9143589dcf2 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2229,7 +2229,7 @@ solution: melee generated: reagents: - - ReagentId: Toxin + - ReagentId: Mechanotoxin Quantity: 1 - type: MeleeChemicalInjector transferAmount: 0.75 diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 9665de7b099..7f4ebc1a751 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -662,3 +662,46 @@ Poison: 2 - !type:SatiateHunger factor: -6 + +# inspired by the spider neurotoxin GsMtx-4 +# poisons non-spiders and slows you down at high doses +- type: reagent + id: Mechanotoxin + name: reagent-name-mechanotoxin + group: Toxins + desc: reagent-desc-mechanotoxin + flavor: sweet + color: "#00b408" + physicalDesc: reagent-physical-desc-nondescript + metabolisms: + Poison: + metabolismRate: 0.2 # Slower metabolism so it can build up over time for slowdown + effects: + - !type:HealthChange + conditions: + - !type:OrganType + type: Arachnid + shouldHave: false + damage: + types: + Poison: 1.6 + - !type:MovespeedModifier + conditions: + - !type:ReagentThreshold + reagent: Mechanotoxin + min: 2 + - !type:OrganType + type: Arachnid + shouldHave: false + walkSpeedModifier: 0.8 + sprintSpeedModifier: 0.8 + - !type:MovespeedModifier + conditions: + - !type:ReagentThreshold + reagent: Mechanotoxin + min: 4 + - !type:OrganType + type: Arachnid + shouldHave: false + walkSpeedModifier: 0.4 + sprintSpeedModifier: 0.4 From 26f809aebf10d6e2139061c4332caa9ffa76d878 Mon Sep 17 00:00:00 2001 From: Cojoke <83733158+Cojoke-dot@users.noreply.github.com> Date: Sun, 16 Jun 2024 06:27:35 -0500 Subject: [PATCH 16/26] Instruments for Musician lodouts (#29059) * Musician Instruments to Musician lodouts * Move instruments to their own file, fix instruments spawning on the floor, Found bug of Loadout dropping items on the floor rather than sorting inventory * Whoops, I removed bagpipes for some reason --- .../en-US/preferences/loadout-groups.ftl | 1 + .../Loadouts/Jobs/Civilian/musician.yml | 2 +- .../Loadouts/Miscellaneous/instruments.yml | 280 ++++++++++++++++++ .../Prototypes/Loadouts/loadout_groups.yml | 35 +++ .../Prototypes/Loadouts/role_loadouts.yml | 1 + .../Roles/Jobs/Civilian/musician.yml | 2 - 6 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 Resources/Prototypes/Loadouts/Miscellaneous/instruments.yml diff --git a/Resources/Locale/en-US/preferences/loadout-groups.ftl b/Resources/Locale/en-US/preferences/loadout-groups.ftl index 28863268dfc..a107ee24f84 100644 --- a/Resources/Locale/en-US/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/preferences/loadout-groups.ftl @@ -2,6 +2,7 @@ loadout-group-trinkets = Trinkets loadout-group-glasses = Glasses loadout-group-backpack = Backpack +loadout-group-instruments = Instruments # Command loadout-group-captain-head = Captain head diff --git a/Resources/Prototypes/Loadouts/Jobs/Civilian/musician.yml b/Resources/Prototypes/Loadouts/Jobs/Civilian/musician.yml index c26da03628e..486ff25d47c 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Civilian/musician.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Civilian/musician.yml @@ -6,4 +6,4 @@ - type: startingGear id: MusicianWintercoat equipment: - outerClothing: ClothingOuterWinterMusician \ No newline at end of file + outerClothing: ClothingOuterWinterMusician diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/instruments.yml b/Resources/Prototypes/Loadouts/Miscellaneous/instruments.yml new file mode 100644 index 00000000000..5b7e46151fe --- /dev/null +++ b/Resources/Prototypes/Loadouts/Miscellaneous/instruments.yml @@ -0,0 +1,280 @@ +# Instruments +- type: loadout + id: Glockenspiel + equipment: Glockenspiel + +- type: startingGear + id: Glockenspiel + storage: + back: + - GlockenspielInstrument + +- type: loadout + id: MusicBox + equipment: MusicBox + +- type: startingGear + id: MusicBox + storage: + back: + - MusicBoxInstrument + +- type: loadout + id: Xylophone + equipment: Xylophone + +- type: startingGear + id: Xylophone + storage: + back: + - XylophoneInstrument + +- type: loadout + id: Microphone + equipment: Microphone + +- type: startingGear + id: Microphone + storage: + back: + - MicrophoneInstrument + +- type: loadout + id: Synthesizer + equipment: Synthesizer + +- type: startingGear + id: Synthesizer + storage: + back: + - SynthesizerInstrument + +- type: loadout + id: Kalimba + equipment: Kalimba + +- type: startingGear + id: Kalimba + storage: + back: + - KalimbaInstrument + +- type: loadout + id: Woodblock + equipment: Woodblock + +- type: startingGear + id: Woodblock + storage: + back: + - WoodblockInstrument + +- type: loadout + id: ElectricGuitar + equipment: ElectricGuitar + +- type: startingGear + id: ElectricGuitar + storage: + back: + - ElectricGuitarInstrument + +- type: loadout + id: BassGuitar + equipment: BassGuitar + +- type: startingGear + id: BassGuitar + storage: + back: + - BassGuitarInstrument + +- type: loadout + id: RockGuitar + equipment: RockGuitar + +- type: startingGear + id: RockGuitar + storage: + back: + - RockGuitarInstrument + +- type: loadout + id: AcousticGuitar + equipment: AcousticGuitar + +- type: startingGear + id: AcousticGuitar + storage: + back: + - AcousticGuitarInstrument + +- type: loadout + id: Banjo + equipment: Banjo + +- type: startingGear + id: Banjo + storage: + back: + - BanjoInstrument + +- type: loadout + id: Violin + equipment: Violin + +- type: startingGear + id: Violin + storage: + back: + - ViolinInstrument + +- type: loadout + id: Viola + equipment: Viola + +- type: startingGear + id: Viola + storage: + back: + - ViolaInstrument + +- type: loadout + id: Cello + equipment: Cello + +- type: startingGear + id: Cello + storage: + back: + - CelloInstrument + +- type: loadout + id: Trumpet + equipment: Trumpet + +- type: startingGear + id: Trumpet + storage: + back: + - TrumpetInstrument + +- type: loadout + id: Trombone + equipment: Trombone + +- type: startingGear + id: Trombone + storage: + back: + - TromboneInstrument + +- type: loadout + id: FrenchHorn + equipment: FrenchHorn + +- type: startingGear + id: FrenchHorn + storage: + back: + - FrenchHornInstrument + +- type: loadout + id: Euphonium + equipment: Euphonium + +- type: startingGear + id: Euphonium + storage: + back: + - EuphoniumInstrument + +- type: loadout + id: Saxophone + equipment: Saxophone + +- type: startingGear + id: Saxophone + storage: + back: + - SaxophoneInstrument + +- type: loadout + id: Accordion + equipment: Accordion + +- type: startingGear + id: Accordion + storage: + back: + - AccordionInstrument + +- type: loadout + id: Harmonica + equipment: Harmonica + +- type: startingGear + id: Harmonica + storage: + back: + - HarmonicaInstrument + +- type: loadout + id: Clarinet + equipment: Clarinet + +- type: startingGear + id: Clarinet + storage: + back: + - ClarinetInstrument + +- type: loadout + id: Flute + equipment: Flute + +- type: startingGear + id: Flute + storage: + back: + - FluteInstrument + +- type: loadout + id: Recorder + equipment: Recorder + +- type: startingGear + id: Recorder + storage: + back: + - RecorderInstrument + +- type: loadout + id: PanFlute + equipment: PanFlute + +- type: startingGear + id: PanFlute + storage: + back: + - PanFluteInstrument + +- type: loadout + id: Ocarina + equipment: Ocarina + +- type: startingGear + id: Ocarina + storage: + back: + - OcarinaInstrument + +- type: loadout + id: Bagpipe + equipment: Bagpipe + +- type: startingGear + id: Bagpipe + storage: + back: + - BagpipeInstrument diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index 0fab367fc90..cc0aefb69c1 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -436,6 +436,41 @@ loadouts: - MusicianWintercoat +- type: loadoutGroup + id: Instruments + name: loadout-group-instruments + minLimit: 0 + maxLimit: 2 + loadouts: + - Glockenspiel + - MusicBox + - Xylophone + - Microphone + - Synthesizer + - Kalimba + - Woodblock + - ElectricGuitar + - BassGuitar + - RockGuitar + - AcousticGuitar + - Banjo + - Violin + - Viola + - Cello + - Trumpet + - Trombone + - FrenchHorn + - Euphonium + - Saxophone + - Accordion + - Harmonica + - Clarinet + - Flute + - Recorder + - PanFlute + - Ocarina + - Bagpipe + # Cargo - type: loadoutGroup id: QuartermasterHead diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml index 4ff2775dfc1..0e80113ce3f 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/role_loadouts.yml @@ -141,6 +141,7 @@ - MusicianOuterClothing - Glasses - Trinkets + - Instruments # Cargo - type: roleLoadout diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml index 4b508c907d7..58335ba52dd 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml @@ -25,5 +25,3 @@ storage: back: - BoxSurvival - - AcousticGuitarInstrument - - SaxophoneInstrument \ No newline at end of file From ac979640bf0040c21b27cf3989773917edd21e1a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 11:28:41 +0000 Subject: [PATCH 17/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8ceaead4355..8973caeea50 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,20 +1,4 @@ Entries: -- author: Plykiya - changes: - - message: Hyposprays can now be toggled to draw from solution containers like jugs - and beakers. - type: Tweak - id: 6257 - time: '2024-03-30T03:59:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25544 -- author: EdenTheLiznerd - changes: - - message: Amanita toxin now kills you slightly slower, providing you time to seek - charcoal before it's too late - type: Tweak - id: 6258 - time: '2024-03-30T04:00:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25830 - author: liltenhead changes: - message: Changed the syndicate hardbomb to have less of a chance to completely @@ -3860,3 +3844,17 @@ id: 6756 time: '2024-06-16T03:38:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29034 +- author: deltanedas + changes: + - message: Tarantulas now use Mechanotoxin, a venom that slows you down over time. + type: Tweak + id: 6757 + time: '2024-06-16T11:26:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29066 +- author: Cojoke-dot + changes: + - message: Musicians can now select instruments in their loadout + type: Add + id: 6758 + time: '2024-06-16T11:27:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29059 From f121946b123a7b9f23a9e262d2a6362e774fa0cb Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Sun, 16 Jun 2024 23:30:35 +1200 Subject: [PATCH 18/26] Fix RotateWhilePulling not working (#29032) --- .../Movement/Components/PullMoverComponent.cs | 13 -------- .../Movement/Systems/PullController.cs | 30 +++++-------------- .../Components/ActivePullerComponent.cs | 7 +++++ .../Pulling/Components/PullerComponent.cs | 2 +- .../Movement/Pulling/Systems/PullingSystem.cs | 13 ++++++++ 5 files changed, 29 insertions(+), 36 deletions(-) delete mode 100644 Content.Server/Movement/Components/PullMoverComponent.cs create mode 100644 Content.Shared/Movement/Pulling/Components/ActivePullerComponent.cs diff --git a/Content.Server/Movement/Components/PullMoverComponent.cs b/Content.Server/Movement/Components/PullMoverComponent.cs deleted file mode 100644 index 19a01c6b17d..00000000000 --- a/Content.Server/Movement/Components/PullMoverComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Content.Server.Movement.Components; - -/// -/// Added to an entity that is ctrl-click moving their pulled object. -/// -/// -/// This just exists so we don't have MoveEvent subs going off for every single mob constantly. -/// -[RegisterComponent] -public sealed partial class PullMoverComponent : Component -{ - -} diff --git a/Content.Server/Movement/Systems/PullController.cs b/Content.Server/Movement/Systems/PullController.cs index 72110ff67d2..f227d9c55cd 100644 --- a/Content.Server/Movement/Systems/PullController.cs +++ b/Content.Server/Movement/Systems/PullController.cs @@ -18,6 +18,7 @@ using Robust.Shared.Physics.Dynamics.Joints; using Robust.Shared.Player; using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Server.Movement.Systems; @@ -91,7 +92,7 @@ public override void Initialize() UpdatesAfter.Add(typeof(MoverController)); SubscribeLocalEvent(OnPullStop); - SubscribeLocalEvent(OnPullerMove); + SubscribeLocalEvent(OnPullerMove); base.Initialize(); } @@ -155,19 +156,22 @@ private bool OnRequestMovePulledObject(ICommonSession? session, EntityCoordinate coords = fromUserCoords.WithEntityId(coords.EntityId); } - EnsureComp(player); var moving = EnsureComp(pulled!.Value); moving.MovingTo = coords; return false; } - private void OnPullerMove(EntityUid uid, PullMoverComponent component, ref MoveEvent args) + private void OnPullerMove(EntityUid uid, ActivePullerComponent component, ref MoveEvent args) { if (!_pullerQuery.TryComp(uid, out var puller)) return; if (puller.Pulling is not { } pullable) + { + DebugTools.Assert($"Failed to clean up puller: {ToPrettyString(uid)}"); + RemCompDeferred(uid, component); return; + } UpdatePulledRotation(uid, pullable); @@ -182,13 +186,7 @@ private void OnPullerMove(EntityUid uid, PullMoverComponent component, ref MoveE if (_physicsQuery.TryComp(uid, out var physics)) PhysicsSystem.WakeBody(uid, body: physics); - StopMove(uid, pullable); - } - - private void StopMove(Entity mover, Entity moving) - { - RemCompDeferred(mover.Owner); - RemCompDeferred(moving.Owner); + RemCompDeferred(pullable); } private void UpdatePulledRotation(EntityUid puller, EntityUid pulled) @@ -302,17 +300,5 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) PhysicsSystem.ApplyLinearImpulse(puller, -impulse); } } - - // Cleanup PullMover - var moverQuery = EntityQueryEnumerator(); - - while (moverQuery.MoveNext(out var uid, out _, out var puller)) - { - if (!HasComp(puller.Pulling)) - { - RemCompDeferred(uid); - continue; - } - } } } diff --git a/Content.Shared/Movement/Pulling/Components/ActivePullerComponent.cs b/Content.Shared/Movement/Pulling/Components/ActivePullerComponent.cs new file mode 100644 index 00000000000..83bfd9f7954 --- /dev/null +++ b/Content.Shared/Movement/Pulling/Components/ActivePullerComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Movement.Pulling.Components; + +/// +/// Component that indicates that an entity is currently pulling some other entity. +/// +[RegisterComponent] +public sealed partial class ActivePullerComponent : Component; diff --git a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs index f47ae32f90b..32e4d9b1f31 100644 --- a/Content.Shared/Movement/Pulling/Components/PullerComponent.cs +++ b/Content.Shared/Movement/Pulling/Components/PullerComponent.cs @@ -9,7 +9,7 @@ namespace Content.Shared.Movement.Pulling.Components; /// /// Specifies an entity as being able to pull another entity with /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] [Access(typeof(PullingSystem))] public sealed partial class PullerComponent : Component { diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index 161868370ea..72b87476bb0 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -61,6 +61,7 @@ public override void Initialize() SubscribeLocalEvent(OnPullableContainerInsert); SubscribeLocalEvent(OnModifyUncuffDuration); + SubscribeLocalEvent(OnAfterState); SubscribeLocalEvent(OnPullerContainerInsert); SubscribeLocalEvent(OnPullerUnpaused); SubscribeLocalEvent(OnVirtualItemDeleted); @@ -72,6 +73,14 @@ public override void Initialize() .Register(); } + private void OnAfterState(Entity ent, ref AfterAutoHandleStateEvent args) + { + if (ent.Comp.Pulling == null) + RemComp(ent.Owner); + else + EnsureComp(ent.Owner); + } + private void OnDropHandItems(EntityUid uid, PullerComponent pullerComp, DropHandItemsEvent args) { if (pullerComp.Pulling == null || pullerComp.NeedsHands) @@ -228,6 +237,9 @@ private void StopPulling(EntityUid pullableUid, PullableComponent pullableComp) } var oldPuller = pullableComp.Puller; + if (oldPuller != null) + RemComp(oldPuller.Value); + pullableComp.PullJointId = null; pullableComp.Puller = null; Dirty(pullableUid, pullableComp); @@ -410,6 +422,7 @@ public bool TryStartPull(EntityUid pullerUid, EntityUid pullableUid, // Use net entity so it's consistent across client and server. pullableComp.PullJointId = $"pull-joint-{GetNetEntity(pullableUid)}"; + EnsureComp(pullerUid); pullerComp.Pulling = pullableUid; pullableComp.Puller = pullerUid; From 22efc2b4ac3f05c6295497fabb36b8b25b05b6b0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 11:31:41 +0000 Subject: [PATCH 19/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8973caeea50..0f2ad78a7a6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: liltenhead - changes: - - message: Changed the syndicate hardbomb to have less of a chance to completely - destroy tiles. - type: Tweak - id: 6259 - time: '2024-03-30T04:36:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/26548 - author: takemysoult changes: - message: stimulants removes chloral hydrate from body @@ -3858,3 +3850,11 @@ id: 6758 time: '2024-06-16T11:27:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29059 +- author: ElectroJr + changes: + - message: Fixed pianos, office chairs & other objects not rotating while being + pulled. + type: Fix + id: 6759 + time: '2024-06-16T11:30:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29032 From 1cb9f5dbed80fdf4087f855050b436cc448fb427 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Sun, 16 Jun 2024 11:57:57 +0000 Subject: [PATCH 20/26] add carp hardsuit for traitors (#25155) * FactionClothing * swtich carp to the Dragon faction * add carp hardsuit * add carp hardsuit to uplink * fixes * webedit ops 1 * why did i name it that wtf * among --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Components/FactionClothingComponent.cs | 27 ++++++++++++ .../EntitySystems/FactionClothingSystem.cs | 42 +++++++++++++++++++ .../Locale/en-US/store/uplink-catalog.ftl | 3 ++ .../Prototypes/Catalog/uplink_catalog.yml | 11 +++++ .../Entities/Clothing/Head/hoods.yml | 16 +++++++ .../Entities/Clothing/OuterClothing/suits.yml | 13 ++++++ .../Prototypes/Entities/Mobs/NPCs/carp.yml | 2 +- 7 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Clothing/Components/FactionClothingComponent.cs create mode 100644 Content.Shared/Clothing/EntitySystems/FactionClothingSystem.cs diff --git a/Content.Shared/Clothing/Components/FactionClothingComponent.cs b/Content.Shared/Clothing/Components/FactionClothingComponent.cs new file mode 100644 index 00000000000..d49ee4f81d6 --- /dev/null +++ b/Content.Shared/Clothing/Components/FactionClothingComponent.cs @@ -0,0 +1,27 @@ +using Content.Shared.Clothing.EntitySystems; +using Content.Shared.NPC.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Clothing.Components; + +/// +/// When equipped, adds the wearer to a faction. +/// When removed, removes the wearer from a faction. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(FactionClothingSystem))] +public sealed partial class FactionClothingComponent : Component +{ + /// + /// Faction to add and remove. + /// + [DataField(required: true)] + public ProtoId Faction = string.Empty; + + /// + /// If true, the wearer was already part of the faction. + /// This prevents wrongly removing them after removing the item. + /// + [DataField] + public bool AlreadyMember; +} diff --git a/Content.Shared/Clothing/EntitySystems/FactionClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/FactionClothingSystem.cs new file mode 100644 index 00000000000..76b7b9aa66d --- /dev/null +++ b/Content.Shared/Clothing/EntitySystems/FactionClothingSystem.cs @@ -0,0 +1,42 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Inventory.Events; +using Content.Shared.NPC.Components; +using Content.Shared.NPC.Systems; + +namespace Content.Shared.Clothing.EntitySystems; + +/// +/// Handles faction adding and removal. +/// +public sealed class FactionClothingSystem : EntitySystem +{ + [Dependency] private readonly NpcFactionSystem _faction = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnEquipped); + SubscribeLocalEvent(OnUnequipped); + } + + private void OnEquipped(Entity ent, ref GotEquippedEvent args) + { + TryComp(args.Equipee, out var factionComp); + var faction = (args.Equipee, factionComp); + ent.Comp.AlreadyMember = _faction.IsMember(faction, ent.Comp.Faction); + + _faction.AddFaction(faction, ent.Comp.Faction); + } + + private void OnUnequipped(Entity ent, ref GotUnequippedEvent args) + { + if (ent.Comp.AlreadyMember) + { + ent.Comp.AlreadyMember = false; + return; + } + + _faction.RemoveFaction(args.Equipee, ent.Comp.Faction); + } +} diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 78c094926f1..2598970cefb 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -312,6 +312,9 @@ uplink-clothing-shoes-boots-mag-syndie-desc = A pair of boots that prevent slipp uplink-eva-syndie-name = Syndicate EVA Bundle uplink-eva-syndie-desc = A simple EVA suit that offers no protection other than what's needed to survive in space. +uplink-hardsuit-carp-name = Carp Hardsuit +uplink-hardsuit-carp-desc = Looks like an ordinary carp suit, except fully spaceproof and tricks space carp into thinking you are one of them. + uplink-hardsuit-syndie-name = Syndicate Hardsuit uplink-hardsuit-syndie-desc = The Syndicate's well known armored blood red hardsuit, capable of space walks and bullet resistant. diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index d39f9003575..0ba83dfe735 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1276,6 +1276,17 @@ categories: - UplinkWearables +- type: listing + id: UplinkHardsuitCarp + name: uplink-hardsuit-carp-name + description: uplink-hardsuit-carp-desc + icon: { sprite: /Textures/Clothing/OuterClothing/Suits/carpsuit.rsi, state: icon } + productEntity: ClothingOuterHardsuitCarp + cost: + Telecrystal: 4 + categories: + - UplinkWearables + - type: listing id: UplinkHardsuitSyndie name: uplink-hardsuit-syndie-name diff --git a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml index b62834dd98e..db187069123 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml @@ -206,6 +206,22 @@ slots: - Hair +- type: entity + parent: ClothingHeadHatHoodCarp + id: ClothingHeadHelmetHardsuitCarp + noSpawn: true + components: + - type: PressureProtection + highPressureMultiplier: 0.6 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + coefficient: 0.2 + - type: BreathMask + # this is on the hood so you only fool the fish if you wear the whole set + # wear carp suit and security helmet, they'll know you are fake + - type: FactionClothing + faction: Dragon + - type: entity parent: ClothingHeadBase id: ClothingHeadHatHoodMoth diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index ccf6f09b194..79c116b3cad 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -257,3 +257,16 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} + +- type: entity + parent: ClothingOuterSuitCarp + id: ClothingOuterHardsuitCarp + suffix: Hardsuit, DO NOT MAP + components: + - type: PressureProtection + highPressureMultiplier: 0.6 + lowPressureMultiplier: 1000 + - type: TemperatureProtection + coefficient: 0.01 + - type: ToggleableClothing + clothingPrototype: ClothingHeadHelmetHardsuitCarp diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 3a77dbab4c9..10bc7861fac 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -15,7 +15,7 @@ true - type: NpcFactionMember factions: - - SimpleHostile + - Dragon - type: Sprite drawdepth: Mobs sprite: Mobs/Aliens/Carps/space.rsi From c9540db6b48f45e4623d15467a6e2705b18e36e2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 16 Jun 2024 11:59:03 +0000 Subject: [PATCH 21/26] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0f2ad78a7a6..b3d8fff8131 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: takemysoult - changes: - - message: stimulants removes chloral hydrate from body - type: Tweak - id: 6260 - time: '2024-03-30T06:52:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25886 - author: Flareguy changes: - message: Removed SCAF armor. @@ -3858,3 +3851,11 @@ id: 6759 time: '2024-06-16T11:30:36.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/29032 +- author: deltanedas + changes: + - message: Added the Carp Hardsuit to the uplink which is spaceproof and makes carp + think you are one of them. + type: Add + id: 6760 + time: '2024-06-16T11:57:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25155 From 14cd55e765ff7584d72079500660bf491aa70fba Mon Sep 17 00:00:00 2001 From: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com> Date: Mon, 17 Jun 2024 03:46:59 +1200 Subject: [PATCH 22/26] Remove ServerAlertsComponentTests (#29027) --- .../Alert/ServerAlertsComponentTests.cs | 83 ------------------- 1 file changed, 83 deletions(-) delete mode 100644 Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs diff --git a/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs b/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs deleted file mode 100644 index bcc32e13dee..00000000000 --- a/Content.Tests/Shared/Alert/ServerAlertsComponentTests.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System.IO; -using Content.Server.Alert; -using Content.Shared.Alert; -using NUnit.Framework; -using Robust.Shared.GameObjects; -using Robust.Shared.GameStates; -using Robust.Shared.IoC; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.Manager; - -namespace Content.Tests.Shared.Alert -{ - [TestFixture] - [TestOf(typeof(AlertsComponent))] - public sealed class ServerAlertsComponentTests : ContentUnitTest - { - const string PROTOTYPES = @" -- type: alertCategory - id: Pressure - -- type: alert - id: LowPressure - category: Pressure - icon: /Textures/Interface/Alerts/Pressure/lowpressure.png - -- type: alert - id: HighPressure - category: Pressure - icon: /Textures/Interface/Alerts/Pressure/highpressure.png -"; - - [Test] - [Ignore("There is no way to load extra Systems in a unit test, fixing RobustUnitTest is out of scope.")] - public void ShowAlerts() - { - // this is kind of unnecessary because there's integration test coverage of Alert components - // but wanted to keep it anyway to see what's possible w.r.t. testing components - // in a unit test - - var entManager = IoCManager.Resolve(); - IoCManager.Resolve().Initialize(); - var prototypeManager = IoCManager.Resolve(); - prototypeManager.Initialize(); - var factory = IoCManager.Resolve(); - factory.RegisterClass(); - prototypeManager.LoadFromStream(new StringReader(PROTOTYPES)); - prototypeManager.ResolveResults(); - - var entSys = entManager.EntitySysManager; - entSys.LoadExtraSystemType(); - - var alertsComponent = new AlertsComponent(); - alertsComponent = IoCManager.InjectDependencies(alertsComponent); - - Assert.That(entManager.System().TryGet("LowPressure", out var lowpressure)); - Assert.That(entManager.System().TryGet("HighPressure", out var highpressure)); - - entManager.System().ShowAlert(alertsComponent.Owner, "LowPressure"); - - var getty = new ComponentGetState(); - entManager.EventBus.RaiseComponentEvent(alertsComponent, getty); - - var alertState = (AlertsComponent.AlertsComponent_AutoState) getty.State!; - Assert.That(alertState, Is.Not.Null); - Assert.That(alertState.Alerts.Count, Is.EqualTo(1)); - Assert.That(alertState.Alerts.ContainsKey(lowpressure!.AlertKey)); - - entManager.System().ShowAlert(alertsComponent.Owner, "HighPressure"); - - // Lazy - entManager.EventBus.RaiseComponentEvent(alertsComponent, getty); - alertState = (AlertsComponent.AlertsComponent_AutoState) getty.State!; - Assert.That(alertState.Alerts.Count, Is.EqualTo(1)); - Assert.That(alertState.Alerts.ContainsKey(highpressure!.AlertKey)); - - entManager.System().ClearAlertCategory(alertsComponent.Owner, "Pressure"); - - entManager.EventBus.RaiseComponentEvent(alertsComponent, getty); - alertState = (AlertsComponent.AlertsComponent_AutoState) getty.State!; - Assert.That(alertState.Alerts.Count, Is.EqualTo(0)); - } - } -} From 6829630d0c7698d0d8adf1fdb55728164d309341 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 17 Jun 2024 01:51:08 +1000 Subject: [PATCH 23/26] Update submodule to 226.0.0 (#29100) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 2fa83181e2f..a3a8912f428 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 2fa83181e2f4472120fe280f4598197f436faf22 +Subproject commit a3a8912f4280efe701958fcd00079fffcfc4efee From 73eced29c9cbb67b780ccd9e80efd51e6736086b Mon Sep 17 00:00:00 2001 From: VigersRay Date: Sun, 16 Jun 2024 21:44:43 +0300 Subject: [PATCH 24/26] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D1=83?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20=D0=B1=D0=B5=D0=BB=D1=8C=D0=B5?= =?UTF-8?q?=20=D1=81=20=D0=BB=D0=BE=D0=B0=D0=B4=D0=B0=D1=83=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Preferences/Loadouts/RoleLoadout.cs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Content.Shared/Preferences/Loadouts/RoleLoadout.cs b/Content.Shared/Preferences/Loadouts/RoleLoadout.cs index 687eb49a28e..0361b52e667 100644 --- a/Content.Shared/Preferences/Loadouts/RoleLoadout.cs +++ b/Content.Shared/Preferences/Loadouts/RoleLoadout.cs @@ -126,25 +126,35 @@ public void EnsureValid(HumanoidCharacterProfile profile, ICommonSession session // If you put invalid ones first but that's your fault for not using sensible defaults if (loadouts.Count < groupProto.MinLimit) { - for (var i = 0; i < Math.Min(groupProto.MinLimit, groupProto.Loadouts.Count); i++) + var validLoadoutsCount = 0; + var j = 0; + + // Loop while we need more valid loadouts and we haven't exhausted the list of loadouts + while (validLoadoutsCount < groupProto.MinLimit && j < groupProto.Loadouts.Count) { - if (!protoManager.TryIndex(groupProto.Loadouts[i], out var loadoutProto)) + if (!protoManager.TryIndex(groupProto.Loadouts[j], out var loadoutProto)) + { + j++; continue; + } var defaultLoadout = new Loadout() { Prototype = loadoutProto.ID, }; - if (loadouts.Contains(defaultLoadout)) - continue; - // Not valid so don't default to it anyway. - if (!IsValid(profile, session, defaultLoadout.Prototype, collection, sponsorPrototypes, out _)) // Sunrise-Sponsors + if (!IsValid(profile, session, defaultLoadout.Prototype, collection, sponsorPrototypes, out _)) + { + j++; // Move to the next loadout continue; + } loadouts.Add(defaultLoadout); Apply(loadoutProto); + + validLoadoutsCount++; + j++; } } From aa8e68485efd29d30d3cf4d4ffc21665a7a690d8 Mon Sep 17 00:00:00 2001 From: VigersRay Date: Sun, 16 Jun 2024 21:45:02 +0300 Subject: [PATCH 25/26] =?UTF-8?q?=D0=9F=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F?= =?UTF-8?q?=D0=BB=20=D0=BE=D0=B4=D0=B5=D0=B6=D0=B4=D1=83=20=D0=BE=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20=D0=A6=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_sunrise/preferences/loadout-groups.ftl | 3 + .../Jobs/CentComm/centcom_operator.yml | 65 +++++++++++++++++++ .../_Sunrise/Loadouts/loadout_groups.yml | 16 +++++ .../_Sunrise/Loadouts/role_loadouts.yml | 3 +- .../Jobs/CentralCommand/centcom_official.yml | 7 +- .../Jobs/CentralCommand/centcom_operator.yml | 15 +++-- 6 files changed, 99 insertions(+), 10 deletions(-) create mode 100644 Resources/Prototypes/_Sunrise/Loadouts/Jobs/CentComm/centcom_operator.yml diff --git a/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl index 39bff18e323..f88a5f173fa 100644 --- a/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl +++ b/Resources/Locale/ru-RU/_sunrise/preferences/loadout-groups.ftl @@ -6,3 +6,6 @@ loadout-group-brigmedic-jumpsuit = Униформа бригмедика loadout-group-blueshield-backpack = Офицер «Синий Щит», рюкзак loadout-group-blueshield-jumpsuit = Офицер «Синий Щит», комбинезон loadout-group-bodycam = Бодикамера + +loadout-group-centcomm-operator-jumpsuit = Униформа ОЦК +loadout-group-centcomm-operator-head-hat = Головой убор ОЦК diff --git a/Resources/Prototypes/_Sunrise/Loadouts/Jobs/CentComm/centcom_operator.yml b/Resources/Prototypes/_Sunrise/Loadouts/Jobs/CentComm/centcom_operator.yml new file mode 100644 index 00000000000..9944eb8b06a --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Loadouts/Jobs/CentComm/centcom_operator.yml @@ -0,0 +1,65 @@ +- type: loadout + id: CentCommOfficerJumpsuit + equipment: CentCommOfficerJumpsuit + effects: + - !type:GroupLoadoutEffect + proto: MaleMoment + +- type: startingGear + id: CentCommOfficerJumpsuit + equipment: + jumpsuit: ClothingUniformJumpsuitCentcomOfficer + +- type: loadout + id: CentCommOfficerJumpskirt + equipment: CentCommOfficerJumpskirt + effects: + - !type:GroupLoadoutEffect + proto: WomanMoment + +- type: startingGear + id: CentCommOfficerJumpskirt + equipment: + jumpsuit: ClothingUniformJumpskirtCentcomOfficer + +- type: loadout + id: CentCommOfficialJumpsuit + equipment: CentCommOfficialJumpsuit + effects: + - !type:GroupLoadoutEffect + proto: MaleMoment + +- type: startingGear + id: CentCommOfficialJumpsuit + equipment: + jumpsuit: ClothingUniformJumpsuitCentcomOfficial + +- type: loadout + id: CentCommOfficialJumpskirt + equipment: CentCommOfficialJumpskirt + effects: + - !type:GroupLoadoutEffect + proto: WomanMoment + +- type: startingGear + id: CentCommOfficialJumpskirt + equipment: + jumpsuit: ClothingUniformJumpskirtCentcomOfficial + +- type: loadout + id: HeadHatBeretCentcomNaval + equipment: HeadHatBeretCentcomNaval + +- type: startingGear + id: HeadHatBeretCentcomNaval + equipment: + head: ClothingHeadHatBeretCentcomNaval + +- type: loadout + id: HeadHatCentcomcap + equipment: HeadHatCentcomcap + +- type: startingGear + id: HeadHatCentcomcap + equipment: + head: ClothingHeadHatCentcomcap diff --git a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml index 843b0d803a5..ff3f604445c 100644 --- a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml @@ -128,3 +128,19 @@ minLimit: 0 loadouts: - Bodycam + +- type: loadoutGroup + id: CentCommOperatorJumpsuit + name: loadout-group-centcomm-operator-jumpsuit + loadouts: + - CentCommOfficerJumpsuit + - CentCommOfficerJumpskirt + - CentCommOfficialJumpsuit + - CentCommOfficialJumpskirt + +- type: loadoutGroup + id: CentCommOperatorHats + name: loadout-group-centcomm-operator-head-hat + loadouts: + - HeadHatBeretCentcomNaval + - HeadHatCentcomcap diff --git a/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml b/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml index 72cfb31f33a..d65c2f5112d 100644 --- a/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml @@ -41,8 +41,9 @@ - type: roleLoadout id: JobCentCommOperator groups: + - CentCommOperatorJumpsuit + - CentCommOperatorHats - Trinkets - - Bodycam - Bra - Pants - Socks diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_official.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_official.yml index 4387642e83b..b59943ae4d2 100644 --- a/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_official.yml +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_official.yml @@ -32,5 +32,8 @@ id: CentcomPDA ears: ClothingHeadsetAltCentCom belt: WeaponPistolN1984 - pocket1: BoxFolderBlack - pocket2: PenCentcom + storage: + back: + - BoxSurvival + - PenCentcom + - BoxFolderBlack diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_operator.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_operator.yml index 0a9d63e7435..a394ad3ce06 100644 --- a/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_operator.yml +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/CentralCommand/centcom_operator.yml @@ -23,13 +23,14 @@ - type: startingGear id: CentCommOperatorGear equipment: - jumpsuit: ClothingUniformJumpsuitCentcomAdmiral - shoes: ClothingShoesBootsJack - head: ClothingHeadCapCentcomNaval + shoes: ClothingShoesBootsCombatFilled eyes: ClothingEyesGlassesSunglasses - gloves: ClothingHandsGlovesCentcomNaval - outerClothing: ClothingOuterArmorCentcomCarapace - neck: ClothingNeckCloakCentcomAdmiral + gloves: ClothingHandsGlovesColorBlack + outerClothing: ClothingOuterArmorBasic id: CentcomPDA ears: ClothingHeadsetCentCom - pocket1: RubberStampCentcom + belt: WeaponPistolN1984 + storage: + back: + - BoxSurvival + - RubberStampCentcom From 6929c11e22cfed33e5b51145e5f55589dc9d393b Mon Sep 17 00:00:00 2001 From: VigersRay Date: Sun, 16 Jun 2024 21:45:25 +0300 Subject: [PATCH 26/26] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=9F?= =?UTF-8?q?=D0=A6=D0=9A=20=D1=81=20=D0=A6=D0=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Resources/Prototypes/_Sunrise/Maps/centcomm.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/_Sunrise/Maps/centcomm.yml b/Resources/Prototypes/_Sunrise/Maps/centcomm.yml index 77cbd20121a..ad43c7fb0d3 100644 --- a/Resources/Prototypes/_Sunrise/Maps/centcomm.yml +++ b/Resources/Prototypes/_Sunrise/Maps/centcomm.yml @@ -15,4 +15,3 @@ - type: StationJobs availableJobs: CentCommOperator: [ 1, 1 ] - CentCommOfficial: [ 1, 1 ]