From 84c338a554ee32e0e6a912b0b4f753b7697ab986 Mon Sep 17 00:00:00 2001 From: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> Date: Mon, 12 Aug 2024 03:22:27 +0100 Subject: [PATCH 01/11] Ports 78 From Floofstation - Fix Crew Monitor (#717) # Description Crew Monitor right now only shows Good! or Bad! (dead). Should show more states, this fixes it. # Changelog :cl: Xavier - fix: Crew monitor not working properly, now displays correctly. --- Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs b/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs index e3ca466b085..27539dd22bd 100644 --- a/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs +++ b/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs @@ -24,7 +24,7 @@ public SuitSensorStatus(NetEntity suitSensorUid, string name, string job, string public bool IsAlive; public int? TotalDamage; public int? TotalDamageThreshold; - public float? DamagePercentage => TotalDamageThreshold == null || TotalDamage == null ? null : TotalDamage / TotalDamageThreshold; + public float? DamagePercentage => TotalDamageThreshold == null || TotalDamage == null ? null : TotalDamage / (float) TotalDamageThreshold; public NetCoordinates? Coordinates; } From 572123e20de6882e4886ae0a1e2950c349e5fea1 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 12 Aug 2024 02:22:52 +0000 Subject: [PATCH 02/11] Automatic Changelog Update (#717) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c3101c7a468..8358513a784 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5224,3 +5224,9 @@ Entries: message: The maximum trait limit has increased from 5 traits to 10 traits. id: 6252 time: '2024-08-11T02:08:37.0000000+00:00' +- author: Xavier + changes: + - type: Fix + message: Crew monitor not working properly, now displays correctly. + id: 6253 + time: '2024-08-12T02:22:27.0000000+00:00' From feb552982002f381eac363214af19835b0612b2a Mon Sep 17 00:00:00 2001 From: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> Date: Mon, 12 Aug 2024 03:22:58 +0100 Subject: [PATCH 03/11] Various Floofstation Ports. (#716) # Description Various minor yaml and QOL ports from Floofstation. Changelog entries go in order of author. I'm considering just copying over the changelog at some point. # Changelog :cl: AeraAuling, ShatteredSwords and Cynical24 - add: Added the Explorer's Labcoat and a Hairflower into Loadouts. - fix: Fixed Epistemics being unable to take Survival Boxes - fix: Fixed the NearSighted trait making you unable to take glasses in your loadout - add: Added a variety of Cowboy Hats into loadouts. --- .../Entities/Clothing/Eyes/glasses.yml | 33 +++++++++++ .../Prototypes/Loadouts/Jobs/science.yml | 14 +++++ Resources/Prototypes/Loadouts/eyes.yml | 5 -- Resources/Prototypes/Loadouts/head.yml | 56 +++++++++++++++++++ Resources/Prototypes/Loadouts/items.yml | 1 - 5 files changed, 103 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index 9af8edb0028..0f6c4acfcb5 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -234,3 +234,36 @@ - type: Clothing sprite: Clothing/Eyes/Glasses/ninjavisor.rsi - type: FlashImmunity + +- type: entity #Fake goggles, the latest in anti-valid hunting technology + parent: ClothingEyesBase + id: ClothingEyesGlassesThermalBudget + name: red goggles + description: These don't have any real function, but they do look cool! + components: + - type: Sprite + sprite: Clothing/Eyes/Glasses/thermal.rsi + - type: Clothing + sprite: Clothing/Eyes/Glasses/thermal.rsi + +- type: entity + parent: ClothingEyesBase + id: ClothingEyesGlassesChemicalBudget + name: purple goggles + description: These don't have any real function, but they do look cool! + components: + - type: Sprite + sprite: Clothing/Eyes/Glasses/science.rsi + - type: Clothing + sprite: Clothing/Eyes/Glasses/science.rsi + +- type: entity + parent: ClothingEyesBase + id: ClothingEyesGlassesMesonBudget + name: green goggles + description: These don't have any real function, but they do look cool! + components: + - type: Sprite + sprite: Clothing/Eyes/Glasses/meson.rsi + - type: Clothing + sprite: Clothing/Eyes/Glasses/meson.rsi diff --git a/Resources/Prototypes/Loadouts/Jobs/science.yml b/Resources/Prototypes/Loadouts/Jobs/science.yml index fb382a8c2ca..04b226e2ba2 100644 --- a/Resources/Prototypes/Loadouts/Jobs/science.yml +++ b/Resources/Prototypes/Loadouts/Jobs/science.yml @@ -75,6 +75,20 @@ items: - ClothingOuterCoatLabSeniorResearcher +- type: loadout + id: LoadoutScienceOuterExplorerLabcoat + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Scientist + - ResearchAssistant + - ResearchDirector + items: + - ClothingOuterExplorerCoat + - type: loadout id: LoadoutScienceHatBeret category: Jobs diff --git a/Resources/Prototypes/Loadouts/eyes.yml b/Resources/Prototypes/Loadouts/eyes.yml index fed07c6bd6f..02d411be078 100644 --- a/Resources/Prototypes/Loadouts/eyes.yml +++ b/Resources/Prototypes/Loadouts/eyes.yml @@ -9,11 +9,6 @@ id: LoadoutEyesGlasses category: Eyes cost: 1 - requirements: - - !type:CharacterTraitRequirement - inverted: true - traits: - - Nearsighted items: - ClothingEyesGlasses diff --git a/Resources/Prototypes/Loadouts/head.yml b/Resources/Prototypes/Loadouts/head.yml index e76e2f17ecd..1b47e307b7d 100644 --- a/Resources/Prototypes/Loadouts/head.yml +++ b/Resources/Prototypes/Loadouts/head.yml @@ -91,6 +91,54 @@ departments: - Security +- type: loadout + id: LoadoutHeadHatCowboyBrown + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyBrown + +- type: loadout + id: LoadoutHeadHatCowboyBlack + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyBlack + +- type: loadout + id: LoadoutHeadHatCowboyGrey + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyGrey + +- type: loadout + id: LoadoutHeadHatCowboyRed + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyRed + +- type: loadout + id: LoadoutHeadHatCowboyWhite + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyWhite + +- type: loadout + id: LoadoutHeadHatCowboyBountyHunter + category: Head + cost: 3 + exclusive: true + items: + - ClothingHeadHatCowboyBountyHunter + - type: loadout id: LoadoutHeadTinfoil category: Head @@ -107,6 +155,14 @@ items: - ClothingHeadHatBellhop +- type: loadout + id: LoadoutHeadPoppy + category: Head + cost: 1 + exclusive: true + items: + - FoodPoppy + # Color Hats - type: loadout id: LoadoutHeadHatBluesoft diff --git a/Resources/Prototypes/Loadouts/items.yml b/Resources/Prototypes/Loadouts/items.yml index c7d540d676e..87ba2e71d42 100644 --- a/Resources/Prototypes/Loadouts/items.yml +++ b/Resources/Prototypes/Loadouts/items.yml @@ -293,7 +293,6 @@ - Security - Medical - Engineering - - Epistemics - !type:CharacterJobRequirement inverted: true jobs: From a425aeb9226fafaaf8a4f5d76b4b3e7d08ed4b12 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 12 Aug 2024 02:23:26 +0000 Subject: [PATCH 04/11] Automatic Changelog Update (#716) --- Resources/Changelog/Changelog.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8358513a784..fe9c55442ed 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5230,3 +5230,17 @@ Entries: message: Crew monitor not working properly, now displays correctly. id: 6253 time: '2024-08-12T02:22:27.0000000+00:00' +- author: DangerRevolution + changes: + - type: Add + message: Added the Explorer's Labcoat and a Hairflower into Loadouts. + - type: Fix + message: Fixed Epistemics being unable to take Survival Boxes + - type: Fix + message: >- + Fixed the NearSighted trait making you unable to take glasses in your + loadout + - type: Add + message: Added a variety of Cowboy Hats into loadouts. + id: 6254 + time: '2024-08-12T02:22:58.0000000+00:00' From e0f18e8a9d1117f2b25ee9e1b067c735a990086b Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Tue, 13 Aug 2024 00:43:10 +0800 Subject: [PATCH 05/11] Add Home Run Bat (Traitor Item) (#722) # Description Adds the home run bat as a new item for traitors, a new traitor weapon that knocks targets back significantly. The home run bat has the same Nyanocombat stats as the baseball bat, with differences: damage has been reduced by around 25%, same as the baseball bat, and the Stamina damage on power attacks is 25. Originally made for Delta-V (https://github.com/DeltaV-Station/Delta-v/pull/1476) ## Media
![image](https://github.com/user-attachments/assets/3502145f-cae2-4ce0-9ae2-a0f2eeb48c8b) ![image](https://github.com/user-attachments/assets/f508a367-d2bb-4283-bd47-de4b4b272637)
## Changelog :cl: musicmanvr - add: Added the Home Run Bat for Syndicate operatives. Send your foes flying! --------- Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com> --- .../Locale/en-US/store/uplink-catalog.ftl | 3 ++ .../Prototypes/Catalog/uplink_catalog.yml | 12 +++++++ .../Objects/Weapons/Melee/home_run_bat.yml | 34 ++++++++++++++++++ .../home_run_bat.rsi/equipped-BACKPACK.png | Bin 0 -> 6578 bytes .../Weapons/Melee/home_run_bat.rsi/icon.png | Bin 0 -> 832 bytes .../Melee/home_run_bat.rsi/inhand-left.png | Bin 0 -> 6023 bytes .../Melee/home_run_bat.rsi/inhand-right.png | Bin 0 -> 6020 bytes .../Weapons/Melee/home_run_bat.rsi/meta.json | 34 ++++++++++++++++++ .../home_run_bat.rsi/wielded-inhand-left.png | Bin 0 -> 6115 bytes .../home_run_bat.rsi/wielded-inhand-right.png | Bin 0 -> 6059 bytes 10 files changed, 83 insertions(+) create mode 100644 Resources/Prototypes/Entities/Objects/Weapons/Melee/home_run_bat.yml create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/equipped-BACKPACK.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/wielded-inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/wielded-inhand-right.png diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 592cf59d2fe..67d221d9b61 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -421,3 +421,6 @@ uplink-barber-scissors-desc = A good tool to give your fellow agent a nice hairc uplink-backpack-syndicate-name = Syndicate backpack uplink-backpack-syndicate-desc = Lightweight explosion-proof а backpack for holding various traitor goods + +uplink-home-run-bat-name = Home Run Bat +uplink-home-run-bat-desc = Rigged bat pre-coated in blood for Syndicate tee-ball practice. Launch your foes! diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 1f30c2cb7d2..a1a60e3fef0 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -101,6 +101,18 @@ tags: - NukeOpsUplink +- type: listing + id: BaseBallBatHomeRun + name: uplink-home-run-bat-name + description: uplink-home-run-bat-desc + productEntity: BaseBallBatHomeRun + icon: + entity: BaseBallBatHomeRun + cost: + Telecrystal: 16 + categories: + - UplinkWeapons + # Explosives - type: listing diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/home_run_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/home_run_bat.yml new file mode 100644 index 00000000000..5cb5795c8a5 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/home_run_bat.yml @@ -0,0 +1,34 @@ +- type: entity + parent: BaseBallBat + id: BaseBallBatHomeRun + name: home run bat + description: Heavy metal bat with an extra kick. + components: + - type: Sprite + sprite: Objects/Weapons/Melee/home_run_bat.rsi + state: icon + - type: MeleeWeapon + damage: + types: + Blunt: 11 + bluntStaminaDamageFactor: 2.0 + heavyRateModifier: 0.5 + heavyDamageBaseModifier: 1.75 + heavyStaminaCost: 25 + maxTargets: 2 + angle: 120 + soundHit: + collection: ExplosionSmall + - type: MeleeRequiresWield # You can't hit a home run with one hand, jimbo. + - type: MeleeThrowOnHit + speed: 30 + lifetime: 5 + - type: Item + size: Large + - type: Tool + speed: 0.5 # it's very heavy, it rolls slower than a wooden bat + - type: UseDelay + delay: 2 + - type: PhysicalComposition + materialComposition: + Steel: 350 # it's not made of wood diff --git a/Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000000000000000000000000000000000..0f42b7f14722c161fe8a70dcf80b0b80978d0eb6 GIT binary patch literal 6578 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 KHY+soJpO+t%!wHQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/icon.png b/Resources/Textures/Objects/Weapons/Melee/home_run_bat.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..33eec9258c605efe223d8b839537c73a7916fa37 GIT binary patch literal 832 zcmV-G1Hb%EX>4Tx04R}tkv&MmP!xqvQ>7vm2MdaH$WWc^q9Tr^6^me@v=v%)FnQ@8G-*gu zTpR`0f`dPcRRd-%s4f0|q}xvF5~ zSU?>rB*zc_2ft@)mS(2iq+lHAf3fY42_Ucww41j5eQew96TtrrTxnf@y#>sFlHTlU zkt1Mu8@RacYVsa%xdV(n>5?HilAlT_m4Np%`lbRfatjQuxpV8BeSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009_DL_t(o!|m3+4uUWg1>l3Suq!Js;KV}GSKz%#x-i*U z5(g8ehB{z0;9^Z7g;;6Jpm$~O#?Nl;Z4 z0Q9;Lp({Mka{$1JQV1a?$A+$ON-6e1fU6LAa1KO~cKpT_o@E(sU55wfxJ1!p4{TlG zM@q2)aK7Isaciq!jK7)=jImkVN&vOt02txcd%zT5JOlFUC2Wc>3NXeQW3xM+)c`u& z6#hDZP24zuZQLk;3*2}a+QvVgfiz9~IF8XY%~zeiD1gN4x<*-+)-N!@n)qx0ANXVd zU${1aPkazSy}`C^>ji)B19Fp*=ejR^a4A)f)K!WQ(yPDWXX**~%GuHPbiSnk0000< KMNUMnLSTY zh!QGEN)qWNy+tVEEtC+Yl>E-9-~T#m&Y5%ev-juO`?L4+oaZ?^JXW}B zYs}Vw!C=~MG^!``zeIkjsX*5PPS|4@OeI<7y-wl@L?VPD0h<#FA|z2l5CKX#Y#2=X zXkhL7)DBCni6H$_r6p=tL{i%7(m0<_CcqedJY6!MvU+5CWpN4CAT>Gfi1BE4HR@x6 z#WGIr>9R-MBzt!>MYp|7YTE7RW&K>1EUK;XU`O378~gn<*9poypZR z?mw7dEZWpGXex@HW4U2kh0Dfjf#ZY$^}Q^Guh5NK_~3C*^o;y~?u}>i{Hr_n-ODPR z==bTYy4A8xw8njA*gUI!iapiv;LL+t9vW#{7`$74z1-tM!j(CK_kCfKV3y2jSk{F1 zHjC^Vcs~R$N*$axTGQ|bdx>NYua-LQj(J`Bjx*-JanXiBee8RiQb|@ z>wxfvkit_XBl$_=B`-2MBAz(yMW&Tma#uIy`)`|be^;zNv+$1xC)=bs5m(3iKPrXv zxuDGR{>pXmxO%dF@AjU5<4y6f3@5iGekO{iLX&+$Po%x9C$UR{Sjs_`4au!5l4t2z zAHc1b)!6iCu5x{KPN?ab)s?YHzoPSQ47}pu`Kp9R5wm?&OBQN&oJiRdBR$3IvCVuL zkknOWm~A?#HV!&owTjI>FehugtYV9>h^0+E?QMJ6lvm1!D^=Ox(|qAGl$^`wWmp|O zs|6(Roof3{;&%&==@l3+W9S>NzpIOIImS~`-s!ui{H!a@*Jj%ATqojSf!I;EQQz%I zUG)8iX-Cc5$wl*+sZEGj;pkC~MfoZm`mqMX~BPApBJKE`furG>N|R2`*LlWdxfhAPc2V|o$x{cB`fsU73!(ix5G;hBo(jQXM< zZ9AoYJzH&dqO66rQmSIr_oyl=$Fc_g_&Ag1=$drHo_+j~-lbmup*r3w!n#HkBz!{K zLb^&iKlG@wVey4I|8Nca?%#5oojB*Bi$SN?ORz2f&sT|iW1iw%;y-Ll*LqUM;`yt2 zM(pcra@{@-hEH4S&~J?`r#x%3jh}BZH=69Yvnrhu7?Ln^ZuYSSN-Npphcp({}R*6TfCr6;wnx&(Ce2mvU{zzM;hH=uFh*yR;+>6ygMiIe8*z-X0LwJ zzff{U#4B6b>+dKFF)B-^+-mw5W%dlzh5x;*Nsqxj$l|VBqCVg;UAKqpr?gHhYJGlg zLXCDd%f{(Q*RthzmcA1mS=v~uv$G>_kK~0)VM*zur#;2>RnNWcquxjFx_Ho5{B+={ zvyQ&vY8_{tgDWv8w6}X!T=-`HQR%inOb=)8`>@2V2=1Pe3%t~b>(<-DL$SdP#O4a~ zlS=y%&v)29%X)XD<CoEB z9r*XfZyymKf0XU(9Oc^dQ&)KpZoKwlx>}37qaCg*;N$M4l{?PPn72JYC_X1ZzqbBk z>Zjhu*+r8{h!GEsNyUk`TNbYz-Kq?ODa3P}oIKo|oW8!9p!ZQ`ObUf|)njJDO0T0x zeO1jwNxjFRmxqzbNA-6G=9cOEhGU}o%n2Ntr=N-P!`QgRJ6Ee32Kk%%DLW3S*0x@8 zYjSqKh+a^(efY}1F_~kxyDoiz<*sHHv>HzHzJ;RaYX&4hUYm@d$}!}BFSk9n$BNYfZ54W~J3!xxMEBi<*8 zTY)V>TX*^W;b?+1Xrx$=VG3ti4O@p%R}pU*zP4GIdCtDDT;;`R!-iSbAq#zqy%JJt z;hr?7_+2Um$FD3+i%6O|!-%{)`rUQYO$YpN6$ODk>z0^W&AqPsNwqqNo59ZS$O|;- z-BdELTODy)v+Us6iI~u~ff<)4wfs2#o2ry=Zc2UpG9<+!P-=Ys{Hu`HX2ObTyC{9B zb4aP#?w0AB$MEC%iWrfmR&j;+MP~P?LVeT848i6&r@%AITVI$Bn)M!PtBxd(d{6*2 zMY-uWb1={fB7y_06xPv~lbHgZ4ZspGKpQDf2(2VwFo(rbA;9E<5(EPb;_xZR!OChR zg2SR9*AnR%y3h#>=Fns!&`Y+$n+Oo3+0Q+QVMbkmkiy@ z#b_jAN=3q@AlK175KaOSh#=SyY%nNiDJKGlT%>_;5V6=~PpZoo2OLXHVA1mO}2 z5(%{_d2fMjonVuByXDNp>iP9g|_t#M;~25?E7EEGF4SAmRZ~IypQb2t*6{K~oKK!pV*vZWJWW2J>Cw z5ei7ykO4FXIDD2MQvAKio5KUWB!HYxtR2SA4oAe>;|R94cp~n*(i%`ChH6ocipALA z2~#cd#E_wIAZh`5r9uExawr)c>U|A3g|&&q=3o#8CfHQ=-pf$_otp{Pg)T zlruG$5QwQ^K?azgLl6TI;Af5@tj|r%V1OS4Li5L$g8eGz{D)!y*#JPq=i7+hYM7i8;l>H*~RpEr|p~pkolkBg7R{pi^8SEWe~`!O!}U!Js@3 z5M?L~4)vWf91{H{ShRe`_!_MP`hW4^Fs1Or6a(3PmO)b&G!vq~O@&|hf_(jN9$)hC z-|PZ`_}$4b@%x*u-*o*F1HYvFySjeU^-B!=lJf8B`hTNKBmjNd*KG; z=^&T+GA(;#z~z#m@z!Vd6#QOv6o9%Otmzqu9?)R)9uj>Nxf=Y$&F( zYu5**);7%6Ne459_(mkPN|D~&*+Gh*oxYxX?K$dJ##@yQc+CQr4uUVOiH|Exl+^Jy> z>p1(I^E4FQ4?icJG&g^qc}t|l@WW2)7i+TzY}$q&t%<|(mJk-64-SZb`Q&-$m4D3{ zdpeK{MfN)F!^zBf9q*Dn&Lj0VJdI^$_JEf^tk}2Cq2_+oQOdAK+Nr)(=LGe=bFUmP z8w^c|^YxQVc-OXzW*mHmv@HOUT|Be*#eOb5MXBy^)1>#JWb*~|{L+SQz@_73(o<61 zJnt1t-@N|t#_;%N3!{;cj-hD@jJ+=QHp+;-pKd3#yv}=a=d@8q8r$NS#kP;(YZd8J z&UtUIvR`!WPuZRYv=S%bBO`Y4wx>oVcjeP=Yo6RAO^du0@$W8Pp4v9A{Z6}gy)&K7 zS?@RC=HH+D`sSKHrbkrRB~4$oVT;{dAn;-0t7`DYr_E`%E23^Gq9U4N4P8h{reWqyc(UHJXRJIk~CKETG-E zkX0~?%K**)(RI=C^$AI_((o(P`sBPgWnv^a2jl5fxWV;g;Nq>ziyK`sg8UbI)*U^{ z;jC`=DJW|xE9V~%pf0SRR9w_}^H_9Gb8TgNw|??tXLGyjx#X_9b?I65ZT6*0c0_gw z8~DMo{f;Akk)7c;e4doGEjlY~j_eksd%yQZr=gVQK2PD5S#5KqDFQnsS)d z<9XgtuVche?0RF~!-42ci`5=Y-SjcD^^SXhNBVPzp6rW2*Om45$NC!O-5x#mS)IN* z!Klx`kp98m$!pzFwzWHi@BI=_`@BoH22SJ98w<*F=jHcB(u=!Yl*|tU7&o2$ zGv~a}>SJDR<~wV?;{lz%&X%?wXT!)X?y3GXGwCP`;-i<;3@5$2v2$P3w97%mCgUoaBK++R+aXzT4|+>Z9b|8b>DE8x?Bm?) zACZZER9_paYqcSJOQi5v&T;N9<_v!IJ3dLHLYwb!*q-Ot;WYB@6~eurU{Na z7X=ZiWj60esE3z|Tms9Tk0v*)=-0V=u|9FOn|Q(rBl{jtw?@a5-8Gb=U}N24E9DBB z-K1LbdscO1fKn%U@=(_-F#T|vsrqv@5>Q`qqvwc8i_Vd1YFG>@>uv*WX-7xWU&%f3 z5gYPJS5};uer|SJ{tRlX9_nm7=ky!V!B60ub#I4-k{@U!If+qJpAofM7CdrfrCW{HK4j{ghLhLUyu6w& zVFj`H5&b9|wTp+Ub1r9eRm^Cgal1h za{Xjk`I9My`xoTA)O}8vU4Nsgd?@y8RBpuj%na=ctCt>cx5cI3@4qTJu+1!kdZ5?q zF3q_i@wQQr)!mfxxP9DrGhdv37+3@$ls*d^XgZX*q|eQb3kH~1s}He+Wjz33jk|OW zFkj?crhBh3Io`(!hx(8wyp+JqvC-RT(Np9cn*PG%(>QTn@1K?}_SL#Jtb=A7*>GP;*8i?&*njYykjoYkm% z&^f{MZP!_m2pRq!e<)<$Uh#$Hd1ny)Z`4siD@f0@AL+$dPA+jXcrdGvBhh15=@3=3U*fEXZ6j} z#Kh%)Vs;=9YN-Mi%iWd5`ugpHzgWBCH!)oQ#uDjD*X|HTT^;2Qb-%lQ)L! zFPpqP5{T`zAPZbP1I@-iNKTo*aT#)ISP&|3yn_;Xxw+Q0&S_CKeooo?{@Q2py9RH! zo&Si~zl?jdd8&r@Eh6!sGu!dUGLn3?v^>)Y)&#Gm&{VlHFnCbeKa9IxTHQBXnVxsx zAH-f4Gj0`VC^5JrTF!V8|J0z^MZ2HgpXZ=wG+!1J^&v~%3?_x8X9oV^V1}7;gK0Ae z6q{K0+pJ=HP_9oMz|Gxt+P1h{v-{0I!6r80bNx?vrER)wUvgfR-Cwtwr*eE_`2h!Vhi2|vyf z23I1&fjmhlgo_bL;k^a|VK+ZU3UVVL1v(T86Ns6ZzOywLw1CIN_)<6kN6La$3S8o3 zkXM|WH#aVVOXp$c+iTm!Fkk=?qyW(|BB5B$h+$$zaT)NlN{q*#M^zLNOpG7L9nF%+ zAT$|A#sOHT7(o;fW3P?2lkxZrPxitw2>6YOS*cJ+8F+kjbTlrSgp2*KlivzJE7 zgrni`xOhkiiC|SZJSyR*A)Q@0?%ym_6od&x(orjz?4L9h0{(Zhe)3J#GaAm1j=<*M zaDUSN8vCd+ti|Cl*b;7}$~{*$6QdfR!IN+WJjUoFK!nINN+=0SrV}YxvMr5-rIW}Y z7Nk-MGzyPSq!L1ZfN~Yf6`+_4si0tRoB+n507MFnK%`+QR9ga;OydGrI*kZnd1NYR z3lXRQJi-qUOJxE$D?#CpUa6pXFciQilOYDvAiPu@Hrk;goZ;Z^%ESUyKoy?^8bG5FDI_|DKq3;xydFjLfn;(x7geYP07oK^nyV&;0fz%q3#u{|1{jsY z(J)vt2vkU9-V%wBiBUnIRhHknIq-twfeMffDj*mXAd(pXkwGAO10)7OXHdvkfWiQN z(3kK8{Mi3XTeW=9c3&plMIeXAj~x|#SyNunsxNO}UWJ0u#e_zWE(-?8{Sty4jDmQh ze!^H^y0|MraTo;GkFkXPDi{2RWFT+}Br1hKz)~m#I+hHO_*l>uezGNzC|m-W4A_F) zpV8$Kz9JfwK@MRsk1$tof{t>9wi=tNIX~-1uY^?d08@qqh}iFxQ84(iVDYMo@ikgI z{Qu&^ZdBoi5(C?Pk-?=4u7vn+rErWdRnhq`wy}BmFOC31{~qL*`29`SZ@PYofnQSo zon61_`XvT_N%?nn{lC$r{rxZniQyekG<;MVXV5esK4xi#E_P-kK*TmgQNeqTH7uDR zb@7)Y5IV-HOAS%5%LEo86|Nj7IFEsaEimWskl9tKRFU@G?Ve2mZaXyvfHoHu!nY3eD3fY32YKJgXwK{doX7h&hHq)&B+i=@*wLT?68DG<`c7c8vH>jOzkfAjZ5#HI*SEX+? z^Ao1A1rs%#5dRK0wMx|L9hV;7d$CC1#!OvGJW{E{%~U=vEw$^T#H!-zn7Af)12+rfv+vSD=%t% zU})T?zun%83~8|BtsXCn)_ly;vJ_S!*F1|E3W(G!`dE0rk8u1i#gP>k_v}_PbZuk@z8;gWN!!J`=W;Za_lZO4Sn zO#R5CVY}JI1G(Z9VJo9IZZq$;tmkasov^(ttCy@$-88k&V0vV=FoDG5mWUpwv#JoVBGK<9v`GMevzEIy7|_WU0HXl->g%2+V1ya;j_QzGQ67~ z$M#EK8M<|~&ZTKxzuXnhBlMl3wTmmnmvi6zT2`68*&V1|BlX7ei~ z6HgjRT7*@9P;e&gYe&KI&4yQBNf(oVsvdf?p^ z)gg$qk2{bFBk`+-tr{v1t!WY(YRe@ib!Ge}G4^6cK+2buJaS>!B2(gVV7y}NOyZ*b zaSUrMpL`waHI`T;JWD2Vy`+Ta(VO-c)zp_PkMu`U0rFD&wVshymNMp-?z>moY|mS} zJ*Md|Cxudpzn9;?WBR;NoJH2GZ!EbJu|a<-X*H%K+2KgCOIS;zZo7kD%4?$?u^Xk- z9n3N<5dlxRnz?$++=)w+AoGV>w}JjM(8>!eP@Fc4o>KEOuRUfPG7uK4SHhVXbj!>REB`;Dv!n;wwMj|@Y zQNw)M8{<;Np#B5##mJAb#qVeF2w^E3KlyuczU%JvL;b)oId-WpUAQ%I^wQO78yOebFR?lEfpR{c5=F6a zIK0S-dd0f)Mjy2-$6XDPFL^{Qf9n$OiTg@VFFWbZoIE&YTNfGuRlXes6EQ{GOknW>n%)?fS+{zV@LDZ z$}5h2V$%ve*D&t5aw)5p6pOu)@TkKL9nSLoup8AaT5<8aMlxXTZ?I!0H<*3|( z%{liJ7C-~Px2H)*bQ(1PN5}CIlJFgsiv;F}|JjYo*&Bu7|Jd(F@Vdp5ErS5QX_i z5!B@=hGLAWK(RD0tIlQJeHjwe3H-=lDi&Qts5UY%g{j_W2%B{M8zUWv(ryQ363#Zi z-b;6ol)(7CX+7QUnic+W(vIZSa;Wa!g%sm0Z^QyE+ahuP>uz(jqufso%TL8ejrC-p z1%!;o8<_p@j?`aLYpGGlcn_PYhlfHWx&tC){zeb%TpUU@k&7RTx05@@^g|4_8te}f z+;z)__lDU_0~u!bw>}?j5Bc!%;Y`k|l&-+AT$dLGI#rTYN!G4K_8(?)>y`a1GBpZc zbSl=ZT}&)Jer&x$pLXl<5~uBdW+yn;301I``GUdj)gv{78x!PDN=MZx)xY23ZReC8 zt1XpM(XRMuU|_GBY-`%(iyw3Z%3T(*NkpN7(Q+T)t^<~vL)&D$tL13ExJd!bO$}i^ zeizoC@@9~y`dGijBv|%Xs(wJ&OLon`Z@XQV$oFhl z)v89+n~za?#LMD}ZaOPeWQ%M3m8e5@yr@Z0NQjHZCBPlbGP+-eJ}wMbc^HVM{+YBV z=_%K=wAtgl{IlwDU3cYI<~5bCue9_pTKke9nX!>}ymv@WR(&)|+_uMRihs>5>2Ayi z%GgZm2W9{8n5oVv#I(|wcR|u;yY!d1S=W8-;6gn&|aN9 zDaCyk_L5E_g*r~Fm>aTYoukU*JSd-+o!l2UK@>P2yHEBnHQlTFWWe}bKJre!@rNH{&f;~Q?KVRI4=?u5e~ zVzo829qm8_Z_M3ea_sFirm?Vmbh_kF^7#hXS*jAP6j;udZw}Z+eihy;pG}p1OM07Z zB&T4=-4p!rDDMey(ECuL`z9kL)arW_tw~(AqQ+aTK+_$%jfi&`O<^%H`?}=N`vwn1 zEniKyJjdAMH3|+?lbA%wtSgnq$-zfgu2@4pwr{FVIpUN%z9h@@rRz3jjSY3nW~3^- z{eELy>dN#~8i*(uIkp7(hfLAw8`I(bog*vm%*whm_e9)Ud_UsEvti%ks-A*%H*dc2 zeW$`Hkw~Nro>)&han?#LC2~^d?@Qu1u8eG632#XF;=NdXOU`fX$Y>MKYt~POR7O<> z&U99UkjFoXfim24DfcsQ(C#Cc3GFgmZLG;Ob^r#Tv%Nr!Ab=IJB978H`75l|~wH=?t=isreTQ zs6;{e@cA4v78?>0f(g;Vu({q?Z4!xu#o@7dJQ_lvd7&&mAV9Ntsv?Sc4pWdv<1#sX zCYyy6aROfKAU*|!g4&T^{R`mO*nFdB@xG`4>46mh9IQ45hYbk8F0|nB&4MA4FAn`j z3!W3SS;IPjJa!P52ATzfEWYYO3OenZJtv6kKNk+2h6Vk>00_#1de#1}OAAXI`)?K^ z3A~vBoH;86Lg_BBA!G*(?~=e0#Tpj1u$?6s4Q7LKER@ZA}WX+ z!-RN<0MQHZBI=;M=tK~r(50bCbR7bk0OA=q91+yV6Y&cu?6^!QD*^w7UWusa5S1Q4 zC+g90Ae!MtqoE02fIb?~hl(V9J$)Pw&(Otd>(5cqX=HOYHvoW!lNkVbgIEsBd#*tw zIN8YFl7hlx<{h7_vG)h~49EbQ156g39m4wu?8FQJ9r=JrPi=jizCK=;fFqJfdL%sI zACL>k5#Q?WE>HV(lCWRvng1af z=ma8(K?Cq;qAs0;Cg{-dXc9vYfYOUd0Cb2n07umQo}I^L@IwGDXygs)2x$c+=$uwa zwJ$@Z{yjd#2NaD1BpDiqM=y{Jh5ZsNRezKp~Fu?L9yXD2_T?@zgY%JoAE{1EtOcKwv=hZOiB@Xze}pUEZt&tVE= zK|7!j=&0n^nKJ|(vn0K?TbRNCSSsw&sVN%`sAdU=>c)e?WLAi7G1w`gB2+2Gx3n>n z8W5L-OT$0Edy@*CrQJt*Y`QBhX%qRc>Odcun-&)ls2-E|f# zNBZowqOP7!v*|#`jDE6^_|^PEw07qWyRa$8SA#D@tuId%O29nzR9-Y(`@_;vi+pCk zfvidLVC4A?mOVtOom0)e%KYZOknG{->uDLSj=?6m8lwIUvWmITeHyW z-ImRDuiNUZ-JWBW+jF?%1_`)h=Z7*UG_r$e7^uhrTUiG<7gcUOJl zxEf$~wqt5ug&lq1dwty`O8Y2px5CuNkZo4+IN5xc7_GgzE)uZ!VHB!*%jo3M)8XP$ z%7N8OALitCC6;yNWwj5b%uqk-ySF>1zfzYM$)-FZcggr{k7>nSC{1V;x&X)~F=M%$YHknK3igk`Ph|?a>>u6p4yn zA{C`Y>aCPl=tbm}Y-O#~?~L~A_r0#~)pdQp|25Zj&Yb6d?)&rH_vgN!=RD6zc6PE; zR@732!C=Y`_6%3(-$HW1<)C{pH{=-%CRZKh?j?2w!Vv-?pUn*d5#mSzhyWwFY#1!! z>5$jv%$0@<-uJ6-+ofU!Pn!on+N?Y|J&4RZU!zNSLV9x{us!3T<;sN)w-UTvxF6pw zT>r8DVC4aK#^#|)pQ<$&`a;u+!MeukM;`ZPz5ABdkA%+-kkTLA@Spk6_LA_i^n{P} zFuTiP$D)=e1nl1n$L*|ndNO@A-Q@Sf_quXn2w`O!LXZutkmrXe5uTy1ckBf-D!iWa!K3!idr8786)z0 z?(ct=`#LJG?A;@~iZwe5N9FZfJ>P*b$QkTa41H$H`-*$ zpdTF`yG>g*ujKM}*&5*jPD6?XdiaPO~p#Rs}DXZB&^jm1Aq{KJYO6AUrJy=6_YJonsmcOJ>DqRAW7T9|=!2 zE-E09*4l{5NmsB%MThI-QZL-~0g z9$8^JshhbE10Fru#6Q`8&;HoMz}9C`BTS3_oxQP-=czRwiF|GB_VA1wCo4KFVRR#S zyLheV=4j=n#>Dr)pR7N@&#_$? zFoV!gn@G@#^7xzKoUf*E7v|-Zu(L`|CZkRILWzr^N&5V|XMYbdTG?Q)a5qI7hwvhU zAyEzJzGV+AhV{A+Rn#`1K5prCwU~13HG4j(5uiz|Sl~Bhs8r;W@+fJn)0Vg5*05XF zhoG*SA-?6uwQ-YOHZRh$kL&19mg~fcBL*j=Wrs+|OJ0wkPDCb`?RgCExFO_H${OC~ z!yi<0q(F-81ZAU+sd%NPx$s@V11D|x-(t&wKMCixl3dlnr-w3LCE(nHNOGz7dz8%> zHLd;+E=teT{2liu^r=x_9*X#KSgn6&_{5N?AUWQuuBxoGHag2&774RSgp%VntjMCfH5t~ zDUE^Mdl1VjXgY1u6jn${(KGIEw0CB4ug6X`@#H_~F}q!9Zsi?X=@{I@?!A9yJjR_$ zK~;yUlYSe=tvPnmJbEeUqoR_!xV}%utzpMS+dl2RF#!q+i-r@foqn^SGfP$JjJ~@6 zGVL4N4A&ib0W@XrUVq_|vG&n<-HBqjS|uXK-lA>(!8<;1`Q7up>sk!8b-ScAbyc6h zcUfz}lZ8nP^UZxl%SgRTO=jUuG|kzb`h9~BFAK;u)9bpbU7}vGgFS*2dsR)My#~~J zHEWW(;VSZ0W?h$}$gOHGTl35UuWMNk+(kDVdAEdLLpG*0mv?Kb$`zF-yKa@HAPzN1>s-8Fb_AmUY%d~>L#FK?)1{eRVU;XE$8smiuW6vhm2ETord_{Iv zb9^htK#^XHdp2{bOWtdO72xdo{Qk`N;iqEV9lOnh&&{Qi6cKF~C%V*#Nu9>qN)w5f zR@pVCGRm)_PaCr?*DVmSu@#`zHqt-R@HN< z8c9{Ew3-eD)#ZIAyOW)?Pn#L-d12h1VdJ9bZ;n2S{MT|9`72`jhKiGw?`4PntSWAM z+q-+5qpLb<>j(; z7o9zIueXM}TG4=xssdT*T?9h*hpxllVY zTb+0y?>6j&y*Bd_pvqUdAH0dyAKjx;Vy`%6GIqdHd6BtrOV~`Rs11naB&K+;veZUu zHqnizuq8{3#*9N4E~Gn)U!zxN|3NLOlp7qsy>*Fk!0L@>-4ZgcFLJfF-jyO(eCnFj zfv{9{wWYLu+oo^o#2oX+R~P&CdRgcgt-QJLgZvdv;30NlXTGoYKQZTq_9-CB=T~H1 zoQ)1@A5y#eQOTRTCFZj1-I&a0uL3ew_(m+Nsu~V>tt+UWmqH)NTyBziVvWJUol}Ij zh0<8ze5JG1qQUIv<5IUCoH@kb8E@@-eqGz3?uhO`$J?)j)84$30_O{J58lneLYs{+ zF0`rea$HAa@`KR;i|+@bBZ39crUM2uHIEPg%s^0#@B=wq9vwMSa|Mauvgk-pk|Wkp zU=8|n?W2UCTa=SKGb)g2!a|yxDVj#mAb?;{3?L$cgLooZ1RXhtOM{*zVhj>7ry>rd zBfT7*5!QSmh#;bgXe`Pmf*XcMnkgbog)BDBm0|lC0&3Bb{$jC!hQWk~hoi#@Xugnx z!I_wtV6b=$9*=@FP@+hl7>GdeL@Oi^pD-Aph$-X>#9TfPA;ARv_@QDt5()JqzW5g` zaCH0%&l7!S0pbG_0SGWSG!_#ajQQR|B(@2IKt4P4Z!JXb(B2H=3X1rlLMCVv2J*x! zzK38jzuF5zg+X)Su$UMy2n>c)MbN0YABMDZaCH7^A)$c74HnEYf)XeQ9L<2H610kL`zpydh&zeiQ(Q z0+>WB6HmZW{Y>z4P%I|RmM;tjpmcJB0S<@}@HlfF62fVg&JJ`W9*zAbaSj5+Y{&qb z16&@9A1?aV<<1QT-Nb-|PaFkHq2NhG0+CE5ldH zK?9hdLJ$FAAZyM~2`o^6Dl4> zC4wd-DwYD`0Psh25uYs%2ZW#{2jUUp3M$Y!t`G*FQ)T$0ez-p<$pb_g3X4a5ql}2e zd=3^PSuwsuYl``Qe3;HDe7D3vcAsR>(gm%An6FFWXTBth&j0ZDIS>EC5g_PagZvb~ zzv%i!*H1Cla-=#lTM~|EjM48eNLt4pSfx+5v?_N2RQ&wa{l>n4I5QI|dAZ z9flPin|3sUBnkrijUpIqzMABcf*s3V0tw~C4vseR|41vr6_NT5`j*gH8gO7(x#Kc}ccIO{+WU8PN@LZA zlF-Rqhs^8_^Rm_t4`+$#l}~28PwX$`o|a0*q2bbwtM=P=%i6mZJ-VH$oYYW%V^#&z zUOHUUxmQ@6NwLe7WooV|&FfkRaLP}(`@Fi%Hm-W&|OvNcL-;~_(MT>D%3 zj-jc{{Hd^-$(T9M=5D-%$|up`i#!+?(h~FE?yHPGo^>7Cq9;aOr({R?p^v$II+3akv-!EXk-wV^W(M4k$>+{}v=^I@mZd&RY4#{U7SK Bc0d3C literal 0 HcmV?d00001 From f57327eacb1efeeeac17012d889df619d49dcc8c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 12 Aug 2024 16:43:37 +0000 Subject: [PATCH 06/11] Automatic Changelog Update (#722) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fe9c55442ed..c13b19a328f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5244,3 +5244,9 @@ Entries: message: Added a variety of Cowboy Hats into loadouts. id: 6254 time: '2024-08-12T02:22:58.0000000+00:00' +- author: musicmanvr + changes: + - type: Add + message: Added the Home Run Bat for Syndicate operatives. Send your foes flying! + id: 6255 + time: '2024-08-12T16:43:11.0000000+00:00' From 376b8f1048a3532876541cc9333c6f9f44dcb21d Mon Sep 17 00:00:00 2001 From: SleepyScarecrow <136123749+SleepyScarecrow@users.noreply.github.com> Date: Mon, 12 Aug 2024 12:46:04 -0400 Subject: [PATCH 07/11] Added Showers (#661) # Description Added in showers. A pure RP furniture item. --- # TODO - [x] Sound effects - [x] Wallmount - [x] Add in Showers --- ![Display](https://github.com/user-attachments/assets/c8499c33-a9ce-4d2d-9003-ed8517afb0b9) --- # Changelog :cl: Tilkku - add: Added showers --- Content.Server/Shower/ShowerSystem.cs | 8 ++ Content.Shared/Showers/SharedShowerSystem.cs | 92 ++++++++++++++++++ Content.Shared/Showers/ShowerComponent.cs | 43 ++++++++ .../Audio/Ambience/Objects/shower_enable.ogg | Bin 0 -> 6313 bytes .../Audio/Ambience/Objects/shower_running.ogg | Bin 0 -> 32475 bytes .../Locale/en-US/shower/shower-component.ftl | 2 + .../Entities/Structures/Furniture/shower.yml | 46 +++++++++ .../Construction/Graphs/furniture/shower.yml | 29 ++++++ .../Recipes/Construction/furniture.yml | 32 ++++-- .../Structures/Furniture/shower.rsi/meta.json | 25 +++++ .../Furniture/shower.rsi/shower.png | Bin 0 -> 540 bytes .../Furniture/shower.rsi/shower_on.png | Bin 0 -> 8123 bytes 12 files changed, 270 insertions(+), 7 deletions(-) create mode 100644 Content.Server/Shower/ShowerSystem.cs create mode 100644 Content.Shared/Showers/SharedShowerSystem.cs create mode 100644 Content.Shared/Showers/ShowerComponent.cs create mode 100644 Resources/Audio/Ambience/Objects/shower_enable.ogg create mode 100644 Resources/Audio/Ambience/Objects/shower_running.ogg create mode 100644 Resources/Locale/en-US/shower/shower-component.ftl create mode 100644 Resources/Prototypes/Entities/Structures/Furniture/shower.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/furniture/shower.yml create mode 100644 Resources/Textures/Structures/Furniture/shower.rsi/meta.json create mode 100644 Resources/Textures/Structures/Furniture/shower.rsi/shower.png create mode 100644 Resources/Textures/Structures/Furniture/shower.rsi/shower_on.png diff --git a/Content.Server/Shower/ShowerSystem.cs b/Content.Server/Shower/ShowerSystem.cs new file mode 100644 index 00000000000..44034d5fa98 --- /dev/null +++ b/Content.Server/Shower/ShowerSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.Showers; + +namespace Content.Server.Shower; + +public sealed class ShowerSystem : SharedShowerSystem +{ + +} diff --git a/Content.Shared/Showers/SharedShowerSystem.cs b/Content.Shared/Showers/SharedShowerSystem.cs new file mode 100644 index 00000000000..be3af6228f2 --- /dev/null +++ b/Content.Shared/Showers/SharedShowerSystem.cs @@ -0,0 +1,92 @@ +using Content.Shared.Interaction; +using Content.Shared.Verbs; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Shared.Showers +{ + public abstract class SharedShowerSystem : EntitySystem + { + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent>(OnToggleShowerVerb); + SubscribeLocalEvent(OnActivateInWorld); + } + private void OnMapInit(EntityUid uid, ShowerComponent component, MapInitEvent args) + { + if (_random.Prob(0.5f)) + component.ToggleShower = true; + UpdateAppearance(uid); + } + private void OnToggleShowerVerb(EntityUid uid, ShowerComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess || args.Hands == null) + return; + + AlternativeVerb toggleVerb = new() + { + Act = () => ToggleShowerHead(uid, args.User, component) + }; + + if (component.ToggleShower) + { + toggleVerb.Text = Loc.GetString("shower-turn-on"); + toggleVerb.Icon = + new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/open.svg.192dpi.png")); + } + else + { + toggleVerb.Text = Loc.GetString("shower-turn-off"); + toggleVerb.Icon = + new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/VerbIcons/close.svg.192dpi.png")); + } + args.Verbs.Add(toggleVerb); + } + private void OnActivateInWorld(EntityUid uid, ShowerComponent comp, ActivateInWorldEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + ToggleShowerHead(uid, args.User, comp); + + _audio.PlayPvs(comp.EnableShowerSound, uid); + } + public void ToggleShowerHead(EntityUid uid, EntityUid? user = null, ShowerComponent? component = null, MetaDataComponent? meta = null) + { + if (!Resolve(uid, ref component)) + return; + + component.ToggleShower = !component.ToggleShower; + + UpdateAppearance(uid, component); + } + private void UpdateAppearance(EntityUid uid, ShowerComponent? component = null) + { + if (!Resolve(uid, ref component)) + return; + + _appearance.SetData(uid, ShowerVisuals.ShowerVisualState, component.ToggleShower ? ShowerVisualState.On : ShowerVisualState.Off); + + if (component.ToggleShower) + { + if (component.PlayingStream == null) + { + component.PlayingStream = _audio.PlayPvs(component.LoopingSound, uid, AudioParams.Default.WithLoop(true).WithMaxDistance(5)).Value.Entity; + } + } + else + { + component.PlayingStream = _audio.Stop(component.PlayingStream); + component.PlayingStream = null; + } + } + } +} \ No newline at end of file diff --git a/Content.Shared/Showers/ShowerComponent.cs b/Content.Shared/Showers/ShowerComponent.cs new file mode 100644 index 00000000000..339205546bd --- /dev/null +++ b/Content.Shared/Showers/ShowerComponent.cs @@ -0,0 +1,43 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Showers +{ + /// + /// showers that can be enabled + /// + [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] + public sealed partial class ShowerComponent : Component + { + /// + /// Toggles shower. + /// + [DataField, AutoNetworkedField] + public bool ToggleShower; + + [DataField("enableShowerSound")] + public SoundSpecifier EnableShowerSound = new SoundPathSpecifier("/Audio/Ambience/Objects/shower_enable.ogg"); + + public EntityUid? PlayingStream; + + [DataField("loopingSound")] + public SoundSpecifier LoopingSound = new SoundPathSpecifier("/Audio/Ambience/Objects/shower_running.ogg"); + + } + + + [Serializable, NetSerializable] + public enum ShowerVisuals : byte + { + ShowerVisualState, + } + + [Serializable, NetSerializable] + public enum ShowerVisualState : byte + { + Off, + On + } +} + diff --git a/Resources/Audio/Ambience/Objects/shower_enable.ogg b/Resources/Audio/Ambience/Objects/shower_enable.ogg new file mode 100644 index 0000000000000000000000000000000000000000..98f41fbffb1f09fc9f89803ad557e6977ab6cc3d GIT binary patch literal 6313 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 U{o_ulkNzwETg}LC^=tJ118M3~A^-pY literal 0 HcmV?d00001 diff --git a/Resources/Audio/Ambience/Objects/shower_running.ogg b/Resources/Audio/Ambience/Objects/shower_running.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9114b0c7dab2c22c6643e931cee75fce5294017f GIT binary patch literal 32475 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 Dp-e$q literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/shower/shower-component.ftl b/Resources/Locale/en-US/shower/shower-component.ftl new file mode 100644 index 00000000000..8713fb0c1f7 --- /dev/null +++ b/Resources/Locale/en-US/shower/shower-component.ftl @@ -0,0 +1,2 @@ +shower-turn-on = Turn On +shower-turn-off = Turn Off \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Furniture/shower.yml b/Resources/Prototypes/Entities/Structures/Furniture/shower.yml new file mode 100644 index 00000000000..694202efdc6 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Furniture/shower.yml @@ -0,0 +1,46 @@ +- type: entity + name: shower + id: Shower + description: A shower, complete with bluespace water. + placement: + mode: SnapgridCenter + snap: + - Wallmount + components: + - type: Sprite + sprite: Structures/Furniture/shower.rsi + drawdepth: WallMountedItems + layers: + - state: shower + map: ["enabled", "enum.ShowerVisualState.Off" ] + - type: Appearance + - type: Rotatable + - type: Transform + noRot: false + - type: Clickable + - type: Shower + - type: Physics + bodyType: Static + canCollide: false + - type: InteractionOutline + - type: Damageable + - type: Construction + graph: Shower + node: shower + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: GenericVisualizer + visuals: + enum.ShowerVisuals.ShowerVisualState: + ShowerVisualState.Off: + On: { state: shower_on } + Off: { state: shower } + diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/shower.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/shower.yml new file mode 100644 index 00000000000..eb0618473b8 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/shower.yml @@ -0,0 +1,29 @@ +- type: constructionGraph + id: Shower + start: start + graph: + - node: start + edges: + - to: shower + completed: + - !type:SnapToGrid { } + steps: + - material: Steel + amount: 5 + doAfter: 1 + - node: shower + entity: Shower + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 5 + - !type:EmptyAllContainers {} + - !type:DestroyEntity {} + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 2 diff --git a/Resources/Prototypes/Recipes/Construction/furniture.yml b/Resources/Prototypes/Recipes/Construction/furniture.yml index 5f7ec9c92d8..3ed0c9b9611 100644 --- a/Resources/Prototypes/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/Recipes/Construction/furniture.yml @@ -596,6 +596,24 @@ - !type:TileNotBlocked #bathroom +- type: construction + name: shower + id: Shower + graph: Shower + startNode: start + targetNode: shower + category: construction-category-furniture + description: A shower, complete with bluespace water. + icon: + sprite: Structures/Furniture/shower.rsi + state: shower + objectType: Structure + placementMode: SnapgridCenter + canRotate: true + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: toilet id: ToiletEmpty @@ -732,7 +750,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsBlack name: black curtains @@ -762,7 +780,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsCyan name: cyan curtains @@ -777,7 +795,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsGreen name: green curtains @@ -792,7 +810,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsOrange name: orange curtains @@ -807,7 +825,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsPink name: pink curtains @@ -822,7 +840,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsPurple name: purple curtains @@ -837,7 +855,7 @@ objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: true - + - type: construction id: CurtainsRed name: red curtains diff --git a/Resources/Textures/Structures/Furniture/shower.rsi/meta.json b/Resources/Textures/Structures/Furniture/shower.rsi/meta.json new file mode 100644 index 00000000000..8e48a41e2f3 --- /dev/null +++ b/Resources/Textures/Structures/Furniture/shower.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by Dakodragon, DiscordID: 56038550335922176", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "shower", + "directions": 4 + }, + { + "name": "shower_on", + "directions": 4, + "delays": [ + [ 0.3, 0.3, 0.3 ], + [ 0.3, 0.3, 0.3 ], + [ 0.3, 0.3, 0.3 ], + [ 0.3, 0.3, 0.3 ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Furniture/shower.rsi/shower.png b/Resources/Textures/Structures/Furniture/shower.rsi/shower.png new file mode 100644 index 0000000000000000000000000000000000000000..4ebce554d1c8cdd1ceeedee1a184cbd75da84ec4 GIT binary patch literal 540 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%z_jtNEhE&XX zd)vP2kb?y42lLZrjUw|DroLblGir_IxLw6$>sX|3+xWIDTQEOCLV#_ziCE*5&8>cB zn>OSm{hRcidG?8xpYxaxo-t?g=QwoXNYvv=Du?2%T`wAM&$;V;UHF9*^9rLA62aeX ztb(l=qH9E4E4kJ^4)IgrINZMR*o;4y+q|?N)YwTc6=6ttRykuw-cy03wVwrcMMSPo zWtZu9Up(c|^@kJUXIIK4tu-u+EoM3*f4F|9y`zsnTiW*9iB@yP_Uo0d*YaXlSh}V* zX#VfL2eQ6?_?&Mx`&c)7l*bSIXF-QbWsD1B8NNG2U0QwofvInyr;y?FO|MsOd7rz} zefFJ?{GFNRhzp>@fw%r2us_cmwRa?z(ut~S&evmrKrBSx|#yz&%cg?y)6_$#4 zt!#hvR_u>PSi{%C{6jmIXWaML?O{ifHzNaah7@J#ddWzYh$ VIe-`hE(K2pQJ$`TF6*2UngBiCf@ndAUc(YS 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 TXUzERe~q@fo?4ZPUDW>oqBl@E literal 0 HcmV?d00001 From e14bea6f259e64eef5c9a7d4cebb08467ae87c16 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 12 Aug 2024 16:46:30 +0000 Subject: [PATCH 08/11] Automatic Changelog Update (#661) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c13b19a328f..75cc34a090f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5250,3 +5250,9 @@ Entries: message: Added the Home Run Bat for Syndicate operatives. Send your foes flying! id: 6255 time: '2024-08-12T16:43:11.0000000+00:00' +- author: Tilkku + changes: + - type: Add + message: Added showers + id: 6256 + time: '2024-08-12T16:46:05.0000000+00:00' From 6df564aafcabdea28a01c28535ae62329c3b837e Mon Sep 17 00:00:00 2001 From: gluesniffler <159397573+gluesniffler@users.noreply.github.com> Date: Mon, 12 Aug 2024 17:43:52 -0400 Subject: [PATCH 09/11] Hardsuit MRP Descriptions (#725) # Description Copying over the original description from #617 > This is a significantly pared down version of #492 > Focusing only on a small category of item descriptions just to get the ball rolling. > > Space Station 14 is actually missing the other two suit-names that were at one point present and commonplace in SS13. The term "Hardsuit" is itself one of three classifications of space suit, based on a book series that I read as a teenager. The full list is as follows. > > Vacsuit: Vacuum-Protection-Suit > Hardsuit: Hardened Vacsuit > Tacsuit: Tactical Combat Hardsuit > Vacsuits are a catch-all shorthand for civilian space suits. They offer no actual protection from anything other than the cold void. > Hardsuits are a form of "Up-armored" vacsuit, and are more like industrial PPE in space. You wear a hardsuit because it's there to protect you while you're welding, shipbreaking, asteroid mining, and so on. > Tacsuits are a variant on the idea of a hardsuit, but instead of having an industrial purpose, they are explicitly for military purposes, and aren't for civilian use at all. > > I've opened this up on draft because Mocho was asking to help me with it. > > Generally, the hardsuits need to be explicitly associated with a specific in-universe corporation. With descriptions changed to better suit a hypothetical setting that we'd wish to write. > > For instance, much of the equipment used by Security would likely be products of Five-Points-Armory, a corporation that NT prefers to buy their security equipment from for the simple fact that it's cheap, yet gets the job done. Rewrote hardsuit descriptions to match the original request, but from the POV of a character as suggested by @DangerRevolution. The descriptions also have a rough template which goes along the lines of... {Type of suit} produced by {corporation} + {optional visual attributes} + the label/tag says {hint at protective stats} + it feels {light or heavy depending on speed stats}. In the commits you can also find that I had lengthier but more fleshed out descs for each of the hardsuits. But they went into detail your character wouldn't feasibly be able to know at a glance (how do I know this suit is made of plastitanium plating, and that the other has ceramic TPS plates?). Feel free to ask for mix and matching between the two. **Also I moved the paramedic voidsuit to be a hardsuit, because for whatever reason it wasn't one already.** Even had all of the properties that a normal hardsuit does. :trollface: --- # Changelog :cl: - tweak: Changed hardsuit descriptions to be slightly less LRP. - tweak: Changed paramedic voidsuit from a softsuit to a hardsuit. --------- Co-authored-by: VMSolidus --- .../clothing/head/hardsuit-helmets.ftl | 102 +++++++++++++ .../clothing/outerClothing/hardsuits.ftl | 135 ++++++++++++++++++ .../Catalog/Fills/Lockers/suit_storage.yml | 3 +- .../Entities/Clothing/Head/eva-helmets.yml | 20 --- .../Clothing/Head/hardsuit-helmets.yml | 19 +++ .../Clothing/OuterClothing/hardsuits.yml | 32 +++++ .../Clothing/OuterClothing/softsuits.yml | 53 ++----- .../Clothing/Head/hardsuit-helmets.yml | 4 +- .../Objectives/stealTargetGroups.yml | 2 +- .../paramedhelm.rsi/equipped-HELMET.png | Bin .../paramedhelm.rsi/icon.png | Bin .../paramedhelm.rsi/inhand-left.png | Bin .../paramedhelm.rsi/inhand-right.png | Bin .../paramedhelm.rsi/meta.json | 52 +++---- 14 files changed, 326 insertions(+), 96 deletions(-) create mode 100644 Resources/Locale/en-US/prototypes/entities/clothing/head/hardsuit-helmets.ftl create mode 100644 Resources/Locale/en-US/prototypes/entities/clothing/outerClothing/hardsuits.ftl rename Resources/Textures/Clothing/Head/{Helmets => Hardsuits}/paramedhelm.rsi/equipped-HELMET.png (100%) rename Resources/Textures/Clothing/Head/{Helmets => Hardsuits}/paramedhelm.rsi/icon.png (100%) rename Resources/Textures/Clothing/Head/{Helmets => Hardsuits}/paramedhelm.rsi/inhand-left.png (100%) rename Resources/Textures/Clothing/Head/{Helmets => Hardsuits}/paramedhelm.rsi/inhand-right.png (100%) rename Resources/Textures/Clothing/Head/{Helmets => Hardsuits}/paramedhelm.rsi/meta.json (95%) diff --git a/Resources/Locale/en-US/prototypes/entities/clothing/head/hardsuit-helmets.ftl b/Resources/Locale/en-US/prototypes/entities/clothing/head/hardsuit-helmets.ftl new file mode 100644 index 00000000000..2bbacf2abca --- /dev/null +++ b/Resources/Locale/en-US/prototypes/entities/clothing/head/hardsuit-helmets.ftl @@ -0,0 +1,102 @@ +ent-ClothingHeadHelmetHardsuitBasic = basic vacsuit helmet + .desc = A common vacsuit helmet that provides little more than basic protection from vacuum. +ent-ClothingHeadHelmetHardsuitAtmos = HpI-19t helmet + .desc = The Fotia's standard helmet, it features the same heat protection as the suit, along with some integrated protective gear for the wearer's head. +ent-ClothingHeadHelmetHardsuitEngineering = HpI-19r helmet + .desc = The Lampsi's standard helmet, it features the same radiation protection as the suit, along with some integrated protective gear for the wearer's head. +ent-ClothingHeadHelmetHardsuitSpatio = HpI-20s helmet + .desc = A lightweight helmet designed for the Kriti hardsuit, it allows for better mobility, along with some protection against radiation. +ent-ClothingHeadHelmetHardsuitSalvage = HpI-20a helmet + .desc = A bulky helmet designed for the Lavrion hardsuit, it has reinforced plating to protect the wearer's head in wildlife encounters. +ent-ClothingHeadHelmetHardsuitVoidParamed = ZhP-24m helmet + .desc = A lightweight helmet designed for use with the Sukunabikona hardsuit. Parts of the helmet are made of hard transparent plastics, allowing for better visibility. +ent-ClothingHeadHelmetHardsuitMaxim = mysterious helmet + .desc = An old looking helmet, it seems rather sturdy and lightweight. It also has an ominous red and black color scheme. +ent-ClothingHeadHelmetHardsuitSecurity = FPA-83s helmet + .desc = A bulky helmet deployed with the Baghatur tacsuit. Protects its wearer against ballistics and explosive ordinance, at the cost of some mobility. +ent-ClothingHeadHelmetHardsuitBrigmedic = FPA-84m helmet + .desc = A bulky helmet deployed with the Tsagaan tacsuit. Protects its wearer against ballistics and explosive ordinance, at the cost of some mobility. +ent-ClothingHeadHelmetHardsuitCombatStandard = FPA-85 helmet + .desc = A bulky helmet deployed with the Baghatur Mk.II tacsuit. + Protects its wearer against ballistics and explosive ordinance, at the cost of some mobility. +ent-ClothingHeadHelmetHardsuitCombatOfficer = FPA-85s helmet + .desc = { ent-ClothingHeadHelmetHardsuitCombatStandard.desc } +ent-ClothingHeadHelmetHardsuitCombatMedical = FPA-86 helmet + .desc = A bulky helmet deployed with the Tsagaan Mk.II tacsuit. + Protects its wearer against ballistics and explosive ordinance, at the cost of some mobility. +ent-ClothingHeadHelmetHardsuitCombatCorpsman = FPA-86m helmet + .desc = { ent-ClothingHeadHelmetHardsuitCombatMedical.desc } +ent-ClothingHeadHelmetHardsuitWarden = FPA-92s helmet + .desc = A modified riot-control helmet for use with the Sulde tacsuit. Offers better overall protection than standard tacsuits at the expense of mobility. +ent-ClothingHeadHelmetHardsuitCombatRiot = FPA-93 helmet + .desc = A modified riot-control helmet for use with the Sulde Mk.II tacsuit. + Offers better overall protection than other models at the expense of mobility. +ent-ClothingHeadHelmetHardsuitCombatWarden = FPA-93s helmet + .desc = { ent-ClothingHeadHelmetHardsuitCombatRiot.desc } +ent-ClothingHeadHelmetHardsuitCap = NT-42c helmet + .desc = A special helmet for the Tengri tacsuit, despite its lightweight appearance, it provides good all-around protection to its wearer. +ent-ClothingHeadHelmetHardsuitEngineeringWhite = HpI-24c helmet + .desc = A high-grade helmet used with the Daedalus hardsuit, it has a lighter construction than its standard counterparts, along with more radiation protection. +ent-ClothingHeadHelmetHardsuitMedical = ZhP-25m helmet + .desc = An extraordinarily lightweight helmet designed for use with the Okuninushi hardsuit. + It is primarily made from transparent hard-plastics, providing complete freedom of vision. +ent-ClothingHeadHelmetHardsuitRd = NT-45e helmet + .desc = A heavily armored helmet worn over the Sophia hardsuit. It boasts the same near-immunity to explosions, heat and radiation as the suit, but heavily restricts the wearer's mobility. +ent-ClothingHeadHelmetHardsuitMystagogue = NT-45e helmet + .desc = { ent-ClothingHeadHelmetHardsuitRd.desc } +ent-ClothingHeadHelmetHardsuitSecurityRed = FPA-98s helmet + .desc = A high quality helmet for the Dayicin tacsuit. It offers better overall protection than standard tacsuits without impacting mobility as much. +ent-ClothingHeadHelmetHardsuitCombatAdvanced = FPA-99 helmet + .desc = A high quality helmet for the Dayicin Mk.II tacsuit. + Features a lightweight construction, offering the same protection as a standard tacsuit without impacting mobility as much. +ent-ClothingHeadHelmetHardsuitCombatHoS = FPA-99s helmet + .desc = { ent-ClothingHeadHelmetHardsuitCombatAdvanced.desc } +ent-ClothingHeadHelmetHardsuitLuxury = HpI-20c helmet + .desc = A modified helmet for the Minos hardsuit, fashioned after the Logistics Officer's colors. It's been modified for greater mobility at the expense of physical trauma protection. +ent-ClothingHeadHelmetHardsuitSyndie = CSA-51a helmet + .desc = An armored helmet deployed over a Shanlin tacsuit. This one has been painted blood red. +ent-ClothingHeadHelmetHardsuitSyndieMedic = CSA-51m helmet + .desc = An armored helmet deployed over a Zhongyao tacsuit. features optic integrations for nearly every medical hud on the market. + Designed to enable the survival of combat medics in the most dangerous of environments. +ent-ClothingHeadHelmetHardsuitSyndieElite = CSA-54UA helmet + .desc = An elite version of the Shanlin tacsuit's helmet, featuring improved armor and fireproofing. +ent-ClothingHeadHelmetHardsuitSyndieCommander = CSA-54c helmet + .desc = A bulked up version of the Shanlin tacsuit's helmet, purpose-built for commanders of special operation squads. This one has been painted blood-red. +ent-ClothingHeadHelmetHardsuitCybersun = CSA-80UA helmet + .desc = An incredibly sturdy looking helmet designed for the Guan Yu tacsuit. +ent-ClothingHeadHelmetHardsuitWizard = WZD-84 helmet + .desc = A bizarre, gem-encrusted helmet from unknown origins. It provides some protection to its wearer without restricting their movements. +ent-ClothingHeadHelmetHardsuitLing = organic space helmet + .desc = A spaceworthy biomass of pressure and temperature resistant tissue. +ent-ClothingHeadHelmetHardsuitPirateEVA = pirate helmet + .desc = A pirate vacsuit helmet, very heavy but provides good protection. + .suffix = Pirate +ent-ClothingHeadHelmetHardsuitPirateCap = pirate captain's tacsuit helmet + .desc = A special hardsuit helmet, made for the captain of a pirate ship. + .suffix = Pirate +ent-ClothingHeadHelmetHardsuitSyndieReverseEngineered = NTSA-122 helmet + .desc = A sturdy, lightweight helmet made by the special adquisitions department of Nanotrasen. +ent-ClothingHeadHelmetHardsuitJuggernautReverseEngineered = NTSA-126 helmet + .desc = A very sturdy helmet made by the special acquisitions department of Nanotrasen, based on the "Juggernaut" tacsuit's design. +ent-ClothingHeadHelmetHardsuitERTCentcomm = NT-444c helmet + .desc = A special tacsuit helmet worn by Central Command Officers. +ent-ClothingHeadHelmetHardsuitERTLeader = NT-444l helmet + .desc = A special tacsuit helmet worn by leaders of an emergency response team. +ent-ClothingHeadHelmetHardsuitERTEngineer = NT-444e helmet + .desc = A special hardsuit helmet worn by members of an engineering emergency response team. +ent-ClothingHeadHelmetHardsuitERTMedical = NT-444m helmet + .desc = A special hardsuit helmet worn by members of a medical emergency response team. +ent-ClothingHeadHelmetHardsuitERTSecurity = NT-444s helmet + .desc = A special tacsuit helmet worn by members of a engineering emergency response team. +ent-ClothingHeadHelmetHardsuitERTJanitor = NT-444j helmet + .desc = A special hardsuit helmet worn by members of a janitorial emergency response team. +ent-ClothingHeadHelmetCBURN = NT-444-CBRN helmet + .desc = A pressure resistant and fireproof hood worn by special cleanup units. +ent-ClothingHeadHelmetHardsuitDeathsquad = NT-662ua helmet + .desc = A highly advanced, top of the line helmet used in special operations. +ent-ClothingHeadHelmetHardsuitClown = clown vacsuit helmet + .desc = A colorful clown vacsuit helmet. On closer inspection, it appears to be a normal helmet painted with crayons, and a clown mask glued on top. +ent-ClothingHeadHelmetHardsuitMime = mime vacsuit helmet + .desc = A mime vacsuit helmet. On closer inspection, it appears to be a normal helmet painted with crayons, and a mime mask glued on top. +ent-ClothingHeadHelmetHardsuitSanta = DNK-31 helmet + .desc = A festive-looking hardsuit helmet that provides the jolly gift-giver protection from low-pressure environments. \ No newline at end of file diff --git a/Resources/Locale/en-US/prototypes/entities/clothing/outerClothing/hardsuits.ftl b/Resources/Locale/en-US/prototypes/entities/clothing/outerClothing/hardsuits.ftl new file mode 100644 index 00000000000..84f03af5c92 --- /dev/null +++ b/Resources/Locale/en-US/prototypes/entities/clothing/outerClothing/hardsuits.ftl @@ -0,0 +1,135 @@ +ent-ClothingOuterHardsuitBasic = basic vacsuit + .desc = A common, colonial-era vacsuit of indeterminate make and model. It's strictly better than nothing, but not by much. +ent-ClothingOuterHardsuitAtmos = HpI-19t "Fotia" hardsuit + .desc = A standard-issue hardsuit produced by Hephaestus Industries, used by atmospheric technicians in low & high pressure environments. + The label indicates that its rated for high amounts of thermal exposure. It feels a bit heavy. +ent-ClothingOuterHardsuitEngineering = HpI-19r "Lampsi" hardsuit + .desc = A standard-issue hardsuit produced by Hephaestus Industries, used by engineers in low & high pressure environments. + The label indicates that its rated for moderate amounts of radiation exposure. It feels a bit heavy. +ent-ClothingOuterHardsuitSpatio = HpI-20s "Kriti" hardsuit + .desc = A standard-issue hardsuit produced by Hephaestus Industries, designed for industrial work in low pressure environments. + The label indicates that its rated for moderate amounts of radiation exposure, and it feels somewhat light. +ent-ClothingOuterHardsuitSalvage = HpI-20a "Lavrion" hardsuit + .desc = A sturdy hardsuit produced by Hephaestus Industries, designed for industrial work in low pressure environments. + The labels indicate that it provides protection against most forms of damage. It feels heavy. +ent-ClothingOuterHardsuitVoidParamed = ZhP-24m "Sukunabikona" + .desc = A standard-issue hardsuit manufactured by Zeng-Hu Pharmaceuticals, used by paramedics due to its lightweight frame. + The label mentions that it offers some protection against chemical spills. +ent-ClothingOuterHardsuitMaxim = Mysterious tacsuit + .desc = An old looking tactical combat hardsuit. It has a faded red logo on it along with the words "Maxim". + It feels very sturdy and doesn't seem to have any weight... Though it has an ominous aura to it. +ent-ClothingOuterHardsuitSecurity = FPA-83s - "Baghatur" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory, used by the Nanotrasen security force. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitBrigmedic = FPA-84m - "Tsagaan" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory, used by doctors in the Nanotrasen security force. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitCombatStandard = FPA-85 - "Baghatur Mk.II" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitCombatOfficer = FPA-85s - "Baghatur Mk.II" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory, painted with the colors of station security. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitCombatMedical = FPA-86 - "Tsagaan Mk.II" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitCombatCorpsman = FPA-86m - "Tsagaan Mk.II" tacsuit + .desc = A sturdy tactical combat hardsuit mass-produced by Five-Points-Armory, painted with the colors of station security & medical staff. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels heavy. +ent-ClothingOuterHardsuitWarden = FPA-92s - "Sulde" tacsuit + .desc = A specialized tactical combat hardsuit produced by Five-Points-Armory, often used by Wardens in Nanotrasen stations. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels VERY heavy. +ent-ClothingOuterHardsuitCombatRiot = FPA-93 - "Sulde Mk.II" tacsuit + .desc = A specialized tactical combat hardsuit produced by Five-Points-Armory. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels VERY heavy. +ent-ClothingOuterHardsuitCombatWarden = FPA-93s - "Sulde Mk.II" tacsuit + .desc = A specialized tactical combat hardsuit produced by Five-Points-Armory, painted with the colors of station security. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels VERY heavy. +ent-ClothingOuterHardsuitCap = NT-42c - "Tengri" tacsuit + .desc = A formal, tactical combat hardsuit, made in collaboration by Nanotrasen's R&D department with Five-Points-Armory for station captains. + The labels indicate that it provides protection against most forms of damage. It feels somewhat light. +ent-ClothingOuterHardsuitEngineeringWhite = HpI-24c "Daedalus" hardsuit + .desc = A specialized hardsuit produced by Hephaestus Industries, often purchased for use by Nanotrasen senior engineers. + The labels indicate that its rated for high amounts of radiation and pressure. It feels somewhat light. +ent-ClothingOuterHardsuitMedical = ZhP-25m - "Okuninushi" hardsuit + .desc = A hardsuit produced by Zeng-hu Pharmaceuticals, often purchased for use by Nanotrasen senior medical doctors. + The labels claim it protects against damage from most chemical spills. It feels incredibly light. +ent-ClothingOuterHardsuitRd = NT-45e - "Sophia" research hardsuit + .desc = The magnum opus of Nanotrasen's R&D division. The labels on this hardsuit claim that its near-immune to explosions, heat and radiation. + Somehow it also can shrink enough to fit in a bag. It feels VERY heavy. +ent-ClothingOuterHardsuitMystagogue = NT-45e - "Sophia" research hardsuit + .desc = { ent-ClothingOuterHardsuitRd.desc } +ent-ClothingOuterHardsuitSecurityRed = FPA-98s - "Dayicin" tacsuit + .desc = A top-of-the-line tactical combat hardsuit produced by Five-Points-Armory, often purchased for use by Nanotrasen senior security officers. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels somewhat light. +ent-ClothingOuterHardsuitCombatAdvanced = FPA-99 - "Dayicin Mk.II" tacsuit + .desc = A top-of-the-line tactical combat hardsuit produced by Five-Points-Armory. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels somewhat light. +ent-ClothingOuterHardsuitCombatHoS = FPA-99s - "Dayicin Mk.II" tacsuit + .desc = A top-of-the-line tactical combat hardsuit produced by Five-Points-Armory, painted with the colors of station security. + The tags on the suit indicate that its rated for moderate amounts of physical and explosion damage. It feels somewhat light. +ent-ClothingOuterHardsuitLuxury = HpI-20c - "Minos" hardsuit + .desc = A modified mining hardsuit from Hephaestus Industries, fashioned after the Logistics Officer's colors. + The labels indicate that it provides slight protection against most forms of damage. It feels incredibly light. +ent-ClothingOuterHardsuitSyndie = CSA-51a - "Shanlin" tacsuit + .desc = A tactical combat hardsuit produced by the Cybersun-Armaments Corporation, the suit's tags indicate it provides moderate protection against most forms of damage. + This one has been painted blood red. It feels incredibly light. +ent-ClothingOuterHardsuitSyndieMedic = CSA-51m - "Zhongyao" tacsuit + .desc = A tactical combat hardsuit produced by the Cybersun-Armaments Corporation, the suit's tags indicate it provides moderate protection against most forms of damage. + Half of the suit is painted blood red, the rest bears galactic-standard medical markings. It feels incredibly light. +ent-ClothingOuterHardsuitSyndieElite = CSA-54UA - "Shiwei" tacsuit + .desc = An "Up-Armored" tactical combat hardsuit produced by the Cybersun-Armaments Corporation. + The suit's tags indicate its rated for high exposure to radiation, heat and explosions, along with moderate physical trauma protection. + It feels incredibly light. +ent-ClothingOuterHardsuitSyndieCommander = CSA-54c - "Tianming" tacsuit + .desc = A "Commander" tactical combat hardsuit produced by the Cybersun-Armaments Corporation. The suit's tags indicate that it protects greatly against all forms of damage. + This one has been painted blood red. It doesn't seem to have any weight. +ent-ClothingOuterHardsuitJuggernaut = CSA-80UA - "Guan Yu" tacsuit + .desc = The pride and joy of the Cybersun-Armaments Corporation, named after an ancient Sol' War God. Commonly known throughout the galaxy as a "Juggernaut". + Matching its bulky appearance, it protects against all forms of damage. It feels VERY heavy. +ent-ClothingOuterHardsuitWizard = WZD-84 - "Mana" tacsuit + .desc = A bizarre gem-encrusted hardsuit. Famously used by members of the Wizard Federation in their operations. + Contrary to it's appearance, it can protect its wearer from space and considerable amounts of physical trauma, it feels somewhat light. +ent-ClothingOuterHardsuitLing = organic vacsuit + .desc = A suit made of biomass tissue that is somehow capable of resisting the hazards of low pressure and temperature in space. +ent-ClothingOuterHardsuitPirateEVA = pirate vacsuit + .desc = A worn-out heavy space suit of unknown origin that provides some basic protection from the cold harsh realities of deep space. + .suffix = Pirate +ent-ClothingOuterHardsuitPirateCap = pirate captain's tacsuit + .desc = An ancient armored tactical combat hardsuit of unknown origin, provides basic protections from the cold harsh realities of deep space and physical trauma. + It doesn't seem to have any weight either. Perfect for defending against space scurvy and toolbox-wielding scallywags. +ent-ClothingOuterHardsuitSyndieReverseEngineered = NTSA-122 tacsuit + .desc = A suit made by the special adquisitions department of Nanotrasen, the suit's tags indicate it provides moderate protection against most forms of damage. +ent-ClothingOuterHardsuitJuggernautReverseEngineered = NTSA-126 tacsuit + .desc = A suit made by the special acquisitions department of Nanotrasen based on the "Juggernaut" design. + Matching its bulky appearance, it protects against all forms of damage. It feels VERY heavy. +ent-ClothingOuterHardsuitERTCentcomm = NT-444c - "Ophanim" tacsuit + .desc = A highly advanced, tactical combat hardsuit used by Central Command Officers, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitERTLeader = NT-444l - "Michael" tacsuit + .desc = A highly advanced, tactical combat hardsuit used by Leaders of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitERTEngineer = NT-444e - "Uriel" hardsuit + .desc = A highly advanced hardsuit used by Engineers of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitERTMedical = NT-444m - "Raphael" hardsuit + .desc = A highly advanced hardsuit used by Doctors of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitERTSecurity = NT-444s - "Gabriel" tacsuit + .desc = A highly advanced, tactical combat hardsuit used by Security Officers of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitERTJanitor = NT-444j - "Sandalphon" hardsuit + .desc = A highly advanced hardsuit used by Janitors of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a very sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitDeathsquad = NT-662ua "Samael" tacsuit + .desc = A highly advanced, top of the line tactical combat hardsuit, it seems to be branded with the Nanotrasen logo and a strange looking series number. + You can barely make out the letters "NTIA-DAP" written on it. The armor appears to be lined with a very sturdy alloy, and doesn't seem to have any weight either. +ent-ClothingOuterHardsuitCBURN = NT-444-CBRN -"Jophiel" tacsuit + .desc = A tactical combat hardsuit used by the CBURN subdivision of the Emergency Response Team, it seems to be branded with the Nanotrasen logo and a strange looking series number. + The armor appears to be lined with a rather plain, but sturdy alloy, it doesn't seem to have any weight either. +ent-ClothingOuterHardsuitClown = clown vacsuit + .desc = A custom-made clown vacsuit. On closer inspection, it appears to be a normal vacsuit with paint applied on top. +ent-ClothingOuterHardsuitMime = mime vacsuit + .desc = A custom-made mime vacsuit. On closer inspection, it appears to be a normal vacsuit with suspenders and paint applied on top. +ent-ClothingOuterHardsuitSanta = DNK-31 "Jolly" hardsuit + .desc = A festive hardsuit produced by Donk Co. for their time-limited celebratory events, provides protection for its jolly gift-giver to sleighride safely in space without worrying about asteroid strikes. \ No newline at end of file diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index ac5cb47cc97..734bd485a2e 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -44,7 +44,7 @@ suffix: Prisoner EVA components: - type: StorageFill - contents: + contents: - id: OxygenTankFilled - id: ClothingOuterHardsuitEVAPrisoner - id: ClothingHeadHelmetEVALarge @@ -258,7 +258,6 @@ - id: NitrogenTankFilled - id: OxygenTankFilled - id: ClothingOuterHardsuitVoidParamed - - id: ClothingHeadHelmetVoidParamed - id: ClothingMaskBreathMedical - type: AccessReader access: [ [ "Paramedic" ] ] diff --git a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml index 963bcdedd78..c3c6a617a03 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml @@ -54,26 +54,6 @@ - type: Clothing sprite: Clothing/Head/Helmets/cosmonaut.rsi -#Paramedic Void Helmet -- type: entity - parent: ClothingHeadEVAHelmetBase - id: ClothingHeadHelmetVoidParamed - name: paramedic void helmet - description: A void helmet made for paramedics. - components: - - type: BreathMask - - type: Sprite - sprite: Clothing/Head/Helmets/paramedhelm.rsi - - type: Clothing - sprite: Clothing/Head/Helmets/paramedhelm.rsi - - type: TemperatureProtection - coefficient: 0.1 - - type: Armor - modifiers: - coefficients: - Heat: 0.90 - Radiation: 0.75 - #Ancient Void Helmet - type: entity parent: ClothingHeadEVAHelmetBase diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index f1489b0ddd6..6985fe7ec39 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -156,6 +156,25 @@ Piercing: 0.9 Heat: 0.9 +#Paramedic Void Helmet +- type: entity + parent: ClothingHeadHardsuitBase + id: ClothingHeadHelmetHardsuitVoidParamed + name: paramedic void helmet + description: A void helmet made for paramedics. + components: + - type: BreathMask + - type: Sprite + sprite: Clothing/Head/Hardsuits/paramedhelm.rsi + - type: Clothing + sprite: Clothing/Head/Hardsuits/paramedhelm.rsi + - type: Armor + modifiers: + coefficients: + Heat: 0.90 + Radiation: 0.75 + + #Security Hardsuit - type: entity parent: ClothingHeadHardsuitWithLightBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 70ab3016469..ba889285a16 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -163,6 +163,38 @@ - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitSalvage +#Paramedic Voidsuit +- type: entity + parent: ClothingOuterHardsuitBase + id: ClothingOuterHardsuitVoidParamed + name: paramedic hardsuit + description: A hardsuit made for paramedics. + components: + - type: Sprite + sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi + - type: TemperatureProtection + coefficient: 0.1 + - type: PressureProtection + highPressureMultiplier: 0.5 + lowPressureMultiplier: 1000 + - type: Armor + modifiers: + coefficients: + Heat: 0.90 + Radiation: 0.75 + Caustic: 0.5 + - type: StealTarget + stealGroup: ClothingOuterHardsuitVoidParamed + - type: ClothingSpeedModifier + walkModifier: 0.9 + sprintModifier: 0.9 + - type: HeldSpeedModifier + - type: ToggleableClothing + clothingPrototype: ClothingHeadHelmetHardsuitVoidParamed + + - type: entity parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitMaxim diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml index b81b3d1e7f0..115202813c7 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml @@ -2,8 +2,8 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitEVA - name: EVA suit - description: A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies. + name: vacsuit + description: A lightweight vacsuit with the basic ability to protect the wearer from the vacuum of space during emergencies. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/eva.rsi @@ -20,7 +20,7 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitSyndicate # TODO: rename to ClothingOuterEVASuitSyndicate - name: syndicate EVA suit + name: syndicate vacsuit description: "Has a tag on the back that reads: 'Totally not property of an enemy corporation, honest!'" components: - type: Sprite @@ -38,8 +38,8 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterSuitEmergency - name: emergency EVA suit - description: An emergency EVA suit with a built-in helmet. It's horribly slow and lacking in temperature protection, but enough to bide you time from the harsh vaccuum of space. + name: emergency vacsuit + description: An emergency vacsuit with a built-in helmet. It's horribly slow and lacking in temperature protection, but enough to bide you time from the harsh vaccuum of space. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/eva_emergency.rsi @@ -62,7 +62,7 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitEVAPrisoner - name: prisoner EVA suit + name: prisoner vacsuit description: A lightweight space suit for prisoners to protect them from the vacuum of space during emergencies. components: - type: Sprite @@ -80,8 +80,8 @@ - type: entity parent: ClothingOuterEVASuitBase id: ClothingOuterHardsuitAncientEVA - name: NTSRA voidsuit #Nanotrasen Space Research Association - description: An ancient space suit, designed by the NTSRA branch of CentCom. It is very finely crafted, allowing for greater mobility than most modern space suits. + name: NTSRA vacsuit #Nanotrasen Space Research Association + description: An ancient vacsuit, designed by the NTSRA branch of CentCom. It is very finely crafted, allowing for greater mobility than most modern vacsuits. components: - type: Sprite sprite: Clothing/OuterClothing/Suits/ancient_voidsuit.rsi @@ -91,40 +91,3 @@ walkModifier: 0.85 sprintModifier: 0.85 - type: HeldSpeedModifier - -#Paramedic Voidsuit -#Despite having resistances and looking like a hardsuit, this parents off the EVA suit so it goes here. -- type: entity - parent: ClothingOuterEVASuitBase - id: ClothingOuterHardsuitVoidParamed - name: paramedic void suit - description: A void suit made for paramedics. - components: - - type: Sprite - sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi - - type: Clothing - sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi - - type: PressureProtection - highPressureMultiplier: 0.5 - lowPressureMultiplier: 1000 - - type: ClothingSpeedModifier - walkModifier: 0.9 - sprintModifier: 0.9 - - type: HeldSpeedModifier - - type: TemperatureProtection - coefficient: 0.1 - - type: Armor - modifiers: - coefficients: - Heat: 0.90 - Radiation: 0.75 - Caustic: 0.5 - - type: GroupExamine - - type: StealTarget - stealGroup: ClothingOuterHardsuitVoidParamed - - type: ToggleableClothing - clothingPrototype: ClothingHeadHelmetVoidParamed - slot: head - - type: ContainerContainer - containers: - toggleable-clothing: !type:ContainerSlot {} diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hardsuit-helmets.yml index 6c96d3a56dd..1a83a14bd57 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hardsuit-helmets.yml @@ -19,7 +19,7 @@ parent: ClothingHeadHelmetHardsuitSyndie id: ClothingHeadHelmetHardsuitSyndieReverseEngineered noSpawn: true - name: SA-123 combat hardsuit helmet + name: SA-122 combat hardsuit helmet description: An advanced hardsuit helmet designed for work in special operations. components: - type: Sprite @@ -31,7 +31,7 @@ parent: ClothingHeadHelmetHardsuitCybersun id: ClothingHeadHelmetHardsuitJuggernautReverseEngineered noSpawn: true - name: SA-127 combat hardsuit helmet + name: SA-126 combat hardsuit helmet description: An assault hardsuit helmet featuring a top-secret translucent polymer. components: - type: Sprite diff --git a/Resources/Prototypes/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Objectives/stealTargetGroups.yml index e93c9c319da..59952784339 100644 --- a/Resources/Prototypes/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/Objectives/stealTargetGroups.yml @@ -190,7 +190,7 @@ - type: stealTargetGroup id: ClothingOuterHardsuitVoidParamed - name: paramedic void suit + name: paramedic hardsuit sprite: sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi state: icon diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/icon.png b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/icon.png similarity index 100% rename from Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/icon.png rename to Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/icon.png diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-left.png rename to Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-right.png rename to Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/meta.json similarity index 95% rename from Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json rename to Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/meta.json index 4ec7339a888..a42fdeb8102 100644 --- a/Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/meta.json @@ -1,26 +1,26 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from paradise station at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365, redrawn by Ubaser", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from paradise station at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365, redrawn by Ubaser", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} From e23114ce58b7532800099b71947fba16ea29c7a8 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 12 Aug 2024 21:44:15 +0000 Subject: [PATCH 10/11] Automatic Changelog Update (#725) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 75cc34a090f..debbbbfe988 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -5256,3 +5256,11 @@ Entries: message: Added showers id: 6256 time: '2024-08-12T16:46:05.0000000+00:00' +- author: gluesniffler + changes: + - type: Tweak + message: Changed hardsuit descriptions to be slightly less LRP. + - type: Tweak + message: Changed paramedic voidsuit from a softsuit to a hardsuit. + id: 6257 + time: '2024-08-12T21:43:52.0000000+00:00' From 2ae464e0693feb8aecf813070a13bb7b49d49006 Mon Sep 17 00:00:00 2001 From: stellar-novas Date: Mon, 12 Aug 2024 19:07:17 -0400 Subject: [PATCH 11/11] Nix Version Bump (#721) The bi-monthly nix version bump. Only impacts the nix users, which are me and @DEATHB4DEFEAT --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7baaa468ea5..40a98aa9f96 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717352157, - "narHash": "sha256-hbBzucWOhwxt3QzeAyUojtD6/aHH81JssDfhFfmqOy0=", + "lastModified": 1723382296, + "narHash": "sha256-55jPcSyBPG77QysozW12H0VA0E56PJYS+duYndDUNLg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "44f538ab12e2726af450877a5529f4fd88ddb0fb", + "rev": "a5d81094146e6b042c4e5f4c5e179c5c35c3ae28", "type": "github" }, "original": {