From c92ea10a35edd148defe0369aa4c6db236113a47 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 18:57:01 -0700 Subject: [PATCH 01/82] Update Credits (#602) This is an automated Pull Request. This PR updates the GitHub contributors in the credits section. Co-authored-by: SimpleStation Changelogs --- 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 276f44a01f0..e6c7690ad37 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, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, 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, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, 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, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, 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, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, 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, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, 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, Deeeeja, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, 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, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, 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, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From a0d7f7d36884b02f38af99a2c3a278f476b86151 Mon Sep 17 00:00:00 2001 From: Miller <151492849+CilliePaint@users.noreply.github.com> Date: Mon, 29 Jul 2024 01:50:43 -0400 Subject: [PATCH 02/82] Box Retexture (#597) # Description Retextures Boxes slightly. Description. ---

Media

![Science](https://file.garden/Yy0ydNX23DJlLOUl/Sharing/BoxRetexture/Screenshot_20240726_160131.png) ![Standard](https://file.garden/Yy0ydNX23DJlLOUl/Sharing/BoxRetexture/Screenshot_20240726_160028.png) ![Olive](https://file.garden/Yy0ydNX23DJlLOUl/Sharing/BoxRetexture/Screenshot_20240726_160125.png) ![Doom](https://file.garden/Yy0ydNX23DJlLOUl/Sharing/BoxRetexture/Screenshot_20240726_160110.png)

--- # Changelog :CL: - tweak: New Box Textures! --------- Signed-off-by: Miller <151492849+CilliePaint@users.noreply.github.com> --- .../Objects/Storage/boxes.rsi/box.png | Bin 305 -> 369 bytes .../Objects/Storage/boxes.rsi/box_hug.png | Bin 207 -> 230 bytes .../Objects/Storage/boxes.rsi/box_of_doom.png | Bin 291 -> 371 bytes .../Storage/boxes.rsi/box_of_doom_big.png | Bin 300 -> 364 bytes .../Objects/Storage/boxes.rsi/box_olive.png | Bin 5494 -> 756 bytes .../Objects/Storage/boxes.rsi/box_science.png | Bin 17958 -> 2970 bytes .../Objects/Storage/boxes.rsi/meta.json | 2 +- 7 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/box.png b/Resources/Textures/Objects/Storage/boxes.rsi/box.png index e62e0f699fb4970c743ebe5ddfbf10f47a0f6318..08c3cc3129b1400a51a1a83863ef262dea0f1561 100644 GIT binary patch delta 342 zcmV-c0jd760`UTnB!2;OQb$4nuFf3k0003iNklC|tq({E7lX9Txf&{k_dL+w(y!9@Zth{6ss1X8b!Gic+yfeAs(slv?7eJ5lH z0eX7=J1d;f{=wdIFj)60*1E?1-Gj4#jWhh{_z>@JA6^1m$$tg_EL{?-t|H$j_r2FC z&^Db5IM0CL>z#HZkR+R}3}*}6T;FypAVdxTD9b72_KscO9S#8ikMp@*D_&oI_gZz4T_>*XM+kTwSW*gF2?5|BIj@+awxS3BcOGSIF4;$ o6h%$}lhwL*3UvNU*3;AT3H9b+J@KXgR{#J207*qoM6N<$g7b2lBme*a delta 278 zcmV+x0qOqn0Oh*2;K cMm7KdhtfX9{12)|6aWAK07*qoM6N<$g4T<93;+NC diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/box_hug.png b/Resources/Textures/Objects/Storage/boxes.rsi/box_hug.png index f9f0e4dbf3d4554746911228558ef46807683909..d00717065f9c2275d5cd17b1286d540265f8ae03 100644 GIT binary patch delta 173 zcmX@l_>6Iagct`i0|SH0lCEPwim^Dz-HBn{IhmIe6?N;mN`m}?8UDjSU8hJGP)&lT zi(`mI@7oLRdA0lhwrPrJ_nx)(Tc^akFwVICcImmJQjQEvd=3sL z-8)`cv{t@ZucaWcGpzf;fi<#c3LKvA5pQWO`z@8?t}^}0za8v9MMU_Y{XA8+uaf0! V)BVd;JV47BJYD@<);T3K0RUroO8Ni* delta 150 zcmaFHc%E^B1SbnK0|P^2Nc!=Kdb;(DB|(0{3=Yq3qyYuvJzX3_G$tk|NVqfv3h=Nz zU~)Q^u)rghQPseKqhm)yqjHRc0M`Si#7-|QKd+>f9E|}JYBVM}RJgjkS8Gmcs9+Zm zQR4JyV3GRBnULXVUXr9C;c0`mfpB!2;OQb$4nuFf3k0003kNkl)&jbDqTLs&eqQm?6T#^Y%$=#7RnZ;$i`%gIB%8>65?%y$MMclbQD;#=D+8G z0};^}hM`ljQVLpYYrhpBqA|-dXsw+DhzM0xStTBAMXp!wdVj7};J355z=jJF(Q*Q5 zn%-1i*R_?gz6D8=j5n=*Nz*j5Yq0J>9LE3vDJ5Rd=V|`5+W`RH4u@&B_q;3K7WOkB zrGyXy&q90+kH?SWb~}y4h5eMcn}84kd7iV_vMjl^d;tLPeIG#(%rafqxm5D^fhdaD zr7rB^8`0kpXi?jiUFyQJAHrc6V2pt=hQ;1pfQV2O1;qD#;D^Osz8h8nrPNj7%jq=B q?>!Fy(Dyx*QdWV*f63OYS@RCc+g$U))*ToC0000dR}nly zM!|rC!J!>mOG_bnsTL{CKRJBO0HqYp(|=@TOCer(SJ*qClmZdq zNMz;c&dw662@nyAqF}LgU2|*s0ss(25#l(uGJW6sRBnF`1cA*3*h^@Pfz}#YYZkk@ zfRqwdRe>DmfHB7FyTK9|$MJD}8U`y{3h{Q&Vu9zsp?Lt84+#lzne O002ovPDHLkU;%U6htShMQ$R2^cy6~ zY)8cha3?k~&Gz9<%Ayx?|A^<>HmIlPvxOnX=pMUCY0DM}T1AIRld_234 z10+fEmawX-4A0mFaUAz=Nx!SE>p`aV4n$EjIB%K;C#~^wI1K#1^BDlF{?YTSea3pa z1|E|bWB6qZxLk&V`~B@`@!5Uu7-BI1V+>iAO_fi|TAJkJ5#w&arVIo}ckfOBr0c+wisdN#n(^8f%{ j*A04)wfQfZlatdGmHu7m>X6~w00000NkvXXu0mjfQVNu= delta 273 zcmV+s0q*|n0;~d%B!BZsL_t(|ob8q|3WG2dhX0m^H!5WG2!h~Ayp3Bg;8EPXir^6( z1+y6(+M&&$rqzd9OPg;qChz~iml(j|_;*g@fiMhjdj?ijHORc!CPh&M0BD+KlTaxo z0H7?($-DC=2`g{{)*djJZ})M5IF5G-vo+y&Zo?o52G4a}BY*3AR!}O0wa%EgJzy3Q z5w1im0eY?-ORxoq2uYH#!VN`H%+8q=007VP;QKx+ylvY>^A0};oWS7%vrVYAhEfVj zDRyzK^?Cs*CGtE6@Ys@^@Fo8et3cOvld-Jt0mf;V3h}bmtbpw%WD0WF>PF>o{5E$3 XuSnN1*7D~7015yANkvXXu0mjfPq=)2 diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/box_olive.png b/Resources/Textures/Objects/Storage/boxes.rsi/box_olive.png index 4ddd8ac4fbfd7d62c1fb8439345a4499e7cd8d7d..db0d3b1ffd1792ee26ef0e1d9b49034a675ce34c 100644 GIT binary patch delta 363 zcmV-x0hIpsD)a@ABNYLJX+uL$Nkc;*aB^>EX>4Tx04R~On+0_Ne}#3zs{jB2D@jB_ zR9J;$U>F6XV59>^ViZ}LEBqG|<0Hx7SFb)X96$Mhp!qDsSRS0@&hY-lYmyuwC?U$g zz_9Z_AxAI~GKf^4ld6}X185Bf+yMmB01QClbbuTnsUS}C zmto5m;>{fJa$wW}1MUE#6XBCbZx}9KyhyZK0WksUIpF2ohMGX-Y)R0L?CxAdgQNU27>O#sSL`g9PA}pT*ihwK%Dy-;I z1SzhvVnOT_T}1`UqO2gOfT)NdE($A_ZxXOQ-~RD=zWwLTGntuF-gC}-&%HB~&h+y% zK+HnGU@!x3FM0rUMyd{7ZRlSXA3p+vX@$fGg~|h1aY%_&%oD_bNcnmRhy;}a9t@^z ze;yhUJKs+K9pCimRBNNOM=xmnSm0{m;sdLy=aet>yUq`plc&_Rdb%w6Li2|AKMZ1M zme!|i!vejVdeUvos-i1g3QnEx?Rh`A<+|O-yx%(s_2!78hfmf}{}%Vi;bbqy^1-PB zmxb*;^z`x{6KBW=Eq&&%-4@8CXlXewcw)kwcJ#+Z`9r?Ze--uc(&xJH3oEv*+0f5d zigjPZuQ@PZj7e{}Cq=o$7Vn!r%+Sd+c{vxJ(92t7`SQw&w!osBxRpK2%XEUO%+Ah@ zyB^JO4r|!4;}1q;mSawNy5xD|sH3M-#9Oj+%JnTCE4ohH4|i{?u?TMc`9Z&Ymcju% zQP*~Ov+$7N0h`M{X;xatPdr#jS9sd$-%o7ps5H{7Vq|Nt49An6w-&Q|pOQ=J?@5AdWh^;{HfF2R)_Dp^tM(2Ll<4Y2QrOazrb5UAZ!YyeFM*QIo+SHByOSf5;()=_e z(`(FZ-8FP!1cY1qkGvMTq;yIV;x>gYTDp<0T46o*I?#;Mus(+j)D!#a&YJcvYnpbt)2iS&qc^_eDW^gAdHfBZw3>}Tms6NG8+tep%v;8s|fFt@0k%ge6R zVcfof3+#{>B7ra{Wu**n7vN#SzT=;l&l;1NIhy_=0#WAjSdHAl&z zu$=ylskcriS;J%hI+M#uI!`)(s_Z{f`x;%E@$nvheXrkW*+x`XwIZ_8F9_M1mO7pq z8lm)PDLELxyB_OMXr?_N(_6f$SXb*rUL)^(K*3WHRnd%p5{iO1)b;*-{sy^Xe9D4N_~bTSnuX1Peccm+PjZ1Srkv%Rwe1Gt&E+MtTMR8yJzZ`kpDQ#QZSA}@1^(yuau1_*CJAB%y!dcQ zZDXK8+Zcg8@W<<yh&T{E#Gl%=kB%=-&eLUa>A>th`a5@<0mqe!jy#jX>G*X(Vr$R#kuW~vshsc zl1I!gxHX}tLGO@cw$!|Bj$&0Cy{3JavO9ONncL;8Y`2iX+PcuN?HVO{PuL$W^f`|m zF}u6a@CqMoF}ny@wJ52mYYg*T;iC0?Nz$$Ehar5MJ2U;eqskxl*#-ad#(BwTb$Yw! zQ_iec`l)wWg1S&aqv`eGu=rzTNn6{CO7Q0Imo(jP(;8nqvV7O-cZH(q8>YSsHL7ZQ z{UK|EhL+}*DH*?W2WH>;N*y2KHl2SJ}Y@`ef_qJ2U4~ktum}iMviH8Kj|%fg0gv!u{)MF z{GfK;(4f;`mxfzOLy!XiugC{WyRq0k5vHdjr`H*|rR|Gkmlb$ncn>J&1|Rl3TfK?D zzHnSNVz+*WhI6(u>uDtV&XG ziw+wVubh98p7EM9_x;GbFqtQV2U*SlZSRKBjB_r?!1nNB$X|RfDj`6{omfS-s_UCWyLm zi^M=f^D|oUZTGsu$H|E>T&G=1jYU&Yn)EU(UWuD7$@s+CeYrImcw%KIlazy;3NF9*Hm*%|$6;an^!zBpc)lL{6xo)8|o00oMr?LhuEA zCGKFfz$;z~2FCjZapKo4Z|_QlV>=7=uEpP2_8x zP@%p|q`O!OBJuWkdjQQ)3Sx06X9SWaHeUrXfk6jl9H~Ge7l=hj6()-+-DC`ga|n4eJM z>-z~_B%5Rb;sc{(NibM@03#G)zVwjE8L<$^WJ3SwAq#@u954Z(OstS{Kt?PmlF$DV zg3I~jFHuNi)a7tF7%&DDLZ&h(D)y_8p5DI9PaY}?_yVCs?FEtjm8D$3`%KnXxv4bj za=uIia{q+;mG#Hk)y9yOuP>D@<|tI@dDERxs`yl{m?Pj))t5Yg%O+w03Yy~pfM`4j zIH1{F2MQX%f?P6z%qEcttS_LvMKU={!~s=M5V*Yn!U6CkHiv_wpov@p2aU&Z31~Kl zL_ibBAi%|vId}pW`~qTyQ~-4)E9T3rR8U+9ip^tFcmRuo21z6w8c$(!&}1%w4CTdT z5djjH2T*uwC@zQUA(jeR&~yrfEIx>li1=!Sig2nc)7uG!vj;v)m@zCl4|0IkfI!3* z$H_jcf&@Y^P|i~Ei6s&MA`y!RNCedh|Jf)Ql**u9RH0%4dmLG!mRu|i5{qM;P^zSmDo=HTBWV-U;w6wl7VA|#KiTzx;JS&siA4}2P^*wg zb>mW5oQWVZRxHR>2ZH=2RGes*hz~+5e6poJ$_4*0U04nYAn?f0OmR5`G~R*2LsN(V z0qsBl0TPkGqp&!fuhC^T%f%Q^J%l1pNZF#K1QhfA6mEbbS*8-(>u~yZ&!YWQGYgv7u5ka<#)vHApiB50 z{y;y>ETCInXNjytE-xFtRN1p}Wni#DjLDOqD*)A4MUicBUFN0xTRVTKtGJ>(d{(Wr z&oCu(udb^CM?>j{wA@Q_OkQKSJ=>V|V%W}R+4EdeQ3OS^G3hWWy9~krsn14 zv99LcOpb2Vz}sdN(&8H>!`+O1w-IS@W}60e!6JQ!vR%eY^a^P4?sAKzQX)4h3i;&d t!fjnl7sU3hLF|kWc57y`KY)mW!IG_M-2+Dl7DIKzycvGkGXm){>} zeQTe+_dRFteb%}Fki7l5ymVL!fHa0IH;uf5=ydS^Nt%_x7l_gXiP(b8$z+MRP{gU(f()^JM#R+k z6fwgnG4n+S6tTRR6BpU=v(F+si<9uYy1K45IaYvHg`_dOZM)Sy63ve6hvve+8gpGXV1Uzt}Vn z0w5{sTl>IQ_o0dBB}pL2uro2q&dxUGa#+UVg8rfZ>F_u7)%T3W>Ha7W-JO%b6s8L3 z;<~ZYQ`3cfdS(Wb#i1Mhd5HgU;9sA^Focu9;d6MRh;Y%Aae0ZNcJtU=0XLmT=koqj z6aQh@pR_pFB2gMXe*tQ&F_0Rd0_4{|fT9oq5_3Sb1O3rAe|$I)zq|<5iN(49Ea=~} z!e!zmlbiTC&MhR2&Jyyo7Wc%@5}*MANCGNQ04hKO=mH~P4s3uua0VX07X*SZ5Cv8N z7DxhVfDf`kKG+C~Knd6Zc7tkA3mQNZXaOfc2RIEbfXm=If4Bi|g9l&)jDzQ32D}0D z5CmZ%GDLwCAXP{UGJwn>2IL5NK>kn&6a~dWi4YGGLix}ps01p9s-Zfl3Hly71zmuy zLW9sfXcU@)euv(}2uy;hurjO-o4^d%1@?o(;FWM9yc*7f3*qf>6UgRb+f=natP#6>iMMoK- z>`~sR{}cWr;0PjdE%mRJX`^;5_c4L7B_^Oz|G^O@LG5~d?22U&&8MF8}MED z0sJ_Ao*+%oAvh4i2+4$vgepP{;S%8?;T4fcR43XJgNa>atgt3H=1Y2UgM2$qd#E`@b zNxY<%q>JP#$vnwQ$&-=;lG9RnDQzh?DW=pqsT!$MQo~ZS(iCYk=|Jf;=~C&V(pRM? zWw0{ZG9EH)nL?REG8bjWCO)PYmQcT=_ETqMWn?X7 z!)0@1Yh=&Jj?fUAHqD2YN-LwCpxvRpms6H=k>kj1lWUP1lADuXBJV8EkuR2SmA@_j zUV*OQp^&1mQ=voQks?Y_UoluQTk(M6CB^9_)Ft*ySWAkRoLF*S30Bfq3Q=04bV#XB ze`!`(McGR^LwT?AMdfJ~nu@bZvPy-@S(PbOimIb3SG7X*oa!^WEZv2kO0S~#&}YdVy&)LYdbX%I9R8VMQ|8r>Q*nyQ)sn)#Z|n)kKvS`4iutvy=3 zT65Yu+7a4Yv^%sXb>ww?bnNb*ob80Vw7dnY&2?2Gxj$wFzzsZVWMdgZL-s(*W{C_ zm1(MJgXse^88ctA0<$i&-_7;SS>`q7w=BpOo)+sZIxSvW8d!2H4_Mx{qF4o3e{Heq zw)$voW6ig2v7WNgw28CXXEV&8GJ+VTj4QTiTUXolwx@01*;(5O>`vJIW^ZJlVt>?r za;eTz&eDdZV-D&LOouv$5l6aXoZ~^q5hpb#rc=Gs6K4%)wsWKNgo~a_vdb}-7p|tR zeAhPDIX64EwQlF#5qB^5V)uRze;JSE9@QR?J=HxEJ)1peysW&|c%An~d;59s^d9z6 z_F?%n`ONs*_^$Qs@gw<#`c?Zq@z?j~`*#Jv0lopd0v;~YTE<(}5eNc(0(S*I3epK$ z9rR-`CO9a#CirQHSxA0JZzv@+HuPxdn=sd~vakosb(ag5cZW-c$AmY9f6qm@N0dj5 zM4Cjdjl3SE7{!h1jK)TXM>j^#uJBl~d&PK+RZLOLos~K(b5>qmrMN0})tOkySZ3_W zICNY@+|jrX%s^&6b2i>5eqa0y%Z;^%^_=a@u3%4b9605ii3Ep)@`TAmhs0fpQ%O!q zl}XcFH*PieWwLj2ZSq`7e_+btl!erY)YddyT3p&Go(wOA*ORW2o|8V9VUSUjF|yij z_3qU(d_R6;CX~4{vr|A7{Y>=tT>!5Y<>$=x#tS?+YzQJq5k&T3nDI0$(e=sd5FL=EvVpCV4 za^Z%;vCUqan~Nlh_(j88?6=fzMQ!D7?cZjxZSS^E#q8p1C8i~nB_B#zrPsbO`=;uf zh3yI3`^&7$4(!0};O)4x(`o0Ca_REC^08e3yV@)06~z^=cgOC&T4`BXyN9qxxM!rw zzp8Vu=H4B9KU61Gf8VZgt!dq-v~SzKx&7?@LkFA>wA3osmejsK$US(s&a1AyUc0{X z5av+Up{EVu4ZYtozHMq$Y%FQ~c$jy10kG~(0%d4Z_dB<%|ym1DNytC3hBe0003SNkl3-b7>3_U9WRqvN)QJZPdK}DFF1&^!u^x}2>*$Lvy^gwz|Dik(ITPCmnk>iU*m`@dA&wpeEg(K=d3nDo;KVHv%?AO=Bf63P%8dgFImJG$`idejfnvc{&xd{rA@u z??m9YY$0O^CH{uH%kqksVl*@g8>|ZnX95cua3g=qam2BjUB!@L>Q+E70XAXCvaFN~ zf&hjYNZ1Lqeh+wo)&;B&p)v~jKDT1Krt4NflZITT2v-pV6Q!&&3UZlRza6z6qfNL5 o=e(37B5*2a{-^aXnU9ap4?eG4E+fzl%K!iX07*qoM6N<$f;errRsaA1 literal 17958 zcmeI3do)z*|HrqZ+%H{7lFqmk$y^!CG{$9IL&C`DKIUe^%$S)P6o-m*`6j8{;;2rM zTSX~R2~jDcbU`_VM2AkP=z`xKD%#bo*7|*a|NPeMwPyBwp3n3CeD?EtKF>3IX05$r z*-~d!r8!Cf0I0gUICz6+nE0h22fhm;BHn-}MV^bl007jg#V?ryi_~-gK*^I$A}w1M z$Q5!0fm|NUl|+K^_*^DCm;nG`Eg3#6vQN(}>%qrw?A_v{_q%buH5Fjq_Pe4r5*L{0 zDNb7wuXp&Nrq`9}j*e4wu4To`?%5N)Thq%_Wv9{u`A)qfd$t~p-+ANXlTAm1?v)Qd zyESt5KCwH0AfvcJzCuCepo^IoHd^I`{k-XaZ>_DadD4lnjZre>0n-$U>3V`;0~uf_ zia=PTUm<@9kO{k^tN>Jaq*tKkZXZ?ewNG6o6TMBQLYQdfrVy4lwr7E?o)*6Wo|ui};k~5~A9i(iK3Gz1zmj^xFLH!cxwgV@IQV@O;nU#T zzb`#CjKQpqah@{tcje7D?#Jdf>{Hwp(Dp3B`O`V&(NDT}^s8M1N+~899bPj+_c)~O z9>5&a-(kOR;nn#~qx7fkrXOXA?O5Q{dZNsxM0n0>n(R9_qiGaj#nV9mcwNT5a@SZv zHac+YlLpb~OPgWmtocAR({*1c0IYE^M38S3+texmfJ0V{$tgRXH&;l0GPUiB z@~3qc+w2XiEA6M*E77Cp^4BfQ-(qhZck7g{$vWg+TV3-CufVt@o*JUk_q>`lPyGW` zA@hoHd5q!|yK4$Fsd_E(G66d&2745=Qe%houDDE@vC9y4Jzm30-z^dAg7)4?hWWba zzP9H7hTFc%=|bY-YXD};r?_%w^!}J4FYCK1XGx_wmUFf_9Z|kb7oyV=W@V+{=AW5k zz1!k&_wBqu^_B!8sTNi7e73wS zrp$~3=h?YX+$l>Rxa7d*8k$dUQM6Q)-R4zkq@R@Ic4ona>F=v&2Vl_K zDK4f4_hux_L{8fjPpY;woUwz1F)H2ro9pSn$W1evoSHb^20f-H(#>7w7$jY9p$8So zD@H0#vq)O)>BDI>r(^sgbGr^enl)-TcSn$~6BCC5m?*!dn!^L~_b zm^>Yuu)@CJaEbRxukATA%{QdsZf%|A>UON)$bma^0<{7M*(aY1FHC=QVBXT?+kQ=T zJbi7R^4H;(lEF&Mxg*GRhMDBBeW3J(cTAF)1A;c$3l8X*Ajv0kkLNzlRrVe5ts^I#SmP5}=;UkW({V!a?!i3Y+>B)}d~|$R zCl=>y&t>Is$u@sQ`48`q^RIHR@+AG`m34Y;M|llQnWkMFW~vvYnisbr23x)0^sR@R zH=2~C4C|Kdvd%qm7)LT&V&+%uJ+Pl?Bj1q{I&?_5RI%GQJ9!{#=VOhR3!g63Id1M= zie{_|$~~BTkdo(;=auLD;-W=iUv|dvi;iXfA7j+)YL^(TGIC}m)KAUm_Ic>@C|fCe zmWMU|Z6P8z=$OvoG6&IRPIiAv=A|{!neN=|$Ke;dKg^9p4wHvNK4iajR-wohs~F0) zs?^UWT*ZcR3A)JI)>mGn)m65nW7GrGs z1$qnIJbFF))4V-Ok1ssF*nP2k?X8=)j@-JJicPmh-^X;Pcc0(mkg~KM$aS+Vi74 zNuDvRv)u+r8ZyzZ;Qpy|$3(e<)R$VscSQc59mEcTc5ba^g^>cR>DnQ1RaUss3=K68q!N$t#TS zo5&Zj7=Fylw|3mX9n8yIbgS=X@r~BKmWN*cIoda)a>kQ=CCB32{NTEjXBYF=CwxC^W}`}>-D!5+mQbvzaf7h zTl6ieHVHBSwA4&j|W zgNp5g^HlLI8+UKYe$NUF3TEwAX1)={{*6R|c%S;CYkSc(3fDzXrU{=kIgak?UR=Jo ze%0&q!q-KuT{Hd8`=y=4uMO!H_7X;t?s(Rg9V$yJEL{~;+8=T8>?Y=5k4~m#{i8P* z!(YuBz1N(Hvwn1OAc8x1b?|NbtVdCNqv86xvWFt0{(^GP^0jYl`|KW)9&K;7Svk`7 z;APt%>nlWA1C4FYgL1K38%7e}Ca9C9CZs0R#i_=<$h0Eja8GUc!#$s}Ne%Rd1({kS zM@H%jwPqoshMHg8uWw9gJe>SGIq7o9=3~RX6)&_;w$@bE%)4|w%nZHe&GL_ZS43?h z-Iqt()jc~m!~QTH4Saw4t(6d}dK9Z%ziAgFY1 z00R*g!UJza0f1l=#-q}L7(!S8gT>}p>%T0!tPf+;t@Zt|9w-kUi4n+liQqGQB9@YA z5kWK@UEhYNL2o^Jvepk23VC=WQX~=~L}myspM^x@a5y9igT!FqU=O$;oFk-$!8rnh@gQH~I4}e> zKAR_Gb2%_^TxtM!gV0)EU!3Uc@p)V!yswEkg3s(gipVf34~a&gkUtT5cu1Cog#1t` z5ISxIujKQ{ewa`|4(BnD-V6bE1E0ol+{oYv4SsYHblTTAybb)|F+Ow}k`c@Z0VM+P z;?Y061m2flAYbL*T*g=TPe(6gGbbkJ8?D&$QyC+S{S%qkGcFq|h4C38fc1wb@flPh zmrv$$gNfr+Hu3uj{P`rVDwwe!n?vV{1PcjBsAOWkC!#SNs6qx2gTk1>QRZ-rIayqf zmUwgYA`}{rLQM)X-V+kT1FU^IRY?7nDBtvj#^KW0%8W{d-dEl8;bF4WHi-t2WOf(#gX3*hQW>yw(9M#Oi3`0X<0?_7P5={#B zT_R6D8{C(u!IS!k$3h2_Vd*q1oneWAW38w-I1Nk($6?Txa2$?FM`M|m3>wDrONt+a z`7V_UTL4y5_@pWWYi(@j@nM91+xo>3%pTi8cvQZCAzql)`d?P&*DdGkjw05KEpR-Q zCf<99G;#Sd=mg|9trM5^Rry)Q{(d@t4Z(Q)N%EiP5Ct+glFENP)L5^d2N7_YLJ^hE zuw#K0@+&KIJnFYHXm|oryjKUa{|_cYK;8Jin}%OoRsS!hVWNs@fm9BQK_?==6!4dZ zUz@q{`TTZeeOayFuS5c!hG%m5Aygre9YSR>kUS2HfShQY$Vr&kgGk(9F5iPoXAsQ@ z$R9QTPzC<;wru>5H=@AX*&gQVNU}iVEG*y{1bT9qN&P0p5r4_y!QBR|eCpUL2Q}Zd zLHkq0yGHPavHmy<6nG%f;`h(e$!@6BU$S(v8!DYp`f}JpBIa{8Nb@9>_?s9%2Gs|= zX=D(=p+TFVy_d1W7{L?=Huzm35bt?rV3sir)bT^1|IdVz9G`{b~#aE(j3G zrWBWCJ`k@I7X*l8Q;JJ6ABb0q3j##4Da9q355z0Q1py-2l;V=i2jZ3Df&h_hN^wc% z1My06L4Zg$rMM*Xfq133AV4IWQe2YxK)h015FnCGDK5!;AYLgh2oTAp6qjT^5U&&$ z1c+o)ic2ydh*ydW0z|SY#U+^!#4E)G0V3Iy;*!h<;+5ip0Fi7;aY^O_@k(()fJio_ zxFqv|c%`@?KqQ+|T$1@fyi!~cAd*cfF3Ef#UMVgJ5Xq(#mt;N=uM`&qh-6bDE~Sab zKp7nH*-sJpkS9m601ZAM3ZuDrdjLShd;o~v3IOj%!E+A)Y(N1(?>g|=(i8yD;_h2} z)d>J(G+iC+$YCu3pGHS*s%(E-5GNydRBiSKKv{3i(s%ayp|^m9&b@{kbYWFSRTbF{wg0{!V3qfVg@do4 wFCHj$nSVTNzLTm7YR|jfPP(Y4y1;DU-hFT59Npc;;>T@W9hW*3+OOO4KSg=HO#lD@ diff --git a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json index 53ac39b639b..b30927da33c 100644 --- a/Resources/Textures/Objects/Storage/boxes.rsi/meta.json +++ b/Resources/Textures/Objects/Storage/boxes.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef.", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cc65477c04f7403ca8a457bd5bae69a01abadbf0, encryptokey was taken from Baystation12 at https://github.com/infinitystation/Baystation12/blob/073f678cdce92edb8fcd55f9ffc9f0523bf31506/icons/obj/radio.dmi and modified by lapatison. boxwidetoy, shelltoy, swab, flare, inflatable, trashbag, magazine, holo and forensic created by potato1234x (github) for ss14 based on toys.rsi, mouth_swab.rsi, flare.rsi, inflatable_wall.rsi, trashbag.rsi, caseless_pistol_mag.rsi, guardians.rsi and bureaucracy.rsi respectively, candle and darts created by TheShuEd for ss14, throwing_knives and vials was drawn by Ubaser, evidence_markers by moomoobeef, Boxes by mefinks.", "size": { "x": 32, "y": 32 From 4b9c59820dda8e11bf546da601fdaebaad5ff663 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 29 Jul 2024 05:51:07 +0000 Subject: [PATCH 03/82] Automatic Changelog Update (#597) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d019ca79758..af8ccbba92d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4658,3 +4658,9 @@ Entries: message: Long Survival has been added as a new Game mode. id: 6185 time: '2024-07-27T06:00:24.0000000+00:00' +- author: CilliePaint + changes: + - type: Tweak + message: New Box Textures! + id: 6186 + time: '2024-07-29T05:50:43.0000000+00:00' From faa239a6e5bf7921351c17672503eb405df4f6e2 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Mon, 29 Jul 2024 08:54:01 +0300 Subject: [PATCH 04/82] Fix 125 Toolshed Commands Being Unusable for Anyone without +HOST (#572) # Description For reasons unknown, AdminManager has two command permission managers: _commandPermissions and _toolshedCommandPermissions. It used to load normal command permissions into the former, and toolshed command permissions into the latter. Since _toolshedCommandPermissions is NEVER actually used in checking whether a player can execute a command, all toolshed commands remained unavailable to anyone without +HOST. This PR provides a bandaid fix for that: it makes it so that the same permissions are loaded into both managers at the same time. It's necessary to load them into _commandPermissions in order to allow regular players to execute them, and it's also necessary to load them into _toolshedCommandPermissions because otherwise the ToolshedManager will complain about those commands lacking permission flags. This should also fixes some commands such as `spawn`, `pos`, `comp` being inaccessible to admins with +DEBUG and more.

Media

![image](https://github.com/user-attachments/assets/12afedef-0db3-43f2-8335-e95582a4a3f9) ![image](https://github.com/user-attachments/assets/f23ae98a-1e1b-4d28-8446-ca60e8239a03) Admin-only commands are unaffected: ![image](https://github.com/user-attachments/assets/d64a5a8d-f184-4a9d-bc71-ae80635df626)

--- # Changelog :cl: - fix: Fixed toolshed command permissions. This will mostly affect admins who don't have full host access. --- Content.Server/Administration/Managers/AdminManager.cs | 8 +++++++- Resources/toolshedEngineCommandPerms.yml | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 19c56282937..ec284fcadce 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -279,7 +279,13 @@ public void Initialize() _commandPermissions.LoadPermissionsFromStream(efs); } - if (_res.TryContentFileRead(new ResPath("/toolshedEngineCommandPerms.yml"), out var toolshedPerms)) + var toolshedPermsPath = new ResPath("/toolshedEngineCommandPerms.yml"); + if (_res.TryContentFileRead(toolshedPermsPath, out var toolshedPerms)) + { + _commandPermissions.LoadPermissionsFromStream(toolshedPerms); + } + // This may or may not be necessary. We read the same file again and load the same permissions into a different manager. + if (_res.TryContentFileRead(toolshedPermsPath, out toolshedPerms)) { _toolshedCommandPermissions.LoadPermissionsFromStream(toolshedPerms); } diff --git a/Resources/toolshedEngineCommandPerms.yml b/Resources/toolshedEngineCommandPerms.yml index ac7ffddd5f9..97de43e0b1f 100644 --- a/Resources/toolshedEngineCommandPerms.yml +++ b/Resources/toolshedEngineCommandPerms.yml @@ -50,7 +50,8 @@ - methods - ioc -- Commands: +- Flags: ADMIN + Commands: - fuck - ent - as From 41a5e8e7aa3163f484a2c62c49c8177e525ed5ee Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 29 Jul 2024 05:54:25 +0000 Subject: [PATCH 05/82] Automatic Changelog Update (#572) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index af8ccbba92d..304fb04dc14 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4664,3 +4664,11 @@ Entries: message: New Box Textures! id: 6186 time: '2024-07-29T05:50:43.0000000+00:00' +- author: Mnemotechnician + changes: + - type: Fix + message: >- + Fixed toolshed command permissions. This will mostly affect admins who + don't have full host access. + id: 6187 + time: '2024-07-29T05:54:01.0000000+00:00' From a9e28ee3b6da46b2ef1ca11996cf86324cb9eef0 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 29 Jul 2024 02:00:25 -0400 Subject: [PATCH 06/82] Radiation Doesn't Prevent DoAfters (#606) # Description I got so pissed off that being near a singularity means you can't crowbar doors, that shortly after dying to a singularity because of said bullshit, I had written this before an emergency shuttle even arrived to pick up the crew. # Changelog :cl: - fix: Radiation damage no longer interrupts DoAfters. --- Content.Shared/DoAfter/SharedDoAfterSystem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.cs index 9e81c91550f..3b0ba58f55a 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.cs @@ -65,7 +65,8 @@ private void OnDamage(EntityUid uid, DoAfterComponent component, DamageChangedEv { // If we're applying state then let the server state handle the do_after prediction. // This is to avoid scenarios where a do_after is erroneously cancelled on the final tick. - if (!args.InterruptsDoAfters || !args.DamageIncreased || args.DamageDelta == null || GameTiming.ApplyingState) + if (!args.InterruptsDoAfters || !args.DamageIncreased || args.DamageDelta == null || GameTiming.ApplyingState + || args.DamageDelta.DamageDict.ContainsKey("Radiation")) //Sanity check so people can crowbar doors open to flee from Lord Singuloth return; var delta = args.DamageDelta.GetTotal(); From 7c5625beb7c5f0895ba4db95f8014321b2e17342 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 29 Jul 2024 06:00:52 +0000 Subject: [PATCH 07/82] Automatic Changelog Update (#606) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 304fb04dc14..56389a65d6f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4672,3 +4672,9 @@ Entries: don't have full host access. id: 6187 time: '2024-07-29T05:54:01.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: Radiation damage no longer interrupts DoAfters. + id: 6188 + time: '2024-07-29T06:00:26.0000000+00:00' From 54c119ecfd06f727c8847a14d33eae9d69a69737 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Mon, 29 Jul 2024 15:17:34 -0700 Subject: [PATCH 08/82] Make Jobs & Antags Use CharacterRequirements (#596) # Description - Makes jobs use CharacterRequirements - Makes antags use CharReqs - Splits CharReqs into multiple files - Adds a Whitelist CharReq - Prays the tests pass --- --------- Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Co-authored-by: VMSolidus --- Content.Client/LateJoin/LateJoinGui.cs | 23 +- Content.Client/Lobby/LobbyUIController.cs | 12 +- .../JobRequirementsManager.cs | 47 +- .../Preferences/UI/AntagPreferenceSelector.cs | 26 +- .../UI/HumanoidProfileEditor.xaml.cs | 53 ++- .../Preferences/UI/JobPrioritySelector.cs | 3 +- .../UI/LoadoutPreferenceSelector.cs | 9 +- .../Preferences/UI/RequirementsSelector.cs | 5 +- .../Preferences/UI/TraitPreferenceSelector.cs | 9 +- .../Ghost/Controls/Roles/GhostRolesEui.cs | 28 +- .../Clothing/Systems/LoadoutSystem.cs | 4 +- .../Roles/Components/GhostRoleComponent.cs | 3 +- .../PlayTimeTrackingSystem.cs | 51 +- Content.Server/Traits/TraitSystem.cs | 6 +- Content.Shared/CCVar/CCVars.cs | 2 +- .../Loadouts/Systems/LoadoutSystem.cs | 16 +- .../Systems/CharacterRequirements.Job.cs | 299 ++++++++++++ .../Systems/CharacterRequirements.Profile.cs | 157 ++++++ .../CharacterRequirements.Whitelist.cs | 28 ++ .../Systems/CharacterRequirements.cs | 449 +----------------- .../Systems/CharacterRequirementsSystem.cs | 32 +- .../DeltaV/Roles/JobRequirements.Whitelist.cs | 11 - .../Ghost/Roles/GhostRolesEuiMessages.cs | 3 +- Content.Shared/Roles/AntagPrototype.cs | 3 +- Content.Shared/Roles/JobPrototype.cs | 3 +- Content.Shared/Roles/JobRequirements.cs | 232 --------- .../customization/character-requirements.ftl | 36 +- .../Entities/Markers/Spawners/ghost_roles.yml | 4 +- .../Roles/Jobs/Medical/medical_borg.yml | 6 +- .../DeltaV/Roles/Jobs/Security/brigmedic.yml | 4 +- .../Entities/Markers/Spawners/ghost_roles.yml | 4 +- .../Roles/Jobs/Epistemics/forensicmantis.yml | 6 +- .../Roles/Jobs/Security/prisonguard.yml | 6 +- .../Roles/Jobs/Wildcards/gladiator.yml | 2 +- .../Roles/Jobs/Wildcards/martialartist.yml | 4 +- .../Roles/Jobs/Wildcards/prisoner.yml | 2 +- Resources/Prototypes/Roles/Antags/ninja.yml | 4 +- Resources/Prototypes/Roles/Antags/nukeops.yml | 28 +- .../Prototypes/Roles/Antags/revolutionary.yml | 8 +- Resources/Prototypes/Roles/Antags/traitor.yml | 4 +- Resources/Prototypes/Roles/Antags/zombie.yml | 4 +- .../Roles/Jobs/Cargo/quartermaster.yml | 20 +- .../Roles/Jobs/Cargo/salvage_specialist.yml | 4 +- .../Roles/Jobs/Civilian/bartender.yml | 4 +- .../Roles/Jobs/Civilian/chaplain.yml | 4 +- .../Prototypes/Roles/Jobs/Civilian/chef.yml | 8 +- .../Prototypes/Roles/Jobs/Civilian/clown.yml | 4 +- .../Prototypes/Roles/Jobs/Civilian/lawyer.yml | 8 +- .../Roles/Jobs/Civilian/librarian.yml | 4 +- .../Prototypes/Roles/Jobs/Civilian/mime.yml | 4 +- .../Roles/Jobs/Civilian/musician.yml | 4 +- .../Roles/Jobs/Civilian/service_worker.yml | 4 +- .../Prototypes/Roles/Jobs/Command/captain.yml | 28 +- .../Roles/Jobs/Command/head_of_personnel.yml | 26 +- .../Engineering/atmospheric_technician.yml | 4 +- .../Roles/Jobs/Engineering/chief_engineer.yml | 10 +- .../Jobs/Engineering/senior_engineer.yml | 16 +- .../Jobs/Engineering/station_engineer.yml | 4 +- .../Jobs/Engineering/technical_assistant.yml | 4 +- .../Prototypes/Roles/Jobs/Medical/chemist.yml | 4 +- .../Jobs/Medical/chief_medical_officer.yml | 14 +- .../Roles/Jobs/Medical/medical_doctor.yml | 4 +- .../Roles/Jobs/Medical/paramedic.yml | 4 +- .../Roles/Jobs/Medical/senior_physician.yml | 16 +- .../Prototypes/Roles/Jobs/Science/borg.yml | 4 +- .../Roles/Jobs/Science/research_director.yml | 8 +- .../Roles/Jobs/Science/scientist.yml | 4 +- .../Roles/Jobs/Science/senior_researcher.yml | 4 +- .../Roles/Jobs/Security/detective.yml | 4 +- .../Roles/Jobs/Security/head_of_security.yml | 14 +- .../Roles/Jobs/Security/security_cadet.yml | 4 +- .../Roles/Jobs/Security/security_officer.yml | 4 +- .../Roles/Jobs/Security/senior_officer.yml | 22 +- .../Prototypes/Roles/Jobs/Security/warden.yml | 12 +- .../Prototypes/Roles/Jobs/Wildcards/boxer.yml | 4 +- .../Roles/Jobs/Wildcards/psychologist.yml | 8 +- .../Roles/Jobs/Wildcards/reporter.yml | 4 +- .../Roles/Jobs/Wildcards/zookeeper.yml | 4 +- 78 files changed, 925 insertions(+), 1013 deletions(-) create mode 100644 Content.Shared/Customization/Systems/CharacterRequirements.Job.cs create mode 100644 Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs create mode 100644 Content.Shared/Customization/Systems/CharacterRequirements.Whitelist.cs delete mode 100644 Content.Shared/DeltaV/Roles/JobRequirements.Whitelist.cs delete mode 100644 Content.Shared/Roles/JobRequirements.cs diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index ba9351d6746..c9737e09b13 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -4,9 +4,13 @@ using Content.Client.GameTicking.Managers; using Content.Client.UserInterface.Controls; using Content.Client.Players.PlayTimeTracking; +using Content.Client.Preferences; using Content.Shared.CCVar; +using Content.Shared.Customization.Systems; +using Content.Shared.Preferences; using Content.Shared.Roles; using Content.Shared.StatusIcon; +using Microsoft.Win32.SafeHandles; using Robust.Client.Console; using Robust.Client.GameObjects; using Robust.Client.UserInterface; @@ -26,6 +30,9 @@ public sealed class LateJoinGui : DefaultWindow [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly IEntitySystemManager _entitySystem = default!; [Dependency] private readonly JobRequirementsManager _jobRequirements = default!; + [Dependency] private readonly CharacterRequirementsSystem _characterRequirements = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IClientPreferencesManager _prefs = default!; public event Action<(NetEntity, string)> SelectedId; @@ -254,14 +261,24 @@ private void RebuildUI() jobButton.OnPressed += _ => SelectedId.Invoke((id, jobButton.JobId)); - if (!_jobRequirements.IsAllowed(prototype, out var reason)) + if (!_characterRequirements.CheckRequirementsValid( + prototype.Requirements ?? new(), + prototype, + (HumanoidCharacterProfile) (_prefs.Preferences?.SelectedCharacter + ?? HumanoidCharacterProfile.DefaultWithSpecies()), + _jobRequirements.GetPlayTimes(), + _jobRequirements.IsWhitelisted(), + _entityManager, + _prototypeManager, + _configManager, + out var reasons)) { jobButton.Disabled = true; - if (!reason.IsEmpty) + if (reasons.Count > 0) { var tooltip = new Tooltip(); - tooltip.SetMessage(reason); + tooltip.SetMessage(_characterRequirements.GetRequirementsText(reasons)); jobButton.TooltipSupplier = _ => tooltip; } diff --git a/Content.Client/Lobby/LobbyUIController.cs b/Content.Client/Lobby/LobbyUIController.cs index 36f43d6f4aa..3e7eb84b998 100644 --- a/Content.Client/Lobby/LobbyUIController.cs +++ b/Content.Client/Lobby/LobbyUIController.cs @@ -2,6 +2,7 @@ using Content.Client.Humanoid; using Content.Client.Inventory; using Content.Client.Lobby.UI; +using Content.Client.Players.PlayTimeTracking; using Content.Client.Preferences; using Content.Client.Preferences.UI; using Content.Shared.Clothing.Loadouts.Systems; @@ -23,6 +24,7 @@ public sealed class LobbyUIController : UIController, IOnStateEntered diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs index df73f5ff3f4..a38d4e2f308 100644 --- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs +++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.CCVar; +using Content.Shared.Customization.Systems; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Roles; @@ -17,9 +18,6 @@ public sealed partial class JobRequirementsManager : ISharedPlaytimeManager { [Dependency] private readonly IBaseClient _client = default!; [Dependency] private readonly IClientNetManager _net = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPrototypeManager _prototypes = default!; private readonly Dictionary _roles = new(); @@ -80,43 +78,6 @@ private void RxPlayTime(MsgPlayTime message) Updated?.Invoke(); } - public bool IsAllowed(JobPrototype job, [NotNullWhen(false)] out FormattedMessage? reason) - { - reason = null; - - if (_roleBans.Contains($"Job:{job.ID}")) - { - reason = FormattedMessage.FromUnformatted(Loc.GetString("role-ban")); - return false; - } - - var player = _playerManager.LocalSession; - if (player == null) - return true; - - return CheckRoleTime(job.Requirements, out reason); - } - - public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(false)] out FormattedMessage? reason, string? localePrefix = "role-timer-") - { - reason = null; - - if (requirements == null || !_cfg.GetCVar(CCVars.GameRoleTimers)) - return true; - - var reasons = new List(); - foreach (var requirement in requirements) - { - if (JobRequirements.TryRequirementMet(requirement, _roles, out var jobReason, _entManager, _prototypes, _whitelisted, localePrefix)) - continue; - - reasons.Add(jobReason.ToMarkup()); - } - - reason = reasons.Count == 0 ? null : FormattedMessage.FromMarkup(string.Join('\n', reasons)); - return reason == null; - } - public TimeSpan FetchOverallPlaytime() { return _roles.TryGetValue("Overall", out var overallPlaytime) ? overallPlaytime : TimeSpan.Zero; @@ -137,12 +98,8 @@ public Dictionary FetchPlaytimeByRoles() public Dictionary GetPlayTimes() { - var dict = new Dictionary(); - + var dict = FetchPlaytimeByRoles(); dict.Add(PlayTimeTrackingShared.TrackerOverall, FetchOverallPlaytime()); - foreach (var role in FetchPlaytimeByRoles()) - dict.Add(role.Key, role.Value); - return dict; } } diff --git a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs index 06694f51168..872b783c2f9 100644 --- a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs +++ b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs @@ -1,5 +1,9 @@ using Content.Client.Players.PlayTimeTracking; +using Content.Shared.Customization.Systems; +using Content.Shared.Preferences; using Content.Shared.Roles; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; namespace Content.Client.Preferences.UI; @@ -14,7 +18,7 @@ public bool Preference public event Action? PreferenceChanged; - public AntagPreferenceSelector(AntagPrototype proto) : base(proto) + public AntagPreferenceSelector(AntagPrototype proto, JobPrototype highJob) : base(proto, highJob) { Options.OnItemSelected += _ => PreferenceChanged?.Invoke(Preference); @@ -30,7 +34,23 @@ public AntagPreferenceSelector(AntagPrototype proto) : base(proto) // Immediately lock requirements if they aren't met. // Another function checks Disabled after creating the selector so this has to be done now var requirements = IoCManager.Resolve(); - if (proto.Requirements != null && !requirements.CheckRoleTime(proto.Requirements, out var reason)) - LockRequirements(reason); + var prefs = IoCManager.Resolve(); + var entMan = IoCManager.Resolve(); + var characterReqs = entMan.System(); + var protoMan = IoCManager.Resolve(); + var configMan = IoCManager.Resolve(); + + if (proto.Requirements != null + && !characterReqs.CheckRequirementsValid( + proto.Requirements, + highJob, + (HumanoidCharacterProfile) (prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), + requirements.GetPlayTimes(), + requirements.IsWhitelisted(), + entMan, + protoMan, + configMan, + out var reasons)) + LockRequirements(characterReqs.GetRequirementsText(reasons)); } } diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs index 771d928ebf9..8d31ea92280 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs @@ -115,7 +115,7 @@ public HumanoidProfileEditor(IClientPreferencesManager preferencesManager, IProt _preferencesManager = preferencesManager; _configurationManager = configurationManager; _markingManager = IoCManager.Resolve(); - _characterRequirementsSystem = EntitySystem.Get(); + _characterRequirementsSystem = _entityManager.System(); _controller = UserInterfaceManager.GetUIController(); _controller.SetProfileEditor(this); @@ -642,7 +642,9 @@ private void UpdateAntagRequirements() if (!antag.SetPreference) continue; - var selector = new AntagPreferenceSelector(antag) + var selector = new AntagPreferenceSelector(antag, + _jobPriorities.FirstOrDefault(j => j.Priority == JobPriority.High)?.HighJob + ?? new()) { Margin = new Thickness(3f, 3f, 3f, 0f) }; _antagList.AddChild(selector); _antagPreferences.Add(selector); @@ -723,10 +725,17 @@ private void UpdateRoleRequirements() { var selector = new JobPrioritySelector(job, _prototypeManager); - if (!_requirements.IsAllowed(job, out var reason)) - { - selector.LockRequirements(reason); - } + if (!_characterRequirementsSystem.CheckRequirementsValid( + job.Requirements ?? new(), + job, + Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), + _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), + _entityManager, + _prototypeManager, + _configurationManager, + out var reasons)) + selector.LockRequirements(_characterRequirementsSystem.GetRequirementsText(reasons)); category.AddChild(selector); _jobPriorities.Add(selector); @@ -770,7 +779,17 @@ private void EnsureJobRequirementsValid() var changed = false; foreach (var selector in _jobPriorities) { - if (_requirements.IsAllowed(selector.Proto, out var _) || selector.Priority == JobPriority.Never) + if (selector.Priority == JobPriority.Never + || _characterRequirementsSystem.CheckRequirementsValid( + selector.Proto.Requirements ?? new(), + selector.Proto, + Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), + _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), + _entityManager, + _prototypeManager, + _configurationManager, + out _)) continue; selector.Priority = JobPriority.Never; @@ -1412,11 +1431,11 @@ private void UpdateTraits(bool showUnusable) var traits = enumeratedTraits.Where(trait => showUnusable || // Ignore everything if this is true _characterRequirementsSystem.CheckRequirementsValid( - trait, trait.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), _entityManager, _prototypeManager, _configurationManager, @@ -1427,11 +1446,11 @@ out _ // Traits to highlight red when showUnusable is true var traitsUnusable = enumeratedTraits.Where(trait => _characterRequirementsSystem.CheckRequirementsValid( - trait, trait.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), _entityManager, _prototypeManager, _configurationManager, @@ -1538,7 +1557,8 @@ out _ var selector = new TraitPreferenceSelector(trait, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), traitsUnusable.Contains(trait) ? "" : "ButtonColorRed", - _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem); + _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem, + _requirements); // Look for an existing trait category BoxContainer? match = null; @@ -1570,7 +1590,8 @@ out _ { var selector = new TraitPreferenceSelector(trait, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), "", - _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem); + _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem, + _requirements); AddSelector(selector, trait.Points, trait.ID); @@ -1671,11 +1692,11 @@ private void UpdateLoadouts(bool showUnusable) var loadouts = enumeratedLoadouts.Where(loadout => showUnusable || // Ignore everything if this is true _characterRequirementsSystem.CheckRequirementsValid( - loadout, loadout.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), _entityManager, _prototypeManager, _configurationManager, @@ -1686,11 +1707,11 @@ out _ // Loadouts to highlight red when showUnusable is true var loadoutsUnusable = enumeratedLoadouts.Where(loadout => _characterRequirementsSystem.CheckRequirementsValid( - loadout, loadout.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), _requirements.GetPlayTimes(), + _requirements.IsWhitelisted(), _entityManager, _prototypeManager, _configurationManager, @@ -1800,7 +1821,8 @@ out _ var selector = new LoadoutPreferenceSelector(loadout, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), loadoutsUnusable.Contains(loadout) ? "" : "ButtonColorRed", - _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem); + _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem, + _requirements); // Look for an existing loadout category BoxContainer? match = null; @@ -1829,7 +1851,8 @@ out _ { var selector = new LoadoutPreferenceSelector(loadout, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), "", - _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem); + _entityManager, _prototypeManager, _configurationManager, _characterRequirementsSystem, + _requirements); AddSelector(selector, loadout.Cost, loadout.ID); diff --git a/Content.Client/Preferences/UI/JobPrioritySelector.cs b/Content.Client/Preferences/UI/JobPrioritySelector.cs index 2e2c699c3ad..f66102d644f 100644 --- a/Content.Client/Preferences/UI/JobPrioritySelector.cs +++ b/Content.Client/Preferences/UI/JobPrioritySelector.cs @@ -4,6 +4,7 @@ using Content.Shared.StatusIcon; using Robust.Client.UserInterface.Controls; using Robust.Client.Utility; +using Robust.Shared.CPUJob.JobQueues; using Robust.Shared.Prototypes; namespace Content.Client.Preferences.UI; @@ -18,7 +19,7 @@ public JobPriority Priority public event Action? PriorityChanged; - public JobPrioritySelector(JobPrototype proto, IPrototypeManager protoMan) : base(proto) + public JobPrioritySelector(JobPrototype proto, IPrototypeManager protoMan) : base(proto, proto) { Options.OnItemSelected += _ => PriorityChanged?.Invoke(Priority); diff --git a/Content.Client/Preferences/UI/LoadoutPreferenceSelector.cs b/Content.Client/Preferences/UI/LoadoutPreferenceSelector.cs index a6839dee65f..82d8fd65b33 100644 --- a/Content.Client/Preferences/UI/LoadoutPreferenceSelector.cs +++ b/Content.Client/Preferences/UI/LoadoutPreferenceSelector.cs @@ -1,6 +1,7 @@ using System.Linq; using System.Numerics; using System.Text; +using Content.Client.Players.PlayTimeTracking; using Content.Client.Stylesheets; using Content.Shared.Clothing.Loadouts.Prototypes; using Content.Shared.Customization.Systems; @@ -32,7 +33,8 @@ public bool Preference public LoadoutPreferenceSelector(LoadoutPrototype loadout, JobPrototype highJob, HumanoidCharacterProfile profile, string style, IEntityManager entityManager, IPrototypeManager prototypeManager, - IConfigurationManager configManager, CharacterRequirementsSystem characterRequirementsSystem) + IConfigurationManager configManager, CharacterRequirementsSystem characterRequirementsSystem, + JobRequirementsManager jobRequirementsManager) { Loadout = loadout; @@ -94,8 +96,9 @@ public LoadoutPreferenceSelector(LoadoutPrototype loadout, JobPrototype highJob, // Get requirement reasons - characterRequirementsSystem.CheckRequirementsValid(loadout, loadout.Requirements, highJob, profile, - new Dictionary(), + characterRequirementsSystem.CheckRequirementsValid( + loadout.Requirements, highJob, profile, new Dictionary(), + jobRequirementsManager.IsWhitelisted(), entityManager, prototypeManager, configManager, out var reasons); diff --git a/Content.Client/Preferences/UI/RequirementsSelector.cs b/Content.Client/Preferences/UI/RequirementsSelector.cs index a4a25536d09..83b96952886 100644 --- a/Content.Client/Preferences/UI/RequirementsSelector.cs +++ b/Content.Client/Preferences/UI/RequirementsSelector.cs @@ -1,6 +1,7 @@ using System.Numerics; using Content.Client.Stylesheets; using Content.Client.UserInterface.Controls; +using Content.Shared.Roles; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; using Robust.Shared.Prototypes; @@ -11,14 +12,16 @@ namespace Content.Client.Preferences.UI; public abstract class RequirementsSelector : BoxContainer where T : IPrototype { public T Proto { get; } + public JobPrototype HighJob { get; } public bool Disabled => _lockStripe.Visible; protected readonly RadioOptions Options; private readonly StripeBack _lockStripe; - protected RequirementsSelector(T proto) + protected RequirementsSelector(T proto, JobPrototype highJob) { Proto = proto; + HighJob = highJob; Options = new RadioOptions(RadioOptionsLayout.Horizontal) { diff --git a/Content.Client/Preferences/UI/TraitPreferenceSelector.cs b/Content.Client/Preferences/UI/TraitPreferenceSelector.cs index 0f843ca3a58..e9ce1a5e9be 100644 --- a/Content.Client/Preferences/UI/TraitPreferenceSelector.cs +++ b/Content.Client/Preferences/UI/TraitPreferenceSelector.cs @@ -1,4 +1,5 @@ using System.Text; +using Content.Client.Players.PlayTimeTracking; using Content.Client.Stylesheets; using Content.Shared.Customization.Systems; using Content.Shared.Preferences; @@ -30,7 +31,8 @@ public bool Preference public TraitPreferenceSelector(TraitPrototype trait, JobPrototype highJob, HumanoidCharacterProfile profile, string style, IEntityManager entityManager, IPrototypeManager prototypeManager, - IConfigurationManager configManager, CharacterRequirementsSystem characterRequirementsSystem) + IConfigurationManager configManager, CharacterRequirementsSystem characterRequirementsSystem, + JobRequirementsManager jobRequirementsManager) { Trait = trait; @@ -71,8 +73,9 @@ public TraitPreferenceSelector(TraitPrototype trait, JobPrototype highJob, // Get requirement reasons - characterRequirementsSystem.CheckRequirementsValid(trait, trait.Requirements, highJob, profile, - new Dictionary(), + characterRequirementsSystem.CheckRequirementsValid( + trait.Requirements, highJob, profile, new Dictionary(), + jobRequirementsManager.IsWhitelisted(), entityManager, prototypeManager, configManager, out var reasons); diff --git a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs index 8e72eafd97c..d0fd3a80c3b 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs @@ -1,10 +1,15 @@ using System.Linq; using Content.Client.Eui; using Content.Client.Players.PlayTimeTracking; +using Content.Client.Preferences; +using Content.Shared.Customization.Systems; using Content.Shared.Eui; using Content.Shared.Ghost.Roles; +using Content.Shared.Preferences; using JetBrains.Annotations; using Robust.Client.GameObjects; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Client.UserInterface.Systems.Ghost.Controls.Roles @@ -71,6 +76,10 @@ public override void HandleState(EuiStateBase state) var sysManager = entityManager.EntitySysManager; var spriteSystem = sysManager.GetEntitySystem(); var requirementsManager = IoCManager.Resolve(); + var characterReqs = entityManager.System(); + var prefs = IoCManager.Resolve(); + var protoMan = IoCManager.Resolve(); + var configManager = IoCManager.Resolve(); var groupedRoles = ghostState.GhostRoles.GroupBy( role => (role.Name, role.Description, role.Requirements)); @@ -78,15 +87,22 @@ public override void HandleState(EuiStateBase state) { var name = group.Key.Name; var description = group.Key.Description; - bool hasAccess = true; - FormattedMessage? reason; + // ReSharper disable once ReplaceWithSingleAssignment.True + var hasAccess = true; - if (!requirementsManager.CheckRoleTime(group.Key.Requirements, out reason)) - { + if (!characterReqs.CheckRequirementsValid( + group.Key.Requirements ?? new(), + new(), + (HumanoidCharacterProfile) (prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), + requirementsManager.GetPlayTimes(), + requirementsManager.IsWhitelisted(), + entityManager, + protoMan, + configManager, + out var reasons)) hasAccess = false; - } - _window.AddEntry(name, description, hasAccess, reason, group, spriteSystem); + _window.AddEntry(name, description, hasAccess, characterReqs.GetRequirementsText(reasons), group, spriteSystem); } var closeRulesWindow = ghostState.GhostRoles.All(role => role.Identifier != _windowRulesId); diff --git a/Content.Server/Clothing/Systems/LoadoutSystem.cs b/Content.Server/Clothing/Systems/LoadoutSystem.cs index c22f7afb598..73d5ae387ab 100644 --- a/Content.Server/Clothing/Systems/LoadoutSystem.cs +++ b/Content.Server/Clothing/Systems/LoadoutSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.CCVar; using Content.Shared.Inventory; using Content.Shared.Item; +using Content.Shared.Players; using Content.Shared.Storage; using Content.Shared.Storage.EntitySystems; using Robust.Shared.Configuration; @@ -31,7 +32,8 @@ private void OnPlayerSpawnComplete(PlayerSpawnCompleteEvent ev) return; // Spawn the loadout, get a list of items that failed to equip - var failedLoadouts = _loadout.ApplyCharacterLoadout(ev.Mob, ev.JobId, ev.Profile, _playTimeTracking.GetTrackerTimes(ev.Player)); + var failedLoadouts = _loadout.ApplyCharacterLoadout(ev.Mob, ev.JobId, ev.Profile, + _playTimeTracking.GetTrackerTimes(ev.Player), ev.Player.ContentData()?.Whitelisted ?? false); // Try to find back-mounted storage apparatus if (!_inventory.TryGetSlotEntity(ev.Mob, "back", out var item) || diff --git a/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs b/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs index abb26a8c8bc..997961ae675 100644 --- a/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs +++ b/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs @@ -1,4 +1,5 @@ using Content.Server.Mind.Commands; +using Content.Shared.Customization.Systems; using Content.Shared.Roles; namespace Content.Server.Ghost.Roles.Components @@ -14,7 +15,7 @@ public sealed partial class GhostRoleComponent : Component [DataField("rules")] private string _roleRules = "ghost-role-component-default-rules"; [DataField("requirements")] - public HashSet? Requirements; + public List? Requirements; /// /// Whether the should run on the mob. diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs index 57c6466ebbb..8368388d81e 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs @@ -3,12 +3,15 @@ using Content.Server.Afk.Events; using Content.Server.GameTicking; using Content.Server.Mind; +using Content.Server.Preferences.Managers; using Content.Shared.CCVar; +using Content.Shared.Customization.Systems; using Content.Shared.GameTicking; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared.Players; using Content.Shared.Players.PlayTimeTracking; +using Content.Shared.Preferences; using Content.Shared.Roles; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -31,6 +34,10 @@ public sealed class PlayTimeTrackingSystem : EntitySystem [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly PlayTimeTrackingManager _tracking = default!; + [Dependency] private readonly CharacterRequirementsSystem _characterRequirements = default!; + [Dependency] private readonly IServerPreferencesManager _prefs = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + public override void Initialize() { @@ -173,7 +180,16 @@ public bool IsAllowed(ICommonSession player, string role) var isWhitelisted = player.ContentData()?.Whitelisted ?? false; // DeltaV - Whitelist requirement - return JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes, isWhitelisted); + return _characterRequirements.CheckRequirementsValid( + job.Requirements, + job, + (HumanoidCharacterProfile) _prefs.GetPreferences(player.UserId).SelectedCharacter, + playTimes, + isWhitelisted, + EntityManager, + _prototypes, + _config, + out _); } public HashSet GetDisallowedJobs(ICommonSession player) @@ -194,13 +210,19 @@ public HashSet GetDisallowedJobs(ICommonSession player) { if (job.Requirements != null) { - foreach (var requirement in job.Requirements) - { - if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes, isWhitelisted)) - continue; + if (_characterRequirements.CheckRequirementsValid( + job.Requirements, + job, + (HumanoidCharacterProfile) _prefs.GetPreferences(player.UserId).SelectedCharacter, + playTimes, + isWhitelisted, + EntityManager, + _prototypes, + _config, + out _)) + continue; - goto NoRole; - } + goto NoRole; } roles.Add(job.ID); @@ -234,14 +256,19 @@ public void RemoveDisallowedJobs(NetUserId userId, ref List jobs) jobber.Requirements.Count == 0) continue; - foreach (var requirement in jobber.Requirements) + if (!_characterRequirements.CheckRequirementsValid( + jobber.Requirements, + jobber, + (HumanoidCharacterProfile) _prefs.GetPreferences(userId).SelectedCharacter, + _tracking.GetPlayTimes(_playerManager.GetSessionById(userId)), + _playerManager.GetSessionById(userId).ContentData()?.Whitelisted ?? false, + EntityManager, + _prototypes, + _config, + out _)) { - if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes, isWhitelisted)) - continue; - jobs.RemoveSwap(i); i--; - break; } } } diff --git a/Content.Server/Traits/TraitSystem.cs b/Content.Server/Traits/TraitSystem.cs index be2c3c05039..628cb43b8d2 100644 --- a/Content.Server/Traits/TraitSystem.cs +++ b/Content.Server/Traits/TraitSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Customization.Systems; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Players; using Content.Shared.Roles; using Content.Shared.Traits; using Pidgin.Configuration; @@ -40,9 +41,10 @@ private void OnPlayerSpawnComplete(PlayerSpawnCompleteEvent args) return; } - if (!_characterRequirements.CheckRequirementsValid(traitPrototype, traitPrototype.Requirements, + if (!_characterRequirements.CheckRequirementsValid( + traitPrototype.Requirements, _prototype.Index(args.JobId ?? _prototype.EnumeratePrototypes().First().ID), - args.Profile, _playTimeTracking.GetTrackerTimes(args.Player), + args.Profile, _playTimeTracking.GetTrackerTimes(args.Player), args.Player.ContentData()?.Whitelisted ?? false, EntityManager, _prototype, _configuration, out _)) continue; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 04e680390ce..3c3bfa8862d 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1432,7 +1432,7 @@ public static readonly CVarDef /// Controls whether the server will deny any players that are not whitelisted in the DB. /// public static readonly CVarDef WhitelistEnabled = - CVarDef.Create("whitelist.enabled", false, CVar.SERVERONLY); + CVarDef.Create("whitelist.enabled", false, CVar.REPLICATED); /// /// The loc string to display as a disconnect reason when someone is not whitelisted. diff --git a/Content.Shared/Clothing/Loadouts/Systems/LoadoutSystem.cs b/Content.Shared/Clothing/Loadouts/Systems/LoadoutSystem.cs index 09e3db3793f..e7a0eef80ee 100644 --- a/Content.Shared/Clothing/Loadouts/Systems/LoadoutSystem.cs +++ b/Content.Shared/Clothing/Loadouts/Systems/LoadoutSystem.cs @@ -38,12 +38,11 @@ private void OnMapInit(EntityUid uid, LoadoutComponent component, MapInitEvent a } - /// - public List ApplyCharacterLoadout(EntityUid uid, string job, HumanoidCharacterProfile profile, - Dictionary? playTimes = null) + public List ApplyCharacterLoadout(EntityUid uid, ProtoId job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted) { - var jobPrototype = _prototype.Index(job); - return ApplyCharacterLoadout(uid, jobPrototype, profile, playTimes); + var jobPrototype = _prototype.Index(job); + return ApplyCharacterLoadout(uid, jobPrototype, profile, playTimes, whitelisted); } /// @@ -53,9 +52,10 @@ public List ApplyCharacterLoadout(EntityUid uid, string job, Humanoid /// The job to use for loadout whitelist/blacklist (should be the job of the entity) /// The profile to get loadout items from (should be the entity's, or at least have the same species as the entity) /// Playtime for the player for use with playtime requirements + /// If the player is whitelisted /// A list of loadout items that couldn't be equipped but passed checks public List ApplyCharacterLoadout(EntityUid uid, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary? playTimes = null) + Dictionary playTimes, bool whitelisted) { var failedLoadouts = new List(); @@ -68,8 +68,8 @@ public List ApplyCharacterLoadout(EntityUid uid, JobPrototype job, Hu continue; - if (!_characterRequirements.CheckRequirementsValid(loadoutProto, loadoutProto.Requirements, job, profile, - playTimes ?? new Dictionary(), + if (!_characterRequirements.CheckRequirementsValid( + loadoutProto.Requirements, job, profile, playTimes, whitelisted, EntityManager, _prototype, _configuration, out _)) continue; diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.Job.cs b/Content.Shared/Customization/Systems/CharacterRequirements.Job.cs new file mode 100644 index 00000000000..fe44f2ccc06 --- /dev/null +++ b/Content.Shared/Customization/Systems/CharacterRequirements.Job.cs @@ -0,0 +1,299 @@ +using System.Linq; +using Content.Shared.CCVar; +using Content.Shared.Players.PlayTimeTracking; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Content.Shared.Roles.Jobs; +using JetBrains.Annotations; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared.Customization.Systems; + + +/// +/// Requires the selected job to be one of the specified jobs +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterJobRequirement : CharacterRequirement +{ + [DataField(required: true)] + public List> Jobs; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + var jobs = new List(); + + // Get the job names and department colors + foreach (var j in Jobs) + { + var jobProto = prototypeManager.Index(j); + var color = Color.LightBlue; + + foreach (var dept in prototypeManager.EnumeratePrototypes() + .OrderBy(d => Loc.GetString($"department-{d.ID}"))) + { + if (!dept.Roles.Contains(j)) + continue; + + color = dept.Color; + break; + } + + jobs.Add(FormattedMessage.FromMarkup($"[color={color.ToHex()}]{Loc.GetString(jobProto.Name)}[/color]")); + } + + // Join the job names + var jobsList = string.Join(", ", jobs.Select(j => j.ToMarkup())); + var jobsString = Loc.GetString("character-job-requirement", + ("inverted", Inverted), ("jobs", jobsList)); + + reason = FormattedMessage.FromMarkup(jobsString); + return Jobs.Contains(job.ID); + } +} + +/// +/// Requires the selected job to be in one of the specified departments +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterDepartmentRequirement : CharacterRequirement +{ + [DataField(required: true)] + public List> Departments; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + var departments = new List(); + + // Get the department names and colors + foreach (var d in Departments) + { + var deptProto = prototypeManager.Index(d); + var color = deptProto.Color; + + departments.Add(FormattedMessage.FromMarkup($"[color={color.ToHex()}]{Loc.GetString($"department-{deptProto.ID}")}[/color]")); + } + + // Join the department names + var departmentsList = string.Join(", ", departments.Select(d => d.ToMarkup())); + var departmentsString = Loc.GetString("character-department-requirement", + ("inverted", Inverted), ("departments", departmentsList)); + + reason = FormattedMessage.FromMarkup(departmentsString); + return Departments.Any(d => prototypeManager.Index(d).Roles.Contains(job.ID)); + } +} + +/// +/// Requires the playtime for a department to be within a certain range +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterDepartmentTimeRequirement : CharacterRequirement +{ + [DataField] + public TimeSpan Min = TimeSpan.MinValue; + + [DataField] + public TimeSpan Max = TimeSpan.MaxValue; + + [DataField(required: true)] + public ProtoId Department; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + // Disable the requirement if the role timers are disabled + if (!configManager.GetCVar(CCVars.GameRoleTimers)) + { + reason = null; + return !Inverted; + } + + var department = prototypeManager.Index(Department); + + // Combine all of this department's job playtimes + var playtime = TimeSpan.Zero; + foreach (var other in department.Roles) + { + var proto = prototypeManager.Index(other).PlayTimeTracker; + + playTimes.TryGetValue(proto, out var otherTime); + playtime += otherTime; + } + + if (playtime > Max) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-department-too-high", + ("time", playtime.TotalMinutes - Max.TotalMinutes), + ("department", Loc.GetString($"department-{department.ID}")), + ("departmentColor", department.Color))); + return false; + } + + if (playtime < Min) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-department-insufficient", + ("time", Min.TotalMinutes - playtime.TotalMinutes), + ("department", Loc.GetString($"department-{department.ID}")), + ("departmentColor", department.Color))); + return false; + } + + reason = null; + return true; + } +} + +/// +/// Requires the player to have a certain amount of overall job time +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterOverallTimeRequirement : CharacterRequirement +{ + [DataField] + public TimeSpan Min = TimeSpan.MinValue; + + [DataField] + public TimeSpan Max = TimeSpan.MaxValue; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + // Disable the requirement if the role timers are disabled + if (!configManager.GetCVar(CCVars.GameRoleTimers)) + { + reason = null; + return !Inverted; + } + + // Get the overall time + var overallTime = playTimes.GetValueOrDefault(PlayTimeTrackingShared.TrackerOverall); + + if (overallTime > Max) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-overall-too-high", + ("time", overallTime.TotalMinutes - Max.TotalMinutes))); + return false; + } + + if (overallTime < Min) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-overall-insufficient", + ("time", Min.TotalMinutes - overallTime.TotalMinutes))); + return false; + } + + reason = null; + return true; + } +} + +/// +/// Requires the playtime for a tracker to be within a certain range +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterPlaytimeRequirement : CharacterRequirement +{ + [DataField] + public TimeSpan Min = TimeSpan.MinValue; + + [DataField] + public TimeSpan Max = TimeSpan.MaxValue; + + [DataField(required: true)] + public ProtoId Tracker; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + // Disable the requirement if the role timers are disabled + if (!configManager.GetCVar(CCVars.GameRoleTimers)) + { + reason = null; + return !Inverted; + } + + // Get SharedJobSystem + if (!entityManager.EntitySysManager.TryGetEntitySystem(out SharedJobSystem? jobSystem)) + { + DebugTools.Assert("CharacterRequirements: SharedJobSystem not found"); + reason = null; + return false; + } + + // Get the JobPrototype of the Tracker + var trackerJob = jobSystem.GetJobPrototype(Tracker); + var jobStr = prototypeManager.Index(trackerJob).LocalizedName; + + // Get the primary department of the Tracker + if (!jobSystem.TryGetPrimaryDepartment(trackerJob, out var department) && + !jobSystem.TryGetDepartment(trackerJob, out department)) + { + DebugTools.Assert($"CharacterRequirements: Department not found for job {trackerJob}"); + reason = null; + return false; + } + + // Get the time for the tracker + var time = playTimes.GetValueOrDefault(Tracker); + reason = null; + + if (time > Max) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-role-too-high", + ("time", time.TotalMinutes - Max.TotalMinutes), + ("job", jobStr), + ("departmentColor", department.Color))); + return false; + } + + if (time < Min) + { + // Show the reason if invalid + reason = Inverted + ? null + : FormattedMessage.FromMarkup(Loc.GetString("character-timer-role-insufficient", + ("time", Min.TotalMinutes - time.TotalMinutes), + ("job", jobStr), + ("departmentColor", department.Color))); + return false; + } + + return true; + } +} diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs new file mode 100644 index 00000000000..aaeae107b9e --- /dev/null +++ b/Content.Shared/Customization/Systems/CharacterRequirements.Profile.cs @@ -0,0 +1,157 @@ +using System.Linq; +using Content.Shared.Clothing.Loadouts.Prototypes; +using Content.Shared.Humanoid.Prototypes; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using Content.Shared.Traits; +using JetBrains.Annotations; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared.Customization.Systems; + + +/// +/// Requires the profile to be within an age range +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterAgeRequirement : CharacterRequirement +{ + [DataField(required: true)] + public int Min; + + [DataField(required: true)] + public int Max; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + reason = FormattedMessage.FromMarkup(Loc.GetString("character-age-requirement", + ("inverted", Inverted), ("min", Min), ("max", Max))); + return profile.Age >= Min && profile.Age <= Max; + } +} + +/// +/// Requires the profile to use either a Backpack, Satchel, or Duffelbag +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterBackpackTypeRequirement : CharacterRequirement +{ + [DataField(required: true)] + public BackpackPreference Preference; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + reason = FormattedMessage.FromMarkup(Loc.GetString("character-backpack-type-requirement", + ("inverted", Inverted), + ("type", Loc.GetString($"humanoid-profile-editor-preference-{Preference.ToString().ToLower()}")))); + return profile.Backpack == Preference; + } +} + +/// +/// Requires the profile to use either Jumpsuits or Jumpskirts +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterClothingPreferenceRequirement : CharacterRequirement +{ + [DataField(required: true)] + public ClothingPreference Preference; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + reason = FormattedMessage.FromMarkup(Loc.GetString("character-clothing-preference-requirement", + ("inverted", Inverted), + ("preference", Loc.GetString($"humanoid-profile-editor-preference-{Preference.ToString().ToLower()}")))); + return profile.Clothing == Preference; + } +} + +/// +/// Requires the profile to be a certain species +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterSpeciesRequirement : CharacterRequirement +{ + [DataField(required: true)] + public List> Species; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + const string color = "green"; + reason = FormattedMessage.FromMarkup(Loc.GetString("character-species-requirement", + ("inverted", Inverted), + ("species", $"[color={color}]{string.Join($"[/color], [color={color}]", + Species.Select(s => Loc.GetString(prototypeManager.Index(s).Name)))}[/color]"))); + + return Species.Contains(profile.Species); + } +} + +/// +/// Requires the profile to have one of the specified traits +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterTraitRequirement : CharacterRequirement +{ + [DataField(required: true)] + public List> Traits; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + const string color = "lightblue"; + reason = FormattedMessage.FromMarkup(Loc.GetString("character-trait-requirement", + ("inverted", Inverted), + ("traits", $"[color={color}]{string.Join($"[/color], [color={color}]", + Traits.Select(t => Loc.GetString($"trait-name-{t}")))}[/color]"))); + + return Traits.Any(t => profile.TraitPreferences.Contains(t.ToString())); + } +} + +/// +/// Requires the profile to have one of the specified loadouts +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterLoadoutRequirement : CharacterRequirement +{ + [DataField(required: true)] + public List> Loadouts; + + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + const string color = "lightblue"; + reason = FormattedMessage.FromMarkup(Loc.GetString("character-loadout-requirement", + ("inverted", Inverted), + ("loadouts", $"[color={color}]{string.Join($"[/color], [color={color}]", + Loadouts.Select(l => Loc.GetString($"loadout-name-{l}")))}[/color]"))); + + return Loadouts.Any(l => profile.LoadoutPreferences.Contains(l.ToString())); + } +} diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.Whitelist.cs b/Content.Shared/Customization/Systems/CharacterRequirements.Whitelist.cs new file mode 100644 index 00000000000..56465251cdd --- /dev/null +++ b/Content.Shared/Customization/Systems/CharacterRequirements.Whitelist.cs @@ -0,0 +1,28 @@ +using Content.Shared.CCVar; +using Content.Shared.Preferences; +using Content.Shared.Roles; +using JetBrains.Annotations; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Utility; + +namespace Content.Shared.Customization.Systems; + + +/// +/// Requires the player to be whitelisted if whitelists are enabled +/// +[UsedImplicitly] +[Serializable, NetSerializable] +public sealed partial class CharacterWhitelistRequirement : CharacterRequirement +{ + public override bool IsValid(JobPrototype job, HumanoidCharacterProfile profile, + Dictionary playTimes, bool whitelisted, + IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, + out FormattedMessage? reason) + { + reason = FormattedMessage.FromMarkup(Loc.GetString("character-whitelist-requirement", ("inverted", Inverted))); + return !configManager.GetCVar(CCVars.WhitelistEnabled) || whitelisted; + } +} diff --git a/Content.Shared/Customization/Systems/CharacterRequirements.cs b/Content.Shared/Customization/Systems/CharacterRequirements.cs index 4e862aa69e3..b347c9787af 100644 --- a/Content.Shared/Customization/Systems/CharacterRequirements.cs +++ b/Content.Shared/Customization/Systems/CharacterRequirements.cs @@ -1,12 +1,5 @@ -using System.Linq; -using Content.Shared.CCVar; -using Content.Shared.Clothing.Loadouts.Prototypes; -using Content.Shared.Humanoid.Prototypes; -using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Preferences; using Content.Shared.Roles; -using Content.Shared.Roles.Jobs; -using Content.Shared.Traits; using JetBrains.Annotations; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; @@ -22,459 +15,25 @@ public abstract partial class CharacterRequirement { /// /// If true valid requirements will be treated as invalid and vice versa + /// This inversion is done by other systems like , not this one /// [DataField] public bool Inverted; /// /// Checks if this character requirement is valid for the given parameters + ///
+ /// You should probably not be calling this directly, use ///
/// Description for the requirement, shown when not null public abstract bool IsValid( - IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, Dictionary playTimes, + bool whitelisted, IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, out FormattedMessage? reason ); } - - -#region HumanoidCharacterProfile - -/// -/// Requires the profile to be within an age range -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterAgeRequirement : CharacterRequirement -{ - [DataField(required: true)] - public int Min; - - [DataField(required: true)] - public int Max; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - reason = FormattedMessage.FromMarkup(Loc.GetString("character-age-requirement", - ("inverted", Inverted), ("min", Min), ("max", Max))); - return profile.Age >= Min && profile.Age <= Max; - } -} - -/// -/// Requires the profile to use either a Backpack, Satchel, or Duffelbag -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterBackpackTypeRequirement : CharacterRequirement -{ - [DataField(required: true)] - public BackpackPreference Preference; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - reason = FormattedMessage.FromMarkup(Loc.GetString("character-backpack-type-requirement", - ("inverted", Inverted), - ("type", Loc.GetString($"humanoid-profile-editor-preference-{Preference.ToString().ToLower()}")))); - return profile.Backpack == Preference; - } -} - -/// -/// Requires the profile to use either Jumpsuits or Jumpskirts -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterClothingPreferenceRequirement : CharacterRequirement -{ - [DataField(required: true)] - public ClothingPreference Preference; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - reason = FormattedMessage.FromMarkup(Loc.GetString("character-clothing-preference-requirement", - ("inverted", Inverted), - ("preference", Loc.GetString($"humanoid-profile-editor-preference-{Preference.ToString().ToLower()}")))); - return profile.Clothing == Preference; - } -} - -/// -/// Requires the profile to be a certain species -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterSpeciesRequirement : CharacterRequirement -{ - [DataField(required: true)] - public List> Species; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - const string color = "green"; - reason = FormattedMessage.FromMarkup(Loc.GetString("character-species-requirement", - ("inverted", Inverted), - ("species", $"[color={color}]{string.Join($"[/color], [color={color}]", - Species.Select(s => Loc.GetString(prototypeManager.Index(s).Name)))}[/color]"))); - - return Species.Contains(profile.Species); - } -} - -/// -/// Requires the profile to have one of the specified traits -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterTraitRequirement : CharacterRequirement -{ - [DataField(required: true)] - public List> Traits; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - const string color = "lightblue"; - reason = FormattedMessage.FromMarkup(Loc.GetString("character-trait-requirement", - ("inverted", Inverted), - ("traits", $"[color={color}]{string.Join($"[/color], [color={color}]", - Traits.Select(t => Loc.GetString($"trait-name-{t}")))}[/color]"))); - - return Traits.Any(t => profile.TraitPreferences.Contains(t.ToString())); - } -} - -/// -/// Requires the profile to have one of the specified loadouts -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterLoadoutRequirement : CharacterRequirement -{ - [DataField(required: true)] - public List> Loadouts; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - const string color = "lightblue"; - reason = FormattedMessage.FromMarkup(Loc.GetString("character-loadout-requirement", - ("inverted", Inverted), - ("loadouts", $"[color={color}]{string.Join($"[/color], [color={color}]", - Loadouts.Select(l => Loc.GetString($"loadout-name-{l}")))}[/color]"))); - - return Loadouts.Any(l => profile.LoadoutPreferences.Contains(l.ToString())); - } -} - -#endregion - -#region Jobs - -/// -/// Requires the selected job to be one of the specified jobs -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterJobRequirement : CharacterRequirement -{ - [DataField(required: true)] - public List> Jobs; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - var jobs = new List(); - - // Get the job names and department colors - foreach (var j in Jobs) - { - var jobProto = prototypeManager.Index(j); - var color = Color.LightBlue; - - foreach (var dept in prototypeManager.EnumeratePrototypes() - .OrderBy(d => Loc.GetString($"department-{d.ID}"))) - { - if (!dept.Roles.Contains(j)) - continue; - - color = dept.Color; - break; - } - - jobs.Add(FormattedMessage.FromMarkup($"[color={color.ToHex()}]{Loc.GetString(jobProto.Name)}[/color]")); - } - - // Join the job names - var jobsList = string.Join(", ", jobs.Select(j => j.ToMarkup())); - var jobsString = Loc.GetString("character-job-requirement", - ("inverted", Inverted), ("jobs", jobsList)); - - reason = FormattedMessage.FromMarkup(jobsString); - return Jobs.Contains(job.ID); - } -} - -/// -/// Requires the selected job to be in one of the specified departments -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterDepartmentRequirement : CharacterRequirement -{ - [DataField(required: true)] - public List> Departments; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - var departments = new List(); - - // Get the department names and colors - foreach (var d in Departments) - { - var deptProto = prototypeManager.Index(d); - var color = deptProto.Color; - - departments.Add(FormattedMessage.FromMarkup($"[color={color.ToHex()}]{Loc.GetString($"department-{deptProto.ID}")}[/color]")); - } - - // Join the department names - var departmentsList = string.Join(", ", departments.Select(d => d.ToMarkup())); - var departmentsString = Loc.GetString("character-department-requirement", - ("inverted", Inverted), ("departments", departmentsList)); - - reason = FormattedMessage.FromMarkup(departmentsString); - return Departments.Any(d => prototypeManager.Index(d).Roles.Contains(job.ID)); - } -} - -/// -/// Requires the playtime for a department to be within a certain range -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterDepartmentTimeRequirement : CharacterRequirement -{ - [DataField] - public TimeSpan Min = TimeSpan.MinValue; - - [DataField] - public TimeSpan Max = TimeSpan.MaxValue; - - [DataField(required: true)] - public ProtoId Department; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - // Disable the requirement if the role timers are disabled - if (!configManager.GetCVar(CCVars.GameRoleTimers)) - { - reason = null; - return !Inverted; - } - - var department = prototypeManager.Index(Department); - - // Combine all of this department's job playtimes - var playtime = TimeSpan.Zero; - foreach (var other in department.Roles) - { - var proto = prototypeManager.Index(other).PlayTimeTracker; - - playTimes.TryGetValue(proto, out var otherTime); - playtime += otherTime; - } - - if (playtime > Max) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-department-too-high", - ("time", playtime.TotalMinutes - Max.TotalMinutes), - ("department", Loc.GetString($"department-{department.ID}")), - ("departmentColor", department.Color))); - return false; - } - - if (playtime < Min) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-department-insufficient", - ("time", Min.TotalMinutes - playtime.TotalMinutes), - ("department", Loc.GetString($"department-{department.ID}")), - ("departmentColor", department.Color))); - return false; - } - - reason = null; - return true; - } -} - -/// -/// Requires the player to have a certain amount of overall job time -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterOverallTimeRequirement : CharacterRequirement -{ - [DataField] - public TimeSpan Min = TimeSpan.MinValue; - - [DataField] - public TimeSpan Max = TimeSpan.MaxValue; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - // Disable the requirement if the role timers are disabled - if (!configManager.GetCVar(CCVars.GameRoleTimers)) - { - reason = null; - return !Inverted; - } - - // Get the overall time - var overallTime = playTimes.GetValueOrDefault(PlayTimeTrackingShared.TrackerOverall); - - if (overallTime > Max) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-overall-too-high", - ("time", overallTime.TotalMinutes - Max.TotalMinutes))); - return false; - } - - if (overallTime < Min) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-overall-insufficient", - ("time", Min.TotalMinutes - overallTime.TotalMinutes))); - return false; - } - - reason = null; - return true; - } -} - -/// -/// Requires the playtime for a tracker to be within a certain range -/// -[UsedImplicitly] -[Serializable, NetSerializable] -public sealed partial class CharacterPlaytimeRequirement : CharacterRequirement -{ - [DataField] - public TimeSpan Min = TimeSpan.MinValue; - - [DataField] - public TimeSpan Max = TimeSpan.MaxValue; - - [DataField(required: true)] - public ProtoId Tracker; - - public override bool IsValid(IPrototype prototype, JobPrototype job, HumanoidCharacterProfile profile, - Dictionary playTimes, - IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, - out FormattedMessage? reason) - { - // Disable the requirement if the role timers are disabled - if (!configManager.GetCVar(CCVars.GameRoleTimers)) - { - reason = null; - return !Inverted; - } - - // Get SharedJobSystem - if (!entityManager.EntitySysManager.TryGetEntitySystem(out SharedJobSystem? jobSystem)) - { - DebugTools.Assert("CharacterRequirements: SharedJobSystem not found"); - reason = null; - return false; - } - - // Get the JobPrototype of the Tracker - var trackerJob = jobSystem.GetJobPrototype(Tracker); - var jobStr = prototypeManager.Index(trackerJob).LocalizedName; - - // Get the primary department of the Tracker - if (!jobSystem.TryGetPrimaryDepartment(trackerJob, out var department) && - !jobSystem.TryGetDepartment(trackerJob, out department)) - { - DebugTools.Assert($"CharacterRequirements: Department not found for job {trackerJob}"); - reason = null; - return false; - } - - // Get the time for the tracker - var time = playTimes.GetValueOrDefault(Tracker); - reason = null; - - if (time > Max) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-role-too-high", - ("time", time.TotalMinutes - Max.TotalMinutes), - ("job", jobStr), - ("departmentColor", department.Color))); - return false; - } - - if (time < Min) - { - // Show the reason if invalid - reason = Inverted - ? null - : FormattedMessage.FromMarkup(Loc.GetString("character-timer-role-insufficient", - ("time", Min.TotalMinutes - time.TotalMinutes), - ("job", jobStr), - ("departmentColor", department.Color))); - return false; - } - - return true; - } -} - -#endregion diff --git a/Content.Shared/Customization/Systems/CharacterRequirementsSystem.cs b/Content.Shared/Customization/Systems/CharacterRequirementsSystem.cs index f21971b5e68..521c4f186a2 100644 --- a/Content.Shared/Customization/Systems/CharacterRequirementsSystem.cs +++ b/Content.Shared/Customization/Systems/CharacterRequirementsSystem.cs @@ -1,3 +1,4 @@ +using System.Text; using Content.Shared.Preferences; using Content.Shared.Roles; using Robust.Shared.Configuration; @@ -9,8 +10,8 @@ namespace Content.Shared.Customization.Systems; public sealed class CharacterRequirementsSystem : EntitySystem { - public bool CheckRequirementsValid(IPrototype prototype, List requirements, JobPrototype job, - HumanoidCharacterProfile profile, Dictionary playTimes, + public bool CheckRequirementsValid(List requirements, JobPrototype job, + HumanoidCharacterProfile profile, Dictionary playTimes, bool whitelisted, IEntityManager entityManager, IPrototypeManager prototypeManager, IConfigurationManager configManager, out List reasons) { @@ -21,7 +22,7 @@ public bool CheckRequirementsValid(IPrototype prototype, List + /// Gets the reason text from as a . + ///
+ public FormattedMessage GetRequirementsText(List reasons) + { + var text = new StringBuilder(); + foreach (var reason in reasons) + text.Append($"\n{reason.ToMarkup()}"); + + return FormattedMessage.FromMarkup(text.ToString().Trim()); + } + + /// + /// Gets the reason text from as a markup string. + /// + public string GetRequirementsMarkup(List reasons) + { + var text = new StringBuilder(); + foreach (var reason in reasons) + text.Append($"\n{reason.ToMarkup()}"); + + return text.ToString().Trim(); + } } diff --git a/Content.Shared/DeltaV/Roles/JobRequirements.Whitelist.cs b/Content.Shared/DeltaV/Roles/JobRequirements.Whitelist.cs deleted file mode 100644 index a6e352991e9..00000000000 --- a/Content.Shared/DeltaV/Roles/JobRequirements.Whitelist.cs +++ /dev/null @@ -1,11 +0,0 @@ -using JetBrains.Annotations; -using Robust.Shared.Serialization; - -namespace Content.Shared.Roles -{ - [UsedImplicitly] - [Serializable, NetSerializable] - public sealed partial class WhitelistRequirement : JobRequirement - { - } -} diff --git a/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs b/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs index 8fbb931ca95..74af1e89ecc 100644 --- a/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs +++ b/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs @@ -1,3 +1,4 @@ +using Content.Shared.Customization.Systems; using Content.Shared.Eui; using Content.Shared.Roles; using Robust.Shared.Serialization; @@ -11,7 +12,7 @@ public struct GhostRoleInfo public string Name { get; set; } public string Description { get; set; } public string Rules { get; set; } - public HashSet? Requirements { get; set; } + public List? Requirements { get; set; } } [NetSerializable, Serializable] diff --git a/Content.Shared/Roles/AntagPrototype.cs b/Content.Shared/Roles/AntagPrototype.cs index c6acb9b7575..824ea4be4e5 100644 --- a/Content.Shared/Roles/AntagPrototype.cs +++ b/Content.Shared/Roles/AntagPrototype.cs @@ -1,3 +1,4 @@ +using Content.Shared.Customization.Systems; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; @@ -42,5 +43,5 @@ public sealed partial class AntagPrototype : IPrototype /// Requirements that must be met to opt in to this antag role. ///
[DataField("requirements")] - public HashSet? Requirements; + public List? Requirements; } diff --git a/Content.Shared/Roles/JobPrototype.cs b/Content.Shared/Roles/JobPrototype.cs index 9f158a79e08..15f8233aab8 100644 --- a/Content.Shared/Roles/JobPrototype.cs +++ b/Content.Shared/Roles/JobPrototype.cs @@ -1,4 +1,5 @@ using Content.Shared.Access; +using Content.Shared.Customization.Systems; using Content.Shared.Players.PlayTimeTracking; using Content.Shared.Roles; using Content.Shared.StatusIcon; @@ -43,7 +44,7 @@ public sealed partial class JobPrototype : IPrototype public string? LocalizedDescription => Description is null ? null : Loc.GetString(Description); [DataField("requirements")] - public HashSet? Requirements; + public List? Requirements; [DataField("joinNotifyCrew")] public bool JoinNotifyCrew { get; private set; } = false; diff --git a/Content.Shared/Roles/JobRequirements.cs b/Content.Shared/Roles/JobRequirements.cs deleted file mode 100644 index 44607fc44d9..00000000000 --- a/Content.Shared/Roles/JobRequirements.cs +++ /dev/null @@ -1,232 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Content.Shared.Players.PlayTimeTracking; -using Content.Shared.Roles.Jobs; -using JetBrains.Annotations; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -using Robust.Shared.Utility; - -namespace Content.Shared.Roles -{ - /// - /// Abstract class for playtime and other requirements for role gates. - /// - [ImplicitDataDefinitionForInheritors] - [Serializable, NetSerializable] - public abstract partial class JobRequirement{} - - [UsedImplicitly] - [Serializable, NetSerializable] - public sealed partial class DepartmentTimeRequirement : JobRequirement - { - /// - /// Which department needs the required amount of time. - /// - [DataField("department", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string Department = default!; - - /// - /// How long (in seconds) this requirement is. - /// - [DataField("time")] public TimeSpan Time; - - /// - /// If true, requirement will return false if playtime above the specified time. - /// - /// - /// False by default.
- /// True for invert general requirement - ///
- [DataField("inverted")] public bool Inverted; - } - - [UsedImplicitly] - [Serializable, NetSerializable] - public sealed partial class RoleTimeRequirement : JobRequirement - { - /// - /// What particular role they need the time requirement with. - /// - [DataField("role", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string Role = default!; - - /// - [DataField("time")] public TimeSpan Time; - - /// - [DataField("inverted")] public bool Inverted; - } - - [UsedImplicitly] - [Serializable, NetSerializable] - public sealed partial class OverallPlaytimeRequirement : JobRequirement - { - /// - [DataField("time")] public TimeSpan Time; - - /// - [DataField("inverted")] public bool Inverted; - } - - public static class JobRequirements - { - public static bool TryRequirementsMet( - JobPrototype job, - IReadOnlyDictionary playTimes, - [NotNullWhen(false)] out FormattedMessage? reason, - IEntityManager entManager, - IPrototypeManager prototypes, - bool isWhitelisted) - { - reason = null; - if (job.Requirements == null) - return true; - - foreach (var requirement in job.Requirements) - { - if (!TryRequirementMet(requirement, playTimes, out reason, entManager, prototypes, isWhitelisted)) - return false; - } - - return true; - } - - /// - /// Returns a string with the reason why a particular requirement may not be met. - /// - public static bool TryRequirementMet( - JobRequirement requirement, - IReadOnlyDictionary playTimes, - [NotNullWhen(false)] out FormattedMessage? reason, - IEntityManager entManager, - IPrototypeManager prototypes, - bool isWhitelisted, - string? localePrefix = "role-timer-") - { - reason = null; - - switch (requirement) - { - case DepartmentTimeRequirement deptRequirement: - var playtime = TimeSpan.Zero; - - // Check all jobs' departments - var department = prototypes.Index(deptRequirement.Department); - var jobs = department.Roles; - string proto; - - // Check all jobs' playtime - foreach (var other in jobs) - { - // The schema is stored on the Job role but we want to explode if the timer isn't found anyway. - proto = prototypes.Index(other).PlayTimeTracker; - - playTimes.TryGetValue(proto, out var otherTime); - playtime += otherTime; - } - - var deptDiff = deptRequirement.Time.TotalMinutes - playtime.TotalMinutes; - - if (!deptRequirement.Inverted) - { - if (deptDiff <= 0) - return true; - - reason = FormattedMessage.FromMarkup(Loc.GetString( - $"{localePrefix}department-insufficient", - ("time", Math.Ceiling(deptDiff)), - ("department", Loc.GetString(deptRequirement.Department)), - ("departmentColor", department.Color.ToHex()))); - return false; - } - - if (deptDiff <= 0) - { - reason = FormattedMessage.FromMarkup(Loc.GetString( - $"{localePrefix}department-too-high", - ("time", -deptDiff), - ("department", Loc.GetString(deptRequirement.Department)), - ("departmentColor", department.Color.ToHex()))); - return false; - } - - return true; - - case OverallPlaytimeRequirement overallRequirement: - var overallTime = playTimes.GetValueOrDefault(PlayTimeTrackingShared.TrackerOverall); - var overallDiff = overallRequirement.Time.TotalMinutes - overallTime.TotalMinutes; - - if (!overallRequirement.Inverted) - { - if (overallDiff <= 0 || overallTime >= overallRequirement.Time) - return true; - - reason = FormattedMessage.FromMarkup(Loc.GetString( - $"{localePrefix}overall-insufficient", - ("time", Math.Ceiling(overallDiff)))); - return false; - } - - if (overallDiff <= 0 || overallTime >= overallRequirement.Time) - { - reason = FormattedMessage.FromMarkup(Loc.GetString($"{localePrefix}overall-too-high", ("time", -overallDiff))); - return false; - } - - return true; - - case RoleTimeRequirement roleRequirement: - proto = roleRequirement.Role; - - playTimes.TryGetValue(proto, out var roleTime); - var roleDiff = roleRequirement.Time.TotalMinutes - roleTime.TotalMinutes; - var departmentColor = Color.Yellow; - - if (entManager.EntitySysManager.TryGetEntitySystem(out SharedJobSystem? jobSystem)) - { - var jobProto = jobSystem.GetJobPrototype(proto); - - if (jobSystem.TryGetDepartment(jobProto, out var departmentProto)) - departmentColor = departmentProto.Color; - } - - if (!roleRequirement.Inverted) - { - if (roleDiff <= 0) - return true; - - reason = FormattedMessage.FromMarkup(Loc.GetString( - $"{localePrefix}role-insufficient", - ("time", Math.Ceiling(roleDiff)), - ("job", Loc.GetString(proto)), - ("departmentColor", departmentColor.ToHex()))); - return false; - } - - if (roleDiff <= 0) - { - reason = FormattedMessage.FromMarkup(Loc.GetString( - $"{localePrefix}role-too-high", - ("time", -roleDiff), - ("job", Loc.GetString(proto)), - ("departmentColor", departmentColor.ToHex()))); - return false; - } - - return true; - case WhitelistRequirement _: // DeltaV - Whitelist requirement - if (isWhitelisted == null) - throw new ArgumentNullException(nameof(isWhitelisted), "isWhitelisted cannot be null."); - - if (isWhitelisted) - return true; - - reason = FormattedMessage.FromMarkup(Loc.GetString("playtime-deny-reason-not-whitelisted")); - return false; - default: - throw new NotImplementedException(); - } - } - } -} diff --git a/Resources/Locale/en-US/customization/character-requirements.ftl b/Resources/Locale/en-US/customization/character-requirements.ftl index d0eeb8f9c85..a3f00dea872 100644 --- a/Resources/Locale/en-US/customization/character-requirements.ftl +++ b/Resources/Locale/en-US/customization/character-requirements.ftl @@ -1,3 +1,22 @@ +# Job +character-job-requirement = You must {$inverted -> + [true] not be + *[other] be +} one of these jobs: {$jobs} +character-department-requirement = You must {$inverted -> + [true] not be + *[other] be +} in one of these departments: {$departments} + +character-timer-department-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes of [color={$departmentColor}]{$department}[/color] department playtime +character-timer-department-too-high = You require [color=yellow]{TOSTRING($time, "0")}[/color] fewer minutes in [color={$departmentColor}]{$department}[/color] department +character-timer-overall-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes of playtime +character-timer-overall-too-high = You require [color=yellow]{TOSTRING($time, "0")}[/color] fewer minutes of playtime +character-timer-role-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes with [color={$departmentColor}]{$job}[/color] +character-timer-role-too-high = You require[color=yellow] {TOSTRING($time, "0")}[/color] fewer minutes with [color={$departmentColor}]{$job}[/color] + + +# Profile character-age-requirement = You must {$inverted -> [true] not be *[other] be @@ -23,18 +42,9 @@ character-clothing-preference-requirement = You must {$inverted -> *[other] wear } a [color=white]{$type}[/color] -character-job-requirement = You must {$inverted -> - [true] not be - *[other] be -} one of these jobs: {$jobs} -character-department-requirement = You must {$inverted -> + +# Whitelist +character-whitelist-requirement = You must {$inverted -> [true] not be *[other] be -} in one of these departments: {$departments} - -character-timer-department-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes of [color={$departmentColor}]{$department}[/color] department playtime -character-timer-department-too-high = You require [color=yellow]{TOSTRING($time, "0")}[/color] fewer minutes in [color={$departmentColor}]{$department}[/color] department -character-timer-overall-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes of playtime -character-timer-overall-too-high = You require [color=yellow]{TOSTRING($time, "0")}[/color] fewer minutes of playtime -character-timer-role-insufficient = You require [color=yellow]{TOSTRING($time, "0")}[/color] more minutes with [color={$departmentColor}]{$job}[/color] -character-timer-role-too-high = You require[color=yellow] {TOSTRING($time, "0")}[/color] fewer minutes with [color={$departmentColor}]{$job}[/color] +} whitelisted diff --git a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml index 1e014aab734..8534b737888 100644 --- a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml @@ -32,8 +32,8 @@ description: ghost-role-information-listeningop-description rules: ghost-role-information-listeningop-rules requirements: # Worth considering these numbers for the goal of making sure someone willing to MRP takes this. - - !type:OverallPlaytimeRequirement - time: 259200 # 72 hours + - !type:CharacterOverallTimeRequirement + min: 259200 # 72 hours - !type:DepartmentTimeRequirement department: Security time: 40000 # 11.1 hours diff --git a/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml b/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml index e2047d3c200..18a4bbf3152 100644 --- a/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml +++ b/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml @@ -5,11 +5,11 @@ description: job-description-medical-borg playTimeTracker: JobMedicalBorg requirements: - - !type:OverallPlaytimeRequirement - time: 216000 #60 hrs + - !type:CharacterOverallTimeRequirement + min: 216000 #60 hrs - !type:DepartmentTimeRequirement department: Medical - time: 21600 #6 hrs + min: 21600 #6 hrs canBeAntag: false icon: JobIconMedicalBorg supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml b/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml index adc6f95dfd4..daf7f1195c0 100644 --- a/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml +++ b/Resources/Prototypes/DeltaV/Roles/Jobs/Security/brigmedic.yml @@ -6,10 +6,10 @@ requirements: - !type:DepartmentTimeRequirement department: Medical - time: 21600 # 6 hrs + min: 21600 # 6 hrs - !type:DepartmentTimeRequirement department: Security - time: 18000 # 4 hrs + min: 18000 # 4 hrs startingGear: CorpsmanGear icon: "JobIconBrigmedic" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml index 3da346cdd65..712dfcf3a06 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/ghost_roles.yml @@ -85,8 +85,8 @@ description: ghost-role-information-loneop-description rules: ghost-role-information-loneop-rules requirements: - - !type:OverallPlaytimeRequirement - time: 172800 # DeltaV - 48 hours + - !type:CharacterOverallTimeRequirement + min: 172800 # DeltaV - 48 hours - !type:DepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security time: 36000 # DeltaV - 10 hours diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml index c3e682e02a9..31c08140ac7 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml @@ -4,11 +4,11 @@ description: job-description-mantis playTimeTracker: JobForensicMantis requirements: - - !type:OverallPlaytimeRequirement - time: 18000 + - !type:CharacterOverallTimeRequirement + min: 18000 - !type:DepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 3600 + min: 3600 startingGear: ForensicMantisGear icon: "JobIconForensicMantis" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml index 55d86d343dc..12c859b7d8c 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml @@ -4,11 +4,11 @@ description: job-description-guard playTimeTracker: JobPrisonGuard requirements: - - !type:OverallPlaytimeRequirement - time: 18000 + - !type:CharacterOverallTimeRequirement + min: 18000 - !type:DepartmentTimeRequirement department: Security - time: 14400 + min: 14400 startingGear: PrisonGuardGear alwaysUseSpawner: true canBeAntag: false diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml index 498477eb229..3651d223d77 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml @@ -13,7 +13,7 @@ requirements: - !type:DepartmentTimeRequirement department: Security - time: 21600 + min: 21600 special: - !type:AddComponentSpecial components: diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml index 14c277ff7e5..8c3c80c72fd 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml @@ -4,8 +4,8 @@ description: job-description-martialartist playTimeTracker: JobMartialArtist requirements: - - !type:OverallPlaytimeRequirement - time: 7200 #2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 #2 hours startingGear: MartialArtistGear icon: "JobIconMartialArtist" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml index 9df4832a584..00ffdde666f 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml @@ -12,7 +12,7 @@ requirements: - !type:DepartmentTimeRequirement department: Security - time: 21600 + min: 21600 - type: startingGear id: PrisonerGear diff --git a/Resources/Prototypes/Roles/Antags/ninja.yml b/Resources/Prototypes/Roles/Antags/ninja.yml index 23027805a1c..fd8a79ad254 100644 --- a/Resources/Prototypes/Roles/Antags/ninja.yml +++ b/Resources/Prototypes/Roles/Antags/ninja.yml @@ -5,5 +5,5 @@ setPreference: false objective: roles-antag-space-ninja-objective requirements: - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 259200 # DeltaV - 72 hours + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 259200 # DeltaV - 72 hours diff --git a/Resources/Prototypes/Roles/Antags/nukeops.yml b/Resources/Prototypes/Roles/Antags/nukeops.yml index 7375c02639c..fe05393b9ca 100644 --- a/Resources/Prototypes/Roles/Antags/nukeops.yml +++ b/Resources/Prototypes/Roles/Antags/nukeops.yml @@ -5,11 +5,11 @@ setPreference: true objective: roles-antag-nuclear-operative-objective requirements: - - !type:OverallPlaytimeRequirement - time: 108000 # DeltaV - 30 hours - - !type:DepartmentTimeRequirement # DeltaV - Security dept time requirement + - !type:CharacterOverallTimeRequirement + min: 108000 # DeltaV - 30 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours - type: antag id: NukeopsMedic @@ -18,11 +18,11 @@ setPreference: true objective: roles-antag-nuclear-operative-agent-objective requirements: - - !type:OverallPlaytimeRequirement - time: 108000 # DeltaV - 30 hours - - !type:DepartmentTimeRequirement # DeltaV - Medical dept time requirement + - !type:CharacterOverallTimeRequirement + min: 108000 # DeltaV - 30 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Medical dept time requirement department: Medical - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours - type: antag id: NukeopsCommander @@ -31,12 +31,12 @@ setPreference: true objective: roles-antag-nuclear-operative-commander-objective requirements: - - !type:OverallPlaytimeRequirement - time: 216000 # DeltaV - 60 hours - - !type:DepartmentTimeRequirement # DeltaV - Security dept time requirement + - !type:CharacterOverallTimeRequirement + min: 216000 # DeltaV - 60 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security - time: 36000 # DeltaV - 10 hours - - !type:DepartmentTimeRequirement # DeltaV - Command dept time requirement + min: 36000 # DeltaV - 10 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Command - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours - !type:WhitelistRequirement # DeltaV - Whitelist requirement diff --git a/Resources/Prototypes/Roles/Antags/revolutionary.yml b/Resources/Prototypes/Roles/Antags/revolutionary.yml index 6f22bd1d58a..cc551fc4679 100644 --- a/Resources/Prototypes/Roles/Antags/revolutionary.yml +++ b/Resources/Prototypes/Roles/Antags/revolutionary.yml @@ -5,11 +5,11 @@ setPreference: true objective: roles-antag-rev-head-objective requirements: - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 172800 # DeltaV - 48 hours - - !type:DepartmentTimeRequirement # DeltaV - Command dept time requirement + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 172800 # DeltaV - 48 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Command - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours - type: antag id: Rev diff --git a/Resources/Prototypes/Roles/Antags/traitor.yml b/Resources/Prototypes/Roles/Antags/traitor.yml index 98fdb0ee47d..fec2280ddc8 100644 --- a/Resources/Prototypes/Roles/Antags/traitor.yml +++ b/Resources/Prototypes/Roles/Antags/traitor.yml @@ -5,5 +5,5 @@ setPreference: true objective: roles-antag-syndicate-agent-objective requirements: - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 86400 # DeltaV - 24 hours + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 86400 # DeltaV - 24 hours diff --git a/Resources/Prototypes/Roles/Antags/zombie.yml b/Resources/Prototypes/Roles/Antags/zombie.yml index 6ff0f17edc7..5ec90f68162 100644 --- a/Resources/Prototypes/Roles/Antags/zombie.yml +++ b/Resources/Prototypes/Roles/Antags/zombie.yml @@ -5,8 +5,8 @@ setPreference: true objective: roles-antag-initial-infected-objective requirements: - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 43200 # DeltaV - 12 hours + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 43200 # DeltaV - 12 hours - type: antag id: Zombie diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index b7e8744c6ad..ee1a101154a 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -8,17 +8,17 @@ # - !type:RoleTimeRequirement #DeltaV # role: JobCargoTechnician # time: 21600 #6 hrs - - !type:RoleTimeRequirement - role: JobSalvageSpecialist - time: 10800 #3 hrs - - !type:RoleTimeRequirement # DeltaV - Courier role time requirement - role: JobMailCarrier - time: 7200 # 2 hours - - !type:DepartmentTimeRequirement + - !type:CharacterPlaytimeRequirement + tracker: JobSalvageSpecialist + min: 10800 #3 hrs + - !type:CharacterPlaytimeRequirement # DeltaV - Courier role time requirement + tracker: JobMailCarrier + min: 7200 # 2 hours + - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - time: 43200 #DeltaV 12 hours - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs + min: 43200 #DeltaV 12 hours + - !type:CharacterOverallTimeRequirement + min: 144000 #40 hrs weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml index f2f7c016412..8b806009ef8 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml @@ -5,9 +5,9 @@ playTimeTracker: JobSalvageSpecialist antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Free hardsuit and weapons requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - time: 21600 #DeltaV 6 hrs + min: 21600 #DeltaV 6 hrs # - !type:OverallPlaytimeRequirement #DeltaV # time: 36000 #10 hrs icon: "JobIconShaftMiner" diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml index 8f6f9fc7de2..85a86dabce3 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml @@ -4,9 +4,9 @@ description: job-description-bartender playTimeTracker: JobBartender requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Civilian - time: 3600 #DeltaV + min: 3600 #DeltaV startingGear: BartenderGear icon: "JobIconBartender" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml index 7f16cf16447..9b4f5ea1487 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -4,9 +4,9 @@ description: job-description-chaplain playTimeTracker: JobChaplain requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 14400 #DeltaV 4 hours + min: 14400 #DeltaV 4 hours startingGear: ChaplainGear icon: "JobIconChaplain" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml index 6ae2310474d..0837f1f3907 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml @@ -4,9 +4,9 @@ description: job-description-chef playTimeTracker: JobChef requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Civilian - time: 3600 #DeltaV 1 hour + min: 3600 #DeltaV 1 hour startingGear: ChefGear icon: "JobIconChef" supervisors: job-supervisors-hop @@ -17,10 +17,10 @@ extendedAccess: - Hydroponics - Bar #Nyano - Summary: After this line, Professional Che is a component to be added. Very important. - special: + special: - !type:AddComponentSpecial components: - - type: ProfessionalChef #Nyano - End Summary. + - type: ProfessionalChef #Nyano - End Summary. - type: startingGear id: ChefGear diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml index 43e07d0637c..141f4d39b76 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml @@ -4,8 +4,8 @@ description: job-description-clown playTimeTracker: JobClown requirements: - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 7200 #2 hrs + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 7200 #2 hrs startingGear: ClownGear icon: "JobIconClown" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml index b67275c9930..838a18d5e5d 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml @@ -5,11 +5,11 @@ playTimeTracker: JobLawyer antagAdvantage: 2 # DeltaV - Reduced TC: Security Radio and Access requirements: - - !type:OverallPlaytimeRequirement - time: 36000 # 10 hrs - - !type:DepartmentTimeRequirement # DeltaV - Security dept time requirement + - !type:CharacterOverallTimeRequirement + min: 36000 # 10 hrs + - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security - time: 14400 # 4 hours + min: 14400 # 4 hours startingGear: LawyerGear icon: "JobIconLawyer" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index 536c8635d1b..7f138c6d7d1 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -4,8 +4,8 @@ description: job-description-librarian playTimeTracker: JobLibrarian requirements: - - !type:OverallPlaytimeRequirement #DeltaV - time: 3600 # 1 hr + - !type:CharacterOverallTimeRequirement #DeltaV + min: 3600 # 1 hr startingGear: LibrarianGear icon: "JobIconLibrarian" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml index 8da2c34231b..3e04285d601 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml @@ -4,8 +4,8 @@ description: job-description-mime playTimeTracker: JobMime requirements: - - !type:OverallPlaytimeRequirement - time: 7200 # DeltaV - 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 # DeltaV - 2 hours startingGear: MimeGear icon: "JobIconMime" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml index f873ec5fe8c..28f9c597e58 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml @@ -4,8 +4,8 @@ description: job-description-musician playTimeTracker: JobMusician requirements: - - !type:OverallPlaytimeRequirement - time: 7200 # DeltaV - 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 # DeltaV - 2 hours startingGear: MusicianGear icon: "JobIconMusician" supervisors: job-supervisors-hire diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index c21fafbdaa9..8bfd05ad014 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -4,8 +4,8 @@ description: job-description-serviceworker playTimeTracker: JobServiceWorker requirements: - - !type:OverallPlaytimeRequirement - time: 7200 # DeltaV - 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 # DeltaV - 2 hours startingGear: ServiceWorkerGear icon: "JobIconServiceWorker" supervisors: job-supervisors-service diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 905121dbf8e..12ad83e6e5c 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -4,26 +4,26 @@ description: job-description-captain playTimeTracker: JobCaptain requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - time: 18000 # DeltaV - 5 hours - - !type:DepartmentTimeRequirement + min: 18000 # DeltaV - 5 hours + - !type:CharacterDepartmentTimeRequirement department: Engineering - time: 18000 # DeltaV - 5 hours - - !type:DepartmentTimeRequirement + min: 18000 # DeltaV - 5 hours + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 18000 # DeltaV - 5 hours - - !type:DepartmentTimeRequirement + min: 18000 # DeltaV - 5 hours + - !type:CharacterDepartmentTimeRequirement department: Security - time: 18000 # DeltaV - 5 hours - - !type:DepartmentTimeRequirement # DeltaV - Epistemics dept time requirement + min: 18000 # DeltaV - 5 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Epistemics dept time requirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 18000 # 5 hours - - !type:DepartmentTimeRequirement + min: 18000 # 5 hours + - !type:CharacterDepartmentTimeRequirement department: Command - time: 108000 # DeltaV - 30 hours - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 108000 # 30 hours + min: 108000 # DeltaV - 30 hours + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 108000 # 30 hours - !type:WhitelistRequirement # DeltaV - Whitelist requirement weight: 20 startingGear: CaptainGear diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index f999a4b6c70..6311eb9fee6 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -5,20 +5,20 @@ playTimeTracker: JobHeadOfPersonnel antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - - !type:RoleTimeRequirement - role: JobChef - time: 14400 # DeltaV - 4 hours - - !type:RoleTimeRequirement - role: JobBartender - time: 14400 # DeltaV - 4 hours - - !type:RoleTimeRequirement - role: JobJanitor - time: 14400 # DeltaV - 4 hours - - !type:DepartmentTimeRequirement # DeltaV - Civilian dept time requirement + - !type:CharacterPlaytimeRequirement + tracker: JobChef + min: 14400 # DeltaV - 4 hours + - !type:CharacterPlaytimeRequirement + tracker: JobBartender + min: 14400 # DeltaV - 4 hours + - !type:CharacterPlaytimeRequirement + tracker: JobJanitor + min: 14400 # DeltaV - 4 hours + - !type:CharacterDepartmentTimeRequirement # DeltaV - Civilian dept time requirement department: Civilian - time: 72000 # 20 hours - - !type:OverallPlaytimeRequirement # DeltaV - Playtime requirement - time: 90000 # 25 hours + min: 72000 # 20 hours + - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement + min: 90000 # 25 hours weight: 10 # DeltaV - Changed HoP weight from 20 to 10 due to them not being more important than other Heads startingGear: HoPGear icon: "JobIconHeadOfPersonnel" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index a188e93388d..834a85e7a08 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -5,9 +5,9 @@ playTimeTracker: JobAtmosphericTechnician antagAdvantage: 10 # DeltaV - Reduced TC: External Access + Fireaxe + Free Hardsuit requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Engineering - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours startingGear: AtmosphericTechnicianGear icon: "JobIconAtmosphericTechnician" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 644754750a7..eaa66d6f0cc 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -4,15 +4,15 @@ description: job-description-ce playTimeTracker: JobChiefEngineer requirements: - - !type:RoleTimeRequirement - role: JobAtmosphericTechnician - time: 36000 # DeltaV - 10 hours + - !type:CharacterPlaytimeRequirement + tracker: JobAtmosphericTechnician + min: 36000 # DeltaV - 10 hours # - !type:RoleTimeRequirement # DeltaV - No Station Engineer time requirement # role: JobStationEngineer # time: 21600 #6 hrs - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Engineering - time: 90000 # DeltaV - 25 hours + min: 90000 # DeltaV - 25 hours # - !type:OverallPlaytimeRequirement # time: 72000 # DeltaV - 20 hours weight: 10 diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml index ba8a8f6acc8..5106f1129c4 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml @@ -5,15 +5,15 @@ playTimeTracker: JobSeniorEngineer setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:RoleTimeRequirement - role: JobAtmosphericTechnician - time: 21600 #6 hrs - - !type:RoleTimeRequirement - role: JobStationEngineer - time: 21600 #6 hrs - - !type:DepartmentTimeRequirement + - !type:CharacterPlaytimeRequirement + tracker: JobAtmosphericTechnician + min: 21600 #6 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobStationEngineer + min: 21600 #6 hrs + - !type:CharacterDepartmentTimeRequirement department: Engineering - time: 216000 # 60 hrs + min: 216000 # 60 hrs startingGear: SeniorEngineerGear icon: "JobIconSeniorEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index ab62d69d501..dc590045191 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -5,9 +5,9 @@ playTimeTracker: JobStationEngineer antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Engineering - time: 14400 #4 hrs + min: 14400 #4 hrs startingGear: StationEngineerGear icon: "JobIconStationEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index e0b5a268ca2..668af727519 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -5,8 +5,8 @@ playTimeTracker: JobTechnicalAssistant antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering requirements: - - !type:OverallPlaytimeRequirement # DeltaV - to prevent griefers from taking the role. - time: 14400 # 4 hours + - !type:CharacterOverallTimeRequirement # DeltaV - to prevent griefers from taking the role. + min: 14400 # 4 hours # - !type:DepartmentTimeRequirement # DeltaV - Removes time limit # department: Engineering # time: 54000 #15 hrs diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index d57fe982c57..3fe22792092 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -4,9 +4,9 @@ description: job-description-chemist playTimeTracker: JobChemist requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 28800 # DeltaV - 8 hours + min: 28800 # DeltaV - 8 hours startingGear: ChemistGear icon: "JobIconChemist" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index aac50c526c9..4a65b791283 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -7,17 +7,17 @@ playTimeTracker: JobChiefMedicalOfficer antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - - !type:RoleTimeRequirement - role: JobChemist - time: 14400 #DeltaV 4 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobChemist + min: 14400 #DeltaV 4 hrs # - !type:RoleTimeRequirement # DeltaV - No Medical Doctor time requirement # role: JobMedicalDoctor # time: 21600 #6 hrs - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 43200 # DeltaV - 12 hours - - !type:OverallPlaytimeRequirement - time: 72000 # DeltaV - 20 hours + min: 43200 # DeltaV - 12 hours + - !type:CharacterOverallTimeRequirement + min: 72000 # DeltaV - 20 hours weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index fbc6116f46b..cc048470f0c 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -4,9 +4,9 @@ description: job-description-doctor playTimeTracker: JobMedicalDoctor requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 14400 #4 hrs + min: 14400 #4 hrs startingGear: DoctorGear icon: "JobIconMedicalDoctor" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index e4ae7a7dd50..9e3484a8dcf 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -8,9 +8,9 @@ # - !type:RoleTimeRequirement # DeltaV - No Medical Doctor time requirement # role: JobMedicalDoctor # time: 14400 #4 hrs - - !type:DepartmentTimeRequirement # DeltaV - Medical dept time requirement + - !type:CharacterDepartmentTimeRequirement # DeltaV - Medical dept time requirement department: Medical - time: 28800 # DeltaV - 8 hours + min: 28800 # DeltaV - 8 hours # - !type:OverallPlaytimeRequirement # DeltaV - No playtime requirement # time: 54000 # 15 hrs startingGear: ParamedicGear diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index 03473cc7cbc..ac6e0620f5a 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -5,15 +5,15 @@ playTimeTracker: JobSeniorPhysician setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:RoleTimeRequirement - role: JobChemist - time: 21600 #6 hrs - - !type:RoleTimeRequirement - role: JobMedicalDoctor - time: 21600 #6 hrs - - !type:DepartmentTimeRequirement + - !type:CharacterPlaytimeRequirement + tracker: JobChemist + min: 21600 #6 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobMedicalDoctor + min: 21600 #6 hrs + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 216000 # 60 hrs + min: 216000 # 60 hrs startingGear: SeniorPhysicianGear icon: "JobIconSeniorPhysician" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index fe829110051..456a761dba7 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -4,8 +4,8 @@ description: job-description-borg playTimeTracker: JobBorg requirements: - - !type:OverallPlaytimeRequirement - time: 216000 #60 hrs + - !type:CharacterOverallTimeRequirement + min: 216000 #60 hrs canBeAntag: false icon: JobIconBorg supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 19cf1419111..6f965b31b49 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -5,11 +5,11 @@ playTimeTracker: JobResearchDirector antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 54000 # DeltaV - 15 hours - - !type:OverallPlaytimeRequirement - time: 72000 # DeltaV - 20 hours + min: 54000 # DeltaV - 15 hours + - !type:CharacterOverallTimeRequirement + min: 72000 # DeltaV - 20 hours weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index fe00a72abb1..2d91e0e6ef9 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -4,9 +4,9 @@ description: job-description-scientist playTimeTracker: JobScientist requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 14400 #4 hrs + min: 14400 #4 hrs startingGear: ScientistGear icon: "JobIconScientist" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml index 5010c7fb26f..90234250302 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml @@ -5,9 +5,9 @@ playTimeTracker: JobSeniorResearcher setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - time: 216000 #60 hrs + min: 216000 #60 hrs startingGear: SeniorResearcherGear icon: "JobIconSeniorResearcher" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index feef023b450..0ed2eba9556 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -4,9 +4,9 @@ description: job-description-detective playTimeTracker: JobDetective requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Security - time: 36000 # DeltaV - 10 hours + min: 36000 # DeltaV - 10 hours startingGear: DetectiveGear icon: "JobIconDetective" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index a8b7013004e..675e7768fa7 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -4,17 +4,17 @@ description: job-description-hos playTimeTracker: JobHeadOfSecurity requirements: - - !type:RoleTimeRequirement - role: JobWarden - time: 14400 #DeltaV 4 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobWarden + min: 14400 #DeltaV 4 hrs # - !type:RoleTimeRequirement # DeltaV - No Security Officer time requirement - REIMPLEMENT WHEN MORE PEOPLE HAVE IT # role: JobDetective # time: 14400 #DeltaV 4 hrs - - !type:DepartmentTimeRequirement # DeltaV - Command dept time requirement + - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Command - time: 36000 # 10 hours - - !type:OverallPlaytimeRequirement - time: 90000 # DeltaV - 25 hours + min: 36000 # 10 hours + - !type:CharacterOverallTimeRequirement + min: 90000 # DeltaV - 25 hours - !type:WhitelistRequirement # DeltaV - Whitelist requirement weight: 10 startingGear: HoSGear diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index 324b697baff..0b28af78502 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -4,8 +4,8 @@ description: job-description-cadet playTimeTracker: JobSecurityCadet requirements: - - !type:OverallPlaytimeRequirement - time: 14400 # DeltaV - 4 hours + - !type:CharacterOverallTimeRequirement + min: 14400 # DeltaV - 4 hours # - !type:DepartmentTimeRequirement # DeltaV - Removes time limit # department: Security # time: 54000 #15 hrs diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 695464e030f..b81cef667ed 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -4,9 +4,9 @@ description: job-description-security playTimeTracker: JobSecurityOfficer requirements: - - !type:DepartmentTimeRequirement + - !type:CharacterDepartmentTimeRequirement department: Security - time: 14400 # DeltaV - 4 hours + min: 14400 # DeltaV - 4 hours startingGear: SecurityOfficerGear icon: "JobIconSecurityOfficer" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml index 99167b8cd41..2623adf1fd0 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml @@ -5,18 +5,18 @@ playTimeTracker: JobSeniorOfficer setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:RoleTimeRequirement - role: JobWarden - time: 21600 #6 hrs - - !type:RoleTimeRequirement - role: JobDetective - time: 7200 #2 hrs - - !type:RoleTimeRequirement - role: JobSecurityOfficer - time: 21600 #6 hrs - - !type:DepartmentTimeRequirement + - !type:CharacterPlaytimeRequirement + tracker: JobWarden + min: 21600 #6 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobDetective + min: 7200 #2 hrs + - !type:CharacterPlaytimeRequirement + tracker: JobSecurityOfficer + min: 21600 #6 hrs + - !type:CharacterDepartmentTimeRequirement department: Security - time: 216000 # 60 hrs + min: 216000 # 60 hrs startingGear: SeniorOfficerGear icon: "JobIconSeniorOfficer" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 3b7697cb680..a4c5c5a8fab 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -4,12 +4,12 @@ description: job-description-warden playTimeTracker: JobWarden requirements: - - !type:RoleTimeRequirement # DeltaV - JobSecurityOfficer time requirement. Make them experienced in proper officer work. - role: JobSecurityOfficer - time: 43200 # DeltaV - 12 hrs - - !type:RoleTimeRequirement # DeltaV - JobDetective time requirement. Give them an understanding of basic forensics. - role: JobDetective - time: 14400 # DeltaV - 4 hours + - !type:CharacterPlaytimeRequirement # DeltaV - JobSecurityOfficer time requirement. Make them experienced in proper officer work. + tracker: JobSecurityOfficer + min: 43200 # DeltaV - 12 hrs + - !type:CharacterPlaytimeRequirement # DeltaV - JobDetective time requirement. Give them an understanding of basic forensics. + tracker: JobDetective + min: 14400 # DeltaV - 4 hours - !type:WhitelistRequirement # DeltaV - Whitelist requirement startingGear: WardenGear icon: "JobIconWarden" diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml index ea2faf14467..33def38bb08 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml @@ -4,8 +4,8 @@ description: job-description-boxer playTimeTracker: JobBoxer requirements: - - !type:OverallPlaytimeRequirement - time: 7200 #DeltaV 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 #DeltaV 2 hours startingGear: BoxerGear icon: "JobIconBoxer" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml index 7687049b685..a2974c6eb7a 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml @@ -4,11 +4,11 @@ description: job-description-psychologist playTimeTracker: JobPsychologist requirements: - - !type:OverallPlaytimeRequirement - time: 36000 #DeltaV 10 hours - - !type:DepartmentTimeRequirement + - !type:CharacterOverallTimeRequirement + min: 36000 #DeltaV 10 hours + - !type:CharacterDepartmentTimeRequirement department: Medical - time: 14400 #DeltaV 4 hrs + min: 14400 #DeltaV 4 hrs startingGear: PsychologistGear icon: "JobIconPsychologist" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml index 6f7093f3ae5..ad810e970e9 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml @@ -4,8 +4,8 @@ description: job-description-reporter playTimeTracker: JobReporter requirements: - - !type:OverallPlaytimeRequirement - time: 7200 #DeltaV 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 #DeltaV 2 hours startingGear: ReporterGear icon: "JobIconReporter" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml index 04d10513331..1686e3290fa 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml @@ -4,8 +4,8 @@ description: job-description-zookeeper playTimeTracker: JobZookeeper requirements: - - !type:OverallPlaytimeRequirement - time: 7200 #DeltaV 2 hours + - !type:CharacterOverallTimeRequirement + min: 7200 #DeltaV 2 hours startingGear: ZookeeperGear icon: "JobIconZookeeper" supervisors: job-supervisors-hop From 56d039c63094d4aec228ad7ed930420ad72a10d3 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Wed, 31 Jul 2024 05:33:23 +0800 Subject: [PATCH 09/82] Add Cybernetic Limb Markings (#613) # Description Adds cybernetic limb markings from Hesphiastos Industries and Bishop Cybernetics, originally from Deepstation. Also cherry-picks this [PR](https://github.com/SS14-Classic/deep-station-14/pull/39) by @WarMechanic from Deep that increases arm and leg markings available for suitable species from 2 to 6. This allows players to cover all limbs with cybernetics. ---

Media

![image](https://github.com/user-attachments/assets/49eb49c0-4f0c-4346-8463-524a75613f8a) ![image](https://github.com/user-attachments/assets/1d1698a4-4b7b-4c5e-86f5-1c237db25c19)

--- # Changelog :cl: Skubman - add: Added cybernetic limb markings from Hesphiastos Industries and Bishop Cybernetics. --------- Co-authored-by: WarMechanic <69510347+WarMechanic@users.noreply.github.com> --- .../Locale/en-US/silicons/cyberlimbs.ftl | 77 ++++++++++++ .../Prototypes/DeltaV/Species/vulpkanin.yml | 4 +- .../Mobs/Customization/cyberlimbs/bishop.yml | 110 +++++++++++++++++ .../Customization/cyberlimbs/hesphiastos.yml | 115 ++++++++++++++++++ .../Prototypes/Nyanotrasen/Species/Oni.yml | 4 +- .../Nyanotrasen/Species/felinid.yml | 4 +- Resources/Prototypes/Species/arachnid.yml | 4 +- Resources/Prototypes/Species/human.yml | 4 +- Resources/Prototypes/Species/moth.yml | 4 +- Resources/Prototypes/Species/reptilian.yml | 4 +- .../bishop/bishop_alt1.rsi/head.png | Bin 0 -> 1059 bytes .../bishop/bishop_alt1.rsi/meta.json | 15 +++ .../bishop/bishop_main.rsi/head.png | Bin 0 -> 645 bytes .../bishop/bishop_main.rsi/l_arm-primary.png | Bin 0 -> 456 bytes .../bishop_main.rsi/l_arm-secondary.png | Bin 0 -> 348 bytes .../bishop/bishop_main.rsi/l_arm-tertiary.png | Bin 0 -> 217 bytes .../bishop/bishop_main.rsi/l_foot.png | Bin 0 -> 325 bytes .../bishop/bishop_main.rsi/l_hand.png | Bin 0 -> 385 bytes .../bishop/bishop_main.rsi/l_leg-primary.png | Bin 0 -> 620 bytes .../bishop_main.rsi/l_leg-secondary.png | Bin 0 -> 478 bytes .../bishop/bishop_main.rsi/meta.json | 79 ++++++++++++ .../bishop/bishop_main.rsi/r_arm-primary.png | Bin 0 -> 473 bytes .../bishop_main.rsi/r_arm-secondary.png | Bin 0 -> 353 bytes .../bishop/bishop_main.rsi/r_arm-tertiary.png | Bin 0 -> 219 bytes .../bishop/bishop_main.rsi/r_foot.png | Bin 0 -> 328 bytes .../bishop/bishop_main.rsi/r_hand.png | Bin 0 -> 380 bytes .../bishop/bishop_main.rsi/r_leg-primary.png | Bin 0 -> 611 bytes .../bishop_main.rsi/r_leg-secondary.png | Bin 0 -> 319 bytes .../bishop/bishop_main.rsi/torso-primary.png | Bin 0 -> 1281 bytes .../bishop_main.rsi/torso-secondary.png | Bin 0 -> 481 bytes .../bishop/bishop_monitor.rsi/head-2.png | Bin 0 -> 371 bytes .../bishop/bishop_monitor.rsi/head.png | Bin 0 -> 630 bytes .../bishop/bishop_monitor.rsi/meta.json | 19 +++ .../hesphiastos/hesphiastos_alt1.rsi/head.png | Bin 0 -> 994 bytes .../hesphiastos_alt1.rsi/meta.json | 15 +++ .../hesphiastos_main.rsi/l_arm-1.png | Bin 0 -> 487 bytes .../hesphiastos_main.rsi/l_arm-2.png | Bin 0 -> 258 bytes .../hesphiastos_main.rsi/l_foot-1.png | Bin 0 -> 390 bytes .../hesphiastos_main.rsi/l_foot-2.png | Bin 0 -> 392 bytes .../hesphiastos_main.rsi/l_hand-1.png | Bin 0 -> 379 bytes .../hesphiastos_main.rsi/l_hand-2.png | Bin 0 -> 380 bytes .../hesphiastos_main.rsi/l_leg-1.png | Bin 0 -> 535 bytes .../hesphiastos_main.rsi/l_leg-2.png | Bin 0 -> 538 bytes .../hesphiastos_main.rsi/meta.json | 83 +++++++++++++ .../hesphiastos_main.rsi/r_arm-1.png | Bin 0 -> 491 bytes .../hesphiastos_main.rsi/r_arm-2.png | Bin 0 -> 248 bytes .../hesphiastos_main.rsi/r_foot-1.png | Bin 0 -> 390 bytes .../hesphiastos_main.rsi/r_foot-2.png | Bin 0 -> 391 bytes .../hesphiastos_main.rsi/r_hand-1.png | Bin 0 -> 382 bytes .../hesphiastos_main.rsi/r_hand-2.png | Bin 0 -> 381 bytes .../hesphiastos_main.rsi/r_leg-1.png | Bin 0 -> 536 bytes .../hesphiastos_main.rsi/r_leg-2.png | Bin 0 -> 538 bytes .../hesphiastos_main.rsi/torso-1.png | Bin 0 -> 813 bytes .../hesphiastos_main.rsi/torso-2.png | Bin 0 -> 807 bytes .../hesphiastos_monitor.rsi/head-1.png | Bin 0 -> 330 bytes .../hesphiastos_monitor.rsi/head-2.png | Bin 0 -> 565 bytes .../hesphiastos_monitor.rsi/meta.json | 19 +++ 57 files changed, 546 insertions(+), 14 deletions(-) create mode 100644 Resources/Locale/en-US/silicons/cyberlimbs.ftl create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-primary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-primary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-tertiary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-primary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-1.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/head-2.png create mode 100644 Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi/meta.json diff --git a/Resources/Locale/en-US/silicons/cyberlimbs.ftl b/Resources/Locale/en-US/silicons/cyberlimbs.ftl new file mode 100644 index 00000000000..b7686b0a2dc --- /dev/null +++ b/Resources/Locale/en-US/silicons/cyberlimbs.ftl @@ -0,0 +1,77 @@ +marking-MobIPCHeadDefault = Standard Operational Monitor +marking-MobIPCTorsoDefault = Standard Robotic Chassis +marking-MobIPCTorsoFemaleDefault = Standard Robotic Chassis +marking-MobIPCLArmDefault = Standard Left Robotic Arm +marking-MobIPCLHandDefault = Standard Left Robotic Hand +marking-MobIPCLLegDefault = Standard Left Robotic Leg +marking-MobIPCLFootDefault = Standard Left Robotic Foot +marking-MobIPCRArmDefault = Standard Right Robotic Arm +marking-MobIPCRHandDefault = Standard Right Robotic Hand +marking-MobIPCRLegDefault = Standard Right Robotic Leg +marking-MobIPCRFootDefault = Standard Right Robotic Foot + +marking-CyberLimbsMarkingBishopHead = Operational Monitor from Bishop Cybernetics +marking-CyberLimbsMarkingBishopChest = Robotic Chassis from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLArm = Left Robotic Arm from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLHand = Left Robotic Hand from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLLeg = Left Robotic Leg from Bishop Cybernetics +marking-CyberLimbsMarkingBishopLFoot = Left Robotic Foot from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRArm = Right Robotic Arm from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRHand = Right Robotic Hand from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRLeg = Right Robotic Leg from Bishop Cybernetics +marking-CyberLimbsMarkingBishopRFoot = Right Robotic Foot from Bishop Cybernetics + +marking-CyberLimbsMarkingHesphiastosHead = Operational Monitor from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosChest = Robotic Chassis from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLArm = Left Robotic Arm from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLHand = Left Robotic Hand from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLLeg = Left Robotic Leg from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosLFoot = Left Robotic Foot from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRArm = Right Robotic Arm from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRHand = Right Robotic Hand from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRLeg = Right Robotic Leg from Hesphiastos Industries +marking-CyberLimbsMarkingHesphiastosRFoot = Right Robotic Foot from Hesphiastos Industries + +marking-CyberLimbsMarkingWardtakahashiHead = Operational Monitor from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiChest = Robotic Chassis from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLArm = Left Robotic Arm from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLHand = Left Robotic Hand from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLLeg = Left Robotic Leg from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiLFoot = Left Robotic Foot from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRArm = Right Robotic Arm from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRHand = Right Robotic Hand from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRLeg = Right Robotic Leg from Ward-Takahashi +marking-CyberLimbsMarkingWardtakahashiRFoot = Right Robotic Foot from Ward-Takahashi + +marking-CyberLimbsMarkingXionHead = Operational Monitor from Xion Manufacturing Group +marking-CyberLimbsMarkingXionChest = Robotic Chassis from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLArm = Left Robotic Arm from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLHand = Left Robotic Hand from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLLeg = Left Robotic Leg from Xion Manufacturing Group +marking-CyberLimbsMarkingXionLFoot = Left Robotic Foot from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRArm = Right Robotic Arm from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRHand = Right Robotic Hand from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRLeg = Right Robotic Leg from Xion Manufacturing Group +marking-CyberLimbsMarkingXionRFoot = Right Robotic Foot from Xion Manufacturing Group + +marking-CyberLimbsMarkingShellguardHead = Operational Monitor from Shellguard Munitions +marking-CyberLimbsMarkingShellguardChest = Robotic Chassis from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLArm = Left Robotic Arm from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLHand = Left Robotic Hand from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLLeg = Left Robotic Leg from Shellguard Munitions +marking-CyberLimbsMarkingShellguardLFoot = Left Robotic Foot from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRArm = Right Robotic Arm from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRHand = Right Robotic Hand from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRLeg = Right Robotic Leg from Shellguard Munitions +marking-CyberLimbsMarkingShellguardRFoot = Right Robotic Foot from Shellguard Munitions + +marking-CyberLimbsMarkingMorpheusHead = Operational Monitor from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusChest = Robotic Chassis from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLArm = Left Robotic Arm from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLHand = Left Robotic Hand from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLLeg = Left Robotic Leg from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusLFoot = Left Robotic Foot from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRArm = Right Robotic Arm from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRHand = Right Robotic Hand from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRLeg = Right Robotic Leg from Morpheus Cyberkinetics +marking-CyberLimbsMarkingMorpheusRFoot = Right Robotic Foot from Morpheus Cyberkinetics diff --git a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml index 0b4a06af2d6..8a3cd4c47ce 100644 --- a/Resources/Prototypes/DeltaV/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Species/vulpkanin.yml @@ -50,10 +50,10 @@ points: 1 required: false Legs: - points: 1 + points: 6 required: false Arms: - points: 1 + points: 6 required: false Snout: points: 1 diff --git a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml new file mode 100644 index 00000000000..11f4967616b --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/bishop.yml @@ -0,0 +1,110 @@ +- type: marking + id: CyberLimbsMarkingBishopHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi + state: head + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi + state: head-2 + +- type: marking + id: CyberLimbsMarkingBishopChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: torso-primary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: torso-secondary + +- type: marking + id: CyberLimbsMarkingBishopLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-primary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-secondary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_arm-tertiary + +- type: marking + id: CyberLimbsMarkingBishopLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_hand + +- type: marking + id: CyberLimbsMarkingBishopLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_leg-primary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_leg-secondary + + +- type: marking + id: CyberLimbsMarkingBishopLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: l_foot + + + +- type: marking + id: CyberLimbsMarkingBishopRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-primary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-secondary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_arm-tertiary + + +- type: marking + id: CyberLimbsMarkingBishopRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_hand + +- type: marking + id: CyberLimbsMarkingBishopRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_leg-primary + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_leg-secondary + + +- type: marking + id: CyberLimbsMarkingBishopRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi + state: r_foot diff --git a/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml new file mode 100644 index 00000000000..3103c640034 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/cyberlimbs/hesphiastos.yml @@ -0,0 +1,115 @@ +- type: marking + id: CyberLimbsMarkingHesphiastosHead + bodyPart: Head + markingCategory: Head + speciesRestriction: [IPC] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi + state: head-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_monitor.rsi + state: head-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [IPC] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: torso-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: torso-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_arm-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_arm-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLHand + bodyPart: LHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_hand-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_hand-2 + +- type: marking + id: CyberLimbsMarkingHesphiastosLLeg + bodyPart: LLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_leg-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_leg-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosLFoot + bodyPart: LFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_foot-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: l_foot-2 + + + +- type: marking + id: CyberLimbsMarkingHesphiastosRArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_arm-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_arm-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRHand + bodyPart: RHand + markingCategory: Arms + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_hand-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_hand-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRLeg + bodyPart: RLeg + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_leg-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_leg-2 + + +- type: marking + id: CyberLimbsMarkingHesphiastosRFoot + bodyPart: RFoot + markingCategory: Legs + speciesRestriction: [IPC, Moth, Dwarf, Human, Arachnid, Felinid, Oni, Vulpkanin, HumanoidFoxes, Reptilian] + sprites: + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_foot-1 + - sprite: Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi + state: r_foot-2 diff --git a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml index ee8be0e5892..a6a63b29526 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/Oni.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/Oni.yml @@ -35,8 +35,8 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false diff --git a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml index 4751d581746..5eb26edd518 100644 --- a/Resources/Prototypes/Nyanotrasen/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Species/felinid.yml @@ -35,8 +35,8 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 07a72cda176..5dedba1b447 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -64,10 +64,10 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false - type: humanoidBaseSprite diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index 94b21ec9620..49f8839cac3 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -56,10 +56,10 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false - type: humanoidBaseSprite diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index 724c268a0bb..44bf5e60769 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -68,10 +68,10 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false - type: humanoidBaseSprite diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 752918e2f0c..dc5a56534b4 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -65,10 +65,10 @@ points: 1 required: false Legs: - points: 2 + points: 6 required: false Arms: - points: 2 + points: 6 required: false - type: humanoidBaseSprite diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..81c98564b9a008c820c16e2a9b673872975c4d36 GIT binary patch literal 1059 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|WC_ zPZ!6KiaBp*S$e2AinRT|`1PDkfXzoSLjhMoW#;!D29kpP4k9j&HVy}UdRYY31bEo` z9h`k-)(5zV96jP7BBK9+MU?-;in-r!#POKjc(w8Pf>-Sevo%)yzj}TBYUz8wS&uGd zbSRw3_Mm9zkw=e|PMtm-7#Nt?Jl*wQaB%R7_3OW%xG&PMcCD_UoLt|WIWji(_Q}P? z!B3t)ujXa?>FVN=P*O7Gujafxdu)RLU1CsES3mmkqv5%8=N>$M+*PetuzH-M{Pq|Nfo(I4dJ#!nf&61~xW2mo8ua_~S>%jvW?XzJE_HC=gh_ zeEEqJCm#HqH&5=gg2i0FiIXNBk}k85;o#$Y#`EIs+f<3on>QcI+wT3-oAJiYn~oV7 z8jl`7{%Jo``qu5+k1MseZrapz-fG%1h8G0ns?;Omo1w0FO3^~?zGS6 z;N)~nPgiGSV=E{xPyhLB|F7Npi+1mxZSGgt)7v}qoB3C<1tI6po_+f9@87*oSN_+Z zsK508)2B<_U(aAlNMY>VzJ2@NvhQGBTegUtK7Cs5=j?w1Mt;9rTUr0KWL$nX|M=?{ z{)rlTybN95%ngq&F)Y|&!hnlw#JXVFGPi)tI|8C^dt#-3tdm&6IAP=6yyr}sp{aIu zb^!qa4#9__1vJ{OT?@0Zu{m)4y7w4fTX*c}QP%$+AuG?GI`v74 zrK@qziRq_4IdRCy%6^nNswUkm((vX@&a$^9R{y`Tm6VhyXlQWEoH;WiFV8J8abZS& z{&tq8!w&^~eSIUMqm$1sS)%ez$S~>U>(`GZQnlPJ^)r|%m6Vo#+_7{itE#GMM0|Yv z{Q2_bT{~j*B2=SxuU*@_7Z@uye?NWN`dmY;%Qq~Dp{%@IP*jxlmC!)P;Ns%q zX?6TN_@kuvvaVXS>IbhwI%DeH{x9qk_N{jNKY8A-U?GM<@W#p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json new file mode 100644 index 00000000000..9f87381cd87 --- /dev/null +++ b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_alt1.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Sprites from Paradise Station (https://github.com/ParadiseSS13/Paradise)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..a89de820f47b7fe179103b15e1ac71035fec8be0 GIT binary patch literal 645 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|S$} zr;B4q#hkaZ_Ioiq3LLXPsKu4Z${l}z-9uPcWYP5uxIdq4^6XE=oWo~Ne*U>&ySeE}OY;9Gp6}anM1_s6| zPZ!6KinzD8Hu|+V2ps#kv%7QZ->W8JYHE9$`WyNei0V5(GLG<8XkP`zVi+}@^;BHj$bnBjTUvgj3+3K~gt9l;a z5OMr$a(z#vd}HOj{?y1>iZ7m-`WM%JsZNxgwQS{^GV9AXbWShHjlO)w`NlQ(tUwW? zxpVCNmM{A{YjI`z)-4}r|K0MvU3~k#)qo%2hk1Hs5<-SQ&f$qyf+IJ-;5ye*W2TR8~UtPq|*AX}rT_6Cu}& zN$0LIusAAwzy12`<>z-7&3y2h&c7bNSOdGZB+D74ul|1cjbd>_d85Ak%Jzu- Tua+NyQN!Tr>gTe~DWM4fe1XGS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..de40773897f6704157d83b8086179c8cbe353e66 GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_nkx zPZ!6KinzD44hl9Ih_Eh>b;!QrD0;=wScFNmz^#Z~{q+ff{ilCU{Ik9Oc=wVg%8Z;I z4opH58dy{mpv(jN1uJ4gD{jv(lnK87UH-ly&*5vOv01mp=5EySE?k>lD8zQXv^8Jm z`2Ny!Hw`*;GOw8McJ4oW?(-a74ZHPR%%3h?HWB5o6*=?%@~1C{<{LCjTXl%R>Pzg; z({(KGwOrndGN_8_u4lYx=Jh*+Y-U(--GAlM)AvOtNIFXveBI8%vL+JUCo5(i;AUet Vn8)VO1`I6*22WQ%mvv4FO#qHZe9r&? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_arm-tertiary.png new file mode 100644 index 0000000000000000000000000000000000000000..7b83ecf161b3b2c235fb638276713a2982e673c1 GIT binary patch literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anMpkTMB zi(^Pd+}m3lc@HS?xH^_4E%%u{m&a?W+SGc-CB^3_mu`_eETG`fz`)4F!hv99a9=T9 zEnCTYY44M~`D=HXA6g@Kr0#zS52`9meF`5=|8D%U-SwT|CGVGl2>F6F2bfL@i3hAZ SbF>HOECx?kKbLh*2~7Y(8$VV6 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..534085a97c31ddaa896b6e69d1efdcdeac7bfa07 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1H8_ zi(^Q|oVT|&@-{mNuwLAl63DSu;37Ath?5JWiIaASgNIAf;nrz$e|+=!S1%-_vPNQV z$G1)kc85943g;LFo-=e5GaRvGcqGG6$k%`=yotFa_PdpSTcXGL(pY2P%gqVb=aj}? z{%g^9y=Q`@qI$yp@?ZO&TlAI8jhiUAu0MZP+qT@5tF+E`3kfC6OZSSNw)8~xX67jt z@5;}8@E5>p1%}PPtq;UjGwx4wf6J9Jx8YJX<9(O+Tq&$S?r`7O)_ZB4?V9cuxQT literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..771cd025a865b938f010cfe3539816c6bbad58e4 GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TS6 zr;B4q#hkad6xTI7h_pVu9N=%Trjd04$LRwbxUL;y+aMvNqwTPffrXRX;ep|v51*ng zZdr8ZjPRV#KkrSm-|l$kj-wx=0}hnKf97+I|0I?`5k(HBBZW2A*4YwmwXxwnk306g z54`^MW#oK|n+>_Q=h@$KxnBCA_J8?2Z9k?npL=vp8~9GXI43o7!ZOWS%Nn(>G0S8} zi5$JRP50C$lc<~f&%dAd+%oci^JHFw+Jf-S_bx^=JP{!V9r$+Oab3ge<}?2HzwhV| z2)%l}eZ}+}4aaL+jMuPp92WS0_K987SB7={o8xERbKh|!{(#CaRi+sM3=@K3=r^O~ XwOIMn{ZWO$FlF#`^>bP0l+XkKAAy`p literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-primary.png new file mode 100644 index 0000000000000000000000000000000000000000..05f568654e6829574e3315245bdc121ee767f18c GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_mZM zPZ!6KinzD4Y`d5o1zJz18j2bx=P&GB`9k%~)e|8+N0c+(iSmdXJmKPKbHGK|->j2u z)|YqE+YU~>`tn_7`t+xwCQ4V%zh0lcNJ~(Pa{>cy)L`4Fz!9?kdhoZ2&je5OTRjte zIWPaE-b=aJXWi!dEiZBBms`TVj~)%8yHfJOj>8k1THpy1#q<{r9IcOeQ@onz_eq;e?-o z^X{z;TYa)_|MaY_uUZ?Y^Bq|IB=z~{$aU9OZ!fyW@Zr#Qb}zQ(#x1vVTOa%0Y<4;R zI8ds$ZM)GmhPqWf{s}g6)!C=hw;z7G{q|aO1|JtD6$b){pEE)0clgI08Jp$$9(~fd z^0sVggpSwFm}x(2=JgzJKm0ITeR2E~^~s%wI%I+$S@cbge3)ZaTqUl4kRf3G^~sjD zdVTj_mb{vB+Vg9=z&6*C+&@V+?>Ff`xWXuKH^)r)?F{aJZHeNH?8crF3{R47@H6~9 z{BXeq&L8#Fak`K8$(cBCo7{b`HzT8P9$&nk_{n1Z2NzQpFh<3km1?-h;CS)&UWUEK z544V$_+7vFo8!U)#vM7!BbYBZUCgU|$9jkPP#4d>`iz3i+TaIYlpE{)9x%7Rxx!n> SU|9xCJ`A3&elF{r5}E)b{|Q|H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/l_leg-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..a96f9eb3854571d6e9017bc38ff670b71213b2b3 GIT binary patch literal 478 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_s6n zo-U3d6>)E88RoSZ2)MRu#4sM@&B(~KU}rtP;DO8?#?G#623B2O^975RFrDlS@7xll z8TFn=@x)J$kk{{L{(n|2?cBo7;=n)v{o`bGf3-O`TB@z_lTCPOY;d5+Bis5{D>J3M zCbdiny7Jw2X{Og_n{J&womb+M?tjmWy{^2?=vMOm^2McU-S>ROY@;WqN={AvnLT;` z`u(}mJJ)?M^1LVk7Wc1*Zao+J&$#BCzLM1w zj+i6dt9cm`5;uFautb>nOcPaUXg#YWD3ox~ATn$MgP2*ji${a&;gm>6ridFlLW+!H zypvN|Ingyt{E_4mA5s?Uo+uF{;<|i+anM1_s7% zPZ!6KinzD8HhLWn5IOeovXaHl^mmU`IBHqt7uq?^{ba;C|KLp@wntAUXihRMc`-*d z<>jN2vw~cUX3SfbIZOLL_uQ&?C(G-7mlwN6a40k|FhPk6Y8#@~&f#}bKPlO^P`m38 zH^bSLmDRsDZi$?hs^>ZB->h%b-jyo@#ny6&Ptz%s@s6A}?b7D!E`chJ0yBzzZfk{Z z{OK`k*|WA}jVpU*-To!^XKv+B9rNt#&WjTxzdV=~J?qc!u-DQHW}h~nxN6n6uaZ~4 z&k8S&4*MPd;M3K;clPaGzWVEtOF25GK+$&Je~*pM&fSqy7t?S2_TQ+utErRc?Bn~X!%_R1I z@8yT{eZ{(4bIhc@^Yyd%m@5A4n0?28z53>xXSxqZI?1st;H}-GpU`M<{f(aQPImj_ m&z?00b-;rP&t;ucLK6UM!Ovp= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_arm-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf2346bd8402df7b3ab688de95085780abd5250 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_nl9 zPZ!6KinzBoH}W<+2)JC_yqm!>^@3ooL#o1x28rJ~ik1%L&B_w>L1s59t(6p6ALfnjS_SvNM_)EssB`+s9np)=D(|%=a^&7tE3bbxE&jTxdC|%5ukLxyU8G_6 z@ZPMAtkZd_wp{tX@AM{>?|w`@k0n;E+7C_w( z+=^!g^S;=X*Zu$QTn9hKBM)BHm#eF6QfOdc;y@5PIQKB@Hq+NHzT0XJ3^N8#S3j3^ HP6anMpkS}3 zi(^Pd+}m3lc@HS?xH^_4E%%u{cMgZ9C@b&8AD0Xde%@)awvvTIK*6DbfsqNpP;1;( zrMmIW>$jn$>Ae4Svr6{=_3Xavg{lZc+i}h}yAR5n-%`@}ao#~{YaEh+|AZ?TTm;1f UB*It>fevHvboFyt=akR{0JRA`w*UYD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_foot.png new file mode 100644 index 0000000000000000000000000000000000000000..a8fbe8635ea509fb178f489345fd83302fa00872 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAQ1F+h zi(^Q|oVT|Oxta|a+#ZH&$Q@a2Q7JBN+cBB_gHqg4VGFCB5sxD@mUM18^uJ!wxUGU+O!vKl=;dwhGw=-dq!^)#_VUztdKE-!RAcXH59La1Xu@b!z){xc3V^+x2SS aA#M|$=*+@9%C^8zVDNPHb6Mw<&;$VKczSFA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..db11be34056caa261ef3119fdf034b840280accd GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|TR; zr;B4q#hkad7VE z{r7)!G|OxDHa&Q!u$%!GTE~C9@XqwqgC@QbZH&3M?|pdQwdlrX9cP*29ESxmXIVXe z!xM1b^i9g`Z3orO;(uSfR%&Z=O;VvtNyW2i-RlRFE9XsoZux7UJy38#rc|_DwE#<; zPJQy{HLJ3=ch{f0|MG*{k8_^?&d#)at;tZtMGPwV#{KQzUY*n4-*|4^xG(p9v1o$$ z``hyx!~NKI6rFGA{hPa-Ic8`21M&5*?0<3p*pdD~)Rxu3j}eOc><%z*F$miebYuTK QU~n>cy85}Sb4q9e0O5I)y8r+H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-primary.png new file mode 100644 index 0000000000000000000000000000000000000000..d6288eedc3cbc85f196685e9b996b034b9b64a9b GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_mZk zPZ!6KinzD4_GU2!3bY;<$T{lg@!WdJg=1mYrf=|Ce0STX)*lR-TQ+{;Wa-vvnyR_w zBjcJJrvz)>jD@Y{^H?1_T8$&?yNnfX-bT&*Z@Y8nA`hGM#fcKjw*2&*-`;mHL1Aai zxsWJR#_pp|YLh!dR)+>}&Q^8wSDS1&HJp(n{$5c0d-;_L94hnA&z4e~%OZREWe8Vm z)5Va&s233hSg@To%{wtS@yn%hYrE_$M8Jn56cI(wU5)oYCUYeYB_KNeS5&=f%t;9-HJ*tx3dCM4TGnvpUXO@ GgeCyqUi{|( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/r_leg-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..7a406c931877e43e809f8b57ded0ca46a6918e63 GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anMpx{SO z7srr_xVN`9@*XzeaS2q7_E?>%vVP&sC7dDJ1v5)n8b34sTzOXJZ^g?XE_oIK2L?tQ z!~=hpxQX9olIPs3&RpC2OiA)$`t_)b6W2e#fAQts@{%LJeqK<`UR$QGoZm3lp=jX; ze}$Rp=6nrzJ&$l-WH8(jE5p0Ny0b!2N`Y;A_hQB}bwPa><|7Zv3QZ2YQ+d>y(I9b0 zuaE7pJvq?ljRCr$PnoVe&MHt7QH?b*1F^A9)Fev21Ui4VZCH0^XOu-bP zXdp)wmjnZW-U=a*TOgPch#z;?B1j@6OQ0v?A<|<#1UCuPMpzPZh-jc_eBIyBXFFK} z`#!VX6?F!dcjuj%=l_5H^ZCw4zO};LRu(7dG!2$F}%jM+ohgB(FEL!k0=LH|UGV-|rMB&U@0yXCaU^FLvA7+MJW;1>Tcx#W$0k zoSaOT9=(|?zVg5gMzn;fA766fSi!S8@8<)*wYAlC!TfXYCS$+dN$G;8r>AD;v75OC z_#|+i+TY#Xb*+GSh%@z+!D)5A9y_KMfcgUi1J3DdD}N-HUKCVoM>wk@G z1>l!TrHa2pLqoE;xmk&KcXyldgIa(hG7bF`0mtX&=G=75lXz$_3qYUm>+5rPItml_ zXN6EQS<0Q9oVZ$7Jf6gP9}>(0=oCc1zxDg=RQrGR+#EtCOBryebplIZ0`X9MvjBk3 z&dydA9Lxm7l}r{V>dEu8@iQ-klr#g~`1rV6juL2s6B83sC=}}P%T#t|X66h&tH5S; z!3xolkr6lb>C@yvotgRY(vLF#f1PGy@u)ylASw_Qhzdjnq5@HYs6bR8Di9Tj3Pc5> z0{;&MOy>ef^6RHpTHgEi(y1@c`ue)r&eM>$dN=B;w+~yN|LERd7TaOOKUk5GUp{w7 zW9-dyM$fKnKA#V>XJK5<%Ql!|vPsH*AjjnL#dV`45%Z>~l%0R|=BNx89ynkrzD`FMFwk`hH`S%OAQ@x_Xlf%)6pR6U#*dPT1EHHfzaH3+UAWJZ} z08WFn*;g(jY~4xo^OBU_SxcnB!@<2W#$ov=o`X?6i=Y+2sr2l}7T;Z7TMKw>o+hZx z&quuS&9#P~5?5nr*Hcbb1xx}k@NpWfHLv#r0Bz;h5nhO&#jgnO*aWJ z|MJgg22CH3Gy2dI+N@;B2ZnzipxWtbjT>>cJ(b17`XQ+I4$F+*jUf*f>AP5FnV1f+? zLZ}F)E>IqUF8~gx0#h407h69>thGgc#n8nM@01VR;ApXH{&+d>YY@O@e-WOy><;-F rw1^e+Mg^h*QGuvHR3Iww-%{XjDa=i7S5~3G00000NkvXXu0mjfnxA9f literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_main.rsi/torso-secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..4e61c144a95ad7eedfc9f805a421bce36392ee5e GIT binary patch literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_s8- zo-U3d6>)E8IrcRh@VH*S_{M_qjiu=G2O@KtZNDe-t0$a&;q96wsbNv*aktJav~%PB z`ExfIocpN6D5L;GKm3@?J#SUc^FFiq_P1L5>8U^U+Y4pmG{h8M0d-+V{G|NA2 z9>R8-r@L`>*+^b#3>SkZB=Kp_tTj}@G z&eKn}DKP}>cBlyHI~70o&mv`$buYIci2EJ$N$kMO?rZ$Et-%KnWt2Rf& zG0izr3g;WHh-yRabRCcE{4qOT@fHZw!Cd{}wUn$Nk$w9}fQan-6%55>MpW_)T?VA`M( zFLLy<4deIk$DSE(a$8fn>B19cM;qCDv)JDDo=sNypC$6%c%@M3fk3C|`>$nem1D2> zDa!RO{OXkc>C%$(xAbqRJpQn+l&9JB!F?o;OXk;vd$@? F2>{%v%)9^q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca3cb6e9e36d48f65477bec2129e69b4c19b861b GIT binary patch literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_nk| zPZ!6KinzD84)Qe_@H9M3+9NQp;d}e>2gi07JYl--yZT_yQSZot!+*Se=Db|+`eskE@XZFv)`#T0TmH>U zUh;+g&RS0X!wRLb-j_|HCSElvy>@ENJSVTx8+Q~8eSWbkzLb6Mw<&;$UMYm{LC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..a175f4dfcec5179babaf11fdfc901aa32596ec42 GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5he4R}c>anM1_mY# zPZ!6KinzD4^j9-EiX1(De6`!`t4lm*U-eJeberYic_j|B-6#DMt|;ALIjCkfS>no; z{PTxmul=7l(e>fn#?=_{0wtdkLN<@7-yeUq0==+HSUG zl3|4XR|$n(F?!86bHtu}{`td6{_*w$8#wJ|@&E5Ws?=mZ*Kcw9or}je_y5xueo(i+ ze8;P=yKd*0ZPfg=_@YMD^t9&xck{$OW%$}RTOX_aQh%etfB9wK$<>e7{7?U^`%$Ik z^z(GPN$*$cCv1({8MLxQoZ;T`yVqWCmF_?8xHhc&yUZ8Ecb7F7)C^?!Vi#ZR_LFLzgxDuG;!^O zPrqM17r3U}9HaLHK5Ws^5b7}d{By^hF@52`10PO0_pQ+}NZ9a3h_%hZjKFw? zy5y@_Ur*V;`n*HpVfnLrmz{Io*f}sdTv&6!x^vSuyN#9kVc+e(Z#mCV<25~&=d3s$ fZ#J%1`M{p*A$^ClQ8f~nkQh8&{an^LB{Ts5mMjqA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json new file mode 100644 index 00000000000..ea5456fea10 --- /dev/null +++ b/Resources/Textures/Mobs/Customization/cyberlimbs/bishop/bishop_monitor.rsi/meta.json @@ -0,0 +1,19 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "head", + "directions": 4 + }, + { + "name": "head-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_alt1.rsi/head.png new file mode 100644 index 0000000000000000000000000000000000000000..b6446e6a6d2a237fac4840a78eeeec583fce393d GIT binary patch literal 994 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fA0|WCE zPZ!6KiaBp*`Fc!olsP8vTP*0yZ7)>fd|lLK;|dk~11&EUM4o6`<-~fO^>%SdVQEZ} zzhs)dx#^q0+&2mp9SY33NBf&arPoQWo4B-gh4iLrJI~f{E03Pu^z7=!!)N&K{H!RQ z_ut0Y`km2#3ynUr183x?UY){nxoGmk_p{wTtt+XidECA`+k!2-WnumXq1r@dk3Y8r zrDNi_ZDzQYO%qLD&1AvKa{Um?rTbxlM_%U&D_hJ9K9KalH~5zmo5Z>BC%+?3cd31Q zwSm22_OF*aeS|aqq@Vq`=9t>O&;#oJTdwvnn10k~-?483qshs0uWdC-^V8QBew*AP z9De-g=Ej9`Z?f04_;}R+m;Dec&N=gA*(9-pN;b<@8Yd)VaQyGqew}W3xGdIW<@~h5 zXVG0BDxBCZEPTG=E_3+tQ#z9zHn=d*twOoZ#^gDm{! z>;0ngE8p&Nkp)jn1oLcWG_Ow8o)s0J)bKStO@E>ECxyS?;-6i z`;vP;W1{elvg|D0uOFvQwE5{#n_zOMY<+=EaC^d+l+?WHn=kqg1<2$wh`38L9KFcq zP`HH=7dJAn&Os%6rt*eazm|Pseo=Q%u+%X#+vjkj=?OuFzwK*xR{T{ei`=hWlC1N+ z>W)Vr1Cxzo(~bb^^WIz?@7|rgbFuryWH@@01V>Ll$)qx?$lM9>eR<#N4y^Uow6SjxOZk{- zeElRoSopIo>ZQu&+DvB&B~s#@k4h=<-LkFZ|n!U&l-EUUm#1baTRx|Cqt^stPXSExJffXpmup$N{sG|9=rQ> z?z5gRclA-voG%+G?y=zcxruh0qYRGM&2!+7F)sef#Cc#^c3JL3=0Bezl4i?PW|$jq z-v5?$VWIom4_6IqfWB2Nag8WRNi0dVN-jzTQVd20MkcxjX1a#PA%><_CPr4qCfWuD zRt5&T&cRhE8glbfGSez?YlxA1eGI5U18ze}W^QV6Nn&mRLXSy^p{13vk(D9T685l} QnLs@Zp00i_>zopr0DEVu6aWAK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_arm-2.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a529d9ebb60d80e91cb18c0ed73aaa3086c603 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9F5M?jcysy3fAP;iT< zi(^Pd+}oRuTrCDXtQQ_l-E;ZQ7VG>guE)5VcC7Z3)YezH;p+UU?&-G-^;;peROa89>-v9iUUC7j+S?YFrG4H>#&8X@)mYx^4=eSJ$TglU12KWD` zZ@240=!F}C#87Y4p7>|AK(z8ty^lXuySPWB^MBZ*OcAY&H;Zx%mE!?gb{l zkQH6Z2SZo17e7i=Xf!r*{uIAv@6Nz7?nx@1lT_}$Dg2^P!PweaUiHEwk?Gmvk24c{ z7YG?H6BeAhV50Av{|CYss|iotw&dT&Mv!_>@!OUU&YLht&$T_cOS0l$O$PtPyTWT` zHyU$4scPcic+*`qMQrw0pkq`^Tq8nXaL6h@q*KiIJ7D ziMD}(m4Sh-b8r=khTQy=%(P0}8e-&L9|LO8fZI@#nVVW%l9*e7&|?x}XlZ3^WMv4o UggtC#CQuK9r>mdKI;Vst07Qy^6951J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_foot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..6be2024018bd9bac40ed11789decda14a2c67b6f GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op=M7P$B>MBZ*OemZ8i{bz34t&bQ4pi z#FfJrTQv6^_7zsi=xJ2yD(R2juYdY(eW!}&Bo$A4Gnv?i@JX7*(+=-mJyElGQhD1u zpX3Nuu9PL_j$8pReYeyiPajJf~v>~E8A+aBB| zx#LsAzIhLrqt^z@2LGG%0_Yso64!{5l*E!$tK_0oAjM#0U}U0eV5Vzm9Aao{WnyGy zY@%&oU}a#S>l|E#q9HdwB{QuOw}u$G*T;YwG~hOrWag$8mn7yEAoQ4o7+P8x8(A4b VEnyFvnF-Xx;OXk;vd$@?2>|UKe>4C9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-1.png new file mode 100644 index 0000000000000000000000000000000000000000..87466284b3b0e5d79be803608eff7b55ea7f64bd GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op)yYw$B>MBZ*LsrZBP(!xp=W?1FN%T z&}7?7ha(y}SbTc^&sE>eJtu;bf#HGmp$9R=zjaRQEzi+5@7-|CeQ}Vhmgc!#jn3aL z-)wr5d{6m`$U1LEps5W1QZK}B+fr3#<2pS0pyXF5jM7H$OUuhhf1RriHxX z&L2LqfE=Y-;u=wsl30>zm0Xkxq!^40j7)S5%ybQnLkvx=OpL6IO|%URtPBivor9}T zH00)|WTsW()(|82`WR4y2Hb{{%-q!ClEmBsgdUR+LrW`TBP&CwCG24{Gl6;-JYD@< J);T3K0RTI?cYFW< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_hand-2.png new file mode 100644 index 0000000000000000000000000000000000000000..b871a17933379e4aa2af10587051df8f69f64522 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op>j_b$B>MBZ*N@WZBXE8dHBj=M^mB9 zjFYlAAKqbzYLa^V-!|UsviUh428IXLlb$_0bUxg3?@gnXTAL2N>X!?XS($WPmwm$$ zoznBORZcJDZVCIq^KB{6Tn2{!MlaV}SS`D*&GM@;@NL|~M%FUx>2J^KTlX?DY>EAK zL0jL0+2j~dp=yb1L`h0wNvc(HQ7VvPFfuSQ(KRsBH8c(}G_^7@vNAT&HZZUk0qV`&?3Gy&$!I?Y*q|QWwcv8k3Xw#^VH4t2dB;Qi2ha^rDS^hP_Pmh)R%lu zKVUff{>}3>cWl?3^l@usRK9ss^5BjMXC(F{S3SSO`)A*wT<;61S(`Q|J~#&hEO|a*?TL5nHM<*6exG*WF5~^Yghjds zy?-!esQVpFUF%l?3^3Ia*NBpo#FA92AvZrIGp!Q0h8Vfm$AB6%;5L+G=B5^xB<2<%^q7PgT3Q(!Ss6ktVGo;` Q3Dm>j>FVdQ&MBb@00)}KG5`Po literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/l_leg-2.png new file mode 100644 index 0000000000000000000000000000000000000000..90b10eb4be5ca5fe2ca3551817781542555569e8 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS@v42+_lE{-7?_uk$xEIQ=C!+K%AWLicM zpLq1!fafZH&JPzpQL$q(J-*-pOWrrJWyi1jJ2p*bstjM4_-ucaP*ks`ih~OfJP~zy z7cqTfvd)SsDiV*UrO6g`=`b!vyU`?m8L4~|SLF>%;t zW1G%&(XuhZr15Id0k-!y6a+)%AE~p~EI3$bSoAS|gKKlkx*{f7A*meg%^*8mT>ib- ze|=TNeu;Y@_sM_f&z6`S_{77gox4VNg7_1MzIm%lgr@SAhHwqt&XLHXepW3}tG zPt@8w(^ZU*sFDdCZ&VYd2Oi?Yn)z zC%kF;2Ub1*in&iuSkDKBnQDn^L`h0wNvc(HQ7VvPFfuSQ(KRsBH8c(}G_^7@vNAT& zHZZUBQ;SOya|;l9OhODTt&EMV455~= Tht13c>S6G7^>bP0l+XkKhFZZt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json new file mode 100644 index 00000000000..9f4ca1ee51f --- /dev/null +++ b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/meta.json @@ -0,0 +1,83 @@ +{ + "version": 1, + "copyright": "Sprites originally from Paradise Station (https://github.com/ParadiseSS13/Paradise). Monochromatic version made by: DayOS (https://github.com/Day-OS)", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "l_foot-1", + "directions": 4 + }, + { + "name": "l_foot-2", + "directions": 4 + }, + { + "name": "r_foot-1", + "directions": 4 + }, + { + "name": "r_foot-2", + "directions": 4 + }, + { + "name": "l_leg-1", + "directions": 4 + }, + { + "name": "l_leg-2", + "directions": 4 + }, + { + "name": "r_leg-1", + "directions": 4 + }, + { + "name": "r_leg-2", + "directions": 4 + }, + { + "name": "torso-1", + "directions": 4 + }, + { + "name": "torso-2", + "directions": 4 + }, + { + "name": "l_arm-1", + "directions": 4 + }, + { + "name": "l_arm-2", + "directions": 4 + }, + { + "name": "r_arm-1", + "directions": 4 + }, + { + "name": "r_arm-2", + "directions": 4 + }, + { + "name": "l_hand-1", + "directions": 4 + }, + { + "name": "l_hand-2", + "directions": 4 + }, + { + "name": "r_hand-1", + "directions": 4 + }, + { + "name": "r_hand-2", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_arm-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e770056ed95b2be02fcbb0d7613006849cc9abc GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op=X{hjv*QM-d^9hu_-{H^`ZPRz71ST z$BRq~-$_VEvZ+eUxY4$r`LK8d^Ru+$A*?kv?XJzAQ+3Lx-QBCgotE~k*Q?efePy-- zWBAtT6YSZw&fehpUu$+|#V?bv*DGddTdc}EXOmtU~I|)5%V+OjnqP zOq#WF{wqQ8gC?(MevZ#_yeQ%DSp81$5uS#ozxUfGH9g~R@R<1W>=_`)Nk~1>b;~4^ zf4bKk$Nh@lQT$WIx}t;MKYja9IJ?fG_d?e3j-x>a>C$zqmDjtOKMVe<4?NI%RfDx8 z=)wMplMU VOW4C^W&-svc)I$ztaD0e0syVctYug4O8oM+kA+`2PDW_93>(~krd92yuHnOHak zpo}_}V-iz&imd<7F_u~|x&Cd;4!dZPBgK{5SKZn?Z9iYtGrLdad^v3>df=KNjK=!L z+oi=;8O!thZf^|jU#|N#>)z@zzqM!MkAAd7wkwEb->pM>-Q`-hB7v@E@O1TaS?83{ F1OQqJQR4sr literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-1.png new file mode 100644 index 0000000000000000000000000000000000000000..8994994011cfefe211374497fa902ea729f1135b GIT binary patch literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op+-*^$B>MBZ*OemJ!Bx_dhxVGB$jClkZcu{rMWZkA0Gg=OmTCH*?=_Fxbq{|M#`?A=w#`72oVM zRi<9h5dX8`0>{)P)lo|)ZvV(?H(Bay(|Zq)jxWsdTn)k}>ykI5N2vdPSr9Pa=#KH4 z$$w|E{;FydZ;NwxH$Kk#8R!_*64!{5l*E!$tK_0oAjM#0U}U0eV5Vzm9Aao{WnyGy zY@%&oU}a#S>l|E#q9HdwB{QuOw}u$G*T;YwG~hOrWag$8mn7yEAoQ4o7+P8x8(A4b VEnyFvnF-Xx;OXk;vd$@?2>`20frkJ9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_foot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca884025fd3c36feb1979700a5936c746cf279f GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op(alk$B>MBZ*OemJ!HV(a`Cf7f?}09~V6;u=wsl30>zm0Xkxq!^40j7)S5%ybQnLkvx=OpL6I zO|%URtPBivor9}TH00)|WTsW()(|82`WR4y2Hb{{%-q!ClEmBsgdUR+LrW`TBP&Cw VCG24{Gl6;-JYD@<);T3K0RWh)f^Pr- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-1.png new file mode 100644 index 0000000000000000000000000000000000000000..13a46c2e09224bbaf474425dc80ec05ae3bd87a6 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op-N8|$B>MBZ*LsrZBXE8eYm_(D(0X; z-$&yv*fY=NQH3Mt7E4?cvRM!1&vSp{I~p zdZGB~ZH29lK&7fBt`Q|Ei6yC4$wjF^iowXh$VAt`OxMsj#L(2r#K_9nMBBi?%D_O^ zIk*Z%LvDUbW?Cg~4KZ@Bj{!Akz-=hW%uOvWNz5%k=rIW~w6rodvND8P!X7p=6R3y5 M)78&qol`;+0O1UHCjbBd literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_hand-2.png new file mode 100644 index 0000000000000000000000000000000000000000..d203e571fca443a39a9168e1ff8fdccc6294f559 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^Op$bnI$B>MBZ*LsrZBXE8edslZE!?1o z*?4FF;|+&DuRAzlMpOHL>q`M%mZHWC3=RJ~XUzy#3$2_Y5UOe`-2U5Xo>zOmq#*bPbI|3{9;}jI4}Jv<(cb3=DLg zgR4+9|rxAfqED` MUHx3vIVCg!0F;z@p8x;= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bb762db0c49173c4d6e14939e3a4a896dde6ceec GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS@v42;5_E{-7?_uk$x%xg9fIrh^*Nle8*WvS``a4U;=S;E(m) zKP7ACua$q3zVBUA_Nfog`xp=3wl!=jJU-iSN#D=dS2_P*bKKv~6Pw~Id3(XLV<9Sc z^3Uw?J=$xvOHFFQ(=&EI|1eaa<8ID0InX*UGq|C1o_EPny|9>BZ>QVjNlvofP`d4W z`Dq3JFRW*t`yI`WxRVYHG1U^+h?11Vl2ohYqEsNoU}RuqqHAELYiJx|Xli9*WMyok zZD3$!V4&+9T!o?`H$NpatrE9}7`fNSfEqO5Hk4%MrWThZ<`y9In1mQwS{WNz8A2^# T51W|@)WhKE>gTe~DWM4fT3*sB literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/r_leg-2.png new file mode 100644 index 0000000000000000000000000000000000000000..16f0ee16471f110c804c23e9fd2a66de7521f018 GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS@v42+_lE{-7?_uk&HUDxCw!ur7Y*pXwU z0Y0W1>$D%5inUytx`8Eodg4Q_j5P5Z&ZRnkI$L=j8mZ}5KG*)aQzmc04siiNAow{u ztLoY6XOaD3(Y5 z!t&y!ap?hd>ka>EeoWV`3wW@_;s9Ut8-b3A{Dn{SR|o_o?BBz9W3hw7)P<8eK;Vz{ z+2mQD+77o>|%>D8VHrA6a#wK<<#0kpYj6D9Q?bywKZ$;llx2XjtPSp}9IGAuV z-^RuKL(_ykYLW{MF-pI_%*Y@uqsDeQr9nB0r<;i!C8<`)MX5lF!N|bKMAyJf*U&h`(A3Jr$jaD6 z+rYrez(ChIxC%u>ZhlH;S|x4`F>9ZF$poWv@$lbGK5;f T9yT)*sE5JR)z4*}Q$iB}rB=o3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png b/Resources/Textures/Mobs/Customization/cyberlimbs/hesphiastos/hesphiastos_main.rsi/torso-1.png new file mode 100644 index 0000000000000000000000000000000000000000..45fb93052e45ded9eb7fd6f376db6c0cd0306672 GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;M!Q ze1}1p@p%4<6rdn`iKnkC`wKQcVFf-@hNS^OO&Xpqjv*QM-p<%N@wS0LtNonVmTU&$ zU5p}+I+~gE0tNk69N;a8;GUB`BS6&R^`Cw z0tA0T|J3kDUfz6RaraMd?$fgSye1}o>rL7}zxC8XqXTu~A5HI7*MC&lbMoiC_;;HB zF5j*<&kE&hKKLLabg{s~z=TNAHK&f1Ph{j{wvgd7u$WnQOL}T=)@0@TCJ%Z#)ok3q zx@~DoS6dgl&F7FUONI&e{fG;$g$p8+M4mo=psD`EGH&S$iI?wseoonR|5Nk(n#4m3 ze;k!x_hkyT{NBv+ z{z+D{oo%4L5ZbqZOZN_}Z7JBKH$mV;ZO-K>GX!Kf zgo^x9yf!bE%CKaNJ;-xtm7Cudo&|h%rdpW}i=A?BOnb5KP|INh4{H^J-vP7yR|8a6itk?VZBpSK*pm{6GG`fG;Fbc2Mt)HYG+g!q;7 zgdYdxS~(@&yqJ2MyRxUGBrqt8Z?mnE_+NeF#Mk^!t92xq^^P<)NBn)bN`I2Eq9CjB z*|Sooj3+u7Z^}JXB4hi(ROi23+@e+h@(VvElE#zvu5SG+MQT<)0UKwbR9ii~l_0d152+;re~4no0R7Q>SqE za-9EEIdi|wQ}O8siUc+sa9nfkul9ZO&*k<3a~b2$z6W_02!5z*-23)4>h8+!Rn|{_ zU#QgJ)V#+joOmcPC39DpZqkvrrb*5GKh0LZ<=rz~;rj1F;mV0umSq|$T24^8GH1n< zH1>}^GL1Vk*~~a)W`0n}KWeHWW#F}nce&WzatpzY6}5>)azU9@znH#G+*}7#@-JZT@gTzoZeRASEPi?WfxO2r;Z_X`{>5i@%U_su znw_U{59jH^FO8Qs{I%J$G`?1%yrkrh{SVe((^b}-oms37OhBq7t`Q|Ei6yC4$wjF^ ziowXh$VAt`OxMsj#L(2r#K_9nMBBi?%D_O^Ik*Z%LvDUbW?Cg~4KZ@Bj{!Akz-=hW o%uOvWNz5%k=rIW~w6rodvND8P!X7p=6R3y5)78&qol`;+00Lb~!TanMpx_@* z7srr_xVN`1@-{07G$h^MeTi-LSyuI4nHC@8Z8VM^m$=Pz^eJ2$Uip*tZN7!C}cu6{1-oD!ManM1_s9G zo-U3d6>)E8oi1!K;A!(!V}BRG>KeeIUezFE;l#}o8pwLZLFf3V3A`-cH?KcTKek)q z^slA;$6bxs*f|;)I5;?TPH(#C_}`{NuVArR?aI3Q-xYtF_?pYfh^$?0+*YK&e@kO*ShbxI9tT^p^HZ0YgL|EmrJ9rSMR@f(!4?Fo;@dzOEI(Ey43n8pUWjX zp1#?2<^R;byVf0i^5)N}<8`q-2{Ol>|EFJ9J$U4XP{!;Z(^4Z3H9xy0t-$8sSQeZ9 zCRv{C?EJzlxvx_sm{j-q&%3U=QAH?u)8E&&^Pfk)@n7|Rzis;Mc?;KbNJcv_un<5G zcsW*RX}YIotUG)2)09)`I^63Ru9yDJ_MZ2g|7w|PX1o-)X_cPuZtiU<@BSx$7QFe^ zbk2nL!at^&>1}KO#xdc5uK*txKi8q}d>umFrqA}Z%zh{0KKG$_wTNBv(VKbUll^OE zM!kA;|JyblxtfBNa~R(IW=(Q+VOa4idYWo^V@uwIM2V!Y?~;yJ`Ci^&FW%jI)`nrju%d_Wa;+AT63T{(iV8V$$Y-8ES;5)ylwP(?e3&3>1 N;OXk;vd$@?2>{Pw Date: Tue, 30 Jul 2024 21:33:47 +0000 Subject: [PATCH 10/82] Automatic Changelog Update (#613) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 56389a65d6f..d6c7852d41b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4678,3 +4678,11 @@ Entries: message: Radiation damage no longer interrupts DoAfters. id: 6188 time: '2024-07-29T06:00:26.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: >- + Added cybernetic limb markings from Hesphiastos Industries and Bishop + Cybernetics. + id: 6189 + time: '2024-07-30T21:33:23.0000000+00:00' From 08dde0222497488865c900df398594d5c233e930 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Wed, 31 Jul 2024 05:34:36 +0800 Subject: [PATCH 11/82] Add Makeup (#614) # Description Adds new markings representing makeup: - Lips - Blush - Nail Polish (Left) - Nail Polish (Right) Availability depends on the species. Cherry-picked from this [pull-request](https://github.com/DeltaV-Station/Delta-v/pull/1191) from Delta-V. ---

Media

Human: ![image](https://github.com/user-attachments/assets/947f0186-297a-4af8-87e4-a14aa08d6100) ![image](https://github.com/user-attachments/assets/fc8b347d-a4fd-49f6-ba8c-2dcd9e5d7ac0) ![image](https://github.com/user-attachments/assets/ae5fc444-b1c2-45bb-969c-d0052c295a9d) ![image](https://github.com/user-attachments/assets/47a1650f-d2a6-4586-a4a1-83398db138b3) Felinid: ![image](https://github.com/user-attachments/assets/fbd12ed4-e7ac-4898-aa01-bfeff23c2818) ![image](https://github.com/user-attachments/assets/3401464d-ba4d-4da0-b378-b0d45424d792) ![image](https://github.com/user-attachments/assets/f0a08c2f-0cb0-4349-976c-15c59723a702) Moth: ![image](https://github.com/user-attachments/assets/e0036568-8860-4daf-b548-3f953f9a2ec4) ![image](https://github.com/user-attachments/assets/68620d38-6365-477d-be90-6b92dfaa32ee)

--- # Changelog :cl: - add: Makeup is finally here: lips, blush, and nail polish! Sashay over to Character Setup in the Markings section, then look at Head/Overlay to give makeovers to your characters! --- Resources/Locale/en-US/markings/makeup.ftl | 17 ++++ .../Mobs/Customization/Markings/makeup.yml | 87 ++++++++++++++++++ .../Mobs/Customization/makeup.rsi/blush.png | Bin 0 -> 151 bytes .../Mobs/Customization/makeup.rsi/lips.png | Bin 0 -> 149 bytes .../Mobs/Customization/makeup.rsi/meta.json | 35 +++++++ .../Customization/makeup.rsi/moth_blush.png | Bin 0 -> 139 bytes .../Customization/makeup.rsi/moth_lips.png | Bin 0 -> 137 bytes .../makeup.rsi/nail_polish_l.png | Bin 0 -> 170 bytes .../makeup.rsi/nail_polish_r.png | Bin 0 -> 167 bytes 9 files changed, 139 insertions(+) create mode 100644 Resources/Locale/en-US/markings/makeup.ftl create mode 100644 Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/blush.png create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/lips.png create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/moth_blush.png create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/moth_lips.png create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/nail_polish_l.png create mode 100644 Resources/Textures/Mobs/Customization/makeup.rsi/nail_polish_r.png diff --git a/Resources/Locale/en-US/markings/makeup.ftl b/Resources/Locale/en-US/markings/makeup.ftl new file mode 100644 index 00000000000..24ca3a10b7d --- /dev/null +++ b/Resources/Locale/en-US/markings/makeup.ftl @@ -0,0 +1,17 @@ +marking-MakeupLips-lips = Lips +marking-MakeupLips = Lips + +marking-MakeupBlush-blush = Blush +marking-MakeupBlush = Blush + +marking-MakeupNailPolishLeft-nail_polish_l = Nail Polish (Left) +marking-MakeupNailPolishLeft = Nail Polish (Left) + +marking-MakeupNailPolishRight-nail_polish_r = Nail Polish (Right) +marking-MakeupNailPolishRight = Nail Polish (Right) + +marking-MakeupMothBlush-moth_blush = Moth Blush +marking-MakeupMothBlush = Moth Blush + +marking-MakeupMothLips-moth_lips = Moth Lipstick +marking-MakeupMothLips = Moth Lipstick diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml new file mode 100644 index 00000000000..901bf6e75cf --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/makeup.yml @@ -0,0 +1,87 @@ +- type: marking + id: MakeupLips + bodyPart: Head + markingCategory: Head + speciesRestriction: [Dwarf, Human, SlimePerson, Felinid, Oni, Harpy] # Delta V - Felinid, Oni, Harpy + coloring: + default: + type: + !type:SimpleColoring + color: "#7e2727" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: lips + +- type: marking + id: MakeupBlush + bodyPart: Head + markingCategory: Head + speciesRestriction: [Dwarf, Human, Reptilian, SlimePerson, Felinid, Oni, Vulpkanin, Harpy] # Delta V - Felinid, Oni, Vulpkanin, Harpy + coloring: + default: + type: + !type:SimpleColoring + color: "#d39394" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: blush + +- type: marking + id: MakeupNailPolishRight + bodyPart: RHand + markingCategory: Overlay + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin + coloring: + default: + type: + !type:SimpleColoring + color: "#702020" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: nail_polish_r + +- type: marking + id: MakeupNailPolishLeft + bodyPart: LHand + markingCategory: Overlay + speciesRestriction: [Dwarf, Human, Reptilian, Arachnid, SlimePerson, Felinid, Oni, Vulpkanin] # Delta V - Felinid, Oni, Vulpkanin + coloring: + default: + type: + !type:SimpleColoring + color: "#702020" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: nail_polish_l + +# Moth-specific + +- type: marking + id: MakeupMothLips + bodyPart: Head + markingCategory: Overlay # The marking category is in Overlay instead of Head + # because the Head category for moths only allows 1 + # marking and lips should be usable alongside blush + speciesRestriction: [Moth] + coloring: + default: + type: + !type:SimpleColoring + color: "#7e2727" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: moth_lips + +- type: marking + id: MakeupMothBlush + bodyPart: Head + markingCategory: Overlay + speciesRestriction: [Moth] + coloring: + default: + type: + !type:SimpleColoring + color: "#d39394" + sprites: + - sprite: Mobs/Customization/makeup.rsi + state: moth_blush diff --git a/Resources/Textures/Mobs/Customization/makeup.rsi/blush.png b/Resources/Textures/Mobs/Customization/makeup.rsi/blush.png new file mode 100644 index 0000000000000000000000000000000000000000..9e672df8c31c1bbaa12a2033c023f41f10761734 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)0?k@(cp=>UJ#!if|Tq zL>4nJa0`PlBg3pY5Z3` literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/makeup.rsi/meta.json b/Resources/Textures/Mobs/Customization/makeup.rsi/meta.json new file mode 100644 index 00000000000..422f1eec834 --- /dev/null +++ b/Resources/Textures/Mobs/Customization/makeup.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by angelofallars (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "lips", + "directions": 4 + }, + { + "name": "blush", + "directions": 4 + }, + { + "name": "nail_polish_l", + "directions": 4 + }, + { + "name": "nail_polish_r", + "directions": 4 + }, + { + "name": "moth_lips", + "directions": 4 + }, + { + "name": "moth_blush", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Mobs/Customization/makeup.rsi/moth_blush.png b/Resources/Textures/Mobs/Customization/makeup.rsi/moth_blush.png new file mode 100644 index 0000000000000000000000000000000000000000..c66a862be017fba40ab00802f73ba1afb1fd671b GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877lxY8c5y4i~sDx>wQ|#u%Dwa< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/makeup.rsi/moth_lips.png b/Resources/Textures/Mobs/Customization/makeup.rsi/moth_lips.png new file mode 100644 index 0000000000000000000000000000000000000000..72c6f57c6efc880557a31b5129c8fc959e0f24c8 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877lxY8c5P;>Bs|uecwr-J!PZQm3Wkuk4~5S} cF)%d5%REnJ|LNIntp*bIboFyt=akR{0O{Hz?EnA( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/makeup.rsi/nail_polish_l.png b/Resources/Textures/Mobs/Customization/makeup.rsi/nail_polish_l.png new file mode 100644 index 0000000000000000000000000000000000000000..73175b4e2c8436ee2c1c5548cbcd51377b9bb489 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Y)RhkE)1I)(iv7=-5>V?D8gCb z5n0T@z%2~Ij105pNB{-BJY5_^DsH{KwUL)WfrG{2(Ld|QOlEG20^e(`;{Pe81XRMn zAeNHW_v~`yZSNIPJB+x&LJSRB+hdDvd$-nCyM1?NU^uXcPut)4{F#3rYC!Uyu6{1- HoD!MV?D8gCb z5n0T@z%2~Ij105pNB{-hJzX3_DsH{KsmRBmz{BEr=>Pv3i2{qJ46DUj`YZ1k0+lc@ zY*X2Jcdc3a>Tf%;W;23C7%b{U?*BAel-qReJ|n}5e8w#r#^?8D&Flindb;|#taD0e F0szN&F&h8? literal 0 HcmV?d00001 From b744818e577e976142de959a7c94900eda5986df Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Tue, 30 Jul 2024 21:35:00 +0000 Subject: [PATCH 12/82] Automatic Changelog Update (#614) --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d6c7852d41b..a8737170b81 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4686,3 +4686,12 @@ Entries: Cybernetics. id: 6189 time: '2024-07-30T21:33:23.0000000+00:00' +- author: angelofallars + changes: + - type: Add + message: >- + Makeup is finally here: lips, blush, and nail polish! Sashay over to + Character Setup in the Markings section, then look at Head/Overlay to + give makeovers to your characters! + id: 6190 + time: '2024-07-30T21:34:37.0000000+00:00' From 29cb1b02e0abf93b6d0d85d055ad9109916926c4 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 31 Jul 2024 08:18:38 -0400 Subject: [PATCH 13/82] Hotfix Late Joins (#612) # Description Last update broke late joins on Release build. This hotfixes latejoins. --- Content.Client/LateJoin/LateJoinGui.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index c9737e09b13..ff6c8bc3c54 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -30,7 +30,6 @@ public sealed class LateJoinGui : DefaultWindow [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly IEntitySystemManager _entitySystem = default!; [Dependency] private readonly JobRequirementsManager _jobRequirements = default!; - [Dependency] private readonly CharacterRequirementsSystem _characterRequirements = default!; [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IClientPreferencesManager _prefs = default!; @@ -39,6 +38,7 @@ public sealed class LateJoinGui : DefaultWindow private readonly ClientGameTicker _gameTicker; private readonly SpriteSystem _sprites; private readonly CrewManifestSystem _crewManifest; + private readonly CharacterRequirementsSystem _characterRequirements; private readonly Dictionary>> _jobButtons = new(); private readonly Dictionary> _jobCategories = new(); @@ -53,6 +53,7 @@ public LateJoinGui() _sprites = _entitySystem.GetEntitySystem(); _crewManifest = _entitySystem.GetEntitySystem(); _gameTicker = _entitySystem.GetEntitySystem(); + _characterRequirements = _entitySystem.GetEntitySystem(); Title = Loc.GetString("late-join-gui-title"); From d38c7d4b28ad0bf8147f986ddf6d2ae6f2814d1c Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Wed, 31 Jul 2024 22:07:07 +0300 Subject: [PATCH 14/82] Hotfix Playtime Requirements (#621) Shitcode --- Content.Client/LateJoin/LateJoinGui.cs | 2 +- Content.Client/Lobby/LobbyUIController.cs | 4 ++-- .../PlayTimeTracking/JobRequirementsManager.cs | 5 +++++ .../Preferences/UI/AntagPreferenceSelector.cs | 2 +- .../Preferences/UI/HumanoidProfileEditor.xaml.cs | 12 ++++++------ .../Systems/Ghost/Controls/Roles/GhostRolesEui.cs | 2 +- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Content.Client/LateJoin/LateJoinGui.cs b/Content.Client/LateJoin/LateJoinGui.cs index ff6c8bc3c54..92e1ee2aaf1 100644 --- a/Content.Client/LateJoin/LateJoinGui.cs +++ b/Content.Client/LateJoin/LateJoinGui.cs @@ -267,7 +267,7 @@ private void RebuildUI() prototype, (HumanoidCharacterProfile) (_prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), - _jobRequirements.GetPlayTimes(), + _jobRequirements.GetRawPlayTimeTrackers(), _jobRequirements.IsWhitelisted(), _entityManager, _prototypeManager, diff --git a/Content.Client/Lobby/LobbyUIController.cs b/Content.Client/Lobby/LobbyUIController.cs index 3e7eb84b998..47ab651c10e 100644 --- a/Content.Client/Lobby/LobbyUIController.cs +++ b/Content.Client/Lobby/LobbyUIController.cs @@ -126,7 +126,7 @@ public void UpdateCharacterUI() GiveDummyJobClothes(_previewDummy.Value, GetPreferredJob(maybeProfile), maybeProfile); if (ShowLoadouts) _loadouts.ApplyCharacterLoadout(_previewDummy.Value, GetPreferredJob(maybeProfile), maybeProfile, - _jobRequirements.GetPlayTimes(), _jobRequirements.IsWhitelisted()); + _jobRequirements.GetRawPlayTimeTrackers(), _jobRequirements.IsWhitelisted()); UpdateClothes = false; } @@ -173,7 +173,7 @@ public void GiveDummyJobClothesLoadout(EntityUid dummy, HumanoidCharacterProfile { var job = GetPreferredJob(profile); GiveDummyJobClothes(dummy, job, profile); - _loadouts.ApplyCharacterLoadout(dummy, job, profile, _jobRequirements.GetPlayTimes(), _jobRequirements.IsWhitelisted()); + _loadouts.ApplyCharacterLoadout(dummy, job, profile, _jobRequirements.GetRawPlayTimeTrackers(), _jobRequirements.IsWhitelisted()); } /// diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs index a38d4e2f308..a2f8061d057 100644 --- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs +++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs @@ -102,4 +102,9 @@ public Dictionary GetPlayTimes() dict.Add(PlayTimeTrackingShared.TrackerOverall, FetchOverallPlaytime()); return dict; } + + public Dictionary GetRawPlayTimeTrackers() + { + return _roles; + } } diff --git a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs index 872b783c2f9..4a339d3f659 100644 --- a/Content.Client/Preferences/UI/AntagPreferenceSelector.cs +++ b/Content.Client/Preferences/UI/AntagPreferenceSelector.cs @@ -45,7 +45,7 @@ public AntagPreferenceSelector(AntagPrototype proto, JobPrototype highJob) : bas proto.Requirements, highJob, (HumanoidCharacterProfile) (prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), - requirements.GetPlayTimes(), + requirements.GetRawPlayTimeTrackers(), requirements.IsWhitelisted(), entMan, protoMan, diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs index 8d31ea92280..9115c6720bf 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs @@ -729,7 +729,7 @@ private void UpdateRoleRequirements() job.Requirements ?? new(), job, Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, @@ -784,7 +784,7 @@ private void EnsureJobRequirementsValid() selector.Proto.Requirements ?? new(), selector.Proto, Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, @@ -1434,7 +1434,7 @@ private void UpdateTraits(bool showUnusable) trait.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, @@ -1449,7 +1449,7 @@ out _ trait.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, @@ -1695,7 +1695,7 @@ private void UpdateLoadouts(bool showUnusable) loadout.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, @@ -1710,7 +1710,7 @@ out _ loadout.Requirements, highJob?.Proto ?? new JobPrototype(), Profile ?? HumanoidCharacterProfile.DefaultWithSpecies(), - _requirements.GetPlayTimes(), + _requirements.GetRawPlayTimeTrackers(), _requirements.IsWhitelisted(), _entityManager, _prototypeManager, diff --git a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs index d0fd3a80c3b..f03289782ae 100644 --- a/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs +++ b/Content.Client/UserInterface/Systems/Ghost/Controls/Roles/GhostRolesEui.cs @@ -94,7 +94,7 @@ public override void HandleState(EuiStateBase state) group.Key.Requirements ?? new(), new(), (HumanoidCharacterProfile) (prefs.Preferences?.SelectedCharacter ?? HumanoidCharacterProfile.DefaultWithSpecies()), - requirementsManager.GetPlayTimes(), + requirementsManager.GetRawPlayTimeTrackers(), requirementsManager.IsWhitelisted(), entityManager, protoMan, From 95279363a8202a708db3a973fca26c165dc568f6 Mon Sep 17 00:00:00 2001 From: Tmanzxd <164098915+Tmanzxd@users.noreply.github.com> Date: Wed, 31 Jul 2024 17:24:39 -0500 Subject: [PATCH 15/82] Remove Cargo Pallet From Request Console (#626) Fixes #108 --- Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml index fb3b2da41a8..409670636fb 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_cargo.yml @@ -1,13 +1,3 @@ -- type: cargoProduct - id: CargoPallet - icon: - sprite: Structures/catwalk.rsi - state: catwalk_preview - product: CargoPallet - cost: 250 - category: Logistics # DeltaV - Logistics Department replacing Cargo - group: market - - type: cargoProduct id: CargoOreBox icon: From 3a9c337adc3deaf6f5f06740635d96795dfbcffb Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Thu, 1 Aug 2024 06:36:20 +0800 Subject: [PATCH 16/82] Use Correct Changelog Name (#627) I did an oopsie --- Resources/Changelog/Changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a8737170b81..af6cbaf7761 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4686,7 +4686,7 @@ Entries: Cybernetics. id: 6189 time: '2024-07-30T21:33:23.0000000+00:00' -- author: angelofallars +- author: Skubman changes: - type: Add message: >- From d39c9905af07fecda110be0adae93c19cdeae1f2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 31 Jul 2024 18:47:01 -0400 Subject: [PATCH 17/82] Fix Sound Params (#624) # Description Done by request from several people who have some issues with the sound mixing of certain items being very off. I did a little digging, and discovered that the heart of the issue is that id: BaseItem had for whatever utterly strange reason, set the volume for every item not overriding it to be above people's sound settings, resulting in pickup and drop sounds being strangely inconsistent with all other volumes. It got so bad that some people reportedly couldn't play the game. # Changelog :cl: - fix: Fixed Tools, Drink Containers, Lockers, and all base items having inconsistent sound settings. --- .../Objects/Consumable/Drinks/drinks.yml | 15 ++++-- .../Entities/Objects/Tools/tools.yml | 48 +++++++++++++++---- .../Prototypes/Entities/Objects/base_item.yml | 2 - .../Storage/Closets/base_structureclosets.yml | 4 ++ 4 files changed, 56 insertions(+), 13 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index cfe5294ff05..93d4b957fe7 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -34,11 +34,20 @@ - key: enum.TransferAmountUiKey.Key type: TransferAmountBoundUserInterface - type: EmitSoundOnPickup - sound: /Audio/SimpleStation14/Items/Handling/drinkglass_pickup.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/drinkglass_pickup.ogg + params: + volume: -2 - type: EmitSoundOnDrop - sound: /Audio/SimpleStation14/Items/Handling/drinkglass_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/drinkglass_drop.ogg + params: + volume: -2 - type: EmitSoundOnLand - sound: /Audio/SimpleStation14/Items/Handling/drinkglass_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/drinkglass_drop.ogg + params: + volume: -2 - type: entity parent: DrinkBase diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 9ac46dbe305..d135b2f29bb 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -5,12 +5,20 @@ description: This kills the wire. components: - type: EmitSoundOnPickup - sound: /Audio/SimpleStation14/Items/Handling/wirecutter_pickup.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/wirecutter_pickup.ogg + params: + volume: -2 - type: EmitSoundOnDrop - sound: /Audio/SimpleStation14/Items/Handling/wirecutter_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/wirecutter_drop.ogg + params: + volume: -2 - type: EmitSoundOnLand sound: path: /Audio/Items/wirecutter_drop.ogg + params: + volume: -2 - type: Tag tags: - PlantSampleTaker @@ -55,12 +63,20 @@ description: Industrial grade torque in a small screwdriving package. components: - type: EmitSoundOnPickup - sound: /Audio/SimpleStation14/Items/Handling/screwdriver_pickup.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/screwdriver_pickup.ogg + params: + volume: -2 - type: EmitSoundOnDrop - sound: /Audio/SimpleStation14/Items/Handling/screwdriver_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/screwdriver_drop.ogg + params: + volume: -2 - type: EmitSoundOnLand sound: path: /Audio/Items/screwdriver_drop.ogg + params: + volume: -2 - type: Tag tags: - Screwdriver @@ -103,12 +119,20 @@ description: 'A common tool for assembly and disassembly. Remember: righty tighty, lefty loosey.' components: - type: EmitSoundOnPickup - sound: /Audio/SimpleStation14/Items/Handling/wrench_pickup.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/wrench_pickup.ogg + params: + volume: -2 - type: EmitSoundOnDrop - sound: /Audio/SimpleStation14/Items/Handling/wrench_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/wrench_drop.ogg + params: + volume: -2 - type: EmitSoundOnLand sound: path: /Audio/Items/wrench_drop.ogg + params: + volume: -2 - type: Tag tags: - Wrench @@ -146,12 +170,20 @@ description: A multipurpose tool to pry open doors and fight interdimensional invaders. components: - type: EmitSoundOnPickup - sound: /Audio/SimpleStation14/Items/Handling/crowbar_pickup.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/crowbar_pickup.ogg + params: + volume: -2 - type: EmitSoundOnDrop - sound: /Audio/SimpleStation14/Items/Handling/crowbar_drop.ogg + sound: + path: /Audio/SimpleStation14/Items/Handling/crowbar_drop.ogg + params: + volume: -2 - type: EmitSoundOnLand sound: path: /Audio/Items/crowbar_drop.ogg + params: + volume: -2 - type: Tag tags: - Crowbar diff --git a/Resources/Prototypes/Entities/Objects/base_item.yml b/Resources/Prototypes/Entities/Objects/base_item.yml index 55c4bbd6b79..84b5477f508 100644 --- a/Resources/Prototypes/Entities/Objects/base_item.yml +++ b/Resources/Prototypes/Entities/Objects/base_item.yml @@ -14,8 +14,6 @@ - type: EmitSoundOnLand sound: path: /Audio/Effects/drop.ogg - params: - volume: 2 - type: DamageOnHighSpeedImpact damage: types: diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index 23b1efdf535..e966a41780c 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -50,8 +50,12 @@ - type: EntityStorage closeSound: path: /Audio/Effects/closet_close.ogg + params: + volume: -4 openSound: path: /Audio/Effects/closet_open.ogg + params: + volume: -4 - type: ContainerContainer containers: entity_storage: !type:Container From 5f73a5a1df1d4928ff954a1d8cc91007fb833a26 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 31 Jul 2024 22:47:24 +0000 Subject: [PATCH 18/82] Automatic Changelog Update (#624) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index af6cbaf7761..719793e5b7d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4695,3 +4695,11 @@ Entries: give makeovers to your characters! id: 6190 time: '2024-07-30T21:34:37.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: >- + Fixed Tools, Drink Containers, Lockers, and all base items having + inconsistent sound settings. + id: 6191 + time: '2024-07-31T22:47:01.0000000+00:00' From c0114c0875a749c4b1d43305d09ba3f32a6a8097 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 31 Jul 2024 18:57:33 -0400 Subject: [PATCH 19/82] Lasers Have No Recoil (#603) # Description LASERS HAVE NO RECOIL, THEY SHOULD NOT PUSH YOU AROUND IN SPACE. THE CAPTAIN'S LASER PISTOL IS NOT AN INFINITE USE JET PACK. STUPID BUG. ME FIX. There are MANY things I hate about the gun system's code, I am going to revisit this later with a more comprehensive update. There are many hardcoded constants in it related to physics that I thoroughly despise. Guns should just be allowed to declare how much force of recoil they have, rather than it being hardcoded as "CONSTANT 25f". Also, I would like that if the Recoil value is greater than your character's mass, to then knock your character on their ass and/or send them flying. Imagine a Felinid getting thrown back by firing a shotgun. There's my justification for doing so. # Changelog :cl: - fix: Lasers no longer function as jetpacks in space. --- .../Weapons/Ranged/Components/GunComponent.cs | 6 ++++++ .../Weapons/Ranged/Systems/SharedGunSystem.cs | 10 +++++----- .../Objects/Weapons/Guns/Battery/battery_guns.yml | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs index ada99801f01..8d7ecae1a81 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunComponent.cs @@ -241,6 +241,12 @@ public sealed partial class GunComponent : Component /// [DataField] public float FireOnDropChance = 0.1f; + + /// + /// Whether or not this gun is truly Recoilless, such as Lasers, and therefore shouldn't move the user. + /// + [DataField] + public bool DoRecoil = true; } [Flags] diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 1dfdede1afa..3c5e5c79846 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -362,11 +362,11 @@ private void AttemptShoot(EntityUid user, EntityUid gunUid, GunComponent gun) var shotEv = new GunShotEvent(user, ev.Ammo); RaiseLocalEvent(gunUid, ref shotEv); - if (userImpulse && TryComp(user, out var userPhysics)) - { - if (_gravity.IsWeightless(user, userPhysics)) - CauseImpulse(fromCoordinates, toCoordinates.Value, user, userPhysics); - } + if (gun.DoRecoil + && userImpulse + && TryComp(user, out var userPhysics) + && _gravity.IsWeightless(user, userPhysics)) + CauseImpulse(fromCoordinates, toCoordinates.Value, user, userPhysics); Dirty(gunUid, gun); } diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index fb2f56a6ed6..ec0a0a148bd 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -21,6 +21,7 @@ fireOnDropChance: 0.15 soundGunshot: path: /Audio/Weapons/Guns/Gunshots/laser.ogg + doRecoil: false - type: Battery maxCharge: 1000 startingCharge: 1000 @@ -48,6 +49,7 @@ - SemiAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/laser.ogg + doRecoil: false - type: MagazineAmmoProvider - type: ItemSlots slots: From 8a3abcba5e1b783bdee4b32f6129c92a8c918ffa Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 31 Jul 2024 22:57:58 +0000 Subject: [PATCH 20/82] Automatic Changelog Update (#603) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 719793e5b7d..b9dcc6fb148 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4703,3 +4703,9 @@ Entries: inconsistent sound settings. id: 6191 time: '2024-07-31T22:47:01.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: 'Lasers no longer function as jetpacks in space. ' + id: 6192 + time: '2024-07-31T22:57:33.0000000+00:00' From fa2abfa1a438c719fe8899361d73cdcf41b8a8d4 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Wed, 31 Jul 2024 16:32:52 -0700 Subject: [PATCH 21/82] Fix the Uncategorized Category Not Being Hidden (#628)

Media

![image](https://github.com/user-attachments/assets/8292491a-e3c6-4321-a2a9-acf3d7f92d3b)

--- # Changelog :cl: - fix: Fixed the Uncategorized category not being hidden when empty --- Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs index 9115c6720bf..954a705fceb 100644 --- a/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs @@ -1599,7 +1599,7 @@ out _ // Hide Uncategorized tab if it's empty, other tabs already shouldn't exist if they're empty - _traitsTabs.SetTabVisible(0, uncategorized.Children.Any()); + _traitsTabs.SetTabVisible(0, uncategorized.Children.First().Children.First().Children.Any()); // Add fake tabs until tab container is happy for (var i = _traitsTabs.ChildCount - 1; i < _traitsTabs.CurrentTab; i++) @@ -1860,7 +1860,7 @@ out _ // Hide Uncategorized tab if it's empty, other tabs already shouldn't exist if they're empty - _loadoutsTabs.SetTabVisible(0, uncategorized.Children.Any()); + _loadoutsTabs.SetTabVisible(0, uncategorized.Children.First().Children.First().Children.Any()); // Add fake tabs until tab container is happy for (var i = _loadoutsTabs.ChildCount - 1; i < _loadoutsTabs.CurrentTab; i++) From 5335dceaf597c2381c0bb038e380a3a000ed1226 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Wed, 31 Jul 2024 23:33:15 +0000 Subject: [PATCH 22/82] Automatic Changelog Update (#628) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b9dcc6fb148..68ef06efebb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4709,3 +4709,9 @@ Entries: message: 'Lasers no longer function as jetpacks in space. ' id: 6192 time: '2024-07-31T22:57:33.0000000+00:00' +- author: DEATHB4DEFEAT + changes: + - type: Fix + message: Fixed the Uncategorized category not being hidden when empty + id: 6193 + time: '2024-07-31T23:32:52.0000000+00:00' From b15d096a3ea39553f7ee7cb8372b40ed67e51d16 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Thu, 1 Aug 2024 02:57:25 +0300 Subject: [PATCH 23/82] Minor Language Fixes (#618) # Description Fixes: - Whisper not undergoing readability obfuscation when out of range - Handheld translators ignoring language knowledge requirements - Several animals not having defined languages - Computers not having languages (this primarily affects the RnD console and in the future the cargo request console which send radio messages) - Some languages lacking brightness and thus being hard to read Also makes language colors from language markers use alpha blending instead of overriding the original color. The change is subtle, kinda hard to make it noticable without defeating the original purpose...

Media

Example of the new colors ![image](https://github.com/user-attachments/assets/291c1a6d-829b-43ec-afb7-5c902a1e4aff)

--- # Changelog :cl: - fix: Whisper can no longer be heard clearly outside the intended range. - fix: Translators can no longer be used without knowing the languages they require. - fix: Computers (primarily RnD console) now speak GC by default instead of Universal. - tweak: Readjusted colors of all languages to make them easier to read. --- Content.Server/Chat/Systems/ChatSystem.cs | 19 +++++++------- Content.Server/Language/TranslatorSystem.cs | 3 +++ .../Radio/EntitySystems/RadioSystem.cs | 6 +++-- Content.Shared/Language/LanguagePrototype.cs | 6 ++++- Resources/Locale/en-US/language/languages.ftl | 3 +++ .../Prototypes/Entities/Mobs/NPCs/animals.yml | 25 ++++++++++++++++-- .../Entities/Objects/Devices/translators.yml | 1 + .../Computers/base_structurecomputers.yml | 9 +++++++ Resources/Prototypes/Language/languages.yml | 26 ++++++++++++++----- 9 files changed, 77 insertions(+), 21 deletions(-) diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 022520abeb0..b41d2deda6f 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -78,6 +78,7 @@ public sealed partial class ChatSystem : SharedChatSystem public const int WhisperMuffledRange = 5; // how far whisper goes at all, in world units public const string DefaultAnnouncementSound = "/Audio/Announcements/announce.ogg"; public const float DefaultObfuscationFactor = 0.2f; // Percentage of symbols in a whispered message that can be seen even by "far" listeners + public readonly Color DefaultSpeakColor = Color.White; private bool _loocEnabled = true; private bool _deadLoocEnabled; @@ -525,28 +526,25 @@ private void SendEntityWhisper( { // Scenario 1: the listener can clearly understand the message result = perceivedMessage; - wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-wrap-message", name, perceivedMessage, language); + wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-wrap-message", name, result, language); } else if (_interactionSystem.InRangeUnobstructed(source, listener, WhisperMuffledRange, Shared.Physics.CollisionGroup.Opaque)) { - // Scenerio 2: if the listener is too far, they only hear fragments of the message + // Scenario 2: if the listener is too far, they only hear fragments of the message result = ObfuscateMessageReadability(perceivedMessage); - wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-wrap-message", nameIdentity, perceivedMessage, language); + wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-wrap-message", nameIdentity, result, language); } else { // Scenario 3: If listener is too far and has no line of sight, they can't identify the whisperer's identity result = ObfuscateMessageReadability(perceivedMessage); - wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-unknown-wrap-message", string.Empty, perceivedMessage, language); + wrappedMessage = WrapWhisperMessage(source, "chat-manager-entity-whisper-unknown-wrap-message", string.Empty, result, language); } _chatManager.ChatMessageToOne(ChatChannel.Whisper, result, wrappedMessage, source, false, session.Channel); } - var replayWrap = Loc.GetString("chat-manager-entity-whisper-wrap-message", - ("color", language.SpeechOverride.Color), - ("entityName", name), - ("message", FormattedMessage.EscapeText(message))); + var replayWrap = WrapWhisperMessage(source, "chat-manager-entity-whisper-wrap-message", name, FormattedMessage.EscapeText(message), language); _replay.RecordServerMessage(new ChatMessage(ChatChannel.Whisper, message, replayWrap, GetNetEntity(source), null, MessageRangeHideChatForReplay(range))); var ev = new EntitySpokeEvent(source, message, channel, true, language); @@ -881,9 +879,12 @@ public string WrapMessage(LocId wrapId, InGameICChatType chatType, EntityUid sou var verbId = language.SpeechOverride.SpeechVerbOverrides is { } verbsOverride ? _random.Pick(verbsOverride).ToString() : _random.Pick(speech.SpeechVerbStrings); + var color = DefaultSpeakColor; + if (language.SpeechOverride.Color is { } colorOverride) + color = Color.InterpolateBetween(color, colorOverride, colorOverride.A); return Loc.GetString(wrapId, - ("color", language.SpeechOverride.Color), + ("color", color), ("entityName", entityName), ("verb", Loc.GetString(verbId)), ("fontType", language.SpeechOverride.FontId ?? speech.FontId), diff --git a/Content.Server/Language/TranslatorSystem.cs b/Content.Server/Language/TranslatorSystem.cs index adbfe2d681f..24f4cb17298 100644 --- a/Content.Server/Language/TranslatorSystem.cs +++ b/Content.Server/Language/TranslatorSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Language; +using Content.Shared.Language.Components; using Content.Shared.Language.Systems; using Content.Shared.PowerCell; using Content.Shared.Language.Components.Translators; @@ -173,11 +174,13 @@ private void UpdateBoundIntrinsicComp(HandheldTranslatorComponent comp, HoldsTra { intrinsic.SpokenLanguages = [..comp.SpokenLanguages]; intrinsic.UnderstoodLanguages = [..comp.UnderstoodLanguages]; + intrinsic.RequiredLanguages = [..comp.RequiredLanguages]; } else { intrinsic.SpokenLanguages.Clear(); intrinsic.UnderstoodLanguages.Clear(); + intrinsic.RequiredLanguages.Clear(); } intrinsic.Enabled = isEnabled; diff --git a/Content.Server/Radio/EntitySystems/RadioSystem.cs b/Content.Server/Radio/EntitySystems/RadioSystem.cs index 7232a23d2c8..5fce6f770a2 100644 --- a/Content.Server/Radio/EntitySystems/RadioSystem.cs +++ b/Content.Server/Radio/EntitySystems/RadioSystem.cs @@ -178,9 +178,11 @@ public void SendRadioMessage(EntityUid messageSource, string message, RadioChann private string WrapRadioMessage(EntityUid source, RadioChannelPrototype channel, string name, string message, LanguagePrototype language) { + // TODO: code duplication with ChatSystem.WrapMessage var speech = _chat.GetSpeechVerb(source, message); - // TODO this is done just to preserve the old look of radio, perhaps we can change it as well? - var languageColor = language.SpeechOverride.Color == Color.White ? channel.Color : language.SpeechOverride.Color; + var languageColor = channel.Color; + if (language.SpeechOverride.Color is { } colorOverride) + languageColor = Color.InterpolateBetween(languageColor, colorOverride, colorOverride.A); return Loc.GetString(speech.Bold ? "chat-radio-message-wrap-bold" : "chat-radio-message-wrap", ("color", channel.Color), diff --git a/Content.Shared/Language/LanguagePrototype.cs b/Content.Shared/Language/LanguagePrototype.cs index d3a977202be..d40a7b40681 100644 --- a/Content.Shared/Language/LanguagePrototype.cs +++ b/Content.Shared/Language/LanguagePrototype.cs @@ -37,8 +37,12 @@ public sealed class LanguagePrototype : IPrototype [DataDefinition] public sealed partial class SpeechOverrideInfo { + /// + /// Color which text in this language will be blended with. + /// Alpha blending is used, which means the alpha component of the color controls the intensity of this color. + /// [DataField] - public Color Color = Color.White; + public Color? Color = null; [DataField] public string? FontId; diff --git a/Resources/Locale/en-US/language/languages.ftl b/Resources/Locale/en-US/language/languages.ftl index 56dbe04f462..14d477b7840 100644 --- a/Resources/Locale/en-US/language/languages.ftl +++ b/Resources/Locale/en-US/language/languages.ftl @@ -70,5 +70,8 @@ language-Crab-description = Click! language-Kobold-name = Kobold language-Kobold-description = Hiss! +language-Hissing-name = Hissing +language-Hissing-description = Hiss! + language-Sign-name = Sign Language language-Sign-description = The standard Galactic sign language, used by those that are unable to speak Galactic Common or at all. diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 7f3b1cae588..92ede14d3ec 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2442,6 +2442,12 @@ - type: Tag tags: - VimPilot + - type: LanguageKnowledge + speaks: + - Hissing + understands: + - Hissing + - type: entity name: possum @@ -2519,6 +2525,11 @@ - type: Tag tags: - VimPilot + - type: LanguageKnowledge + speaks: + - Hissing + understands: + - Hissing - type: entity name: fox @@ -2886,9 +2897,9 @@ - Syndicate - type: LanguageKnowledge speaks: - - Xeno + - Cat understands: - - Xeno + - Cat - GalacticCommon - type: entity @@ -3060,6 +3071,11 @@ barkMultiplier: 10 barks: - Sloth + - type: LanguageKnowledge # WHAT DOES THE SLOTH SAY??????? + speaks: + - Hissing + understands: + - Hissing - type: entity name: ferret @@ -3119,6 +3135,11 @@ - type: Tag tags: - VimPilot + - type: LanguageKnowledge + speaks: + - Hissing + understands: + - Hissing - type: entity name: hamster diff --git a/Resources/Prototypes/Entities/Objects/Devices/translators.yml b/Resources/Prototypes/Entities/Objects/Devices/translators.yml index d75b7af7fd6..6aa7947c82d 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/translators.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/translators.yml @@ -215,6 +215,7 @@ - Pig - Crab - Kobold + - Hissing requires: - GalacticCommon setLanguageOnInteract: false diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml index 204e06c8600..b7ea7c6f6ca 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml @@ -61,3 +61,12 @@ - type: LightningTarget priority: 1 - type: RequireProjectileTarget + - type: LanguageSpeaker + currentLanguage: GalacticCommon + - type: LanguageKnowledge + speaks: + - GalacticCommon + - RobotTalk + understands: + - GalacticCommon + - RobotTalk diff --git a/Resources/Prototypes/Language/languages.yml b/Resources/Prototypes/Language/languages.yml index 566ee082914..65af93e02d4 100644 --- a/Resources/Prototypes/Language/languages.yml +++ b/Resources/Prototypes/Language/languages.yml @@ -39,7 +39,7 @@ - type: language id: Bubblish speech: - color: "#0077aa" + color: "#00a3e2dd" fontId: RubikBubbles obfuscation: !type:SyllableObfuscation @@ -56,7 +56,7 @@ - type: language id: Moffic speech: - color: "#869b29" + color: "#c7df2edd" fontId: Copperplate obfuscation: !type:SyllableObfuscation @@ -125,7 +125,7 @@ - type: language id: RootSpeak speech: - color: "#804000" + color: "#ce5e14dd" fontId: Noganas obfuscation: !type:SyllableObfuscation @@ -142,7 +142,7 @@ - type: language id: Nekomimetic speech: - color: "#803B56" + color: "#df57aaee" fontId: Manga obfuscation: !type:SyllableObfuscation @@ -202,7 +202,7 @@ - type: language id: Draconic speech: - color: "#228b22" + color: "#2aca2add" obfuscation: !type:SyllableObfuscation minSyllables: 2 @@ -297,7 +297,7 @@ - type: language id: Canilunzt speech: - color: "#b97a57" + color: "#d69b3dcc" obfuscation: !type:SyllableObfuscation minSyllables: 1 @@ -365,7 +365,7 @@ - type: language id: SolCommon speech: - color: "#8282fb" + color: "#8282fbaa" obfuscation: !type:SyllableObfuscation minSyllables: 1 @@ -576,6 +576,18 @@ - ss - ee +- type: language + id: Hissing + obfuscation: + !type:SyllableObfuscation + minSyllables: 2 + maxSyllables: 4 + replacement: + - hss + - iss + - ss + - is + # Example of a sign language. Not currently used anyhow. - type: language id: Sign From 80eb4568ee8a592cde36c163f9b77e4c23272316 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Wed, 31 Jul 2024 19:57:35 -0400 Subject: [PATCH 24/82] Comms Console Announcer Fixes (#610) # Description Cherry-Picks https://github.com/Fansana/floofstation1/pull/50 This fixes some mistakes in the code for Michael's announcements. --------- Co-authored-by: Fansana --- Content.Server/AlertLevel/AlertLevelSystem.cs | 2 +- .../Audio/Announcers/Michael/alerts/delta.ogg | Bin 0 -> 589590 bytes .../shuttle/{shuttle_called.ogg => called.ogg} | Bin .../shuttle/{shuttle_dock.ogg => dock.ogg} | Bin .../{shuttle_recalled.ogg => recalled.ogg} | Bin .../NEIL/alerts/{code_blue.ogg => blue.ogg} | Bin .../NEIL/alerts/{code_delta.ogg => delta.ogg} | Bin .../alerts/{code_epsilon.ogg => epsilon.ogg} | Bin .../NEIL/alerts/{code_gamma.ogg => gamma.ogg} | Bin .../NEIL/alerts/{code_green.ogg => green.ogg} | Bin .../NEIL/alerts/{code_red.ogg => red.ogg} | Bin .../alerts/{code_violet.ogg => violet.ogg} | Bin .../NEIL/alerts/{code_white.ogg => white.ogg} | Bin .../alerts/{code_yellow.ogg => yellow.ogg} | Bin Resources/Prototypes/Announcers/michael.yml | 4 ++-- 15 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 Resources/Audio/Announcers/Michael/alerts/delta.ogg rename Resources/Audio/Announcers/Michael/shuttle/{shuttle_called.ogg => called.ogg} (100%) rename Resources/Audio/Announcers/Michael/shuttle/{shuttle_dock.ogg => dock.ogg} (100%) rename Resources/Audio/Announcers/Michael/shuttle/{shuttle_recalled.ogg => recalled.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_blue.ogg => blue.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_delta.ogg => delta.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_epsilon.ogg => epsilon.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_gamma.ogg => gamma.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_green.ogg => green.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_red.ogg => red.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_violet.ogg => violet.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_white.ogg => white.ogg} (100%) rename Resources/Audio/Announcers/NEIL/alerts/{code_yellow.ogg => yellow.ogg} (100%) diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index d856fab9da7..b290d95a5c1 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -150,7 +150,7 @@ public void SetLevel(EntityUid station, string level, bool playSound, bool annou if (Loc.TryGetString(detail.Announcement, out var locAnnouncement)) announcement = locAnnouncement; - var alert = _announcer.GetAnnouncementId($"Alert{level}"); + var alert = $"alert{char.ToUpperInvariant(level[0]) + level[1..]}"; if (playSound) _announcer.SendAnnouncementAudio(alert, _stationSystem.GetInOwningStation(station)); if (announce) diff --git a/Resources/Audio/Announcers/Michael/alerts/delta.ogg b/Resources/Audio/Announcers/Michael/alerts/delta.ogg new file mode 100644 index 0000000000000000000000000000000000000000..95bea66f77abc7d7c5c18f4002e6e024c6af9811 GIT binary patch literal 589590 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%0DJrECQ=CI$Q~Q$9>_5~MK~Ne?|}=Y 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

gcrVH<-HrOGNy_ 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%0A;K^6abM*N3T(;>$fpIL&j+#Mh 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 Date: Wed, 31 Jul 2024 23:57:48 +0000 Subject: [PATCH 25/82] Automatic Changelog Update (#618) --- Resources/Changelog/Changelog.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 68ef06efebb..cb0933affcb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4715,3 +4715,19 @@ Entries: message: Fixed the Uncategorized category not being hidden when empty id: 6193 time: '2024-07-31T23:32:52.0000000+00:00' +- author: Mnemotechnician + changes: + - type: Fix + message: Whisper can no longer be heard clearly outside the intended range. + - type: Fix + message: >- + Translators can no longer be used without knowing the languages they + require. + - type: Fix + message: >- + Computers (primarily RnD console) now speak GC by default instead of + Universal. + - type: Tweak + message: Readjusted colors of all languages to make them easier to read. + id: 6194 + time: '2024-07-31T23:57:25.0000000+00:00' From 6d1ae1502811d05e1192a27cd8abf9c2615aacd3 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Thu, 1 Aug 2024 10:37:45 +0800 Subject: [PATCH 26/82] More Loadout Items: Wave 2 (#616) # Description Adds significantly more items to Loadouts. Notably, it adds almost every item from the ClothesMate, a decent amount of clothing from the AutoDrobe, and some missing clothes from the WinterDrobe. Other changes: - Restrict Command from wearing uniforms outside of their job - Limit Security's non-sec uniform/head/mask options to those that maintain the Security aesthetic, such as clothes that are red, black, and some blue/beige, and all MNK gear. - Restrict all shoes from Dionas and Harpies properly. I have a feeling that there's a better way to get around this issue, perhaps by preventing these species from selecting items that are based on `ClothingShoesBase`. - Make all colored jumpsuits available to all Civilians, and select jumpsuits for departments such as white/blue for Medical, white/purple for Epistemics, and yellow for Engineering. ## New Items ### Uniform Command cannot select any listed uniforms. Security (except HoS) can only select items marked with (*). - [2] white shirt and purple skirt - [2] yellow skirt with rose hoodie - [2] turquoise hoodie and shorts - [2] casual blue jumpsuit - [2] casual blue jumpskirt - [2] casual purple jumpsuit - [2] casual purple jumpskirt - [2] casual red jumpsuit (*) - [2] casual red jumpskirt (*) - [2] flannel jumpsuit (*) - [2] black hawaiian shirt - [2] blue hawaiian shirt - [2] red hawaiian shirt (*) - [2] yellow hawaiian shirt - [2] brown sweater with jeans - [2] green sweater with jeans - [2] red sweater with jeans (*) - [2] loungewear (*) - [2] sober sweater - [2] white t-shirt and jeans - [2] gray t-shirt and jeans (*) - [2] peach t-shirt and jeans (*) - [2] decorated turtle skirt (*) - [3] kimono - [3] geisha dress (*) - [3] bartender's uniform (jumpsuit) - [3] bartender's uniform (jumpskirt) - I find the bartender's uniform to be a neutral and very versatile piece, fitting the MNK aesthetic. This uniform with a white shirt and black bottom pairs well with the MNK black jacket and flannel jumpsuits. For this reason, I think the bartender's uniform should be accessible to everyone. - [3] lost tourist uniform - [3] black schoolgirl uniform (*) - [3] tan blazer schoolgirl uniform - [3] blue schoolgirl uniform - [3] cyan schoolgirl uniform - [3] dusk schoolgirl uniform - [3] green schoolgirl uniform - [3] orange schoolgirl uniform - [3] pink schoolgirl uniform - [3] purple schoolgirl uniform - [3] red schoolgirl uniform (*) - [4] red dress (*) ## Outer - [1] vest - [3] gentle coat - [3] jensen coat - [3] trench coat - [3] Denim jacket - [3] blue flannel jacket - [3] green flannel jacket - [3] red flannel jacket ## Head Security (including HoS) can only select items marked with (*). - [1] mime cap (*) - [1] mime cap (flipped) (*) - The mime cap is just a plain white cap, the same as the other caps in the Loadouts. - [2] beret (*) - [2] French beret (*) - [2] bowler hat (*) - [2] brown flatcap - [2] grey flatcap (*) - There already exists a "brown flat cap" (note the extra space) in the Loadouts, but it's a different item with a different style. - [2] black cowboy hat (*) - [2] brown cowboy hat - [2] red cowboy hat (*) - [2] grey cowboy hat (*) - [2] white cowboy hat (*) - [2] brown fedora (chocolate) - [2] grey fedora (*) - [2] fez (*) - [2] fishing cap - [4] rasta hat ## Shoes - [2] fishing boots - [2] tourist shoes - [3] high-heeled boots - [3] coder socks - [3] bee socks ## Neck Added some missing scarves and pins. Pins suggested by @Tmanzxd - [1] striped black scarf - [1] striped brown scarf - [1] striped light blue scarf - [1] striped orange scarf - [1] striped purple scarf - [1] black tie - [1] blue tie - [1] green tie - [1] red-tie - [1] white tie - [2] headphones Added bedsheets. Bedsheets are restricted to Civilian (excluding HoP) unless stated otherwise. - [2] black bedsheet - [2] blue bedsheet - [2] brown bedsheet - [2] green bedsheet - [2] grey bedsheet - [2] NT bedsheet - [2] orange bedsheet - Usable by all Logistics roles - [2] purple bedsheet - Usable by all Epistemics roles. We are one step closer to RD wizard - [2] rainbow bedsheet - [2] red bedsheet - Usable by all Security roles - [2] white bedsheet - [2] yellow bedsheet - Usable by all Engineering roles - [3] cosmos bedsheet ## Mask New category. There is conveniently already localization for the Mask category. Security (including HoS) can only select items marked with (*). - [1] black bandana (*) - [1] blue bandana - [1] brown bandana - [1] gold bandana - [1] green bandana - [1] grey bandana - [1] red bandana (*) - [1] skull bandana (*) - [1] gas mask (*) - [1] sterile mask (*) - [2] mercenary bandana - [2] muzzle (*) - [2] neck gaiter (*) - [2] red neck gaiter (*) ## Eyes - [1] glasses - Can't be used by characters with the Nearsighted trait as they already spawn with glasses - [2] jamjar glasses - [2] jensen glasses - [2] cheap sunglasses - A cheaper alternative to sunglasses (5 loadout points), without flash protection ## Items - [1] leather satchel - Leather satchels used to be a default backpack type in SS13 - [3] fire extinguisher - For when you need to put out fires from fire anomalies and pyromancy - [4] crayon box - Crew can use this to ~~vandalize sec front~~ decorate their workplaces with love - [4] barber scissors ## Jobs ### Chemist Suggested by @Tmanzxd - [1] heavy nitrile gloves - [1] chemistry tie - [1] enclosed shoes - [2] safety glasses - [2] chemical resistant apron - [2] formal chemistry suit ### Captain/HoP - [1] inspection gloves ### Head of Personnel - [2] Ian's bedsheet ### Medical - [2] medical bedsheet ### Clown - [1] sexy clown mask - [1] clown winter boots - [2] clown's bedsheet - [2] robes of the honkmother - [2] clown winter coat ### Mime - [1] sad mime mask - [1] scary mime mask - [1] sexy mime mask - [1] mime's winter boots - [2] mime's bedsheet - [2] mime's winter coat ### Cargo Technician - [1] logistics winter boots - [2] logistics winter coat ### Salvage Specialist - [2] mining winter coat ---

Media (Character Lookbook)

## Stylish Cowboy ![image](https://github.com/user-attachments/assets/23d78f00-a601-4fd7-8139-990850afc912) **Loadout:** black cowboy hat, bartender's uniform (jumpsuit), striped black scarf, red flannel jacket, fingerless gloves, fishing boots ## Secret agent ![image](https://github.com/user-attachments/assets/8d89a944-c147-47ce-b06a-21a2d0dee4dc) **Loadout:** french beret, cheap sunglasses, bartender's uniform (jumpskirt), MNK black jacket ## Cybernetic Tourist ![image](https://github.com/user-attachments/assets/ddd28b02-5211-4803-a5ae-6c37872f7d94) **Loadout:** glasses, blue hawaiian shirt, striped light blue scarf, geta sandals ## Cowgirl ![image](https://github.com/user-attachments/assets/25c6b5dd-30ff-4096-a710-fb785219958a) **Loadout:** white cowboy hat, MNK gym bra, high-heeled boots ## Cat schoolgirl ![image](https://github.com/user-attachments/assets/f97cd552-ddd2-49d0-8f4e-dcada261ec7f) **Loadout:** pink schoolgirl uniform, coder socks ## Olive Rancher ![image](https://github.com/user-attachments/assets/8f31921c-14e9-43c5-bd65-0c90ec9c3a5a) **Loadout:** grey cowboy hat, gray t-shirt and jeans, vest, leather shoes ## Casual ![image](https://github.com/user-attachments/assets/9610822b-cd3e-4dab-a06c-2a0f30f43866) **Loadout:** Beret, cheap sunglasses, sober sweater, laceup shoes ## French Chemist ![image](https://github.com/user-attachments/assets/325653a9-ddba-4670-bac2-67cda1d90b5c) **Loadout:** french beret, formal chemistry suit, chemistry tie, chemical resistant apron, heavy nitrile gloves, enclosed shoes (Hey Heidi!) ## RD Wizard ![image](https://github.com/user-attachments/assets/8807e3a8-12ec-4ed7-80c7-62952ebe39f0) *For my next magic trick, I cast Pyromancy!* **Loadout:** top hat, glasses, mystagogue lab coat, purple bedsheet, fishing boots

--- # Changelog :cl: Skubman - add: Added dozens of new clothes and items to Loadouts, including the new Mask category. Have fun dressing up your characters! - tweak: Restrict Command Loadouts from selecting uniforms outside of their job. - tweak: Limit the selection in Security Loadouts of non-sec uniforms, hats, and masks to those that maintain the Security aesthetic. - tweak: Made all types of colored jumpsuits in Loadouts available to Civilian roles (excluding HoP), and suitable jumpsuits to Epistemics, Engineering, and Medical. - fix: Prevent dionas and harpies from selecting shoes in Loadouts. --- .../Loadouts/Jobs/Heads/captain.yml | 5 + .../Loadouts/Jobs/Heads/chiefEngineer.yml | 5 + .../Jobs/Heads/chiefMedicalOfficer.yml | 5 + .../Loadouts/Jobs/Heads/command.yml | 12 + .../Loadouts/Jobs/Heads/headOfPersonnel.yml | 17 + .../Loadouts/Jobs/Heads/headOfSecurity.yml | 5 + .../Loadouts/Jobs/Heads/quarterMaster.yml | 5 + .../Loadouts/Jobs/Heads/researchDirector.yml | 5 + Resources/Prototypes/Loadouts/Jobs/cargo.yml | 44 + .../Prototypes/Loadouts/Jobs/medical.yml | 106 ++ .../Prototypes/Loadouts/Jobs/security.yml | 1 + .../Prototypes/Loadouts/Jobs/service.yml | 143 +++ Resources/Prototypes/Loadouts/categories.yml | 3 + Resources/Prototypes/Loadouts/eyes.yml | 36 + Resources/Prototypes/Loadouts/hands.yml | 8 + Resources/Prototypes/Loadouts/head.yml | 259 +++++ Resources/Prototypes/Loadouts/items.yml | 38 + Resources/Prototypes/Loadouts/mask.yml | 143 +++ Resources/Prototypes/Loadouts/neck.yml | 304 ++++++ .../Prototypes/Loadouts/outerClothing.yml | 57 + Resources/Prototypes/Loadouts/shoes.yml | 92 ++ Resources/Prototypes/Loadouts/uniform.yml | 981 ++++++++++++++++-- 22 files changed, 2184 insertions(+), 90 deletions(-) create mode 100644 Resources/Prototypes/Loadouts/Jobs/Heads/command.yml create mode 100644 Resources/Prototypes/Loadouts/mask.yml diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/captain.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/captain.yml index d8849472ff4..d77dabf557c 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/captain.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/captain.yml @@ -130,6 +130,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - Captain diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/chiefEngineer.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/chiefEngineer.yml index c4905591124..4de22bc9593 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/chiefEngineer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/chiefEngineer.yml @@ -39,6 +39,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - ChiefEngineer diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/chiefMedicalOfficer.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/chiefMedicalOfficer.yml index c75c871b011..163bad29261 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/chiefMedicalOfficer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/chiefMedicalOfficer.yml @@ -61,6 +61,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - ChiefMedicalOfficer diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/command.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/command.yml new file mode 100644 index 00000000000..c8c98b5eb44 --- /dev/null +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/command.yml @@ -0,0 +1,12 @@ +- type: loadout + id: LoadoutCommandGlovesInspection + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - HeadOfPersonnel + - Captain + items: + - ClothingHandsGlovesInspection diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/headOfPersonnel.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/headOfPersonnel.yml index 3d3799c0adf..e6bc6ada049 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/headOfPersonnel.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/headOfPersonnel.yml @@ -97,8 +97,25 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - HeadOfPersonnel items: - ClothingShoesBootsWinterHeadOfPersonel + +- type: loadout + id: LoadoutCommandHOPBedsheetIan + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - HeadOfPersonnel + items: + - BedsheetIan diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/headOfSecurity.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/headOfSecurity.yml index 4f0d785b14d..7be380d7474 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/headOfSecurity.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/headOfSecurity.yml @@ -168,6 +168,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - HeadOfSecurity diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/quarterMaster.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/quarterMaster.yml index 3359d8f5d74..15adc7d44e8 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/quarterMaster.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/quarterMaster.yml @@ -64,6 +64,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - Quartermaster diff --git a/Resources/Prototypes/Loadouts/Jobs/Heads/researchDirector.yml b/Resources/Prototypes/Loadouts/Jobs/Heads/researchDirector.yml index 87cb0db1790..5d06e54efab 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Heads/researchDirector.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Heads/researchDirector.yml @@ -50,6 +50,11 @@ cost: 1 exclusive: true requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy - !type:CharacterJobRequirement jobs: - ResearchDirector diff --git a/Resources/Prototypes/Loadouts/Jobs/cargo.yml b/Resources/Prototypes/Loadouts/Jobs/cargo.yml index 87463862010..cdc83a3c0f7 100644 --- a/Resources/Prototypes/Loadouts/Jobs/cargo.yml +++ b/Resources/Prototypes/Loadouts/Jobs/cargo.yml @@ -1,3 +1,47 @@ +# Cargo technician +- type: loadout + id: LoadoutCargoOuterWinterCargo + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - CargoTechnician + items: + - ClothingOuterWinterCargo + +- type: loadout + id: LoadoutCargoShoesBootsWinterCargo + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - CargoTechnician + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesBootsWinterCargo + +# Salvage specialist + +- type: loadout + id: LoadoutCargoOuterWinterMiner + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - SalvageSpecialist + items: + - ClothingOuterWinterMiner + - type: loadout id: LoadoutCargoNeckGoliathCloak category: Jobs diff --git a/Resources/Prototypes/Loadouts/Jobs/medical.yml b/Resources/Prototypes/Loadouts/Jobs/medical.yml index edf51747d00..f193dfaea2d 100644 --- a/Resources/Prototypes/Loadouts/Jobs/medical.yml +++ b/Resources/Prototypes/Loadouts/Jobs/medical.yml @@ -495,3 +495,109 @@ - Nearsighted items: - ClothingEyesPrescriptionMedHud + +- type: loadout + id: LoadoutMedicalEyesGlassesChemical + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + items: + - ClothingEyesGlassesChemical + +- type: loadout + id: LoadoutMedicalBedsheetMedical + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Medical + items: + - BedsheetMedical + +# Chemist PPE gear +- type: loadout + id: LoadoutMedicalUniformJumpsuitChemShirt + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + items: + - ClothingUniformJumpsuitChemShirt + +- type: loadout + id: LoadoutMedicalNeckTieChem + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + items: + - ClothingNeckTieChem + +- type: loadout + id: LoadoutMedicalShoesEnclosedChem + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesEnclosedChem + +- type: loadout + id: LoadoutMedicalOuterApronChemist + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + items: + - ClothingOuterApronChemist + +- type: loadout + id: LoadoutMedicalEyesGlassesChemist + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + items: + - ClothingEyesGlassesChemist + +- type: loadout + id: LoadoutMedicalHandsGlovesChemist + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Chemist + items: + - ClothingHandsGlovesChemist diff --git a/Resources/Prototypes/Loadouts/Jobs/security.yml b/Resources/Prototypes/Loadouts/Jobs/security.yml index 2809c9c1ae5..c6a78ad5d22 100644 --- a/Resources/Prototypes/Loadouts/Jobs/security.yml +++ b/Resources/Prototypes/Loadouts/Jobs/security.yml @@ -255,6 +255,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy - !type:CharacterJobRequirement jobs: diff --git a/Resources/Prototypes/Loadouts/Jobs/service.yml b/Resources/Prototypes/Loadouts/Jobs/service.yml index 0d3f1dc869f..4e41f035d7b 100644 --- a/Resources/Prototypes/Loadouts/Jobs/service.yml +++ b/Resources/Prototypes/Loadouts/Jobs/service.yml @@ -27,6 +27,149 @@ - ClothingHeadHatJesterAlt - ClothingShoesJester +- type: loadout + id: LoadoutServiceClownOuterWinter + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - ClothingOuterWinterClown + +- type: loadout + id: LoadoutServiceClownOuterClownPriest + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - ClothingOuterClownPriest + +- type: loadout + id: LoadoutServiceClownBootsWinter + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesBootsWinterClown + +- type: loadout + id: LoadoutServiceClownMaskSexy + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - ClothingMaskSexyClown + +- type: loadout + id: LoadoutServiceClownBedsheetClown + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + items: + - BedsheetClown + +# Mime +- type: loadout + id: LoadoutServiceMimeOuterWinter + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + items: + - ClothingOuterWinterMime + +- type: loadout + id: LoadoutServiceMimeMaskSad + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + items: + - ClothingMaskSadMime + +- type: loadout + id: LoadoutServiceMimeMaskScared + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + items: + - ClothingMaskScaredMime + +- type: loadout + id: LoadoutServiceMimeMaskSexy + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + items: + - ClothingMaskSexyMime + +- type: loadout + id: LoadoutServiceMimeShoesBootsWinter + category: Jobs + cost: 1 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesBootsWinterMime + +- type: loadout + id: LoadoutServiceMimeBedsheetMime + category: Jobs + cost: 2 + exclusive: true + requirements: + - !type:CharacterJobRequirement + jobs: + - Mime + items: + - BedsheetMime + # Bartender - type: loadout id: LoadoutServiceBartenderUniformPurple diff --git a/Resources/Prototypes/Loadouts/categories.yml b/Resources/Prototypes/Loadouts/categories.yml index 79d2d7fe2bf..0dfccb096ca 100644 --- a/Resources/Prototypes/Loadouts/categories.yml +++ b/Resources/Prototypes/Loadouts/categories.yml @@ -18,6 +18,9 @@ - type: loadoutCategory id: Jobs +- type: loadoutCategory + id: Mask + - type: loadoutCategory id: Neck diff --git a/Resources/Prototypes/Loadouts/eyes.yml b/Resources/Prototypes/Loadouts/eyes.yml index 74226604e92..fed07c6bd6f 100644 --- a/Resources/Prototypes/Loadouts/eyes.yml +++ b/Resources/Prototypes/Loadouts/eyes.yml @@ -5,6 +5,34 @@ items: - ClothingEyesEyepatch +- type: loadout + id: LoadoutEyesGlasses + category: Eyes + cost: 1 + requirements: + - !type:CharacterTraitRequirement + inverted: true + traits: + - Nearsighted + items: + - ClothingEyesGlasses + +- type: loadout + id: LoadoutEyesGlassesJamjar + category: Eyes + cost: 2 + exclusive: true + items: + - ClothingEyesGlassesJamjar + +- type: loadout + id: LoadoutEyesGlassesJensen + category: Eyes + cost: 2 + exclusive: true + items: + - ClothingEyesGlassesJensen + - type: loadout id: LoadoutEyesBlindfold category: Eyes @@ -12,6 +40,14 @@ items: - ClothingEyesBlindfold +- type: loadout + id: LoadoutItemCheapSunglasses + category: Eyes + cost: 2 + exclusive: true + items: + - ClothingEyesGlassesCheapSunglasses + - type: loadout id: LoadoutItemSunglasses category: Eyes diff --git a/Resources/Prototypes/Loadouts/hands.yml b/Resources/Prototypes/Loadouts/hands.yml index 3604678d387..6cef6420571 100644 --- a/Resources/Prototypes/Loadouts/hands.yml +++ b/Resources/Prototypes/Loadouts/hands.yml @@ -113,3 +113,11 @@ exclusive: true items: - ClothingHandsGlovesRobohands + +- type: loadout + id: LoadoutHandsGlovesFingerless + category: Hands + cost: 1 + exclusive: true + items: + - ClothingHandsGlovesFingerless diff --git a/Resources/Prototypes/Loadouts/head.yml b/Resources/Prototypes/Loadouts/head.yml index 9ee23f49e9f..e76e2f17ecd 100644 --- a/Resources/Prototypes/Loadouts/head.yml +++ b/Resources/Prototypes/Loadouts/head.yml @@ -6,6 +6,11 @@ exclusive: true items: - ClothingHeadHatBeaverHat + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadTophat @@ -23,6 +28,27 @@ items: - ClothingHeadHatFedoraBlack +- type: loadout + id: LoadoutHeadFedoraBrown + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatFedoraBrown + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutHeadFedoraGrey + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatFedoraGrey + - type: loadout id: LoadoutHeadFedoraChoc category: Head @@ -30,6 +56,11 @@ exclusive: true items: - ClothingHeadHatFedoraChoc + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadFedoraWhite @@ -54,6 +85,11 @@ exclusive: true items: - ClothingHeadHatFlatBrown + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadTinfoil @@ -79,6 +115,11 @@ exclusive: true items: - ClothingHeadHatBluesoft + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatBluesoftFlipped @@ -87,6 +128,11 @@ exclusive: true items: - ClothingHeadHatBluesoftFlipped + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatCorpsoft @@ -111,6 +157,11 @@ exclusive: true items: - ClothingHeadHatGreensoft + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatGreensoftFlipped @@ -119,6 +170,11 @@ exclusive: true items: - ClothingHeadHatGreensoftFlipped + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatGreysoft @@ -136,6 +192,22 @@ items: - ClothingHeadHatGreysoftFlipped +- type: loadout + id: LoadoutHeadHatMimesoft + category: Head + cost: 1 + exclusive: true + items: + - ClothingHeadHatMimesoft + +- type: loadout + id: LoadoutHeadHatMimesoftFlipped + category: Head + cost: 1 + exclusive: true + items: + - ClothingHeadHatMimesoftFlipped + - type: loadout id: LoadoutHeadHatOrangesoft category: Head @@ -143,6 +215,11 @@ exclusive: true items: - ClothingHeadHatOrangesoft + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatOrangesoftFlipped @@ -151,6 +228,11 @@ exclusive: true items: - ClothingHeadHatOrangesoftFlipped + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatPurplesoft @@ -159,6 +241,11 @@ exclusive: true items: - ClothingHeadHatPurplesoft + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatPurplesoftFlipped @@ -167,6 +254,11 @@ exclusive: true items: - ClothingHeadHatPurplesoftFlipped + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatRedsoft @@ -191,6 +283,11 @@ exclusive: true items: - ClothingHeadHatYellowsoft + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadHatYellowsoftFlipped @@ -199,6 +296,11 @@ exclusive: true items: - ClothingHeadHatYellowsoftFlipped + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security # Headbands - type: loadout @@ -216,6 +318,11 @@ exclusive: true items: - ClothingHeadBandBlue + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadBandGold @@ -224,6 +331,11 @@ exclusive: true items: - ClothingHeadBandGold + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadBandGreen @@ -232,6 +344,11 @@ exclusive: true items: - ClothingHeadBandGreen + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadBandGrey @@ -240,6 +357,11 @@ exclusive: true items: - ClothingHeadBandGrey + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadBandRed @@ -264,6 +386,11 @@ exclusive: true items: - ClothingHeadBandMerc + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security - type: loadout id: LoadoutHeadBandBrown @@ -272,3 +399,135 @@ exclusive: true items: - ClothingHeadBandBrown + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutHeadFishCap + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadFishCap + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutHeadRastaHat + category: Head + cost: 4 + exclusive: true + items: + - ClothingHeadRastaHat + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutHeadFez + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatFez + +- type: loadout + id: LoadoutHeadBowlerHat + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatBowlerHat + +# Flatcaps +- type: loadout + id: LoadoutHeadGreyFlatcap + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatGreyFlatcap + +- type: loadout + id: LoadoutHeadBrownFlatcap + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatBrownFlatcap + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +# Berets +- type: loadout + id: LoadoutHeadBeret + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatBeret + +- type: loadout + id: LoadoutHeadBeretFrench + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatBeretFrench + +# Cowboy hats +- type: loadout + id: LoadoutHeadCowboyBrown + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyBrown + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutHeadCowboyBlack + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyBlack + +- type: loadout + id: LoadoutHeadCowboyWhite + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyWhite + +- type: loadout + id: LoadoutHeadCowboyGrey + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyGrey + +- type: loadout + id: LoadoutHeadCowboyRed + category: Head + cost: 2 + exclusive: true + items: + - ClothingHeadHatCowboyRed diff --git a/Resources/Prototypes/Loadouts/items.yml b/Resources/Prototypes/Loadouts/items.yml index 35dcbf7b9ed..71c44d365d4 100644 --- a/Resources/Prototypes/Loadouts/items.yml +++ b/Resources/Prototypes/Loadouts/items.yml @@ -183,6 +183,13 @@ items: - CrowbarRed +- type: loadout + id: LoadoutItemFireExtinguisher + category: Items + cost: 3 + items: + - FireExtinguisher + #Misc Items - type: loadout id: LoadoutItemPAI @@ -191,12 +198,43 @@ items: - PersonalAI +- type: loadout + id: LoadoutItemBackpackSatchelLeather + category: Items + cost: 1 + items: + - ClothingBackpackSatchelLeather + requirements: + - !type:CharacterJobRequirement + inverted: true + jobs: + - Prisoner + - type: loadout id: LoadoutItemWaistbag category: Items cost: 2 items: - ClothingBeltStorageWaistbag + requirements: + - !type:CharacterJobRequirement + inverted: true + jobs: + - Prisoner + +- type: loadout + id: LoadoutItemCrayonBox + category: Items + cost: 4 + items: + - CrayonBox + +- type: loadout + id: LoadoutItemBarberScissors + category: Items + cost: 4 + items: + - BarberScissors - type: loadout id: LoadoutSolCommonTranslator diff --git a/Resources/Prototypes/Loadouts/mask.yml b/Resources/Prototypes/Loadouts/mask.yml new file mode 100644 index 00000000000..67be1e70ffd --- /dev/null +++ b/Resources/Prototypes/Loadouts/mask.yml @@ -0,0 +1,143 @@ +- type: loadout + id: LoadoutMaskSterile + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskSterile + +- type: loadout + id: LoadoutMaskMuzzle + category: Mask + cost: 2 + exclusive: true + items: + - ClothingMaskMuzzle + +- type: loadout + id: LoadoutMaskGas + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskGas + +# Maskbands +- type: loadout + id: LoadoutMaskBandBlack + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandBlack + +- type: loadout + id: LoadoutMaskBandBlue + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandBlue + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutMaskBandGold + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandGold + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutMaskBandGreen + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandGreen + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutMaskBandGrey + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandGrey + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutMaskBandRed + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandRed + +- type: loadout + id: LoadoutMaskBandSkull + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandSkull + +- type: loadout + id: LoadoutMaskBandMerc + category: Mask + cost: 2 + exclusive: true + items: + - ClothingMaskBandMerc + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +- type: loadout + id: LoadoutMaskBandBrown + category: Mask + cost: 1 + exclusive: true + items: + - ClothingMaskBandBrown + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + +# Gaiters +- type: loadout + id: LoadoutMaskNeckGaiter + category: Mask + cost: 2 + exclusive: true + items: + - ClothingMaskNeckGaiter + +- type: loadout + id: LoadoutMaskNeckGaiterRed + category: Mask + cost: 2 + exclusive: true + items: + - ClothingMaskNeckGaiterRed diff --git a/Resources/Prototypes/Loadouts/neck.yml b/Resources/Prototypes/Loadouts/neck.yml index eb933de29ee..c7fc7003653 100644 --- a/Resources/Prototypes/Loadouts/neck.yml +++ b/Resources/Prototypes/Loadouts/neck.yml @@ -1,3 +1,12 @@ +- type: loadout + id: LoadoutNeckHeadphones + category: Neck + cost: 2 + exclusive: true + items: + - ClothingNeckHeadphones + +# Scarves - type: loadout id: LoadoutNeckScarfStripedRed category: Neck @@ -22,6 +31,46 @@ items: - ClothingNeckScarfStripedGreen +- type: loadout + id: LoadoutNeckScarfStripedBlack + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckScarfStripedBlack + +- type: loadout + id: LoadoutNeckScarfStripedBrown + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckScarfStripedBrown + +- type: loadout + id: LoadoutNeckScarfStripedLightBlue + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckScarfStripedLightBlue + +- type: loadout + id: LoadoutNeckScarfStripedOrange + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckScarfStripedOrange + +- type: loadout + id: LoadoutNeckScarfStripedPurple + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckScarfStripedPurple + - type: loadout id: LoadoutNeckScarfStripedZebra category: Neck @@ -30,6 +79,48 @@ items: - ClothingNeckScarfStripedZebra +# Ties +- type: loadout + id: LoadoutNeckTieRed + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckTieRed + +- type: loadout + id: LoadoutNeckTieWhite + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckTieWhite + +- type: loadout + id: LoadoutNeckTieBlack + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckTieBlack + +- type: loadout + id: LoadoutNeckTieBlue + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckTieBlue + +- type: loadout + id: LoadoutNeckTieGreen + category: Neck + cost: 1 + exclusive: true + items: + - ClothingNeckTieGreen + + #Pride Accessories - type: loadout id: LoadoutItemsPrideLGBTPin @@ -102,3 +193,216 @@ exclusive: true items: - ClothingNeckTransPin + +# Bedsheets +- type: loadout + id: LoadoutNeckBedsheetBlack + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetBlack + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetBlue + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetBlue + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetBrown + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetBrown + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetCosmos + category: Neck + cost: 3 + exclusive: true + items: + - BedsheetCosmos + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetGreen + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetGreen + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetGrey + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetGrey + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetOrange + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetOrange + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Logistics + - !type:CharacterJobRequirement + inverted: true + jobs: + - HeadOfPersonnel # Need to blacklist HoP and not command so other heads can wear this bedsheet + +- type: loadout + id: LoadoutNeckBedsheetPurple + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetPurple + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Epistemics + - !type:CharacterJobRequirement + inverted: true + jobs: + - HeadOfPersonnel # Need to blacklist HoP and not command so other heads can wear this bedsheet + +- type: loadout + id: LoadoutNeckBedsheetRainbow + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetRainbow + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetRed + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetRed + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Security + - !type:CharacterJobRequirement + inverted: true + jobs: + - HeadOfPersonnel # Need to blacklist HoP and not command so other heads can wear this bedsheet + +- type: loadout + id: LoadoutNeckBedsheetWhite + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetWhite + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutNeckBedsheetYellow + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetYellow + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Engineering + - !type:CharacterJobRequirement + inverted: true + jobs: + - HeadOfPersonnel # Need to blacklist HoP and not command so other heads can wear this bedsheet + +- type: loadout + id: LoadoutNeckBedsheetNT + category: Neck + cost: 2 + exclusive: true + items: + - BedsheetNT + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command diff --git a/Resources/Prototypes/Loadouts/outerClothing.yml b/Resources/Prototypes/Loadouts/outerClothing.yml index c52f35b0f5d..38ba17b6a3b 100644 --- a/Resources/Prototypes/Loadouts/outerClothing.yml +++ b/Resources/Prototypes/Loadouts/outerClothing.yml @@ -54,6 +54,13 @@ items: - ClothingOuterVestValet +- type: loadout + id: LoadoutOuterVest + category: Outer + cost: 1 + items: + - ClothingOuterVest + # Letterman Jackets - type: loadout id: LoadoutOuterCoatLettermanBlue @@ -168,3 +175,53 @@ cost: 2 items: - ClothingOuterZhCorporateJacket + +- type: loadout + id: LoadoutOuterDenimJacket + category: Outer + cost: 3 + items: + - ClothingOuterDenimJacket + +# Flannel +- type: loadout + id: LoadoutOuterFlannelRed + category: Outer + cost: 3 + items: + - ClothingOuterFlannelRed + +- type: loadout + id: LoadoutOuterFlannelGreen + category: Outer + cost: 3 + items: + - ClothingOuterFlannelGreen + +- type: loadout + id: LoadoutOuterFlannelBlue + category: Outer + cost: 3 + items: + - ClothingOuterFlannelBlue + +- type: loadout + id: LoadoutOuterCoatTrench + category: Outer + cost: 3 + items: + - ClothingOuterCoatTrench + +- type: loadout + id: LoadoutOuterCoatJensen + category: Outer + cost: 3 + items: + - ClothingOuterCoatJensen + +- type: loadout + id: LoadoutOuterCoatGentle + category: Outer + cost: 3 + items: + - ClothingOuterCoatGentle diff --git a/Resources/Prototypes/Loadouts/shoes.yml b/Resources/Prototypes/Loadouts/shoes.yml index bdea2b57ad1..470cac29834 100644 --- a/Resources/Prototypes/Loadouts/shoes.yml +++ b/Resources/Prototypes/Loadouts/shoes.yml @@ -8,6 +8,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorBlack @@ -21,6 +22,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorBlue @@ -34,6 +36,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorBrown @@ -47,6 +50,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorGreen @@ -60,6 +64,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorOrange @@ -73,6 +78,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorPurple @@ -86,6 +92,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorRed @@ -99,6 +106,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorWhite @@ -112,6 +120,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesColorYellow @@ -125,10 +134,25 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesGeta +- type: loadout + id: LoadoutShoesTourist + category: Shoes + cost: 2 + exclusive: true + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesTourist + # Boots - type: loadout id: LoadoutShoesBootsWork @@ -139,6 +163,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsWork @@ -152,6 +177,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsLaceup @@ -165,6 +191,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsWinter @@ -178,6 +205,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsCowboyBrown @@ -191,6 +219,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsCowboyBlack @@ -204,6 +233,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsCowboyWhite @@ -217,10 +247,25 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesBootsCowboyFancy +- type: loadout + id: LoadoutShoesBootsFishing + category: Shoes + cost: 2 + exclusive: true + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesBootsFishing + # Miscellaneous - type: loadout id: LoadoutShoesSlippersDuck @@ -233,6 +278,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy - !type:CharacterJobRequirement jobs: @@ -247,6 +293,7 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesLeather @@ -260,6 +307,51 @@ - !type:CharacterSpeciesRequirement inverted: true species: + - Diona - Harpy items: - ClothingShoesMiscWhite + +- type: loadout + id: LoadoutShoesHighheelBoots + category: Shoes + cost: 3 + exclusive: true + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingShoesHighheelBoots + +# Socks +- type: loadout + id: LoadoutShoesUnderSocksCoder + category: Shoes + cost: 3 + exclusive: true + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingUnderSocksCoder + +# Socks +- type: loadout + id: LoadoutShoesUnderSocksBee + category: Shoes + cost: 3 + exclusive: true + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Diona + - Harpy + items: + - ClothingUnderSocksBee diff --git a/Resources/Prototypes/Loadouts/uniform.yml b/Resources/Prototypes/Loadouts/uniform.yml index eb46acc2f60..090a0957a92 100644 --- a/Resources/Prototypes/Loadouts/uniform.yml +++ b/Resources/Prototypes/Loadouts/uniform.yml @@ -28,9 +28,14 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Security + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorBlack @@ -40,9 +45,14 @@ items: - ClothingUniformJumpskirtColorBlack requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Security + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorBlue @@ -56,9 +66,14 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Medical + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorBlue @@ -68,9 +83,14 @@ items: - ClothingUniformJumpskirtColorBlue requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Medical + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorGreen @@ -84,9 +104,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorGreen @@ -96,9 +120,13 @@ items: - ClothingUniformJumpskirtColorGreen requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorOrange @@ -112,9 +140,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorOrange @@ -124,9 +156,13 @@ items: - ClothingUniformJumpskirtColorOrange requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorPink @@ -140,9 +176,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorPink @@ -152,9 +192,13 @@ items: - ClothingUniformJumpskirtColorPink requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorRed @@ -168,9 +212,14 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Security + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorRed @@ -180,9 +229,14 @@ items: - ClothingUniformJumpskirtColorRed requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Security + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorWhite @@ -196,9 +250,15 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Medical + - Epistemics + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorWhite @@ -208,9 +268,15 @@ items: - ClothingUniformJumpskirtColorWhite requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Medical + - Epistemics + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorYellow @@ -224,9 +290,14 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Engineering + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorYellow @@ -236,9 +307,14 @@ items: - ClothingUniformJumpskirtColorYellow requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Engineering + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorDarkBlue @@ -252,9 +328,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorDarkBlue @@ -264,9 +344,13 @@ items: - ClothingUniformJumpskirtColorDarkBlue requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorTeal @@ -280,9 +364,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorTeal @@ -292,9 +380,13 @@ items: - ClothingUniformJumpskirtColorTeal requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorPurple @@ -308,9 +400,14 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Epistemics + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorPurple @@ -320,9 +417,14 @@ items: - ClothingUniformJumpskirtColorPurple requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - Epistemics + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorDarkGreen @@ -336,9 +438,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorDarkGreen @@ -348,9 +454,13 @@ items: - ClothingUniformJumpskirtColorDarkGreen requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorLightBrown @@ -364,9 +474,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorLightBrown @@ -376,9 +490,13 @@ items: - ClothingUniformJumpskirtColorLightBrown requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorBrown @@ -392,9 +510,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorBrown @@ -404,9 +526,13 @@ items: - ClothingUniformJumpskirtColorBrown requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpsuitColorMaroon @@ -420,9 +546,13 @@ inverted: true species: - Harpy - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformJumpskirtColorMaroon @@ -432,9 +562,446 @@ items: - ClothingUniformJumpskirtColorMaroon requirements: - - !type:CharacterJobRequirement - jobs: - - Passenger + - !type:CharacterDepartmentRequirement + departments: + - Civilian + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitFlannel + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitFlannel + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpskirtCasualBlue + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpskirtCasualBlue + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitCasualPurple + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitCasualPurple + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpskirtCasualPurple + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpskirtCasualPurple + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitCasualRed + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitCasualRed + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpskirtCasualRed + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpskirtCasualRed + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitTshirtJeans + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitTshirtJeans + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitTshirtJeansGray + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitTshirtJeansGray + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitTshirtJeansPeach + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitTshirtJeansPeach + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitJeansGreen + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitJeansGreen + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitJeansRed + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitJeansRed + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitJeansBrown + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitJeansBrown + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitLostTourist + category: Uniform + cost: 3 + exclusive: true + items: + - ClothingUniformJumpsuitLostTourist + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +# Hawaiian shirts +- type: loadout + id: LoadoutUniformJumpsuitHawaiBlack + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitHawaiBlack + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitHawaiBlue + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitHawaiBlue + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitHawaiRed + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitHawaiRed + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitHawaiYellow + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitHawaiYellow + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +# AutoDrobe clothes +- type: loadout + id: LoadoutUniformDressRed + category: Uniform + cost: 4 + exclusive: true + items: + - ClothingUniformDressRed + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformJumpsuitSober + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSober + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformSkirtTurtle + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformSkirtTurtle + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformGeisha + category: Uniform + cost: 3 + exclusive: true + items: + - UniformGeisha + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformCostumeArcDress + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingCostumeArcDress + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformCostumeMioSkirt + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingCostumeMioSkirt + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformCostumeNaota + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingCostumeNaota + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpsuitLoungewear + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitLoungewear + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +# Bartender clothes +- type: loadout + id: LoadoutUniformJumpsuitBartender + category: Uniform + cost: 3 + exclusive: true + items: + - ClothingUniformJumpsuitBartender + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformJumpskirtBartender + category: Uniform + cost: 3 + exclusive: true + items: + - ClothingUniformJumpskirtBartender + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command # Kendo - type: loadout @@ -444,6 +1011,11 @@ exclusive: true items: - ClothingUniformKendoHakama + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutUniformMartialGi @@ -452,8 +1024,28 @@ exclusive: true items: - ClothingUniformMartialGi + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command # Kimono +- type: loadout + id: LoadoutClothingJumpsuitKimono + category: Uniform + cost: 3 + exclusive: true + items: + - ClothingUniformJumpsuitKimono + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + - type: loadout id: LoadoutClothingKimonoBlue category: Uniform @@ -461,6 +1053,12 @@ exclusive: true items: - ClothingKimonoBlue + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command - type: loadout id: LoadoutClothingKimonoPink @@ -469,6 +1067,12 @@ exclusive: true items: - ClothingKimonoPink + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command - type: loadout id: LoadoutClothingKimonoPurple @@ -477,6 +1081,12 @@ exclusive: true items: - ClothingKimonoPurple + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command - type: loadout id: LoadoutClothingKimonoSky @@ -485,6 +1095,12 @@ exclusive: true items: - ClothingKimonoSky + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command - type: loadout id: LoadoutClothingKimonoGreen @@ -493,6 +1109,12 @@ exclusive: true items: - ClothingKimonoGreen + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command # Gakuran - type: loadout @@ -502,6 +1124,150 @@ exclusive: true items: - ClothingUniformSchoolGakuranBlack + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +# Schoolgirl uniform +- type: loadout + id: LoadoutUniformSchoolgirlBlack + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlBlack + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlBlue + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlBlue + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlCyan + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlCyan + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlGreen + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlGreen + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlOrange + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlOrange + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlPink + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlPink + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlPurple + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlPurple + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlRed + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlRed + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlDusk + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlDusk + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command + +- type: loadout + id: LoadoutUniformSchoolgirlBlazerTan + category: Uniform + cost: 3 + exclusive: true + items: + - UniformSchoolgirlBlazerTan + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Command # MNK Uniforms - type: loadout @@ -511,6 +1277,11 @@ exclusive: true items: - ClothingUniformMNKOfficeSkirt + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKUnderGarment @@ -519,6 +1290,11 @@ exclusive: true items: - ClothingUniformMNKUnderGarment + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKGymBra @@ -527,6 +1303,11 @@ exclusive: true items: - ClothingUniformMNKGymBra + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKDressBlack @@ -535,6 +1316,11 @@ exclusive: true items: - ClothingUniformMNKDressBlack + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKBlackOveralls @@ -543,6 +1329,11 @@ exclusive: true items: - ClothingUniformMNKBlackOveralls + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKBlackShoulder @@ -551,6 +1342,11 @@ exclusive: true items: - ClothingUniformMNKBlackShoulder + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command - type: loadout id: LoadoutClothingMNKTracksuitBlack @@ -559,3 +1355,8 @@ exclusive: true items: - ClothingUniformMNKTracksuitBlack + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command From b3c36476b330e99dc27c65ca66e2573f5494ec92 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 02:38:09 +0000 Subject: [PATCH 27/82] Automatic Changelog Update (#616) --- Resources/Changelog/Changelog.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cb0933affcb..ceed259c0b0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4731,3 +4731,24 @@ Entries: message: Readjusted colors of all languages to make them easier to read. id: 6194 time: '2024-07-31T23:57:25.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: >- + Added dozens of new clothes and items to Loadouts, including the new + Mask category. Have fun dressing up your characters! + - type: Tweak + message: Restrict Command Loadouts from selecting uniforms outside of their job. + - type: Tweak + message: >- + Limit the selection in Security Loadouts of non-sec uniforms, hats, and + masks to those that maintain the Security aesthetic. + - type: Tweak + message: >- + Made all types of colored jumpsuits in Loadouts available to Civilian + roles (excluding HoP), and suitable jumpsuits to Epistemics, + Engineering, and Medical. + - type: Fix + message: Prevent dionas and harpies from selecting shoes in Loadouts. + id: 6195 + time: '2024-08-01T02:37:45.0000000+00:00' From 7fb089d95dc6e5b32beed5f95d9f6bd6d4e9fc66 Mon Sep 17 00:00:00 2001 From: Tmanzxd <164098915+Tmanzxd@users.noreply.github.com> Date: Thu, 1 Aug 2024 02:58:46 -0500 Subject: [PATCH 28/82] Replace and Fix MedHud Icons (#631) Fixes #362 --- .../Misc/health_icons.rsi/Critical.png | Bin 125 -> 122 bytes .../Interface/Misc/health_icons.rsi/Dead.png | Bin 214 -> 219 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/Critical.png b/Resources/Textures/Interface/Misc/health_icons.rsi/Critical.png index 779874eaaeb3c64047fc7f01bc618725d36d2e7b..15a4972174518f9c088301d1a1469c01641d2eaa 100644 GIT binary patch delta 91 zcmV-h0HptYdXOYmK}keGR2Y?&kHHDRFbo5Ap&QxzPvFd?ewvR<2)U;?350D;(rSbY xK+hx{D|JbvB&`yoH#?WYH@_ELKY`PWBQJ597DYkwQQ`mq002ovPDHLkV1l=aBn$um delta 94 zcmV-k0HObSeUKzsL`g(JR2Y?okGmBBAP55wSHhXx$(?W}EPVcGxF$^!f&jRw6OcLt zptz|s0PVcGLnS67sX@+(h^`&Cq4i&PL-s|=1W^YW12RT~BLDyZ07*qoM6N<$g3kma Ao&W#< diff --git a/Resources/Textures/Interface/Misc/health_icons.rsi/Dead.png b/Resources/Textures/Interface/Misc/health_icons.rsi/Dead.png index beceebd05cf3cb07497ad0a16f286074c94c1a12..8cebd95418635fed8eafeec929a5bb523339479f 100644 GIT binary patch delta 191 zcmV;w06_oN0owtPB!8kwL_t(Ijn$N~4Z<)GMV~W4Mo39{W2DR&l#Jq%F(?_sC8bC3 z2BA819G6HaAi|g2_`mZ%%O@uQk#QzaDc7`jKZ%TUy_LvkI0yiH_B*@Lat*<6Gh5E= z)NHxZpN0qM10u!;EHU;>%cy*=E?XZl0O1H}!P*nHT#@qxKsY&Go*Giwdf&A7ZSIoq tnU@h#Ma`@+@A98y!VCP9e*O(^_3uSvwHqDn7RUeq002ovPDHLkV1gqs(NI=1e5$Q;Q@m{fdX71vIcZ<7)G}M zn>om4p{pU*d~9xmv9Ts0mD1iYl1}T*X09)g=8#6+5G5`Po07*qoM6N<$g3>`rH2?qr From 5f2cae0c12a5e31f4f852d3aa1e51d5ef25a8a42 Mon Sep 17 00:00:00 2001 From: Tmanzxd <164098915+Tmanzxd@users.noreply.github.com> Date: Thu, 1 Aug 2024 02:58:56 -0500 Subject: [PATCH 29/82] Manual Removal of easy_pry.yml (#632) Fixes #25893 --- .../Structures/Doors/Airlocks/easy_pry.yml | 63 ------------------- 1 file changed, 63 deletions(-) delete mode 100644 Resources/Prototypes/Entities/Structures/Doors/Airlocks/easy_pry.yml diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/easy_pry.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/easy_pry.yml deleted file mode 100644 index 04a58eebe07..00000000000 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/easy_pry.yml +++ /dev/null @@ -1,63 +0,0 @@ -- type: entity - parent: AirlockExternal - id: AirlockExternalEasyPry - suffix: External, EasyPry - description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockExternalGlass - id: AirlockExternalGlassEasyPry - suffix: External, Glass, EasyPry - description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockGlassShuttle - id: AirlockGlassShuttleEasyPry - suffix: EasyPry, Docking - description: Necessary for connecting two space craft together. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockShuttle - id: AirlockShuttleEasyPry - suffix: EasyPry, Docking - description: Necessary for connecting two space craft together. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockExternalLocked - id: AirlockExternalEasyPryLocked - suffix: External, EasyPry, Locked - description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockExternalGlassLocked - id: AirlockExternalGlassEasyPryLocked - suffix: External, Glass, EasyPry, Locked - description: It opens, it closes, it might crush you, and there might be only space behind it. Has to be manually activated. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockExternalGlassShuttleLocked - id: AirlockGlassShuttleEasyPryLocked - suffix: EasyPry, Docking, Locked - description: Necessary for connecting two space craft together. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered - -- type: entity - parent: AirlockExternalShuttleLocked - id: AirlockShuttleEasyPryLocked - suffix: EasyPry, Docking, Locked - description: Necessary for connecting two space craft together. Has a valve labelled "TURN TO OPEN" - components: - - type: PryUnpowered From 00a74a2c791111401e64a4a3fa88b35805a273c8 Mon Sep 17 00:00:00 2001 From: stellar-novas Date: Thu, 1 Aug 2024 04:25:27 -0400 Subject: [PATCH 30/82] Revert "Mirror: Restrict Door Remotes to only Being Able to Manipulate Doors Relevant to Their Type" (#491) Reverts Simple-Station/Einstein-Engines#315 As [I brought up](https://github.com/Simple-Station/Einstein-Engines/pull/315#issuecomment-2105861135) in the original pr, this change was made to counter power gaming, which isn't as much of an issue on EE downstreams, and adversely affects the engineering department, without any major benefits. --------- Signed-off-by: stellar-novas Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Content.Server/Remotes/DoorRemoteSystem.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Content.Server/Remotes/DoorRemoteSystem.cs b/Content.Server/Remotes/DoorRemoteSystem.cs index e42bc700912..31fcacdaf80 100644 --- a/Content.Server/Remotes/DoorRemoteSystem.cs +++ b/Content.Server/Remotes/DoorRemoteSystem.cs @@ -50,8 +50,10 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang return; } + // Holding the door remote grants you access to the relevant doors IN ADDITION to what ever access you had. + // This access is enforced in _doorSystem.HasAccess when it calls _accessReaderSystem.IsAllowed if (TryComp(args.Target, out var accessComponent) - && !_doorSystem.HasAccess(args.Target.Value, args.Used, doorComp, accessComponent)) + && !_doorSystem.HasAccess(args.Target.Value, args.User, doorComp, accessComponent)) { _doorSystem.Deny(args.Target.Value, doorComp, args.User); Popup.PopupEntity(Loc.GetString("door-remote-denied"), args.User, args.User); @@ -61,7 +63,10 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang switch (entity.Comp.Mode) { case OperatingMode.OpenClose: - if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.Used)) + // Note we provide args.User here to TryToggleDoor as the "user" + // This means that the door will look at all access items carried by the player for access, including + // this remote, but also including anything else they are carrying such as a PDA or ID card. + if (_doorSystem.TryToggleDoor(args.Target.Value, doorComp, args.User)) _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)}: {doorComp.State}"); break; case OperatingMode.ToggleBolts: @@ -69,7 +74,7 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang { if (!boltsComp.BoltWireCut) { - _doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.Used); + _doorSystem.SetBoltsDown((args.Target.Value, boltsComp), !boltsComp.BoltsDown, args.User); _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} used {ToPrettyString(args.Used)} on {ToPrettyString(args.Target.Value)} to {(boltsComp.BoltsDown ? "" : "un")}bolt it"); } } From ac2fc06e10b4a077f263b99b578b5dbad27c688f Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Thu, 1 Aug 2024 01:30:47 -0700 Subject: [PATCH 31/82] Invert the Running/Walking States (#485) # Description Ports https://github.com/Simple-Station/Parkstation-Friendly-Chainsaw/pull/39 A change made to encourage people to [stop and smell the roses](https://www.urbandictionary.com/define.php?term=slow+down+and+smell+the+roses), instead of sprinting everywhere trying to get shit done. This goes well with #486, so people don't actually *have* to rush places to try to get things done before the shift ends fatally. It's weird anyway how we're all constantly sprinting everywhere and have to *very actively* choose not to (and why would you?). Increases the default speeds so that walking isn't painfully slow and sprinting feels more like sprinting in combination with the active choice to sprint. Someone needs to PR changing the default sprint or examine buttons, so people can fight and sprint with this change. (A lot of other default keybinds suck or conflict too and need to change) # Media Terrible video but whatever https://github.com/user-attachments/assets/5ff3863d-92c8-4df3-b76b-82874b5e1ae3 # Changelog :cl: - tweak: The station's crew hivemind has decided to slow down their movement and enjoy The Park instead of sprinting everywhere --------- Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Co-authored-by: Pspritechologist <81725545+Pspritechologist@users.noreply.github.com> --- .../Tests/Slipping/SlippingTest.cs | 10 +++++++--- Content.Shared/CCVar/CCVars.cs | 7 +++++++ .../Movement/Components/CanWalkComponent.cs | 11 ----------- .../Movement/Components/InputMoverComponent.cs | 7 ++++++- .../Components/MovementSpeedModifierComponent.cs | 4 ++-- .../Movement/Systems/SharedMoverController.Input.cs | 2 +- .../Movement/Systems/SharedMoverController.cs | 8 +++----- .../Locale/en-US/escape-menu/ui/options-menu.ftl | 4 ++-- .../Entities/Mobs/Cyborgs/base_borg_chassis.yml | 1 - Resources/Prototypes/Entities/Mobs/NPCs/animals.yml | 1 - Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml | 1 - Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml | 1 - Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml | 1 - Resources/Prototypes/Entities/Mobs/Species/base.yml | 1 - Resources/Prototypes/Entities/Mobs/Species/harpy.yml | 5 ++--- .../Entities/Objects/Specific/Mech/mechs.yml | 1 - 16 files changed, 30 insertions(+), 35 deletions(-) delete mode 100644 Content.Shared/Movement/Components/CanWalkComponent.cs diff --git a/Content.IntegrationTests/Tests/Slipping/SlippingTest.cs b/Content.IntegrationTests/Tests/Slipping/SlippingTest.cs index 7f77146f455..511a720ed07 100644 --- a/Content.IntegrationTests/Tests/Slipping/SlippingTest.cs +++ b/Content.IntegrationTests/Tests/Slipping/SlippingTest.cs @@ -1,11 +1,14 @@ #nullable enable using System.Collections.Generic; using Content.IntegrationTests.Tests.Interaction; +using Content.Shared.CCVar; using Content.Shared.Movement.Components; using Content.Shared.Slippery; using Content.Shared.Stunnable; +using Robust.Shared.Configuration; using Robust.Shared.GameObjects; using Robust.Shared.Input; +using Robust.Shared.IoC; using Robust.Shared.Maths; namespace Content.IntegrationTests.Tests.Slipping; @@ -14,6 +17,7 @@ public sealed class SlippingTest : MovementTest { public sealed class SlipTestSystem : EntitySystem { + [Dependency] public readonly IConfigurationManager Config = default!; public HashSet Slipped = new(); public override void Initialize() { @@ -30,6 +34,7 @@ private void OnSlip(EntityUid uid, SlipperyComponent component, ref SlipEvent ar public async Task BananaSlipTest() { var sys = SEntMan.System(); + var sprintWalks = sys.Config.GetCVar(CCVars.GamePressToSprint); await SpawnTarget("TrashBananaPeel"); var modifier = Comp(Player).SprintSpeedModifier; @@ -42,7 +47,7 @@ public async Task BananaSlipTest() #pragma warning restore NUnit2045 // Walking over the banana slowly does not trigger a slip. - await SetKey(EngineKeyFunctions.Walk, BoundKeyState.Down); + await SetKey(EngineKeyFunctions.Walk, sprintWalks ? BoundKeyState.Up : BoundKeyState.Down); await Move(DirectionFlag.East, 1f); #pragma warning disable NUnit2045 Assert.That(Delta(), Is.LessThan(0.5f)); @@ -51,10 +56,9 @@ public async Task BananaSlipTest() AssertComp(false, Player); // Moving at normal speeds does trigger a slip. - await SetKey(EngineKeyFunctions.Walk, BoundKeyState.Up); + await SetKey(EngineKeyFunctions.Walk, sprintWalks ? BoundKeyState.Down : BoundKeyState.Up); await Move(DirectionFlag.West, 1f); Assert.That(sys.Slipped, Does.Contain(SEntMan.GetEntity(Player))); AssertComp(true, Player); } } - diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 3c3bfa8862d..df463b27299 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -407,6 +407,13 @@ public static readonly CVarDef public static readonly CVarDef GameAutoEatDrinks = CVarDef.Create("game.auto_eat_drinks", false, CVar.REPLICATED); + + /// + /// When true, you have to press the change speed button to sprint. + /// + public static readonly CVarDef GamePressToSprint = + CVarDef.Create("game.press_to_sprint", true, CVar.REPLICATED); + #if EXCEPTION_TOLERANCE /// - /// - /// - /// - /// - public float RampingEventTimeEquation(RampingStationEventSchedulerComponent component, float startTime, float endTimeOffset = 0) + public float GetChaosModifier(EntityUid uid, RampingStationEventSchedulerComponent component) { - var endTime = Math.Clamp(endTimeOffset, 0.1f, startTime - 1); - var shiftLength = Math.Max(1, _cfg.GetCVar(CCVars.EventsRampingAverageEndTime) - component.ShiftLengthOffset); - return 2 * endTime - / (1 - + MathF.Exp(_cfg.GetCVar(CCVars.EventsRampingAverageChaos) - * component.ShiftChaosModifier - / shiftLength - * endTime - * (float) _gameTicker.RoundDuration().TotalSeconds - / 60)) - + (startTime - endTime); + var roundTime = (float) _gameTicker.RoundDuration().TotalSeconds; + if (roundTime > component.EndTime) + return component.MaxChaos; + + return component.MaxChaos / component.EndTime * roundTime + component.StartingChaos; } protected override void Started(EntityUid uid, RampingStationEventSchedulerComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) { base.Started(uid, component, gameRule, args); - PickNextEventTime(component); + var avgChaos = _cfg.GetCVar(CCVars.EventsRampingAverageChaos) * component.ChaosModifier; + var avgTime = _cfg.GetCVar(CCVars.EventsRampingAverageEndTime) * component.ShiftLengthModifier; + + // Worlds shittiest probability distribution + // Got a complaint? Send them to + component.MaxChaos = avgChaos * _random.NextFloat(0.75f, 1.25f); + // This is in minutes, so *60 for seconds (for the chaos calc) + component.EndTime = avgTime * _random.NextFloat(0.75f, 1.25f) * 60f; + component.StartingChaos = component.MaxChaos * component.StartingChaosRatio; + + PickNextEventTime(uid, component); } public override void Update(float frameTime) @@ -66,31 +61,17 @@ public override void Update(float frameTime) return; } - PickNextEventTime(scheduler); + PickNextEventTime(uid, scheduler); _event.RunRandomEvent(); } } - private void PickNextEventTime(RampingStationEventSchedulerComponent component) + private void PickNextEventTime(EntityUid uid, RampingStationEventSchedulerComponent component) { - // In case of server hosts being silly and setting maximum time to be lower than minimum time, sanity check the scheduler inputs and sort them by Min/Max - var minimumTime = MathF.Min(_cfg.GetCVar(CCVars.GameEventsRampingMinimumTime) - - _cfg.GetCVar(CCVars.GameEventsRampingMinimumTimeOffset) - - component.MinimumEventTimeOffset, _cfg.GetCVar(CCVars.GameEventsRampingMaximumTime) - - _cfg.GetCVar(CCVars.GameEventsRampingMaximumTimeOffset) - - component.MaximumEventTimeOffset); - - var maximumTime = MathF.Max(_cfg.GetCVar(CCVars.GameEventsRampingMinimumTime) - - _cfg.GetCVar(CCVars.GameEventsRampingMinimumTimeOffset) - - component.MinimumEventTimeOffset, _cfg.GetCVar(CCVars.GameEventsRampingMaximumTime) - - _cfg.GetCVar(CCVars.GameEventsRampingMaximumTimeOffset) - - component.MaximumEventTimeOffset); - - // Just in case someone messed up their math, set it to between 6 and 12 seconds. This absolutely isn't ideal component.TimeUntilNextEvent = _random.NextFloat( - RampingEventTimeEquation(component, MathF.Max(0.1f, minimumTime)), - RampingEventTimeEquation(component, MathF.Max(0.2f, maximumTime))); + _cfg.GetCVar(CCVars.GameEventsRampingMinimumTime), + _cfg.GetCVar(CCVars.GameEventsRampingMaximumTime)); - component.TimeUntilNextEvent *= component.EventDelayModifier; + component.TimeUntilNextEvent *= component.EventDelayModifier / GetChaosModifier(uid, component); } } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 0d09dd59f74..985d9da1a18 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -119,7 +119,7 @@ public static readonly CVarDef /// Max chaos chosen for a round will deviate from this /// public static readonly CVarDef - EventsRampingAverageChaos = CVarDef.Create("events.ramping_average_chaos", 0.8f, CVar.ARCHIVE | CVar.SERVERONLY); + EventsRampingAverageChaos = CVarDef.Create("events.ramping_average_chaos", 6f, CVar.ARCHIVE | CVar.SERVERONLY); /* * Game @@ -186,29 +186,16 @@ public static readonly CVarDef // 25 Minutes GameEventsBasicMaximumTime = CVarDef.Create("game.events_basic_maximum_time", 1500, CVar.SERVERONLY); /// - /// Minimum time between Ramping station events in minutes + /// Minimum time between Ramping station events in seconds /// - public static readonly CVarDef // 8 Minutes - GameEventsRampingMinimumTime = CVarDef.Create("game.events_ramping_minimum_time", 8f, CVar.SERVERONLY); + public static readonly CVarDef // 4 Minutes + GameEventsRampingMinimumTime = CVarDef.Create("game.events_ramping_minimum_time", 240, CVar.SERVERONLY); /// - /// After the shift's desired "Endpoint" is reached, the minimum time between events is RampingMinimumTime - Offset. + /// Maximum time between Ramping station events in seconds /// - - public static readonly CVarDef - GameEventsRampingMinimumTimeOffset = CVarDef.Create("game.events_ramping_minimum_time_offset", 6f, CVar.SERVERONLY); - - /// - /// Maximum time between Ramping station events in minutes - /// - public static readonly CVarDef // 16 Minutes - GameEventsRampingMaximumTime = CVarDef.Create("game.events_ramping_maximum_time", 16f, CVar.SERVERONLY); - - /// - /// After the shift's desired "Endpoint" is reached, the maximum time between events is RampingMaximumTime - Offset. - /// - public static readonly CVarDef - GameEventsRampingMaximumTimeOffset = CVarDef.Create("game.events_ramping_maximum_time_offset", 10f, CVar.SERVERONLY); + public static readonly CVarDef // 12 Minutes + GameEventsRampingMaximumTime = CVarDef.Create("game.events_ramping_maximum_time", 720, CVar.SERVERONLY); /// /// - private List GetHealthyHumans(bool includeOffStation = true) + private List GetHealthyHumans(bool includeOffStation = false) { var healthy = new List(); var stationGrids = new HashSet(); if (!includeOffStation) { - foreach (var station in _station.GetStationsSet()) + foreach (var station in _gameTicker.GetSpawnableStations()) { if (TryComp(station, out var data) && _station.GetLargestGrid(data) is { } grid) stationGrids.Add(grid); @@ -223,13 +224,11 @@ private List GetHealthyHumans(bool includeOffStation = true) var zombers = GetEntityQuery(); while (players.MoveNext(out var uid, out _, out _, out var mob, out var xform)) { - if (!_mobState.IsAlive(uid, mob)) - continue; - - if (zombers.HasComponent(uid)) - continue; - - if (!includeOffStation && !stationGrids.Contains(xform.GridUid ?? EntityUid.Invalid)) + if (!_mobState.IsAlive(uid, mob) + || HasComp(uid) //Do not include infected players in the "Healthy players" list. + || HasComp(uid) + || zombers.HasComponent(uid) + || !includeOffStation && !stationGrids.Contains(xform.GridUid ?? EntityUid.Invalid)) continue; healthy.Add(uid); From 4a6ad8ca683f1bef998cd467607d004dd771df8d Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 4 Aug 2024 14:14:36 +0000 Subject: [PATCH 68/82] Automatic Changelog Update (#652) --- Resources/Changelog/Changelog.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5ea713fda4f..a6bdca1ff36 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4877,3 +4877,14 @@ Entries: twice as fast. id: 6210 time: '2024-08-04T09:30:31.0000000+00:00' +- author: VMSolidus + changes: + - type: Fix + message: >- + Zombie events have had their Anti-Stalling mechanic improved. Dead + (Player) Zombies, Infected Players, and Initial Infected are all counted + as zombies for the purpose of determine if the shuttle should be called. + Additionally, any player who leaves the station is no longer counted as + a healthy crewman for the automatic shuttle call. + id: 6211 + time: '2024-08-04T14:14:12.0000000+00:00' From 7f784b0d0c34f318d5ebd6349b85d99b35d55511 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Mon, 5 Aug 2024 11:30:41 +0800 Subject: [PATCH 69/82] Rename Trait "Heavyweight Drunk" To "Alcohol Tolerance" (#669) # Description Renamed the trait "Heavyweight Drunk" into "Alcohol Tolerance". "_Heavyweight_" is a term that exists in real life, but to the plain eye the name is simply "Opposite of Lightweight Drunk". "Alcohol Tolerance" is a more intuitive and interesting trait name. More importantly, it's more natural for in-game characters to say "I have an alcohol tolerance" as opposed to "I'm a heavyweight drunk". # Changelog :cl: Skubman - tweak: Rename the trait "Heavyweight Drunk" into "Alcohol Tolerance". --------- Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> --- Resources/Locale/en-US/traits/traits.ftl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 25c309476f0..7e52e306685 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -11,8 +11,8 @@ trait-description-Pacifist = You cannot attack or hurt any living beings. trait-name-LightweightDrunk = Lightweight Drunk trait-description-LightweightDrunk = Alcohol has a stronger effect on you -trait-name-HeavyweightDrunk = Heavyweight Drunk -trait-description-HeavyweightDrunk = Alcohols are afraid of you +trait-name-HeavyweightDrunk = Alcohol Tolerance +trait-description-HeavyweightDrunk = Alcohol is afraid of you. trait-name-Muted = Muted trait-description-Muted = You can't speak From 812a3031ffaabee9ae33cd005bd2d92217384f09 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 03:31:06 +0000 Subject: [PATCH 70/82] Automatic Changelog Update (#669) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a6bdca1ff36..8143bcdb938 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4888,3 +4888,9 @@ Entries: a healthy crewman for the automatic shuttle call. id: 6211 time: '2024-08-04T14:14:12.0000000+00:00' +- author: Skubman + changes: + - type: Tweak + message: Rename the trait "Heavyweight Drunk" into "Alcohol Tolerance". + id: 6212 + time: '2024-08-05T03:30:41.0000000+00:00' From 0acb879e61cf5ada2bd4f037d62edd5855ccceeb Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Mon, 5 Aug 2024 23:29:06 +0800 Subject: [PATCH 71/82] New Trait: Light Step (#658) # Description **Light Step** is a 1-point Auditory trait that reduces the volume of your footsteps by roughly 50%, enabling you to be quieter and stealthier. Inspired by the SS13 trait of the same name. ## TODO - [x] Locale strings - [x] ~~Reduce the distance in which Light Step footsteps can be heard~~ - It turns out that whatever I did reduced the delay between footstep sounds. - [x] Discuss the balancing values for the trait ## Technical details In the current implementation, Light Step reduces the volume of footsteps by 10 dB, resulting in roughly halving the volume. The fields in `FootstepVolumeModifierComponent` change the volume in terms of decibels. ## Media ![image](https://github.com/user-attachments/assets/d1e3efee-6f81-4212-a745-ae08687afcc0) # Changelog :cl: Skubman - add: Add the Light Step trait, a 1-point trait that makes your footsteps quieter. --------- Signed-off-by: Angelo Fallaria --- .../Movement/Systems/SharedMoverController.cs | 11 +++++++++- .../FootstepVolumeModifierComponent.cs | 22 +++++++++++++++++++ Resources/Locale/en-US/traits/traits.ftl | 4 ++++ Resources/Prototypes/Traits/skills.yml | 14 ++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/Traits/Assorted/Components/FootstepVolumeModifierComponent.cs diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 0944634db35..3cc35e7bc67 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -12,6 +12,7 @@ using Content.Shared.Movement.Events; using Content.Shared.StepTrigger.Components; using Content.Shared.Tag; +using Content.Shared.Traits.Assorted.Components; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; @@ -261,9 +262,17 @@ protected void HandleMobMovement( TryGetSound(weightless, uid, mover, mobMover, xform, out var sound, tileDef: tileDef)) { var soundModifier = mover.Sprinting ? 3.5f : 1.5f; + var volume = sound.Params.Volume + soundModifier; + + if (_entities.TryGetComponent(uid, out FootstepVolumeModifierComponent? volumeModifier)) + { + volume += mover.Sprinting + ? volumeModifier.SprintVolumeModifier + : volumeModifier.WalkVolumeModifier; + } var audioParams = sound.Params - .WithVolume(sound.Params.Volume + soundModifier) + .WithVolume(volume) .WithVariation(sound.Params.Variation ?? FootstepVariation); // If we're a relay target then predict the sound for all relays. diff --git a/Content.Shared/Traits/Assorted/Components/FootstepVolumeModifierComponent.cs b/Content.Shared/Traits/Assorted/Components/FootstepVolumeModifierComponent.cs new file mode 100644 index 00000000000..8c7e763692c --- /dev/null +++ b/Content.Shared/Traits/Assorted/Components/FootstepVolumeModifierComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Traits.Assorted.Components; + +/// +/// This is used for any trait that modifies footstep volumes. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class FootstepVolumeModifierComponent : Component +{ + /// + /// What to add to the volume of sprinting, in terms of decibels. + /// + [DataField, AutoNetworkedField] + public float SprintVolumeModifier; + + /// + /// What to add to the volume of walking, in terms of decibels. + /// + [DataField, AutoNetworkedField] + public float WalkVolumeModifier; +} diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 7e52e306685..e8d007542fa 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -60,3 +60,7 @@ trait-name-Voracious = Voracious trait-description-Voracious = Nothing gets between you and your food. Your endless consumption of food and drinks is twice as fast. + +trait-name-LightStep = Light Step +trait-description-LightStep = + You move with a gentle step, making your footsteps quieter. diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 6350cdc3c23..51eeadfcada 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -40,3 +40,17 @@ - type: ConsumeDelayModifier foodDelayMultiplier: 0.5 drinkDelayMultiplier: 0.5 + +- type: trait + id: LightStep + category: Auditory + points: -1 + components: + - type: FootstepVolumeModifier + sprintVolumeModifier: -10 + walkVolumeModifier: -10 + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Felinid From 27c2c35d437ad9323f789bb345226093f2773836 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 15:29:30 +0000 Subject: [PATCH 72/82] Automatic Changelog Update (#658) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8143bcdb938..39b94e7aaca 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4894,3 +4894,11 @@ Entries: message: Rename the trait "Heavyweight Drunk" into "Alcohol Tolerance". id: 6212 time: '2024-08-05T03:30:41.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: >- + Add the Light Step trait, a 1-point trait that makes your footsteps + quieter. + id: 6213 + time: '2024-08-05T15:29:07.0000000+00:00' From 17aca3c851ddad88e812b7002dd3f222de6d6796 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Tue, 6 Aug 2024 00:55:31 +0800 Subject: [PATCH 73/82] New Trait: Sign Language (#677) # Description **Sign Language** is a 1-point Visual trait that allows you to use Galactic Sign Language. ## Media ![image](https://github.com/user-attachments/assets/ef9a3ed0-6157-4604-9db4-d7114595195b) ![image](https://github.com/user-attachments/assets/805b4a8f-a2d3-469c-b4ab-e46c787a55b6) # Changelog :cl: Skubman - add: Add a new 1-point trait called Sign Language, a trait that allows you to communicate in Galactic Sign Language. --------- Signed-off-by: Angelo Fallaria --- .../LanguageKnowledgeModifierComponent.cs | 23 ++++++++++++ .../LanguageKnowledgeModifierSystem.cs | 35 +++++++++++++++++++ Resources/Locale/en-US/language/languages.ftl | 6 ++-- Resources/Locale/en-US/traits/traits.ftl | 5 +++ Resources/Prototypes/Traits/skills.yml | 11 ++++++ 5 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 Content.Server/Traits/Assorted/LanguageKnowledgeModifierComponent.cs create mode 100644 Content.Server/Traits/Assorted/LanguageKnowledgeModifierSystem.cs diff --git a/Content.Server/Traits/Assorted/LanguageKnowledgeModifierComponent.cs b/Content.Server/Traits/Assorted/LanguageKnowledgeModifierComponent.cs new file mode 100644 index 00000000000..170dae40fa6 --- /dev/null +++ b/Content.Server/Traits/Assorted/LanguageKnowledgeModifierComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Language; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Server.Traits.Assorted; + +/// +/// Used for traits that modify entities' language knowledge. +/// +[RegisterComponent] +public sealed partial class LanguageKnowledgeModifierComponent : Component +{ + /// + /// List of languages this entity will learn to speak. + /// + [DataField("speaks")] + public List NewSpokenLanguages = new(); + + /// + /// List of languages this entity will learn to understand. + /// + [DataField("understands")] + public List NewUnderstoodLanguages = new(); +} diff --git a/Content.Server/Traits/Assorted/LanguageKnowledgeModifierSystem.cs b/Content.Server/Traits/Assorted/LanguageKnowledgeModifierSystem.cs new file mode 100644 index 00000000000..9053c9404fe --- /dev/null +++ b/Content.Server/Traits/Assorted/LanguageKnowledgeModifierSystem.cs @@ -0,0 +1,35 @@ +using System.Linq; +using Content.Server.Language; +using Content.Shared.Language.Components; + +namespace Content.Server.Traits.Assorted; + +public sealed class LanguageKnowledgeModifierSystem : EntitySystem +{ + [Dependency] private readonly LanguageSystem _languages = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnStartup); + } + + private void OnStartup(Entity entity, ref ComponentInit args) + { + if (!TryComp(entity, out var knowledge)) + { + Log.Warning($"Entity {entity.Owner} does not have a LanguageKnowledge but has a LanguageKnowledgeModifier!"); + return; + } + + foreach (var spokenLanguage in entity.Comp.NewSpokenLanguages) + { + _languages.AddLanguage(entity, spokenLanguage, true, false, knowledge); + } + + foreach (var understoodLanguage in entity.Comp.NewUnderstoodLanguages) + { + _languages.AddLanguage(entity, understoodLanguage, false, true, knowledge); + } + } +} diff --git a/Resources/Locale/en-US/language/languages.ftl b/Resources/Locale/en-US/language/languages.ftl index 14d477b7840..4b0c1248f28 100644 --- a/Resources/Locale/en-US/language/languages.ftl +++ b/Resources/Locale/en-US/language/languages.ftl @@ -28,6 +28,9 @@ language-Moffic-description = The language of the mothpeople borders on complete language-RobotTalk-name = RobotTalk language-RobotTalk-description = A language consisting of harsh binary chirps, whistles, hisses, and whines. Organic tongues cannot speak it without aid from special translators. +language-Sign-name = Galactic Sign Language +language-Sign-description = GSL for short, this sign language is prevalent among mute and deaf people. + language-Cat-name = Cat language-Cat-description = Meow @@ -72,6 +75,3 @@ language-Kobold-description = Hiss! language-Hissing-name = Hissing language-Hissing-description = Hiss! - -language-Sign-name = Sign Language -language-Sign-description = The standard Galactic sign language, used by those that are unable to speak Galactic Common or at all. diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index e8d007542fa..600a9834fd4 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -56,6 +56,11 @@ trait-description-Foreigner = For one reason or another you do not speak this station's primary language. Instead, you have a translator issued to you that only you can use. +trait-name-SignLanguage = Sign Language +trait-description-SignLanguage = + You can understand and use Galactic Sign Language (GSL). + If you are mute for any reason, you can still communicate with sign language. + trait-name-Voracious = Voracious trait-description-Voracious = Nothing gets between you and your food. diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 51eeadfcada..16b628a56d8 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -32,6 +32,17 @@ species: - Felinid +- type: trait + id: SignLanguage + category: Visual + points: -1 + components: + - type: LanguageKnowledgeModifier + speaks: + - Sign + understands: + - Sign + - type: trait id: Voracious category: Physical From 1bd9cd845b63b0caad0312710e542dafdcb6c396 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 16:55:54 +0000 Subject: [PATCH 74/82] Automatic Changelog Update (#677) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 39b94e7aaca..b5263f12b7a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4902,3 +4902,11 @@ Entries: quieter. id: 6213 time: '2024-08-05T15:29:07.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: >- + Add a new 1-point trait called Sign Language, a trait that allows you to + communicate in Galactic Sign Language. + id: 6214 + time: '2024-08-05T16:55:31.0000000+00:00' From c976bfa40c8b2ade3a38abe8c7ba4b06de3bc102 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Mon, 5 Aug 2024 20:10:42 +0300 Subject: [PATCH 75/82] Oracle Refactor (#549) # Description Refactors the oracle system and component, making them more customizable and less trash. - Most of the nyano shitcode was rewritten in accordance with the new standards and in a less hardcoded manner (all features were preserved, with some changes). - Replaced the accumulator field pattern with the "nextX" pattern for things oracle does on certain intervals. - Removed some code duplication and bloat. - Gave oracle a 75% chance to request technology and 25% to request a plant. - When requesting a technology, oracle will only request what's either already researched, or can be researched soon (that is, the prerequisites of the research are complete and the research isn't locked for any reason). - If there's no research server at the moment when oracle demands an item, it will only demand a plant - When dispensing rewards, oracle can now spawn 1, 3, or 5 crystals at once, and research disks worth 5k, 10k, and 20k research points. Each one of those have different probabilities (3 crystals and 5k points still prevail, but occasionally you can get the more expensive rewards). - When dispensing rewards, oracle now throws them at the person who fulfilled the request instead of simply spawning them at their feet. Almost every oracle thing (except for throwing and the amount of liquid dispensed) can now be configured in the yaml prototype of the oracle. # TODO Forget it

Media

https://github.com/user-attachments/assets/9d4be44f-37d5-4072-a6e6-f194764f7ff6 ![image](https://github.com/user-attachments/assets/011761d4-8d73-4d65-ba9c-92b25a28e95f)

--- # Changelog :cl: - tweak: Oracle requests are now more likely to be aligned with the current research. --- .../Tests/Nyanotrasen/Oracle/OracleTest.cs | 72 ----- .../Research/Oracle/OracleComponent.cs | 87 ------ .../Research/Oracle/OracleSystem.cs | 258 ---------------- .../Research/Oracle/OracleComponent.cs | 73 +++++ .../Research/Oracle/OracleSystem.cs | 288 ++++++++++++++++++ .../Entities/Objects/Materials/bluespace.yml | 56 ++++ .../Objects/Specific/Research/disk.yml | 9 + .../Structures/Specific}/oracle.yml | 44 ++- .../Entities/Objects/Materials/materials.yml | 44 --- .../{Nyanotrasen => }/Reagents/psionic.yml | 0 10 files changed, 469 insertions(+), 462 deletions(-) delete mode 100644 Content.IntegrationTests/Tests/Nyanotrasen/Oracle/OracleTest.cs delete mode 100644 Content.Server/Nyanotrasen/Research/Oracle/OracleComponent.cs delete mode 100644 Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs create mode 100644 Content.Server/Research/Oracle/OracleComponent.cs create mode 100644 Content.Server/Research/Oracle/OracleSystem.cs create mode 100644 Resources/Prototypes/Entities/Objects/Materials/bluespace.yml rename Resources/Prototypes/{Nyanotrasen/Entities/Structures/Research => Entities/Structures/Specific}/oracle.yml (55%) rename Resources/Prototypes/{Nyanotrasen => }/Reagents/psionic.yml (100%) diff --git a/Content.IntegrationTests/Tests/Nyanotrasen/Oracle/OracleTest.cs b/Content.IntegrationTests/Tests/Nyanotrasen/Oracle/OracleTest.cs deleted file mode 100644 index c925db3ba21..00000000000 --- a/Content.IntegrationTests/Tests/Nyanotrasen/Oracle/OracleTest.cs +++ /dev/null @@ -1,72 +0,0 @@ -#nullable enable -using NUnit.Framework; -using System.Threading.Tasks; -using Content.Shared.Item; -using Content.Shared.Mobs.Components; -using Content.Server.Research.Oracle; -using Content.Shared.Chemistry.Components; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - - -/// -/// The oracle's request pool is huge. -/// We need to test everything that the oracle could request can be turned in. -/// -namespace Content.IntegrationTests.Tests.Oracle -{ - [TestFixture] - [TestOf(typeof(OracleSystem))] - public sealed class OracleTest - { - [Test] - public async Task AllOracleItemsCanBeTurnedIn() - { - await using var pairTracker = await PoolManager.GetServerClient(); - var server = pairTracker.Server; - // Per RobustIntegrationTest.cs, wait until state is settled to access it. - await server.WaitIdleAsync(); - - var mapManager = server.ResolveDependency(); - var prototypeManager = server.ResolveDependency(); - var entityManager = server.ResolveDependency(); - var entitySystemManager = server.ResolveDependency(); - - var oracleSystem = entitySystemManager.GetEntitySystem(); - var oracleComponent = new OracleComponent(); - - var testMap = await pairTracker.CreateTestMap(); - - await server.WaitAssertion(() => - { - var allProtos = oracleSystem.GetAllProtos(oracleComponent); - var coordinates = testMap.GridCoords; - - Assert.That((allProtos.Count > 0), "Oracle has no valid prototypes!"); - - foreach (var proto in allProtos) - { - var spawned = entityManager.SpawnEntity(proto, coordinates); - - Assert.That(entityManager.HasComponent(spawned), - $"Oracle can request non-item {proto}"); - - Assert.That(!entityManager.HasComponent(spawned), - $"Oracle can request reagent container {proto} that will conflict with the fountain"); - - Assert.That(!entityManager.HasComponent(spawned), - $"Oracle can request mob {proto} that could potentially have a player-set name."); - } - - // Because Server/Client pairs can be re-used between Tests, we - // need to clean up anything that might affect other tests, - // otherwise this pair cannot be considered clean, and the - // CleanReturnAsync call would need to be removed. - mapManager.DeleteMap(testMap.MapId); - }); - - await pairTracker.CleanReturnAsync(); - } - } -} diff --git a/Content.Server/Nyanotrasen/Research/Oracle/OracleComponent.cs b/Content.Server/Nyanotrasen/Research/Oracle/OracleComponent.cs deleted file mode 100644 index e238d5c7a18..00000000000 --- a/Content.Server/Nyanotrasen/Research/Oracle/OracleComponent.cs +++ /dev/null @@ -1,87 +0,0 @@ -using Content.Shared.Chemistry.Reagent; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Research.Oracle; - -[RegisterComponent] -public sealed partial class OracleComponent : Component -{ - public const string SolutionName = "fountain"; - - [ViewVariables] - [DataField("accumulator")] - public float Accumulator; - - [ViewVariables] - [DataField("resetTime")] - public TimeSpan ResetTime = TimeSpan.FromMinutes(10); - - [DataField("barkAccumulator")] - public float BarkAccumulator; - - [DataField("barkTime")] - public TimeSpan BarkTime = TimeSpan.FromMinutes(1); - - [DataField("rejectAccumulator")] - public float RejectAccumulator; - - [DataField("rejectTime")] - public TimeSpan RejectTime = TimeSpan.FromSeconds(5); - - [ViewVariables(VVAccess.ReadWrite)] - public EntityPrototype DesiredPrototype = default!; - - [ViewVariables(VVAccess.ReadWrite)] - public EntityPrototype? LastDesiredPrototype = default!; - - [DataField("rewardReagents", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public IReadOnlyList RewardReagents = new[] - { - "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "LotophagoiOil", "Wine", "Blood", "Ichor" - }; - - [DataField("demandMessages")] - public IReadOnlyList DemandMessages = new[] - { - "oracle-demand-1", - "oracle-demand-2", - "oracle-demand-3", - "oracle-demand-4", - "oracle-demand-5", - "oracle-demand-6", - "oracle-demand-7", - "oracle-demand-8", - "oracle-demand-9", - "oracle-demand-10", - "oracle-demand-11", - "oracle-demand-12" - }; - - [DataField("rejectMessages")] - public IReadOnlyList RejectMessages = new[] - { - "ἄγνοια", - "υλικό", - "ἀγνωσία", - "γήινος", - "σάκλας" - }; - - [DataField("blacklistedPrototypes")] - [ViewVariables(VVAccess.ReadOnly)] - public IReadOnlyList BlacklistedPrototypes = new[] - { - "Drone", - "QSI", - "HandTeleporter", - "BluespaceBeaker", - "ClothingBackpackHolding", - "ClothingBackpackSatchelHolding", - "ClothingBackpackDuffelHolding", - "TrashBagOfHolding", - "BluespaceCrystal", - "InsulativeHeadcage", - "CrystalNormality", - }; -} diff --git a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs deleted file mode 100644 index 148598fe2c3..00000000000 --- a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs +++ /dev/null @@ -1,258 +0,0 @@ -using System.Linq; -using Content.Server.Botany; -using Content.Server.Chat.Managers; -using Content.Server.Chat.Systems; -using Content.Server.Chemistry.Containers.EntitySystems; -using Content.Server.Fluids.EntitySystems; -using Content.Server.Psionics; -using Content.Shared.Abilities.Psionics; -using Content.Shared.Chat; -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Chemistry.Reagent; -using Content.Shared.Interaction; -using Content.Shared.Mobs.Components; -using Content.Shared.Psionics.Glimmer; -using Content.Shared.Research.Prototypes; -using Robust.Server.GameObjects; -using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - -namespace Content.Server.Research.Oracle; - -public sealed class OracleSystem : EntitySystem -{ - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ChatSystem _chat = default!; - [Dependency] private readonly IChatManager _chatManager = default!; - [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; - [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; - [Dependency] private readonly PuddleSystem _puddleSystem = default!; - - public override void Update(float frameTime) - { - base.Update(frameTime); - foreach (var oracle in EntityQuery()) - { - oracle.Accumulator += frameTime; - oracle.BarkAccumulator += frameTime; - oracle.RejectAccumulator += frameTime; - if (oracle.BarkAccumulator >= oracle.BarkTime.TotalSeconds) - { - oracle.BarkAccumulator = 0; - var message = Loc.GetString(_random.Pick(oracle.DemandMessages), ("item", oracle.DesiredPrototype.Name)) - .ToUpper(); - _chat.TrySendInGameICMessage(oracle.Owner, message, InGameICChatType.Speak, false); - } - - if (oracle.Accumulator >= oracle.ResetTime.TotalSeconds) - { - oracle.LastDesiredPrototype = oracle.DesiredPrototype; - NextItem(oracle); - } - } - } - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnInteractHand); - SubscribeLocalEvent(OnInteractUsing); - } - - private void OnInit(EntityUid uid, OracleComponent component, ComponentInit args) - { - NextItem(component); - } - - private void OnInteractHand(EntityUid uid, OracleComponent component, InteractHandEvent args) - { - if (!HasComp(args.User) || HasComp(args.User)) - return; - - if (!TryComp(args.User, out var actor)) - return; - - var message = Loc.GetString("oracle-current-item", ("item", component.DesiredPrototype.Name)); - - var messageWrap = Loc.GetString("chat-manager-send-telepathic-chat-wrap-message", - ("telepathicChannelName", Loc.GetString("chat-manager-telepathic-channel-name")), ("message", message)); - - _chatManager.ChatMessageToOne(ChatChannel.Telepathic, - message, messageWrap, uid, false, actor.PlayerSession.ConnectedClient, Color.PaleVioletRed); - - if (component.LastDesiredPrototype != null) - { - var message2 = Loc.GetString("oracle-previous-item", ("item", component.LastDesiredPrototype.Name)); - var messageWrap2 = Loc.GetString("chat-manager-send-telepathic-chat-wrap-message", - ("telepathicChannelName", Loc.GetString("chat-manager-telepathic-channel-name")), - ("message", message2)); - - _chatManager.ChatMessageToOne(ChatChannel.Telepathic, - message2, messageWrap2, uid, false, actor.PlayerSession.ConnectedClient, Color.PaleVioletRed); - } - } - - private void OnInteractUsing(EntityUid uid, OracleComponent component, InteractUsingEvent args) - { - if (HasComp(args.Used)) - return; - - if (!TryComp(args.Used, out var meta)) - return; - - if (meta.EntityPrototype == null) - return; - - var validItem = CheckValidity(meta.EntityPrototype, component.DesiredPrototype); - - var nextItem = true; - - if (component.LastDesiredPrototype != null && - CheckValidity(meta.EntityPrototype, component.LastDesiredPrototype)) - { - nextItem = false; - validItem = true; - component.LastDesiredPrototype = null; - } - - if (!validItem) - { - if (!HasComp(args.Used) && - component.RejectAccumulator >= component.RejectTime.TotalSeconds) - { - component.RejectAccumulator = 0; - _chat.TrySendInGameICMessage(uid, _random.Pick(component.RejectMessages), InGameICChatType.Speak, true); - } - return; - } - - EntityManager.QueueDeleteEntity(args.Used); - - EntityManager.SpawnEntity("ResearchDisk5000", Transform(args.User).Coordinates); - - DispenseLiquidReward(uid, component); - - var i = _random.Next(1, 4); - - while (i != 0) - { - EntityManager.SpawnEntity("MaterialBluespace1", Transform(args.User).Coordinates); - i--; - } - - if (nextItem) - NextItem(component); - } - - private bool CheckValidity(EntityPrototype given, EntityPrototype target) - { - // 1: directly compare Names - // name instead of ID because the oracle asks for them by name - // this could potentially lead to like, labeller exploits maybe but so far only mob names can be fully player-set. - if (given.Name == target.Name) - return true; - - return false; - } - - private void DispenseLiquidReward(EntityUid uid, OracleComponent component) - { - if (!_solutionSystem.TryGetSolution(uid, OracleComponent.SolutionName, out var fountainSol)) - return; - - var allReagents = _prototypeManager.EnumeratePrototypes() - .Where(x => !x.Abstract) - .Select(x => x.ID).ToList(); - - var amount = 20 + _random.Next(1, 30) + _glimmerSystem.Glimmer / 10f; - amount = (float) Math.Round(amount); - - var sol = new Solution(); - var reagent = ""; - - if (_random.Prob(0.2f)) - reagent = _random.Pick(allReagents); - else - reagent = _random.Pick(component.RewardReagents); - - sol.AddReagent(reagent, amount); - - _solutionSystem.TryMixAndOverflow(fountainSol.Value, sol, fountainSol.Value.Comp.Solution.MaxVolume, out var overflowing); - - if (overflowing != null && overflowing.Volume > 0) - _puddleSystem.TrySpillAt(uid, overflowing, out var _); - } - - private void NextItem(OracleComponent component) - { - component.Accumulator = 0; - component.BarkAccumulator = 0; - component.RejectAccumulator = 0; - var protoString = GetDesiredItem(component); - if (_prototypeManager.TryIndex(protoString, out var proto)) - component.DesiredPrototype = proto; - else - Logger.Error("Oracle can't index prototype " + protoString); - } - - private string GetDesiredItem(OracleComponent component) - { - return _random.Pick(GetAllProtos(component)); - } - - - public List GetAllProtos(OracleComponent component) - { - var allTechs = _prototypeManager.EnumeratePrototypes(); - var allRecipes = new List(); - - foreach (var tech in allTechs) - { - foreach (var recipe in tech.RecipeUnlocks) - { - var recipeProto = _prototypeManager.Index(recipe); - allRecipes.Add(recipeProto.Result); - } - } - - var allPlants = _prototypeManager.EnumeratePrototypes().Select(x => x.ProductPrototypes[0]) - .ToList(); - var allProtos = allRecipes.Concat(allPlants).ToList(); - var blacklist = component.BlacklistedPrototypes.ToList(); - - foreach (var proto in allProtos) - { - if (!_prototypeManager.TryIndex(proto, out var entityProto)) - { - blacklist.Add(proto); - continue; - } - - if (!entityProto.Components.ContainsKey("Item")) - { - blacklist.Add(proto); - continue; - } - - if (entityProto.Components.ContainsKey("SolutionTransfer")) - { - blacklist.Add(proto); - continue; - } - - if (entityProto.Components.ContainsKey("MobState")) - blacklist.Add(proto); - } - - foreach (var proto in blacklist) - { - allProtos.Remove(proto); - } - - return allProtos; - } -} diff --git a/Content.Server/Research/Oracle/OracleComponent.cs b/Content.Server/Research/Oracle/OracleComponent.cs new file mode 100644 index 00000000000..6196ce95060 --- /dev/null +++ b/Content.Server/Research/Oracle/OracleComponent.cs @@ -0,0 +1,73 @@ +using Content.Shared.Random; +using Robust.Shared.Prototypes; + +namespace Content.Server.Research.Oracle; + +[RegisterComponent] +public sealed partial class OracleComponent : Component +{ + public const string SolutionName = "fountain"; + + [DataField(required: true)] + public ProtoId DemandTypes; + + [DataField] + public List> BlacklistedDemands = new(); + + [DataField(required: true)] + public List> RewardEntities; + + [DataField(required: true)] + public ProtoId RewardReagents; + + /// + /// The chance to dispense a completely random chemical instead of what's listed in + /// + [DataField] + public float AbnormalReagentChance = 0.2f; + + [DataField] + public TimeSpan + NextDemandTime = TimeSpan.Zero, + NextBarkTime = TimeSpan.Zero, + NextRejectTime = TimeSpan.Zero; + + [DataField] + public TimeSpan + DemandDelay = TimeSpan.FromMinutes(10), + BarkDelay = TimeSpan.FromMinutes(2), + RejectDelay = TimeSpan.FromSeconds(10); + + [ViewVariables(VVAccess.ReadWrite)] + public EntityPrototype DesiredPrototype = default!; + + [ViewVariables(VVAccess.ReadWrite)] + public EntityPrototype? LastDesiredPrototype = default!; + + [DataField("demandMessages")] + public IReadOnlyList DemandMessages = new[] + { + "oracle-demand-1", + "oracle-demand-2", + "oracle-demand-3", + "oracle-demand-4", + "oracle-demand-5", + "oracle-demand-6", + "oracle-demand-7", + "oracle-demand-8", + "oracle-demand-9", + "oracle-demand-10", + "oracle-demand-11", + "oracle-demand-12" + }; + + [DataField("rejectMessages")] + public IReadOnlyList RejectMessages = new[] + { + "ἄγνοια", + "υλικό", + "ἀγνωσία", + "γήινος", + "σάκλας" + }; +} diff --git a/Content.Server/Research/Oracle/OracleSystem.cs b/Content.Server/Research/Oracle/OracleSystem.cs new file mode 100644 index 00000000000..63dcefbadd7 --- /dev/null +++ b/Content.Server/Research/Oracle/OracleSystem.cs @@ -0,0 +1,288 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Server.Botany; +using Content.Server.Chat.Managers; +using Content.Server.Chat.Systems; +using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Fluids.EntitySystems; +using Content.Server.Psionics; +using Content.Server.Research.Systems; +using Content.Shared.Abilities.Psionics; +using Content.Shared.Chat; +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Interaction; +using Content.Shared.Mobs.Components; +using Content.Shared.Psionics.Glimmer; +using Content.Shared.Random.Helpers; +using Content.Shared.Research.Components; +using Content.Shared.Research.Prototypes; +using Content.Shared.Throwing; +using Robust.Shared.Map; +using Robust.Shared.Network; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.Research.Oracle; + +public sealed class OracleSystem : EntitySystem +{ + [Dependency] private readonly ChatSystem _chat = default!; + [Dependency] private readonly IChatManager _chatMan = default!; + [Dependency] private readonly GlimmerSystem _glimmer = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly PuddleSystem _puddles = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ResearchSystem _research = default!; + [Dependency] private readonly SolutionContainerSystem _solutions = default!; + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Update(float frameTime) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + if (_timing.CurTime >= comp.NextDemandTime) + { + // Might be null if this is the first tick. In that case this will simply initialize it. + var last = (EntityPrototype?) comp.DesiredPrototype; + if (NextItem((uid, comp))) + comp.LastDesiredPrototype = last; + } + + if (_timing.CurTime >= comp.NextBarkTime) + { + comp.NextBarkTime = _timing.CurTime + comp.BarkDelay; + + var message = Loc.GetString(_random.Pick(comp.DemandMessages), ("item", comp.DesiredPrototype.Name)).ToUpper(); + _chat.TrySendInGameICMessage(uid, message, InGameICChatType.Speak, false); + } + } + + query.Dispose(); + } + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInteractHand); + SubscribeLocalEvent(OnInteractUsing); + } + + private void OnInteractHand(Entity oracle, ref InteractHandEvent args) + { + if (!HasComp(args.User) || HasComp(args.User) + || !TryComp(args.User, out var actor)) + return; + + SendTelepathicInfo(oracle, actor.PlayerSession.Channel, + Loc.GetString("oracle-current-item", ("item", oracle.Comp.DesiredPrototype.Name))); + + if (oracle.Comp.LastDesiredPrototype != null) + SendTelepathicInfo(oracle, actor.PlayerSession.Channel, + Loc.GetString("oracle-previous-item", ("item", oracle.Comp.LastDesiredPrototype.Name))); + } + + private void OnInteractUsing(Entity oracle, ref InteractUsingEvent args) + { + if (args.Handled) + return; + + if (HasComp(args.Used) || !TryComp(args.Used, out var meta) || meta.EntityPrototype == null) + return; + + var requestValid = IsCorrectItem(meta.EntityPrototype, oracle.Comp.DesiredPrototype); + var updateRequest = true; + + if (oracle.Comp.LastDesiredPrototype != null && + IsCorrectItem(meta.EntityPrototype, oracle.Comp.LastDesiredPrototype)) + { + updateRequest = false; + requestValid = true; + oracle.Comp.LastDesiredPrototype = null; + } + + if (!requestValid) + { + if (!HasComp(args.Used) && + _timing.CurTime >= oracle.Comp.NextRejectTime) + { + oracle.Comp.NextRejectTime = _timing.CurTime + oracle.Comp.RejectDelay; + _chat.TrySendInGameICMessage(oracle, _random.Pick(oracle.Comp.RejectMessages), InGameICChatType.Speak, true); + } + + return; + } + + DispenseRewards(oracle, Transform(args.User).Coordinates); + QueueDel(args.Used); + + if (updateRequest) + NextItem(oracle); + } + + private void SendTelepathicInfo(Entity oracle, INetChannel client, string message) + { + var messageWrap = Loc.GetString("chat-manager-send-telepathic-chat-wrap-message", + ("telepathicChannelName", Loc.GetString("chat-manager-telepathic-channel-name")), + ("message", message)); + + _chatMan.ChatMessageToOne(ChatChannel.Telepathic, + message, messageWrap, oracle, false, client, Color.PaleVioletRed); + } + + private bool IsCorrectItem(EntityPrototype given, EntityPrototype target) + { + // Nyano, what is this shit? + // Why are we comparing by name instead of prototype id? + // Why is this ever necessary? + // What were you trying to accomplish?! + if (given.Name == target.Name) + return true; + + return false; + } + + private void DispenseRewards(Entity oracle, EntityCoordinates throwTarget) + { + foreach (var rewardRandom in oracle.Comp.RewardEntities) + { + // Spawn each reward next to oracle and throw towards the target + var rewardProto = _protoMan.Index(rewardRandom).Pick(_random); + var reward = EntityManager.SpawnNextToOrDrop(rewardProto, oracle); + _throwing.TryThrow(reward, throwTarget, recoil: false); + } + + DispenseLiquidReward(oracle); + } + + private void DispenseLiquidReward(Entity oracle) + { + if (!_solutions.TryGetSolution(oracle.Owner, OracleComponent.SolutionName, out var fountainSol)) + return; + + // Why is this hardcoded? + var amount = MathF.Round(20 + _random.Next(1, 30) + _glimmer.Glimmer / 10f); + var temporarySol = new Solution(); + var reagent = _protoMan.Index(oracle.Comp.RewardReagents).Pick(_random); + + if (_random.Prob(oracle.Comp.AbnormalReagentChance)) + { + var allReagents = _protoMan.EnumeratePrototypes() + .Where(x => !x.Abstract) + .Select(x => x.ID).ToList(); + + reagent = _random.Pick(allReagents); + } + + temporarySol.AddReagent(reagent, amount); + _solutions.TryMixAndOverflow(fountainSol.Value, temporarySol, fountainSol.Value.Comp.Solution.MaxVolume, out var overflowing); + + if (overflowing != null && overflowing.Volume > 0) + _puddles.TrySpillAt(oracle, overflowing, out var _); + } + + private bool NextItem(Entity oracle) + { + oracle.Comp.NextBarkTime = oracle.Comp.NextRejectTime = TimeSpan.Zero; + oracle.Comp.NextDemandTime = _timing.CurTime + oracle.Comp.DemandDelay; + + var protoId = GetDesiredItem(oracle); + if (protoId != null && _protoMan.TryIndex(protoId, out var proto)) + { + oracle.Comp.DesiredPrototype = proto; + return true; + } + + return false; + } + + // TODO: find a way to not just use string literals here (weighted random doesn't support enums) + private string? GetDesiredItem(Entity oracle) + { + var demand = _protoMan.Index(oracle.Comp.DemandTypes).Pick(_random); + + string? proto; + if (demand == "tech" && GetRandomTechProto(oracle, out proto)) + return proto; + + // This is also a fallback for when there's no research server to form an oracle tech request. + if (demand is "plant" or "tech" && GetRandomPlantProto(oracle, out proto)) + return proto; + + return null; + } + + private bool GetRandomTechProto(Entity oracle, [NotNullWhen(true)] out string? proto) + { + // Try to find the most advanced server. + var database = _research.GetServerIds() + .Select(x => _research.TryGetServerById(x, out var serverUid, out _) ? serverUid : null) + .Where(x => x != null && Transform(x.Value).GridUid == Transform(oracle).GridUid) + .Select(x => + { + TryComp(x!.Value, out var comp); + return new Entity(x.Value, comp); + }) + .Where(x => x.Comp != null) + .OrderByDescending(x => + _research.GetDisciplineTiers(x.Comp!).Select(pair => pair.Value).Max()) + .FirstOrDefault(EntityUid.Invalid); + + if (database.Owner == EntityUid.Invalid) + { + Log.Warning($"Cannot find an applicable server on grid {Transform(oracle).GridUid} to form an oracle request."); + proto = null; + return false; + } + + // Select a technology that's either already unlocked, or can be unlocked from current research + var techs = _protoMan.EnumeratePrototypes() + .Where(x => !x.Hidden) + .Where(x => + _research.IsTechnologyUnlocked(database.Owner, x, database.Comp) + || _research.IsTechnologyAvailable(database.Comp!, x)) + .SelectMany(x => x.RecipeUnlocks) + .Select(x => _protoMan.Index(x).Result) + .Where(x => IsDemandValid(oracle, x)) + .ToList(); + + // Unlikely. + if (techs.Count == 0) + { + proto = null; + return false; + } + + proto = _random.Pick(techs); + return true; + } + + private bool GetRandomPlantProto(Entity oracle, [NotNullWhen(true)] out string? proto) + { + var allPlants = _protoMan.EnumeratePrototypes() + .Select(x => x.ProductPrototypes.FirstOrDefault()) + .Where(x => IsDemandValid(oracle, x)) + .ToList(); + + if (allPlants.Count == 0) + { + proto = null; + return false; + } + + proto = _random.Pick(allPlants)!; + return true; + } + + private bool IsDemandValid(Entity oracle, ProtoId? id) + { + if (id == null || oracle.Comp.BlacklistedDemands.Contains(id.Value)) + return false; + + return _protoMan.TryIndex(id, out var proto) && proto.Components.ContainsKey("Item"); + } +} diff --git a/Resources/Prototypes/Entities/Objects/Materials/bluespace.yml b/Resources/Prototypes/Entities/Objects/Materials/bluespace.yml new file mode 100644 index 00000000000..f93534ecd5c --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Materials/bluespace.yml @@ -0,0 +1,56 @@ +- type: entity + parent: MaterialBase + id: MaterialBluespace + suffix: Full + name: bluespace crystal + components: + - type: Sprite + sprite: Nyanotrasen/Objects/Materials/materials.rsi + layers: + - state: bluespace_3 + map: ["base"] + - type: Appearance + - type: Material + - type: PhysicalComposition + materialComposition: + Bluespace: 100 + - type: Tag + tags: + - BluespaceCrystal + - RawMaterial + - type: Stack + stackType: Bluespace + baseLayer: base + layerStates: + - bluespace + - bluespace_2 + - bluespace_3 + count: 5 + - type: Item + size: Small + +- type: entity + parent: MaterialBluespace + id: MaterialBluespace1 + suffix: 1 + components: + - type: Sprite + state: bluespace + - type: Stack + count: 1 + +- type: entity + parent: MaterialBluespace1 + id: MaterialBluespace3 + suffix: 3 + components: + - type: Stack + count: 3 + +- type: entity + parent: MaterialBluespace1 + id: MaterialBluespace5 + suffix: 5 + components: + - type: Stack + count: 5 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml index fa1b75530b6..862716c5123 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml @@ -36,6 +36,15 @@ - type: ResearchDisk points: 10000 +- type: entity + parent: ResearchDisk + id: ResearchDisk20000 + name: research point disk (20000) + description: A disk for the R&D server containing 20000 points. + components: + - type: ResearchDisk + points: 20000 + - type: entity parent: ResearchDisk id: ResearchDiskDebug diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml b/Resources/Prototypes/Entities/Structures/Specific/oracle.yml similarity index 55% rename from Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml rename to Resources/Prototypes/Entities/Structures/Specific/oracle.yml index f7481abf1ed..51a25bffcdc 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Structures/Research/oracle.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/oracle.yml @@ -13,7 +13,6 @@ - state: oracle-0 - map: ["enum.SolutionContainerLayers.Fill"] state: oracle-0 - - type: Oracle - type: Speech speechSounds: Tenor - type: Psionic @@ -42,3 +41,46 @@ - type: SpriteFade - type: Tag tags: [] + - type: Oracle + demandTypes: OracleDemandTypes + rewardReagents: OracleRewardReagents + rewardEntities: + - OracleRewardDisks + - OracleRewardCrystals + demandBlacklist: + tags: + - Bluespace + components: + - MobState + demandWhitelist: + components: + - Item + + +- type: weightedRandomEntity + id: OracleRewardDisks + weights: + ResearchDisk5000: 20 + ResearchDisk10000: 5 + ResearchDisk20000: 1 + +- type: weightedRandomEntity + id: OracleRewardCrystals + weights: + MaterialBluespace1: 3 + MaterialBluespace3: 10 + MaterialBluespace5: 2 + +- type: weightedRandom + id: OracleRewardReagents + weights: + LotophagoiOil: 7 + Ichor: 2 + Wine: 1.2 + Blood: 0.8 + +- type: weightedRandom + id: OracleDemandTypes + weights: + tech: 3 + plant: 1 # Plants are very annoying to procure most of the time diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Materials/materials.yml index 75bb4727da2..5aed17363ba 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Objects/Materials/materials.yml @@ -1,47 +1,3 @@ -- type: entity - parent: MaterialBase - id: MaterialBluespace - suffix: Full - name: bluespace crystal - components: - - type: Sprite - sprite: Nyanotrasen/Objects/Materials/materials.rsi - layers: - - state: bluespace_3 - map: ["base"] - - type: Appearance - - type: Material - - type: PhysicalComposition - materialComposition: - Bluespace: 100 - - type: Tag - tags: - - BluespaceCrystal - - RawMaterial - - type: Stack - stackType: Bluespace - baseLayer: base - layerStates: - - bluespace - - bluespace_2 - - bluespace_3 - count: 5 - - type: Item - size: Small - -- type: entity - parent: MaterialBluespace - id: MaterialBluespace1 - suffix: 1 - components: - - type: Sprite - state: bluespace - - type: Stack - stackType: Bluespace - count: 1 - - type: Item - size: Tiny - - type: entity parent: BaseItem id: HideMothroach diff --git a/Resources/Prototypes/Nyanotrasen/Reagents/psionic.yml b/Resources/Prototypes/Reagents/psionic.yml similarity index 100% rename from Resources/Prototypes/Nyanotrasen/Reagents/psionic.yml rename to Resources/Prototypes/Reagents/psionic.yml From 22c979c346cd0745eb98d13498ea758ddde994d5 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 17:11:05 +0000 Subject: [PATCH 76/82] Automatic Changelog Update (#549) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b5263f12b7a..a4018c20b9a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4910,3 +4910,11 @@ Entries: communicate in Galactic Sign Language. id: 6214 time: '2024-08-05T16:55:31.0000000+00:00' +- author: Mnemotechnician + changes: + - type: Tweak + message: >- + Oracle requests are now more likely to be aligned with the current + research. + id: 6215 + time: '2024-08-05T17:10:42.0000000+00:00' From 664f482c33ba17b14603a54028d212b9aa3f098b Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Mon, 5 Aug 2024 13:11:37 -0400 Subject: [PATCH 77/82] Carrying System Refactor (#580) # Description This is a very simple and apparently minor update to the Carrying System, bringing it up to date with more modern code. The biggest difference is that rather than having a private one-off implementation of one of the original Nyano MassContest functions, it uses the new public Reworked MassContests. With this change, pick up durations no longer infinitely scale with arbitrary mass, meaning that a hypothetical 2000kg Lamia doesn't have an arbitrarily infinitesimal pickup duration when trying to pick up a 10kg Harpy. Carrying is also more strictly limited by mass, rather than by carrying duration, meaning that if a target character is more than 25% heavier than your character, it will not be possible to shoulder them. You'll just have to either drag them, or get a roller bed to move overly massive characters. The last thing I did was just cleanup all of the code, so that has nice, Single-IF exit conditions, rather than 30+ line blocks of IF(THING) RETURN; Oh, and entities can now set their own internal base PickupDuration, so that entities can declare however easy or difficult they should be to pick up! # MEDIA https://github.com/user-attachments/assets/9ee0f1dd-ac75-406f-8bbd-9a130594d46d # Changelog :cl: - tweak: The Carrying system has been reworked as a means of better supporting having extremely large species and characters. 10kg Harpies should no longer be oppressed by 2000kg Lamia with infinitely short carry attempts. --- .../Carrying/BeingCarriedComponent.cs | 0 .../Carrying/CarriableComponent.cs | 9 +- .../Carrying/CarryingComponent.cs | 0 .../Carrying/CarryingSystem.cs | 177 ++++++------------ .../Carrying/CarryingDoAfterEvent.cs | 4 +- .../Carrying/CarryingSlowdownComponent.cs | 4 +- .../Carrying/CarryingSlowdownSystem.cs | 11 +- 7 files changed, 75 insertions(+), 130 deletions(-) rename Content.Server/{Nyanotrasen => }/Carrying/BeingCarriedComponent.cs (100%) rename Content.Server/{Nyanotrasen => }/Carrying/CarriableComponent.cs (58%) rename Content.Server/{Nyanotrasen => }/Carrying/CarryingComponent.cs (100%) rename Content.Server/{Nyanotrasen => }/Carrying/CarryingSystem.cs (73%) rename Content.Shared/{Nyanotrasen => }/Carrying/CarryingDoAfterEvent.cs (91%) rename Content.Shared/{Nyanotrasen => }/Carrying/CarryingSlowdownComponent.cs (80%) rename Content.Shared/{Nyanotrasen => }/Carrying/CarryingSlowdownSystem.cs (85%) diff --git a/Content.Server/Nyanotrasen/Carrying/BeingCarriedComponent.cs b/Content.Server/Carrying/BeingCarriedComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Carrying/BeingCarriedComponent.cs rename to Content.Server/Carrying/BeingCarriedComponent.cs diff --git a/Content.Server/Nyanotrasen/Carrying/CarriableComponent.cs b/Content.Server/Carrying/CarriableComponent.cs similarity index 58% rename from Content.Server/Nyanotrasen/Carrying/CarriableComponent.cs rename to Content.Server/Carrying/CarriableComponent.cs index f4fd1fa6d56..eb12dbc904e 100644 --- a/Content.Server/Nyanotrasen/Carrying/CarriableComponent.cs +++ b/Content.Server/Carrying/CarriableComponent.cs @@ -9,9 +9,16 @@ public sealed partial class CarriableComponent : Component /// Number of free hands required /// to carry the entity /// - [DataField("freeHandsRequired")] + [DataField] public int FreeHandsRequired = 2; public CancellationTokenSource? CancelToken; + + /// + /// The base duration (In Seconds) of how long it should take to pick up this entity + /// before Contests are considered. + /// + [DataField] + public float PickupDuration = 3; } } diff --git a/Content.Server/Nyanotrasen/Carrying/CarryingComponent.cs b/Content.Server/Carrying/CarryingComponent.cs similarity index 100% rename from Content.Server/Nyanotrasen/Carrying/CarryingComponent.cs rename to Content.Server/Carrying/CarryingComponent.cs diff --git a/Content.Server/Nyanotrasen/Carrying/CarryingSystem.cs b/Content.Server/Carrying/CarryingSystem.cs similarity index 73% rename from Content.Server/Nyanotrasen/Carrying/CarryingSystem.cs rename to Content.Server/Carrying/CarryingSystem.cs index ff4c097080c..13338ea2b7b 100644 --- a/Content.Server/Nyanotrasen/Carrying/CarryingSystem.cs +++ b/Content.Server/Carrying/CarryingSystem.cs @@ -1,7 +1,6 @@ using System.Numerics; using System.Threading; using Content.Server.DoAfter; -using Content.Server.Body.Systems; using Content.Server.Resist; using Content.Server.Popups; using Content.Server.Inventory; @@ -14,8 +13,9 @@ using Content.Shared.Stunnable; using Content.Shared.Interaction.Events; using Content.Shared.Verbs; -using Content.Shared.Climbing.Events; // Added this. +using Content.Shared.Climbing.Events; using Content.Shared.Carrying; +using Content.Shared.Contests; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; using Content.Shared.Standing; @@ -31,6 +31,7 @@ using Content.Shared.Storage; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; +using Robust.Server.GameObjects; namespace Content.Server.Carrying { @@ -47,6 +48,8 @@ public sealed class CarryingSystem : EntitySystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!; [Dependency] private readonly PseudoItemSystem _pseudoItem = default!; + [Dependency] private readonly ContestsSystem _contests = default!; + [Dependency] private readonly TransformSystem _transform = default!; public override void Initialize() { @@ -70,22 +73,11 @@ public override void Initialize() private void AddCarryVerb(EntityUid uid, CarriableComponent component, GetVerbsEvent args) { - if (!args.CanInteract || !args.CanAccess) - return; - - if (!CanCarry(args.User, uid, component)) - return; - - if (HasComp(args.User)) // yeah not dealing with that - return; - - if (HasComp(args.User) || HasComp(args.Target)) - return; - - if (!_mobStateSystem.IsAlive(args.User)) - return; - - if (args.User == args.Target) + if (!args.CanInteract || !args.CanAccess || !_mobStateSystem.IsAlive(args.User) + || !CanCarry(args.User, uid, component) + || HasComp(args.User) + || HasComp(args.User) || HasComp(args.Target) + || args.User == args.Target) return; AlternativeVerb verb = new() @@ -105,13 +97,10 @@ private void AddInsertCarriedVerb(EntityUid uid, CarryingComponent component, Ge // If the person is carrying someone, and the carried person is a pseudo-item, and the target entity is a storage, // then add an action to insert the carried entity into the target var toInsert = args.Using; - if (toInsert is not { Valid: true } || !args.CanAccess || !TryComp(toInsert, out var pseudoItem)) - return; - - if (!TryComp(args.Target, out var storageComp)) - return; - - if (!_pseudoItem.CheckItemFits((toInsert.Value, pseudoItem), (args.Target, storageComp))) + if (toInsert is not { Valid: true } || !args.CanAccess + || !TryComp(toInsert, out var pseudoItem) + || !TryComp(args.Target, out var storageComp) + || !_pseudoItem.CheckItemFits((toInsert.Value, pseudoItem), (args.Target, storageComp))) return; InnateVerb verb = new() @@ -142,25 +131,22 @@ private void OnVirtualItemDeleted(EntityUid uid, CarryingComponent component, Vi /// Basically using virtual item passthrough to throw the carried person. A new age! /// Maybe other things besides throwing should use virt items like this... /// - private void OnThrow(EntityUid uid, CarryingComponent component, BeforeThrowEvent args) + private void OnThrow(EntityUid uid, CarryingComponent component, ref BeforeThrowEvent args) { - if (!TryComp(args.ItemUid, out var virtItem) || !HasComp(virtItem.BlockingEntity)) + if (!TryComp(args.ItemUid, out var virtItem) + || !HasComp(virtItem.BlockingEntity)) return; args.ItemUid = virtItem.BlockingEntity; - var multiplier = MassContest(uid, virtItem.BlockingEntity); - args.ThrowStrength = 5f * multiplier; + args.ThrowStrength *= _contests.MassContest(uid, virtItem.BlockingEntity, false, 2f) + * _contests.StaminaContest(uid, virtItem.BlockingEntity); } private void OnParentChanged(EntityUid uid, CarryingComponent component, ref EntParentChangedMessage args) { var xform = Transform(uid); - if (xform.MapID != args.OldMapId) - return; - - // Do not drop the carried entity if the new parent is a grid - if (xform.ParentUid == xform.GridUid) + if (xform.MapID != args.OldMapId || xform.ParentUid == xform.GridUid) return; DropCarried(uid, component.Carried); @@ -190,17 +176,14 @@ private void OnInteractionAttempt(EntityUid uid, BeingCarriedComponent component /// private void OnMoveInput(EntityUid uid, BeingCarriedComponent component, ref MoveInputEvent args) { - if (!TryComp(uid, out var escape)) - return; - - if (!args.HasDirectionalMovement) + if (!TryComp(uid, out var escape) + || !args.HasDirectionalMovement) return; + // Check if the victim is in any way incapacitated, and if not make an escape attempt. + // Escape time scales with the inverse of a mass contest. Being lighter makes escape harder. if (_actionBlockerSystem.CanInteract(uid, component.Carrier)) - { - // Note: the mass contest is inverted because weaker entities are supposed to take longer to escape - _escapeInventorySystem.AttemptEscape(uid, component.Carrier, escape, MassContest(component.Carrier, uid)); - } + _escapeInventorySystem.AttemptEscape(uid, component.Carrier, escape, _contests.MassContest(uid, component.Carrier, false, 2f)); } private void OnMoveAttempt(EntityUid uid, BeingCarriedComponent component, UpdateCanMoveEvent args) @@ -237,10 +220,8 @@ private void OnBuckleChange(EntityUid uid, BeingCarriedComponent component, ref private void OnDoAfter(EntityUid uid, CarriableComponent component, CarryDoAfterEvent args) { component.CancelToken = null; - if (args.Handled || args.Cancelled) - return; - - if (!CanCarry(args.Args.User, uid, component)) + if (args.Handled || args.Cancelled + || !CanCarry(args.Args.User, uid, component)) return; Carry(args.Args.User, uid); @@ -248,16 +229,18 @@ private void OnDoAfter(EntityUid uid, CarriableComponent component, CarryDoAfter } private void StartCarryDoAfter(EntityUid carrier, EntityUid carried, CarriableComponent component) { - TimeSpan length = GetPickupDuration(carrier, carried); - - if (length >= TimeSpan.FromSeconds(9)) + if (!TryComp(carrier, out var carrierPhysics) + || !TryComp(carried, out var carriedPhysics) + || carriedPhysics.Mass > carrierPhysics.Mass * 2f) { _popupSystem.PopupEntity(Loc.GetString("carry-too-heavy"), carried, carrier, Shared.Popups.PopupType.SmallCaution); return; } - if (!HasComp(carried)) - length *= 2f; + var length = TimeSpan.FromSeconds(component.PickupDuration + * _contests.MassContest(carriedPhysics, carrierPhysics, false, 4f) + * _contests.StaminaContest(carrier, carried) + * (_standingState.IsDown(carried) ? 0.5f : 1)); component.CancelToken = new CancellationTokenSource(); @@ -280,10 +263,10 @@ private void Carry(EntityUid carrier, EntityUid carried) if (TryComp(carried, out var pullable)) _pullingSystem.TryStopPull(carried, pullable); - Transform(carrier).AttachToGridOrMap(); - Transform(carried).AttachToGridOrMap(); - Transform(carried).Coordinates = Transform(carrier).Coordinates; - Transform(carried).AttachParent(Transform(carrier)); + _transform.AttachToGridOrMap(carrier); + _transform.AttachToGridOrMap(carried); + _transform.SetCoordinates(carried, Transform(carrier).Coordinates); + _transform.SetParent(carried, carrier); _virtualItemSystem.TrySpawnVirtualItemInHand(carried, carrier); _virtualItemSystem.TrySpawnVirtualItemInHand(carried, carrier); var carryingComp = EnsureComp(carrier); @@ -299,17 +282,13 @@ private void Carry(EntityUid carrier, EntityUid carried) public bool TryCarry(EntityUid carrier, EntityUid toCarry, CarriableComponent? carriedComp = null) { - if (!Resolve(toCarry, ref carriedComp, false)) - return false; - - if (!CanCarry(carrier, toCarry, carriedComp)) - return false; - - // The second one means that carrier is a pseudo-item and is inside a bag. - if (HasComp(carrier) || HasComp(carrier)) - return false; - - if (GetPickupDuration(carrier, toCarry) > TimeSpan.FromSeconds(9)) + if (!Resolve(toCarry, ref carriedComp, false) + || !CanCarry(carrier, toCarry, carriedComp) + || HasComp(carrier) + || HasComp(carrier) + || TryComp(carrier, out var carrierPhysics) + && TryComp(toCarry, out var toCarryPhysics) + && carrierPhysics.Mass < toCarryPhysics.Mass * 2f) return false; Carry(carrier, toCarry); @@ -319,79 +298,41 @@ public bool TryCarry(EntityUid carrier, EntityUid toCarry, CarriableComponent? c public void DropCarried(EntityUid carrier, EntityUid carried) { - RemComp(carrier); // get rid of this first so we don't recusrively fire that event + RemComp(carrier); // get rid of this first so we don't recursively fire that event RemComp(carrier); RemComp(carried); RemComp(carried); _actionBlockerSystem.UpdateCanMove(carried); _virtualItemSystem.DeleteInHandsMatching(carrier, carried); - Transform(carried).AttachToGridOrMap(); + _transform.AttachToGridOrMap(carried); _standingState.Stand(carried); _movementSpeed.RefreshMovementSpeedModifiers(carrier); } private void ApplyCarrySlowdown(EntityUid carrier, EntityUid carried) { - var massRatio = MassContest(carrier, carried); - - if (massRatio == 0) - massRatio = 1; + var massRatio = _contests.MassContest(carrier, carried, true); + var massRatioSq = MathF.Pow(massRatio, 2); + var modifier = 1 - 0.15f / massRatioSq; + modifier = Math.Max(0.1f, modifier); - var massRatioSq = Math.Pow(massRatio, 2); - var modifier = (1 - (0.15 / massRatioSq)); - modifier = Math.Max(0.1, modifier); var slowdownComp = EnsureComp(carrier); - _slowdown.SetModifier(carrier, (float) modifier, (float) modifier, slowdownComp); + _slowdown.SetModifier(carrier, modifier, modifier, slowdownComp); } public bool CanCarry(EntityUid carrier, EntityUid carried, CarriableComponent? carriedComp = null) { - if (!Resolve(carried, ref carriedComp, false)) - return false; - - if (carriedComp.CancelToken != null) - return false; - - if (!HasComp(Transform(carrier).ParentUid)) - return false; - - if (HasComp(carrier) || HasComp(carried)) - return false; - - // if (_respirator.IsReceivingCPR(carried)) - // return false; - - if (!TryComp(carrier, out var hands)) + if (!Resolve(carried, ref carriedComp, false) + || carriedComp.CancelToken != null + || !HasComp(Transform(carrier).ParentUid) + || HasComp(carrier) + || HasComp(carried) + || !TryComp(carrier, out var hands) + || hands.CountFreeHands() < carriedComp.FreeHandsRequired) return false; - - if (hands.CountFreeHands() < carriedComp.FreeHandsRequired) - return false; - return true; } - private float MassContest(EntityUid roller, EntityUid target, PhysicsComponent? rollerPhysics = null, PhysicsComponent? targetPhysics = null) - { - if (!Resolve(roller, ref rollerPhysics, false) || !Resolve(target, ref targetPhysics, false)) - return 1f; - - if (targetPhysics.FixturesMass == 0) - return 1f; - - return rollerPhysics.FixturesMass / targetPhysics.FixturesMass; - } - - private TimeSpan GetPickupDuration(EntityUid carrier, EntityUid carried) - { - var length = TimeSpan.FromSeconds(3); - - var mod = MassContest(carrier, carried); - if (mod != 0) - length /= mod; - - return length; - } - public override void Update(float frameTime) { var query = EntityQueryEnumerator(); diff --git a/Content.Shared/Nyanotrasen/Carrying/CarryingDoAfterEvent.cs b/Content.Shared/Carrying/CarryingDoAfterEvent.cs similarity index 91% rename from Content.Shared/Nyanotrasen/Carrying/CarryingDoAfterEvent.cs rename to Content.Shared/Carrying/CarryingDoAfterEvent.cs index 6acd6b775f3..fb7225461cb 100644 --- a/Content.Shared/Nyanotrasen/Carrying/CarryingDoAfterEvent.cs +++ b/Content.Shared/Carrying/CarryingDoAfterEvent.cs @@ -4,7 +4,5 @@ namespace Content.Shared.Carrying { [Serializable, NetSerializable] - public sealed partial class CarryDoAfterEvent : SimpleDoAfterEvent - { - } + public sealed partial class CarryDoAfterEvent : SimpleDoAfterEvent { } } diff --git a/Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownComponent.cs b/Content.Shared/Carrying/CarryingSlowdownComponent.cs similarity index 80% rename from Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownComponent.cs rename to Content.Shared/Carrying/CarryingSlowdownComponent.cs index aabde66af0d..597edc2a795 100644 --- a/Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownComponent.cs +++ b/Content.Shared/Carrying/CarryingSlowdownComponent.cs @@ -7,10 +7,10 @@ namespace Content.Shared.Carrying public sealed partial class CarryingSlowdownComponent : Component { - [DataField("walkModifier", required: true)] [ViewVariables(VVAccess.ReadWrite)] + [DataField(required: true)] public float WalkModifier = 1.0f; - [DataField("sprintModifier", required: true)] [ViewVariables(VVAccess.ReadWrite)] + [DataField(required: true)] public float SprintModifier = 1.0f; } diff --git a/Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownSystem.cs b/Content.Shared/Carrying/CarryingSlowdownSystem.cs similarity index 85% rename from Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownSystem.cs rename to Content.Shared/Carrying/CarryingSlowdownSystem.cs index 9b9c8cec10f..04b714fdd78 100644 --- a/Content.Shared/Nyanotrasen/Carrying/CarryingSlowdownSystem.cs +++ b/Content.Shared/Carrying/CarryingSlowdownSystem.cs @@ -31,13 +31,12 @@ private void OnGetState(EntityUid uid, CarryingSlowdownComponent component, ref private void OnHandleState(EntityUid uid, CarryingSlowdownComponent component, ref ComponentHandleState args) { - if (args.Current is CarryingSlowdownComponentState state) - { - component.WalkModifier = state.WalkModifier; - component.SprintModifier = state.SprintModifier; + if (args.Current is not CarryingSlowdownComponentState state) + return; - _movementSpeed.RefreshMovementSpeedModifiers(uid); - } + component.WalkModifier = state.WalkModifier; + component.SprintModifier = state.SprintModifier; + _movementSpeed.RefreshMovementSpeedModifiers(uid); } private void OnRefreshMoveSpeed(EntityUid uid, CarryingSlowdownComponent component, RefreshMovementSpeedModifiersEvent args) { From 636f7f518369864fa54c7e9754d513af4a8bba50 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 17:12:05 +0000 Subject: [PATCH 78/82] Automatic Changelog Update (#580) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a4018c20b9a..0359a65d4db 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4918,3 +4918,13 @@ Entries: research. id: 6215 time: '2024-08-05T17:10:42.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: >- + The Carrying system has been reworked as a means of better supporting + having extremely large species and characters. 10kg Harpies should no + longer be oppressed by 2000kg Lamia with infinitely short carry + attempts. + id: 6216 + time: '2024-08-05T17:11:37.0000000+00:00' From f177d7df0fcf10f522fabd9021cac5bd20acd15b Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Mon, 5 Aug 2024 17:16:12 +0000 Subject: [PATCH 79/82] Automatic Changelog Update (#673) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0359a65d4db..a0631c5f9d8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4928,3 +4928,9 @@ Entries: attempts. id: 6216 time: '2024-08-05T17:11:37.0000000+00:00' +- author: Rane + changes: + - type: Add + message: Lamiae should now be rendered much better. + id: 6217 + time: '2024-08-05T17:15:51.0000000+00:00' From fa4c66901205af5c97b6ef7b86c1811540140cd4 Mon Sep 17 00:00:00 2001 From: FoxxoTrystan Date: Mon, 5 Aug 2024 20:43:47 +0200 Subject: [PATCH 80/82] fixes --- .../Research/Oracle/OracleSystem.cs | 257 ------------------ .../Research/Oracle/OracleSystem.cs | 6 +- 2 files changed, 3 insertions(+), 260 deletions(-) delete mode 100644 Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs diff --git a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs b/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs deleted file mode 100644 index 95e498719ea..00000000000 --- a/Content.Server/Nyanotrasen/Research/Oracle/OracleSystem.cs +++ /dev/null @@ -1,257 +0,0 @@ -using System.Linq; -using Content.Server.Botany; -using Content.Server.Chat.Managers; -using Content.Server.Chat.Systems; -using Content.Server.Chemistry.Containers.EntitySystems; -using Content.Server.Fluids.EntitySystems; -using Content.Server.Psionics; -using Content.Shared.Psionics.Abilities; -using Content.Shared.Chat; -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Reagent; -using Content.Shared.Interaction; -using Content.Shared.Mobs.Components; -using Content.Shared.Psionics.Glimmer; -using Content.Shared.Research.Prototypes; -using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - -namespace Content.Server.Research.Oracle; - -public sealed class OracleSystem : EntitySystem -{ - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ChatSystem _chat = default!; - [Dependency] private readonly IChatManager _chatManager = default!; - [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; - [Dependency] private readonly GlimmerSystem _glimmerSystem = default!; - [Dependency] private readonly PuddleSystem _puddleSystem = default!; - - public override void Update(float frameTime) - { - base.Update(frameTime); - foreach (var oracle in EntityQuery()) - { - oracle.Accumulator += frameTime; - oracle.BarkAccumulator += frameTime; - oracle.RejectAccumulator += frameTime; - if (oracle.BarkAccumulator >= oracle.BarkTime.TotalSeconds) - { - oracle.BarkAccumulator = 0; - var message = Loc.GetString(_random.Pick(oracle.DemandMessages), ("item", oracle.DesiredPrototype.Name)) - .ToUpper(); - _chat.TrySendInGameICMessage(oracle.Owner, message, InGameICChatType.Speak, false); - } - - if (oracle.Accumulator >= oracle.ResetTime.TotalSeconds) - { - oracle.LastDesiredPrototype = oracle.DesiredPrototype; - NextItem(oracle); - } - } - } - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnInteractHand); - SubscribeLocalEvent(OnInteractUsing); - } - - private void OnInit(EntityUid uid, OracleComponent component, ComponentInit args) - { - NextItem(component); - } - - private void OnInteractHand(EntityUid uid, OracleComponent component, InteractHandEvent args) - { - if (!HasComp(args.User) || HasComp(args.User)) - return; - - if (!TryComp(args.User, out var actor)) - return; - - var message = Loc.GetString("oracle-current-item", ("item", component.DesiredPrototype.Name)); - - var messageWrap = Loc.GetString("chat-manager-send-telepathic-chat-wrap-message", - ("telepathicChannelName", Loc.GetString("chat-manager-telepathic-channel-name")), ("message", message)); - - _chatManager.ChatMessageToOne(ChatChannel.Telepathic, - message, messageWrap, uid, false, actor.PlayerSession.ConnectedClient, Color.PaleVioletRed); - - if (component.LastDesiredPrototype != null) - { - var message2 = Loc.GetString("oracle-previous-item", ("item", component.LastDesiredPrototype.Name)); - var messageWrap2 = Loc.GetString("chat-manager-send-telepathic-chat-wrap-message", - ("telepathicChannelName", Loc.GetString("chat-manager-telepathic-channel-name")), - ("message", message2)); - - _chatManager.ChatMessageToOne(ChatChannel.Telepathic, - message2, messageWrap2, uid, false, actor.PlayerSession.ConnectedClient, Color.PaleVioletRed); - } - } - - private void OnInteractUsing(EntityUid uid, OracleComponent component, InteractUsingEvent args) - { - if (HasComp(args.Used)) - return; - - if (!TryComp(args.Used, out var meta)) - return; - - if (meta.EntityPrototype == null) - return; - - var validItem = CheckValidity(meta.EntityPrototype, component.DesiredPrototype); - - var nextItem = true; - - if (component.LastDesiredPrototype != null && - CheckValidity(meta.EntityPrototype, component.LastDesiredPrototype)) - { - nextItem = false; - validItem = true; - component.LastDesiredPrototype = null; - } - - if (!validItem) - { - if (!HasComp(args.Used) && - component.RejectAccumulator >= component.RejectTime.TotalSeconds) - { - component.RejectAccumulator = 0; - _chat.TrySendInGameICMessage(uid, _random.Pick(component.RejectMessages), InGameICChatType.Speak, true); - } - return; - } - - EntityManager.QueueDeleteEntity(args.Used); - - EntityManager.SpawnEntity("ResearchDisk5000", Transform(args.User).Coordinates); - - DispenseLiquidReward(uid, component); - - var i = _random.Next(1, 4); - - while (i != 0) - { - EntityManager.SpawnEntity("MaterialBluespace1", Transform(args.User).Coordinates); - i--; - } - - if (nextItem) - NextItem(component); - } - - private bool CheckValidity(EntityPrototype given, EntityPrototype target) - { - // 1: directly compare Names - // name instead of ID because the oracle asks for them by name - // this could potentially lead to like, labeller exploits maybe but so far only mob names can be fully player-set. - if (given.Name == target.Name) - return true; - - return false; - } - - private void DispenseLiquidReward(EntityUid uid, OracleComponent component) - { - if (!_solutionSystem.TryGetSolution(uid, OracleComponent.SolutionName, out var fountainSol)) - return; - - var allReagents = _prototypeManager.EnumeratePrototypes() - .Where(x => !x.Abstract) - .Select(x => x.ID).ToList(); - - var amount = 20 + _random.Next(1, 30) + _glimmerSystem.GlimmerOutput / 10f; - amount = (float) Math.Round(amount); - - var sol = new Solution(); - var reagent = ""; - - if (_random.Prob(0.2f)) - reagent = _random.Pick(allReagents); - else - reagent = _random.Pick(component.RewardReagents); - - sol.AddReagent(reagent, amount); - - _solutionSystem.TryMixAndOverflow(fountainSol.Value, sol, fountainSol.Value.Comp.Solution.MaxVolume, out var overflowing); - - if (overflowing != null && overflowing.Volume > 0) - _puddleSystem.TrySpillAt(uid, overflowing, out var _); - } - - private void NextItem(OracleComponent component) - { - component.Accumulator = 0; - component.BarkAccumulator = 0; - component.RejectAccumulator = 0; - var protoString = GetDesiredItem(component); - if (_prototypeManager.TryIndex(protoString, out var proto)) - component.DesiredPrototype = proto; - else - Logger.Error("Oracle can't index prototype " + protoString); - } - - private string GetDesiredItem(OracleComponent component) - { - return _random.Pick(GetAllProtos(component)); - } - - - public List GetAllProtos(OracleComponent component) - { - var allTechs = _prototypeManager.EnumeratePrototypes(); - var allRecipes = new List(); - - foreach (var tech in allTechs) - { - foreach (var recipe in tech.RecipeUnlocks) - { - var recipeProto = _prototypeManager.Index(recipe); - allRecipes.Add(recipeProto.Result); - } - } - - var allPlants = _prototypeManager.EnumeratePrototypes().Select(x => x.ProductPrototypes[0]) - .ToList(); - var allProtos = allRecipes.Concat(allPlants).ToList(); - var blacklist = component.BlacklistedPrototypes.ToList(); - - foreach (var proto in allProtos) - { - if (!_prototypeManager.TryIndex(proto, out var entityProto)) - { - blacklist.Add(proto); - continue; - } - - if (!entityProto.Components.ContainsKey("Item")) - { - blacklist.Add(proto); - continue; - } - - if (entityProto.Components.ContainsKey("SolutionTransfer")) - { - blacklist.Add(proto); - continue; - } - - if (entityProto.Components.ContainsKey("MobState")) - blacklist.Add(proto); - } - - foreach (var proto in blacklist) - { - allProtos.Remove(proto); - } - - return allProtos; - } -} - diff --git a/Content.Server/Research/Oracle/OracleSystem.cs b/Content.Server/Research/Oracle/OracleSystem.cs index 63dcefbadd7..c9b050a246d 100644 --- a/Content.Server/Research/Oracle/OracleSystem.cs +++ b/Content.Server/Research/Oracle/OracleSystem.cs @@ -7,7 +7,7 @@ using Content.Server.Fluids.EntitySystems; using Content.Server.Psionics; using Content.Server.Research.Systems; -using Content.Shared.Abilities.Psionics; +using Content.Shared.Psionics.Abilities; using Content.Shared.Chat; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; @@ -165,7 +165,7 @@ private void DispenseLiquidReward(Entity oracle) return; // Why is this hardcoded? - var amount = MathF.Round(20 + _random.Next(1, 30) + _glimmer.Glimmer / 10f); + var amount = MathF.Round(20 + _random.Next(1, 30) + _glimmer.GlimmerOutput / 10f); var temporarySol = new Solution(); var reagent = _protoMan.Index(oracle.Comp.RewardReagents).Pick(_random); @@ -285,4 +285,4 @@ private bool IsDemandValid(Entity oracle, ProtoId Date: Mon, 5 Aug 2024 22:24:59 +0200 Subject: [PATCH 81/82] Revert role timers --- .../Roles/Jobs/Wildcards/gladiator.yml | 5 ----- .../Roles/Jobs/Wildcards/martialartist.yml | 3 --- .../Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml | 5 ----- .../Prototypes/Roles/Jobs/Cargo/quartermaster.yml | 10 +--------- .../Roles/Jobs/Cargo/salvage_specialist.yml | 6 ------ .../Prototypes/Roles/Jobs/Civilian/bartender.yml | 4 ---- .../Prototypes/Roles/Jobs/Civilian/chaplain.yml | 4 ---- Resources/Prototypes/Roles/Jobs/Civilian/chef.yml | 4 ---- .../Prototypes/Roles/Jobs/Civilian/clown.yml | 3 --- .../Prototypes/Roles/Jobs/Civilian/lawyer.yml | 6 ------ .../Prototypes/Roles/Jobs/Civilian/librarian.yml | 3 --- Resources/Prototypes/Roles/Jobs/Civilian/mime.yml | 3 --- .../Prototypes/Roles/Jobs/Civilian/musician.yml | 3 --- .../Roles/Jobs/Civilian/service_worker.yml | 3 --- .../Prototypes/Roles/Jobs/Command/captain.yml | 15 ++++++--------- .../Roles/Jobs/Command/head_of_personnel.yml | 13 +------------ .../Jobs/Engineering/atmospheric_technician.yml | 4 ---- .../Roles/Jobs/Engineering/chief_engineer.yml | 10 +--------- .../Roles/Jobs/Engineering/senior_engineer.yml | 8 +------- .../Roles/Jobs/Engineering/station_engineer.yml | 4 ---- .../Jobs/Engineering/technical_assistant.yml | 7 ------- .../Prototypes/Roles/Jobs/Medical/chemist.yml | 4 ---- .../Roles/Jobs/Medical/chief_medical_officer.yml | 10 +--------- .../Roles/Jobs/Medical/medical_doctor.yml | 4 ---- .../Prototypes/Roles/Jobs/Medical/paramedic.yml | 9 --------- .../Roles/Jobs/Medical/senior_physician.yml | 8 +------- Resources/Prototypes/Roles/Jobs/Science/borg.yml | 2 +- .../Roles/Jobs/Science/research_assistant.yml | 5 ----- .../Roles/Jobs/Science/research_director.yml | 4 +--- .../Prototypes/Roles/Jobs/Science/scientist.yml | 4 ---- .../Roles/Jobs/Science/senior_researcher.yml | 2 +- .../Prototypes/Roles/Jobs/Security/detective.yml | 2 +- .../Roles/Jobs/Security/head_of_security.yml | 13 ++----------- .../Roles/Jobs/Security/security_cadet.yml | 6 +----- .../Roles/Jobs/Security/security_officer.yml | 2 +- .../Roles/Jobs/Security/senior_officer.yml | 11 +---------- .../Prototypes/Roles/Jobs/Security/warden.yml | 10 +++------- .../Prototypes/Roles/Jobs/Wildcards/boxer.yml | 3 --- .../Roles/Jobs/Wildcards/psychologist.yml | 6 ------ .../Prototypes/Roles/Jobs/Wildcards/reporter.yml | 3 --- .../Prototypes/Roles/Jobs/Wildcards/zookeeper.yml | 3 --- 41 files changed, 24 insertions(+), 210 deletions(-) diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml index 3651d223d77..a09cb2ac06b 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/gladiator.yml @@ -9,11 +9,6 @@ icon: "JobIconGladiator" supervisors: job-supervisors-security setPreference: true -# whitelistRequired: true - requirements: - - !type:DepartmentTimeRequirement - department: Security - min: 21600 special: - !type:AddComponentSpecial components: diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml index 8c3c80c72fd..3cbfb093edd 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/martialartist.yml @@ -3,9 +3,6 @@ name: job-name-martialartist description: job-description-martialartist playTimeTracker: JobMartialArtist - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 #2 hours startingGear: MartialArtistGear icon: "JobIconMartialArtist" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml index 00ffdde666f..acd98e86f66 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Wildcards/prisoner.yml @@ -6,13 +6,8 @@ startingGear: PrisonerGear alwaysUseSpawner: true canBeAntag: false -# whitelistRequired: true icon: "JobIconPrisoner" supervisors: job-supervisors-security - requirements: - - !type:DepartmentTimeRequirement - department: Security - min: 21600 - type: startingGear id: PrisonerGear diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index ee1a101154a..2d3e9faa693 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -8,17 +8,9 @@ # - !type:RoleTimeRequirement #DeltaV # role: JobCargoTechnician # time: 21600 #6 hrs - - !type:CharacterPlaytimeRequirement - tracker: JobSalvageSpecialist - min: 10800 #3 hrs - - !type:CharacterPlaytimeRequirement # DeltaV - Courier role time requirement - tracker: JobMailCarrier - min: 7200 # 2 hours - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - min: 43200 #DeltaV 12 hours - - !type:CharacterOverallTimeRequirement - min: 144000 #40 hrs + min: 3600 #Floofstation 1 hour weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml index 8b806009ef8..1fd35653c9f 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml @@ -4,12 +4,6 @@ description: job-description-salvagespec playTimeTracker: JobSalvageSpecialist antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Free hardsuit and weapons - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Logistics # DeltaV - Logistics Department replacing Cargo - min: 21600 #DeltaV 6 hrs - # - !type:OverallPlaytimeRequirement #DeltaV - # time: 36000 #10 hrs icon: "JobIconShaftMiner" startingGear: SalvageSpecialistGear supervisors: job-supervisors-qm diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml index 85a86dabce3..8af3f2ee92e 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml @@ -3,10 +3,6 @@ name: job-name-bartender description: job-description-bartender playTimeTracker: JobBartender - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Civilian - min: 3600 #DeltaV startingGear: BartenderGear icon: "JobIconBartender" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml index 9b4f5ea1487..3ee426d8f6b 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chaplain.yml @@ -3,10 +3,6 @@ name: job-name-chaplain description: job-description-chaplain playTimeTracker: JobChaplain - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 14400 #DeltaV 4 hours startingGear: ChaplainGear icon: "JobIconChaplain" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml index 0837f1f3907..41889701052 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml @@ -3,10 +3,6 @@ name: job-name-chef description: job-description-chef playTimeTracker: JobChef - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Civilian - min: 3600 #DeltaV 1 hour startingGear: ChefGear icon: "JobIconChef" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml index 141f4d39b76..be7d5c87b22 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/clown.yml @@ -3,9 +3,6 @@ name: job-name-clown description: job-description-clown playTimeTracker: JobClown - requirements: - - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 7200 #2 hrs startingGear: ClownGear icon: "JobIconClown" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml index 838a18d5e5d..087479abd31 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml @@ -4,12 +4,6 @@ description: job-description-lawyer playTimeTracker: JobLawyer antagAdvantage: 2 # DeltaV - Reduced TC: Security Radio and Access - requirements: - - !type:CharacterOverallTimeRequirement - min: 36000 # 10 hrs - - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement - department: Security - min: 14400 # 4 hours startingGear: LawyerGear icon: "JobIconLawyer" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml index 7f138c6d7d1..654bf2031d0 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/librarian.yml @@ -3,9 +3,6 @@ name: job-name-librarian description: job-description-librarian playTimeTracker: JobLibrarian - requirements: - - !type:CharacterOverallTimeRequirement #DeltaV - min: 3600 # 1 hr startingGear: LibrarianGear icon: "JobIconLibrarian" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml index 1f19084ef97..36e709144da 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/mime.yml @@ -3,9 +3,6 @@ name: job-name-mime description: job-description-mime playTimeTracker: JobMime - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 # DeltaV - 2 hours startingGear: MimeGear icon: "JobIconMime" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml index 28f9c597e58..36d8839529a 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/musician.yml @@ -3,9 +3,6 @@ name: job-name-musician description: job-description-musician playTimeTracker: JobMusician - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 # DeltaV - 2 hours startingGear: MusicianGear icon: "JobIconMusician" supervisors: job-supervisors-hire diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index 8bfd05ad014..7ee1076a8b9 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -3,9 +3,6 @@ name: job-name-serviceworker description: job-description-serviceworker playTimeTracker: JobServiceWorker - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 # DeltaV - 2 hours startingGear: ServiceWorkerGear icon: "JobIconServiceWorker" supervisors: job-supervisors-service diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 12ad83e6e5c..d91033128e3 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -6,25 +6,22 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - min: 18000 # DeltaV - 5 hours + min: 3600 # Floofstation - 1 hour - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 18000 # DeltaV - 5 hours + min: 3600 # Floofstation - 1 hour - !type:CharacterDepartmentTimeRequirement department: Medical - min: 18000 # DeltaV - 5 hours + min: 3600 # Floofstation - 1 hour - !type:CharacterDepartmentTimeRequirement department: Security - min: 18000 # DeltaV - 5 hours + min: 3600 # Floofstation - 1 hour - !type:CharacterDepartmentTimeRequirement # DeltaV - Epistemics dept time requirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 18000 # 5 hours + min: 3600 # Floofstation - 1 hour - !type:CharacterDepartmentTimeRequirement department: Command - min: 108000 # DeltaV - 30 hours - - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 108000 # 30 hours - - !type:WhitelistRequirement # DeltaV - Whitelist requirement + min: 3600 # Floofstation - 1 hour weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 6311eb9fee6..a8ee9795d54 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -5,20 +5,9 @@ playTimeTracker: JobHeadOfPersonnel antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobChef - min: 14400 # DeltaV - 4 hours - - !type:CharacterPlaytimeRequirement - tracker: JobBartender - min: 14400 # DeltaV - 4 hours - - !type:CharacterPlaytimeRequirement - tracker: JobJanitor - min: 14400 # DeltaV - 4 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Civilian dept time requirement department: Civilian - min: 72000 # 20 hours - - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 90000 # 25 hours + min: 3600 # Floofstation 1 hour weight: 10 # DeltaV - Changed HoP weight from 20 to 10 due to them not being more important than other Heads startingGear: HoPGear icon: "JobIconHeadOfPersonnel" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index 834a85e7a08..6371978425d 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -4,10 +4,6 @@ description: job-description-atmostech playTimeTracker: JobAtmosphericTechnician antagAdvantage: 10 # DeltaV - Reduced TC: External Access + Fireaxe + Free Hardsuit - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Engineering - min: 36000 # DeltaV - 10 hours startingGear: AtmosphericTechnicianGear icon: "JobIconAtmosphericTechnician" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index eaa66d6f0cc..f4ebd8b156d 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -4,17 +4,9 @@ description: job-description-ce playTimeTracker: JobChiefEngineer requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobAtmosphericTechnician - min: 36000 # DeltaV - 10 hours -# - !type:RoleTimeRequirement # DeltaV - No Station Engineer time requirement -# role: JobStationEngineer -# time: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 90000 # DeltaV - 25 hours -# - !type:OverallPlaytimeRequirement -# time: 72000 # DeltaV - 20 hours + min: 3600 # Floofstation - 1 hour weight: 10 startingGear: ChiefEngineerGear icon: "JobIconChiefEngineer" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml index 5106f1129c4..233ac4c47f4 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml @@ -5,15 +5,9 @@ playTimeTracker: JobSeniorEngineer setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobAtmosphericTechnician - min: 21600 #6 hrs - - !type:CharacterPlaytimeRequirement - tracker: JobStationEngineer - min: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 216000 # 60 hrs + min: 3600 # Floofstation 1 hrs startingGear: SeniorEngineerGear icon: "JobIconSeniorEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index dc590045191..7e685a33b52 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -4,10 +4,6 @@ description: job-description-engineer playTimeTracker: JobStationEngineer antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Engineering - min: 14400 #4 hrs startingGear: StationEngineerGear icon: "JobIconStationEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 668af727519..116065f1fae 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -4,13 +4,6 @@ description: job-description-technical-assistant playTimeTracker: JobTechnicalAssistant antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering - requirements: - - !type:CharacterOverallTimeRequirement # DeltaV - to prevent griefers from taking the role. - min: 14400 # 4 hours - # - !type:DepartmentTimeRequirement # DeltaV - Removes time limit - # department: Engineering - # time: 54000 #15 hrs - # inverted: true # stop playing intern if you're good at engineering! startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" supervisors: job-supervisors-engineering diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index 3fe22792092..bd0d7d2ad4a 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -3,10 +3,6 @@ name: job-name-chemist description: job-description-chemist playTimeTracker: JobChemist - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Medical - min: 28800 # DeltaV - 8 hours startingGear: ChemistGear icon: "JobIconChemist" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index 4a65b791283..ff493c7dbcc 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -7,17 +7,9 @@ playTimeTracker: JobChiefMedicalOfficer antagAdvantage: 6 # DeltaV - Reduced TC: Head of Staff requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobChemist - min: 14400 #DeltaV 4 hrs -# - !type:RoleTimeRequirement # DeltaV - No Medical Doctor time requirement -# role: JobMedicalDoctor -# time: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Medical - min: 43200 # DeltaV - 12 hours - - !type:CharacterOverallTimeRequirement - min: 72000 # DeltaV - 20 hours + min: 3600 # Floofstation - 1 hour weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index cc048470f0c..b51337e89c7 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -3,10 +3,6 @@ name: job-name-doctor description: job-description-doctor playTimeTracker: JobMedicalDoctor - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Medical - min: 14400 #4 hrs startingGear: DoctorGear icon: "JobIconMedicalDoctor" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index 9e3484a8dcf..69f90741c98 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -4,15 +4,6 @@ description: job-description-paramedic playTimeTracker: JobParamedic antagAdvantage: 2 # DeltaV - Reduced TC: External Access - requirements: - # - !type:RoleTimeRequirement # DeltaV - No Medical Doctor time requirement - # role: JobMedicalDoctor - # time: 14400 #4 hrs - - !type:CharacterDepartmentTimeRequirement # DeltaV - Medical dept time requirement - department: Medical - min: 28800 # DeltaV - 8 hours - # - !type:OverallPlaytimeRequirement # DeltaV - No playtime requirement - # time: 54000 # 15 hrs startingGear: ParamedicGear icon: "JobIconParamedic" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index ac6e0620f5a..593145687e7 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -5,15 +5,9 @@ playTimeTracker: JobSeniorPhysician setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobChemist - min: 21600 #6 hrs - - !type:CharacterPlaytimeRequirement - tracker: JobMedicalDoctor - min: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Medical - min: 216000 # 60 hrs + min: 3600 # Floofstation 1 hrs startingGear: SeniorPhysicianGear icon: "JobIconSeniorPhysician" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index 456a761dba7..e62be04beec 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -5,7 +5,7 @@ playTimeTracker: JobBorg requirements: - !type:CharacterOverallTimeRequirement - min: 216000 #60 hrs + min: 3600 #1 hr canBeAntag: false icon: JobIconBorg supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 4d4038d7c02..20bbe131bb0 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -3,11 +3,6 @@ name: job-name-research-assistant description: job-description-research-assistant playTimeTracker: JobResearchAssistant - requirements: - # - !type:DepartmentTimeRequirement # DeltaV - Removes time limit - # department: Science - # time: 54000 #15 hrs - # inverted: true # stop playing intern if you're good at science! startingGear: ResearchAssistantGear icon: "JobIconResearchAssistant" supervisors: job-supervisors-science diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 4956d461932..bd0e92aa53a 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -7,9 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 54000 # DeltaV - 15 hours - - !type:CharacterOverallTimeRequirement - min: 72000 # DeltaV - 20 hours + min: 3600 # Floofstation - 1 hour weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index 2d91e0e6ef9..248c0190927 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -3,10 +3,6 @@ name: job-name-scientist description: job-description-scientist playTimeTracker: JobScientist - requirements: - - !type:CharacterDepartmentTimeRequirement - department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 14400 #4 hrs startingGear: ScientistGear icon: "JobIconScientist" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml index 90234250302..04d1afa2a13 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 216000 #60 hrs + min: 3600 # Floofstation 1 hrs startingGear: SeniorResearcherGear icon: "JobIconSeniorResearcher" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index 861088b5e5c..e700b3575c9 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -6,7 +6,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Security - min: 36000 # DeltaV - 10 hours + min: 3600 # Floofstation - 1 hour startingGear: DetectiveGear icon: "JobIconDetective" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 675e7768fa7..5c2b7be207f 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -4,18 +4,9 @@ description: job-description-hos playTimeTracker: JobHeadOfSecurity requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobWarden - min: 14400 #DeltaV 4 hrs - # - !type:RoleTimeRequirement # DeltaV - No Security Officer time requirement - REIMPLEMENT WHEN MORE PEOPLE HAVE IT - # role: JobDetective - # time: 14400 #DeltaV 4 hrs - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement - department: Command - min: 36000 # 10 hours - - !type:CharacterOverallTimeRequirement - min: 90000 # DeltaV - 25 hours - - !type:WhitelistRequirement # DeltaV - Whitelist requirement + department: Security + min: 3600 # Floofstation 1 hour weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity" diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index 0b28af78502..b2333f3d0ed 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -5,11 +5,7 @@ playTimeTracker: JobSecurityCadet requirements: - !type:CharacterOverallTimeRequirement - min: 14400 # DeltaV - 4 hours -# - !type:DepartmentTimeRequirement # DeltaV - Removes time limit -# department: Security -# time: 54000 #15 hrs -# inverted: true # stop playing intern if you're good at security! + min: 3600 # Floofstation - 1 hour startingGear: SecurityCadetGear icon: "JobIconSecurityCadet" supervisors: job-supervisors-security diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index b81cef667ed..c55f10a4662 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -6,7 +6,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Security - min: 14400 # DeltaV - 4 hours + min: 3600 # Floofstation - 1 hour startingGear: SecurityOfficerGear icon: "JobIconSecurityOfficer" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml index 2623adf1fd0..6940d74bb25 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/senior_officer.yml @@ -5,18 +5,9 @@ playTimeTracker: JobSeniorOfficer setPreference: false # DeltaV - Disable Senior Roles round start selection requirements: - - !type:CharacterPlaytimeRequirement - tracker: JobWarden - min: 21600 #6 hrs - - !type:CharacterPlaytimeRequirement - tracker: JobDetective - min: 7200 #2 hrs - - !type:CharacterPlaytimeRequirement - tracker: JobSecurityOfficer - min: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Security - min: 216000 # 60 hrs + min: 3600 # Floofstation - 1 hour startingGear: SeniorOfficerGear icon: "JobIconSeniorOfficer" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index a4c5c5a8fab..59d1e08656c 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -4,13 +4,9 @@ description: job-description-warden playTimeTracker: JobWarden requirements: - - !type:CharacterPlaytimeRequirement # DeltaV - JobSecurityOfficer time requirement. Make them experienced in proper officer work. - tracker: JobSecurityOfficer - min: 43200 # DeltaV - 12 hrs - - !type:CharacterPlaytimeRequirement # DeltaV - JobDetective time requirement. Give them an understanding of basic forensics. - tracker: JobDetective - min: 14400 # DeltaV - 4 hours - - !type:WhitelistRequirement # DeltaV - Whitelist requirement + - !type:CharacterDepartmentTimeRequirement + department: Security + min: 3600 # Floofstation - 1 hour startingGear: WardenGear icon: "JobIconWarden" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml index 33def38bb08..d80b33402cd 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/boxer.yml @@ -3,9 +3,6 @@ name: job-name-boxer description: job-description-boxer playTimeTracker: JobBoxer - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 #DeltaV 2 hours startingGear: BoxerGear icon: "JobIconBoxer" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml index a2974c6eb7a..6073dfa98b5 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml @@ -3,12 +3,6 @@ name: job-name-psychologist description: job-description-psychologist playTimeTracker: JobPsychologist - requirements: - - !type:CharacterOverallTimeRequirement - min: 36000 #DeltaV 10 hours - - !type:CharacterDepartmentTimeRequirement - department: Medical - min: 14400 #DeltaV 4 hrs startingGear: PsychologistGear icon: "JobIconPsychologist" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml index ad810e970e9..603c0a7608f 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/reporter.yml @@ -3,9 +3,6 @@ name: job-name-reporter description: job-description-reporter playTimeTracker: JobReporter - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 #DeltaV 2 hours startingGear: ReporterGear icon: "JobIconReporter" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml index 1686e3290fa..7bf1ff772a9 100644 --- a/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml +++ b/Resources/Prototypes/Roles/Jobs/Wildcards/zookeeper.yml @@ -3,9 +3,6 @@ name: job-name-zookeeper description: job-description-zookeeper playTimeTracker: JobZookeeper - requirements: - - !type:CharacterOverallTimeRequirement - min: 7200 #DeltaV 2 hours startingGear: ZookeeperGear icon: "JobIconZookeeper" supervisors: job-supervisors-hop From 99c8c22ecb7fb24f0089c7ef3f9ee5649c4b75bc Mon Sep 17 00:00:00 2001 From: Fansana Date: Tue, 6 Aug 2024 20:02:36 +0200 Subject: [PATCH 82/82] update playtime requirements to 4 hours --- .../Entities/Markers/Spawners/ghost_roles.yml | 8 ++++---- .../DeltaV/Roles/Jobs/Medical/medical_borg.yml | 4 ++-- .../Roles/Jobs/Epistemics/forensicmantis.yml | 4 ++-- .../Roles/Jobs/Security/prisonguard.yml | 4 ++-- Resources/Prototypes/Roles/Antags/ninja.yml | 2 +- Resources/Prototypes/Roles/Antags/nukeops.yml | 14 +++++++------- .../Prototypes/Roles/Antags/revolutionary.yml | 4 ++-- Resources/Prototypes/Roles/Antags/traitor.yml | 2 +- Resources/Prototypes/Roles/Antags/zombie.yml | 2 +- .../Prototypes/Roles/Jobs/Cargo/quartermaster.yml | 2 +- .../Prototypes/Roles/Jobs/Command/captain.yml | 12 ++++++------ .../Roles/Jobs/Command/head_of_personnel.yml | 2 +- .../Jobs/Engineering/atmospheric_technician.yml | 4 ++++ .../Roles/Jobs/Engineering/chief_engineer.yml | 2 +- .../Roles/Jobs/Engineering/senior_engineer.yml | 2 +- .../Roles/Jobs/Engineering/station_engineer.yml | 3 +++ .../Roles/Jobs/Engineering/technical_assistant.yml | 3 +++ .../Roles/Jobs/Medical/chief_medical_officer.yml | 2 +- .../Roles/Jobs/Medical/senior_physician.yml | 2 +- .../Roles/Jobs/Science/research_director.yml | 2 +- .../Roles/Jobs/Science/senior_researcher.yml | 2 +- .../Prototypes/Roles/Jobs/Security/detective.yml | 2 +- .../Roles/Jobs/Security/head_of_security.yml | 2 +- 23 files changed, 48 insertions(+), 38 deletions(-) diff --git a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml index 8534b737888..59020f67ca7 100644 --- a/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml +++ b/Resources/Prototypes/DeltaV/Entities/Markers/Spawners/ghost_roles.yml @@ -33,16 +33,16 @@ rules: ghost-role-information-listeningop-rules requirements: # Worth considering these numbers for the goal of making sure someone willing to MRP takes this. - !type:CharacterOverallTimeRequirement - min: 259200 # 72 hours + min: 54000 # 15 hours - !type:DepartmentTimeRequirement department: Security - time: 40000 # 11.1 hours + time: 14400 # 4 hours - !type:DepartmentTimeRequirement department: Civilian - time: 40000 # 11.1 hours + time: 14400 # 4 hours - !type:DepartmentTimeRequirement department: Command - time: 40000 # 11.1 hours + time: 14400 # 4 hours - type: GhostRoleMobSpawner prototype: MobHumanSyndicateListener - type: Sprite diff --git a/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml b/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml index 18a4bbf3152..6b1707b763a 100644 --- a/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml +++ b/Resources/Prototypes/DeltaV/Roles/Jobs/Medical/medical_borg.yml @@ -6,10 +6,10 @@ playTimeTracker: JobMedicalBorg requirements: - !type:CharacterOverallTimeRequirement - min: 216000 #60 hrs + min: 21600 #6 hrs floof - !type:DepartmentTimeRequirement department: Medical - min: 21600 #6 hrs + min: 3600 #1 hrs floof canBeAntag: false icon: JobIconMedicalBorg supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml index 7e05365165b..11ec7441b8e 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Epistemics/forensicmantis.yml @@ -5,10 +5,10 @@ playTimeTracker: JobForensicMantis requirements: - !type:CharacterOverallTimeRequirement - min: 18000 + min: 3600 # 1hr floof - !type:DepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 3600 + min: 3600 # 1 hr floof startingGear: ForensicMantisGear icon: "JobIconForensicMantis" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml index fec6ac685ed..1880474517c 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml @@ -5,10 +5,10 @@ playTimeTracker: JobPrisonGuard requirements: - !type:CharacterOverallTimeRequirement - min: 18000 + min: 7200 # 2hr floof - !type:DepartmentTimeRequirement department: Security - min: 14400 + min: 7200 # 2hr floof startingGear: PrisonGuardGear alwaysUseSpawner: true canBeAntag: false diff --git a/Resources/Prototypes/Roles/Antags/ninja.yml b/Resources/Prototypes/Roles/Antags/ninja.yml index fd8a79ad254..70833745290 100644 --- a/Resources/Prototypes/Roles/Antags/ninja.yml +++ b/Resources/Prototypes/Roles/Antags/ninja.yml @@ -6,4 +6,4 @@ objective: roles-antag-space-ninja-objective requirements: - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 259200 # DeltaV - 72 hours + min: 14400 # floof - 4 hours diff --git a/Resources/Prototypes/Roles/Antags/nukeops.yml b/Resources/Prototypes/Roles/Antags/nukeops.yml index fe05393b9ca..4a3ff4309b8 100644 --- a/Resources/Prototypes/Roles/Antags/nukeops.yml +++ b/Resources/Prototypes/Roles/Antags/nukeops.yml @@ -6,10 +6,10 @@ objective: roles-antag-nuclear-operative-objective requirements: - !type:CharacterOverallTimeRequirement - min: 108000 # DeltaV - 30 hours + min: 54000 # Floofstation - 15 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security - min: 36000 # DeltaV - 10 hours + min: 14400 # Floofstation - 4 hours - type: antag id: NukeopsMedic @@ -19,10 +19,10 @@ objective: roles-antag-nuclear-operative-agent-objective requirements: - !type:CharacterOverallTimeRequirement - min: 108000 # DeltaV - 30 hours + min: 54000 # Floofstation - 15 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Medical dept time requirement department: Medical - min: 36000 # DeltaV - 10 hours + min: 14400 # Floofstation - 4 hours - type: antag id: NukeopsCommander @@ -32,11 +32,11 @@ objective: roles-antag-nuclear-operative-commander-objective requirements: - !type:CharacterOverallTimeRequirement - min: 216000 # DeltaV - 60 hours + min: 54000 # Floofstation - 15 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Security dept time requirement department: Security - min: 36000 # DeltaV - 10 hours + min: 14400 # Floofstation - 4 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Command - min: 36000 # DeltaV - 10 hours + min: 14400 # Floofstation - 4 hours - !type:WhitelistRequirement # DeltaV - Whitelist requirement diff --git a/Resources/Prototypes/Roles/Antags/revolutionary.yml b/Resources/Prototypes/Roles/Antags/revolutionary.yml index cc551fc4679..35423747c0a 100644 --- a/Resources/Prototypes/Roles/Antags/revolutionary.yml +++ b/Resources/Prototypes/Roles/Antags/revolutionary.yml @@ -6,10 +6,10 @@ objective: roles-antag-rev-head-objective requirements: - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 172800 # DeltaV - 48 hours + min: 54000 # Floofstation - 15 hours - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Command - min: 36000 # DeltaV - 10 hours + min: 14400 # Floofstation - 4 hours - type: antag id: Rev diff --git a/Resources/Prototypes/Roles/Antags/traitor.yml b/Resources/Prototypes/Roles/Antags/traitor.yml index fec2280ddc8..2034b248d33 100644 --- a/Resources/Prototypes/Roles/Antags/traitor.yml +++ b/Resources/Prototypes/Roles/Antags/traitor.yml @@ -6,4 +6,4 @@ objective: roles-antag-syndicate-agent-objective requirements: - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 86400 # DeltaV - 24 hours + min: 14400 # Floofstation - 4 hours diff --git a/Resources/Prototypes/Roles/Antags/zombie.yml b/Resources/Prototypes/Roles/Antags/zombie.yml index 5ec90f68162..9bce4a2789d 100644 --- a/Resources/Prototypes/Roles/Antags/zombie.yml +++ b/Resources/Prototypes/Roles/Antags/zombie.yml @@ -6,7 +6,7 @@ objective: roles-antag-initial-infected-objective requirements: - !type:CharacterOverallTimeRequirement # DeltaV - Playtime requirement - min: 43200 # DeltaV - 12 hours + min: 14400 # Floofstation - 4 hours - type: antag id: Zombie diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 2d3e9faa693..07104382ecd 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -10,7 +10,7 @@ # time: 21600 #6 hrs - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - min: 3600 #Floofstation 1 hour + min: 14400 #Floofstation 4 hour weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index d91033128e3..8e5e7a26efa 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -6,22 +6,22 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Logistics # DeltaV - Logistics Department replacing Cargo - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour - !type:CharacterDepartmentTimeRequirement department: Medical - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour - !type:CharacterDepartmentTimeRequirement department: Security - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour - !type:CharacterDepartmentTimeRequirement # DeltaV - Epistemics dept time requirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour - !type:CharacterDepartmentTimeRequirement department: Command - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index a8ee9795d54..7f9764fdfe4 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement # DeltaV - Civilian dept time requirement department: Civilian - min: 3600 # Floofstation 1 hour + min: 14400 # Floofstation 4 hours weight: 10 # DeltaV - Changed HoP weight from 20 to 10 due to them not being more important than other Heads startingGear: HoPGear icon: "JobIconHeadOfPersonnel" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index 6371978425d..79f682cf3ed 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -3,6 +3,10 @@ name: job-name-atmostech description: job-description-atmostech playTimeTracker: JobAtmosphericTechnician + requirements: + - !type:CharacterDepartmentTimeRequirement + department: Engineering + min: 3600 # Floofstation - 1 hour antagAdvantage: 10 # DeltaV - Reduced TC: External Access + Fireaxe + Free Hardsuit startingGear: AtmosphericTechnicianGear icon: "JobIconAtmosphericTechnician" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index f4ebd8b156d..7bc6d6a1adb 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -6,7 +6,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour weight: 10 startingGear: ChiefEngineerGear icon: "JobIconChiefEngineer" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml index 233ac4c47f4..df88432dd8b 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/senior_engineer.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Engineering - min: 3600 # Floofstation 1 hrs + min: 14400 # Floofstation 4 hrs startingGear: SeniorEngineerGear icon: "JobIconSeniorEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index 7e685a33b52..5e905f59bff 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -3,6 +3,9 @@ name: job-name-engineer description: job-description-engineer playTimeTracker: JobStationEngineer + requirements: + - !type:CharacterOverallTimeRequirement + min: 14400 # 4hr floof antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering startingGear: StationEngineerGear icon: "JobIconStationEngineer" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 116065f1fae..ea441566588 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -3,6 +3,9 @@ name: job-name-technical-assistant description: job-description-technical-assistant playTimeTracker: JobTechnicalAssistant + requirements: + - !type:CharacterOverallTimeRequirement + min: 3600 # 1hr floof antagAdvantage: 3 # DeltaV - Reduced TC: External Access + Engineering startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index ff493c7dbcc..02f399ee8db 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -9,7 +9,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Medical - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml index 593145687e7..4cca9e57bc1 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/senior_physician.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Medical - min: 3600 # Floofstation 1 hrs + min: 14400 # Floofstation 4 hrs startingGear: SeniorPhysicianGear icon: "JobIconSeniorPhysician" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index bd0e92aa53a..e6de7e4cac3 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" diff --git a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml index 04d1afa2a13..dd6dbeca721 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/senior_researcher.yml @@ -7,7 +7,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Epistemics # DeltaV - Epistemics Department replacing Science - min: 3600 # Floofstation 1 hrs + min: 14400 # Floofstation 4 hrs startingGear: SeniorResearcherGear icon: "JobIconSeniorResearcher" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index e700b3575c9..e90fa4d759e 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -6,7 +6,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement department: Security - min: 3600 # Floofstation - 1 hour + min: 14400 # Floofstation - 4 hour startingGear: DetectiveGear icon: "JobIconDetective" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 5c2b7be207f..bde72f9b020 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -6,7 +6,7 @@ requirements: - !type:CharacterDepartmentTimeRequirement # DeltaV - Command dept time requirement department: Security - min: 3600 # Floofstation 1 hour + min: 14400 # Floofstation - 4 hour weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity"
/// diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl index 10e6a4a24f2..0b8fa83ae8b 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-survival.ftl @@ -3,6 +3,3 @@ survival-description = No internal threats, but how long can the station survive hellshift-title = Hellshift hellshift-description = The station rolled a "one" in a luck check. Can the crew make it to the end? - -longsurvival-title = Long Survival -longsurvival-description = Survival, but two hours longer. Event growth is stretched over a vastly greater length of time. diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index e046b871fa7..0af55a7f9d0 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -132,21 +132,15 @@ components: - type: RampingStationEventScheduler -- type: entity - id: LongSurvivalStationEventScheduler - parent: BaseGameRule - noSpawn: true - components: - - type: RampingStationEventScheduler - shiftLengthOffset: -120 - - type: entity id: HellshiftStationEventScheduler parent: BaseGameRule noSpawn: true components: - type: RampingStationEventScheduler - shiftChaosModifier: 4 #30 minute HELL SHIFT + chaosModifier: 4 # By default, one event each 30-10 seconds after two hours. Changing CVars will cause this to deviate. + startingChaosRatio: 0.025 # Starts as slow as survival, but quickly ramps up + shiftLengthModifier: 2.5 # variation passes - type: entity diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 7e83f224433..7d7169bf10a 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -20,17 +20,6 @@ - HellshiftStationEventScheduler - BasicRoundstartVariation -- type: gamePreset - id: SurvivalLonger - alias: - - longsurvival - showInVote: true - name: longsurvival-title - description: longsurvival-description - rules: - - LongSurvivalStationEventScheduler - - BasicRoundstartVariation - - type: gamePreset id: AllAtOnce name: all-at-once-title From b9b3868acf08cfec6d9ba5e50db262550600206c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Fri, 2 Aug 2024 22:53:08 +0000 Subject: [PATCH 51/82] Automatic Changelog Update (#644) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 26b1b13d570..51dd6418484 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4831,3 +4831,11 @@ Entries: circumstances id: 6204 time: '2024-08-02T07:14:01.0000000+00:00' +- author: Mnemotechnician + changes: + - type: Fix + message: >- + Reverted the station event scheduler rework due to it absolutely + breaking the game. + id: 6205 + time: '2024-08-02T22:52:41.0000000+00:00' From 80e48a578fd3382779ddc80947615cca3394413c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 2 Aug 2024 20:41:53 -0400 Subject: [PATCH 52/82] Supermatter Engine (Port From White Dream) (#341) # Description ![SM boom](https://github.com/Simple-Station/Einstein-Engines/assets/16548818/6937c520-0963-437c-a9a6-49afe6c8b787) ![New edge supermatter](https://github.com/Simple-Station/Einstein-Engines/assets/16548818/e8305536-b777-41f8-b9bf-295d402dc1bf) This PR has been produced in collaboration with coders from White Dream, with written permission given by the relevant code owners to port this specific slice of content to Einstein-Engines. Supermatter Engines are a form of nuclear reactor, which produces energy in the form of radioactive particles, while also decaying into Phoron when excited by an external energy source. Power can be obtained from the engine via radiation collectors, which like those of a singularity engine, must be periodically refueled. In addition, the engine must also be actively cooled via aid from Atmospherics, and for undesirable gasses to be extracted from the reactor chamber. If not cooled, the crystal will begin to destabilize and eventually collapse into one of three different situations depending on the source of its instability. 1. A nuclear blast. 2. A gravitational singularity 3. A Tesla ball # Changelog :cl: VMSolidus, White Dream, Colin-Tel - add: Supermatter Engines have been implemented. --------- Signed-off-by: VMSolidus Co-authored-by: whateverusername0 Co-authored-by: username <113782077+whateverusername0@users.noreply.github.com> Co-authored-by: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> Co-authored-by: Pieter-Jan Briers Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .../Systems/SupermatterSystem.Processing.cs | 412 ++++++++++++++++++ .../Supermatter/Systems/SupermatterSystem.cs | 212 +++++++++ Content.Shared/CCVar/CCVars.cs | 50 +++ .../Components/SupermatterComponent.cs | 390 +++++++++++++++++ .../Components/SupermatterFoodComponent.cs | 8 + .../Components/SupermatterImmuneComponent.cs | 9 + Resources/Audio/Supermatter/calm.ogg | Bin 0 -> 172011 bytes Resources/Audio/Supermatter/delamming.ogg | Bin 0 -> 160153 bytes .../en-US/objectives/conditions/steal.ftl | 3 + .../Locale/en-US/supermatter/supermatter.ftl | 26 ++ .../Clothing/OuterClothing/hardsuits.yml | 3 + .../Entities/Mobs/Player/admin_ghost.yml | 1 + .../Objects/Misc/supermatter_sliver.yml | 25 ++ .../Objects/Specific/Medical/morgue.yml | 1 + .../Generation/Singularity/singularity.yml | 1 + .../Generation/Supermatter/supermatter.yml | 66 +++ .../Power/Generation/Tesla/coil.yml | 2 + .../Power/Generation/Tesla/energyball.yml | 1 + .../Prototypes/Guidebook/engineering.yml | 6 + .../Prototypes/Objectives/objectiveGroups.yml | 1 + .../Objectives/stealTargetGroups.yml | 7 + Resources/Prototypes/Objectives/traitor.yml | 12 + Resources/Prototypes/explosion.yml | 16 + Resources/Prototypes/tags.yml | 4 +- .../Guidebook/Engineering/Supermatter.xml | 65 +++ .../Supermatter/supermatter.rsi/meta.json | 15 + .../supermatter.rsi/supermatter.png | Bin 0 -> 28899 bytes .../supermatter_sliver.rsi/icon.png | Bin 0 -> 357 bytes .../supermatter_sliver.rsi/meta.json | 14 + 29 files changed, 1348 insertions(+), 2 deletions(-) create mode 100644 Content.Server/Supermatter/Systems/SupermatterSystem.Processing.cs create mode 100644 Content.Server/Supermatter/Systems/SupermatterSystem.cs create mode 100644 Content.Shared/Supermatter/Components/SupermatterComponent.cs create mode 100644 Content.Shared/Supermatter/Components/SupermatterFoodComponent.cs create mode 100644 Content.Shared/Supermatter/Components/SupermatterImmuneComponent.cs create mode 100644 Resources/Audio/Supermatter/calm.ogg create mode 100644 Resources/Audio/Supermatter/delamming.ogg create mode 100644 Resources/Locale/en-US/supermatter/supermatter.ftl create mode 100644 Resources/Prototypes/Entities/Objects/Misc/supermatter_sliver.yml create mode 100644 Resources/Prototypes/Entities/Structures/Power/Generation/Supermatter/supermatter.yml create mode 100644 Resources/ServerInfo/Guidebook/Engineering/Supermatter.xml create mode 100644 Resources/Textures/Supermatter/supermatter.rsi/meta.json create mode 100644 Resources/Textures/Supermatter/supermatter.rsi/supermatter.png create mode 100644 Resources/Textures/Supermatter/supermatter_sliver.rsi/icon.png create mode 100644 Resources/Textures/Supermatter/supermatter_sliver.rsi/meta.json diff --git a/Content.Server/Supermatter/Systems/SupermatterSystem.Processing.cs b/Content.Server/Supermatter/Systems/SupermatterSystem.Processing.cs new file mode 100644 index 00000000000..7a62eba6f7d --- /dev/null +++ b/Content.Server/Supermatter/Systems/SupermatterSystem.Processing.cs @@ -0,0 +1,412 @@ +using Content.Shared.Atmos; +using Content.Shared.Radiation.Components; +using Content.Shared.Supermatter.Components; +using System.Text; +using Content.Shared.Chat; +using System.Linq; +using Content.Shared.Audio; +using Content.Shared.CCVar; + +namespace Content.Server.Supermatter.Systems; + +public sealed partial class SupermatterSystem +{ + /// + /// Handle power and radiation output depending on atmospheric things. + /// + private void ProcessAtmos(EntityUid uid, SupermatterComponent sm) + { + var mix = _atmosphere.GetContainingMixture(uid, true, true); + + if (mix is not { }) + return; + + var absorbedGas = mix.Remove(sm.GasEfficiency * mix.TotalMoles); + var moles = absorbedGas.TotalMoles; + + if (!(moles > 0f)) + return; + + var gases = sm.GasStorage; + var facts = sm.GasDataFields; + + // Lets get the proportions of the gasses in the mix for scaling stuff later + // They range between 0 and 1 + gases = gases.ToDictionary( + gas => gas.Key, + gas => Math.Clamp(absorbedGas.GetMoles(gas.Key) / moles, 0, 1) + ); + + // No less then zero, and no greater then one, we use this to do explosions and heat to power transfer. + var powerRatio = gases.Sum(gas => gases[gas.Key] * facts[gas.Key].PowerMixRatio); + + // Minimum value of -10, maximum value of 23. Affects plasma, o2 and heat output. + var heatModifier = gases.Sum(gas => gases[gas.Key] * facts[gas.Key].HeatPenalty); + + // Minimum value of -10, maximum value of 23. Affects plasma, o2 and heat output. + var transmissionBonus = gases.Sum(gas => gases[gas.Key] * facts[gas.Key].TransmitModifier); + + var h2OBonus = 1 - gases[Gas.WaterVapor] * 0.25f; + + powerRatio = Math.Clamp(powerRatio, 0, 1); + heatModifier = Math.Max(heatModifier, 0.5f); + transmissionBonus *= h2OBonus; + + // Effects the damage heat does to the crystal + sm.DynamicHeatResistance = 1f; + + // More moles of gases are harder to heat than fewer, so let's scale heat damage around them + sm.MoleHeatPenaltyThreshold = (float) Math.Max(moles * sm.MoleHeatPenalty, 0.25); + + // Ramps up or down in increments of 0.02 up to the proportion of CO2 + // Given infinite time, powerloss_dynamic_scaling = co2comp + // Some value from 0-1 + if (moles > sm.PowerlossInhibitionMoleThreshold && gases[Gas.CarbonDioxide] > sm.PowerlossInhibitionGasThreshold) + { + var co2powerloss = Math.Clamp(gases[Gas.CarbonDioxide] - sm.PowerlossDynamicScaling, -0.02f, 0.02f); + sm.PowerlossDynamicScaling = Math.Clamp(sm.PowerlossDynamicScaling + co2powerloss, 0f, 1f); + } + else + sm.PowerlossDynamicScaling = Math.Clamp(sm.PowerlossDynamicScaling - 0.05f, 0f, 1f); + + // Ranges from 0~1(1 - (0~1 * 1~(1.5 * (mol / 500)))) + // We take the mol count, and scale it to be our inhibitor + var powerlossInhibitor = + Math.Clamp( + 1 + - sm.PowerlossDynamicScaling + * Math.Clamp( + moles / sm.PowerlossInhibitionMoleBoostThreshold, + 1f, 1.5f), + 0f, 1f); + + if (sm.MatterPower != 0) // We base our removed power off 1/10 the matter_power. + { + var removedMatter = Math.Max(sm.MatterPower / sm.MatterPowerConversion, 40); + // Adds at least 40 power + sm.Power = Math.Max(sm.Power + removedMatter, 0); + // Removes at least 40 matter power + sm.MatterPower = Math.Max(sm.MatterPower - removedMatter, 0); + } + + // Based on gas mix, makes the power more based on heat or less effected by heat + var tempFactor = powerRatio > 0.8 ? 50f : 30f; + + // If there is more pluox and N2 then anything else, we receive no power increase from heat + sm.Power = Math.Max(absorbedGas.Temperature * tempFactor / Atmospherics.T0C * powerRatio + sm.Power, 0); + + // Irradiate stuff + if (TryComp(uid, out var rad)) + rad.Intensity = + sm.Power + * Math.Max(0, 1f + transmissionBonus / 10f) + * 0.003f + * _config.GetCVar(CCVars.SupermatterRadsModifier); + + // Power * 0.55 * 0.8~1 + var energy = sm.Power * sm.ReactionPowerModifier; + + // Keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock is on. + // An increase of 4°C at 25% efficiency here results in an increase of 1°C / (#tilesincore) overall. + // Power * 0.55 * 1.5~23 / 5 + absorbedGas.Temperature += energy * heatModifier * sm.ThermalReleaseModifier; + absorbedGas.Temperature = Math.Max(0, + Math.Min(absorbedGas.Temperature, sm.HeatThreshold * heatModifier)); + + // Release the waste + absorbedGas.AdjustMoles(Gas.Plasma, Math.Max(energy * heatModifier * sm.PlasmaReleaseModifier, 0f)); + absorbedGas.AdjustMoles(Gas.Oxygen, Math.Max((energy + absorbedGas.Temperature * heatModifier - Atmospherics.T0C) * sm.OxygenReleaseEfficiencyModifier, 0f)); + + _atmosphere.Merge(mix, absorbedGas); + + var powerReduction = (float) Math.Pow(sm.Power / 500, 3); + + // After this point power is lowered + // This wraps around to the begining of the function + sm.Power = Math.Max(sm.Power - Math.Min(powerReduction * powerlossInhibitor, sm.Power * 0.83f * powerlossInhibitor), 0f); + } + + /// + /// Shoot lightning bolts depensing on accumulated power. + /// + private void SupermatterZap(EntityUid uid, SupermatterComponent sm) + { + // Divide power by its' threshold to get a value from 0-1, then multiply by the amount of possible lightnings + var zapPower = sm.Power / sm.PowerPenaltyThreshold * sm.LightningPrototypes.Length; + var zapPowerNorm = (int) Math.Clamp(zapPower, 0, sm.LightningPrototypes.Length - 1); + _lightning.ShootRandomLightnings(uid, 3.5f, sm.Power > sm.PowerPenaltyThreshold ? 3 : 1, sm.LightningPrototypes[zapPowerNorm]); + } + + /// + /// Handles environmental damage. + /// + private void HandleDamage(EntityUid uid, SupermatterComponent sm) + { + var xform = Transform(uid); + var indices = _xform.GetGridOrMapTilePosition(uid, xform); + + sm.DamageArchived = sm.Damage; + + var mix = _atmosphere.GetContainingMixture(uid, true, true); + + // We're in space or there is no gas to process + if (!xform.GridUid.HasValue || mix is not { } || mix.TotalMoles == 0f) + { + sm.Damage += Math.Max(sm.Power / 1000 * sm.DamageIncreaseMultiplier, 0.1f); + return; + } + + // Absorbed gas from surrounding area + var absorbedGas = mix.Remove(sm.GasEfficiency * mix.TotalMoles); + var moles = absorbedGas.TotalMoles; + + var totalDamage = 0f; + + var tempThreshold = Atmospherics.T0C + sm.HeatPenaltyThreshold; + + // Temperature start to have a positive effect on damage after 350 + var tempDamage = + Math.Max( + Math.Clamp(moles / 200f, .5f, 1f) + * absorbedGas.Temperature + - tempThreshold + * sm.DynamicHeatResistance, + 0f) + * sm.MoleHeatThreshold + / 150f + * sm.DamageIncreaseMultiplier; + totalDamage += tempDamage; + + // Power only starts affecting damage when it is above 5000 + var powerDamage = Math.Max(sm.Power - sm.PowerPenaltyThreshold, 0f) / 500f * sm.DamageIncreaseMultiplier; + totalDamage += powerDamage; + + // Mol count only starts affecting damage when it is above 1800 + var moleDamage = Math.Max(moles - sm.MolePenaltyThreshold, 0) / 80 * sm.DamageIncreaseMultiplier; + totalDamage += moleDamage; + + // Healing damage + if (moles < sm.MolePenaltyThreshold) + { + // There's a very small float so that it doesn't divide by 0 + var healHeatDamage = Math.Min(absorbedGas.Temperature - tempThreshold, 0.001f) / 150; + totalDamage += healHeatDamage; + } + + // Check for space tiles next to SM + //TODO: Change moles out for checking if adjacent tiles exist + var enumerator = _atmosphere.GetAdjacentTileMixtures(xform.GridUid.Value, indices, false, false); + while (enumerator.MoveNext(out var ind)) + { + if (ind.TotalMoles != 0) + continue; + + var integrity = GetIntegrity(sm); + + var factor = integrity switch + { + < 10 => 0.0005f, + < 25 => 0.0009f, + < 45 => 0.005f, + < 75 => 0.002f, + _ => 0f + }; + + totalDamage += Math.Clamp(sm.Power * factor * sm.DamageIncreaseMultiplier, 0, sm.MaxSpaceExposureDamage); + + break; + } + + var damage = Math.Min(sm.DamageArchived + sm.DamageHardcap * sm.DamageDelaminationPoint, totalDamage); + + // Prevent it from going negative + sm.Damage = Math.Clamp(damage, 0, float.PositiveInfinity); + } + + /// + /// Handles core damage announcements + /// + private void AnnounceCoreDamage(EntityUid uid, SupermatterComponent sm) + { + var message = string.Empty; + var global = false; + + var integrity = GetIntegrity(sm).ToString("0.00"); + + // Special cases + if (sm.Damage < sm.DamageDelaminationPoint && sm.Delamming) + { + message = Loc.GetString("supermatter-delam-cancel", ("integrity", integrity)); + sm.DelamAnnounced = false; + global = true; + } + + if (sm.Delamming && !sm.DelamAnnounced) + { + var sb = new StringBuilder(); + var loc = string.Empty; + + switch (sm.PreferredDelamType) + { + case DelamType.Cascade: loc = "supermatter-delam-cascade"; break; + case DelamType.Singulo: loc = "supermatter-delam-overmass"; break; + case DelamType.Tesla: loc = "supermatter-delam-tesla"; break; + default: loc = "supermatter-delam-explosion"; break; + } + + var station = _station.GetOwningStation(uid); + if (station != null) + _alert.SetLevel((EntityUid) station, sm.AlertCodeDeltaId, true, true, true, false); + + sb.AppendLine(Loc.GetString(loc)); + sb.AppendLine(Loc.GetString("supermatter-seconds-before-delam", ("seconds", sm.DelamTimer))); + + message = sb.ToString(); + global = true; + sm.DelamAnnounced = true; + + SendSupermatterAnnouncement(uid, message, global); + return; + } + + // Ignore the 0% integrity alarm + if (sm.Delamming) + return; + + // We are not taking consistent damage, Engineers aren't needed + if (sm.Damage <= sm.DamageArchived) + return; + + if (sm.Damage >= sm.DamageWarningThreshold) + { + message = Loc.GetString("supermatter-warning", ("integrity", integrity)); + if (sm.Damage >= sm.DamageEmergencyThreshold) + { + message = Loc.GetString("supermatter-emergency", ("integrity", integrity)); + global = true; + } + } + + SendSupermatterAnnouncement(uid, message, global); + } + + /// If true, sends a station announcement + /// Localisation string for a custom announcer name + public void SendSupermatterAnnouncement(EntityUid uid, string message, bool global = false, string? customSender = null) + { + if (global) + { + var sender = Loc.GetString(customSender != null ? customSender : "supermatter-announcer"); + _chat.DispatchStationAnnouncement(uid, message, sender, colorOverride: Color.Yellow); + return; + } + + _chat.TrySendInGameICMessage(uid, message, InGameICChatType.Speak, hideChat: false, checkRadioPrefix: true); + } + + /// + /// Returns the integrity rounded to hundreds, e.g. 100.00% + /// + public float GetIntegrity(SupermatterComponent sm) + { + var integrity = sm.Damage / sm.DamageDelaminationPoint; + integrity = (float) Math.Round(100 - integrity * 100, 2); + integrity = integrity < 0 ? 0 : integrity; + return integrity; + } + + /// + /// Decide on how to delaminate. + /// + public DelamType ChooseDelamType(EntityUid uid, SupermatterComponent sm) + { + if (_config.GetCVar(CCVars.SupermatterDoForceDelam)) + return _config.GetCVar(CCVars.SupermatterForcedDelamType); + + var mix = _atmosphere.GetContainingMixture(uid, true, true); + + if (mix is { }) + { + var absorbedGas = mix.Remove(sm.GasEfficiency * mix.TotalMoles); + var moles = absorbedGas.TotalMoles; + + if (_config.GetCVar(CCVars.SupermatterDoSingulooseDelam) + && moles >= sm.MolePenaltyThreshold * _config.GetCVar(CCVars.SupermatterSingulooseMolesModifier)) + return DelamType.Singulo; + } + + if (_config.GetCVar(CCVars.SupermatterDoTeslooseDelam) + && sm.Power >= sm.PowerPenaltyThreshold * _config.GetCVar(CCVars.SupermatterTesloosePowerModifier)) + return DelamType.Tesla; + + //TODO: Add resonance cascade when there's crazy conditions or a destabilizing crystal + + return DelamType.Explosion; + } + + /// + /// Handle the end of the station. + /// + private void HandleDelamination(EntityUid uid, SupermatterComponent sm) + { + var xform = Transform(uid); + + sm.PreferredDelamType = ChooseDelamType(uid, sm); + + if (!sm.Delamming) + { + sm.Delamming = true; + AnnounceCoreDamage(uid, sm); + } + + if (sm.Damage < sm.DamageDelaminationPoint && sm.Delamming) + { + sm.Delamming = false; + AnnounceCoreDamage(uid, sm); + } + + sm.DelamTimerAccumulator++; + + if (sm.DelamTimerAccumulator < sm.DelamTimer) + return; + + switch (sm.PreferredDelamType) + { + case DelamType.Cascade: + Spawn(sm.KudzuSpawnPrototype, xform.Coordinates); + break; + + case DelamType.Singulo: + Spawn(sm.SingularitySpawnPrototype, xform.Coordinates); + break; + + case DelamType.Tesla: + Spawn(sm.TeslaSpawnPrototype, xform.Coordinates); + break; + + default: + _explosion.TriggerExplosive(uid); + break; + } + } + + /// + /// Swaps out ambience sounds when the SM is delamming or not. + /// + private void HandleSoundLoop(EntityUid uid, SupermatterComponent sm) + { + var ambient = Comp(uid); + + if (ambient == null) + return; + + if (sm.Delamming && sm.CurrentSoundLoop != sm.DelamSound) + sm.CurrentSoundLoop = sm.DelamSound; + + else if (!sm.Delamming && sm.CurrentSoundLoop != sm.CalmSound) + sm.CurrentSoundLoop = sm.CalmSound; + + if (ambient.Sound != sm.CurrentSoundLoop) + _ambient.SetSound(uid, sm.CurrentSoundLoop, ambient); + } +} \ No newline at end of file diff --git a/Content.Server/Supermatter/Systems/SupermatterSystem.cs b/Content.Server/Supermatter/Systems/SupermatterSystem.cs new file mode 100644 index 00000000000..3d86f57fb84 --- /dev/null +++ b/Content.Server/Supermatter/Systems/SupermatterSystem.cs @@ -0,0 +1,212 @@ +using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; +using Robust.Shared.Containers; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Events; +using Robust.Server.GameObjects; +using Content.Shared.Atmos; +using Content.Shared.Interaction; +using Content.Shared.Projectiles; +using Content.Shared.Mobs.Components; +using Content.Server.Atmos.EntitySystems; +using Content.Server.Chat.Systems; +using Content.Server.Explosion.EntitySystems; +using Content.Shared.Supermatter.Components; +using Content.Server.Lightning; +using Content.Server.AlertLevel; +using Content.Server.Station.Systems; +using Content.Server.Kitchen.Components; +using Content.Shared.DoAfter; +using Content.Shared.Examine; +using Content.Server.DoAfter; +using Content.Server.Popups; +using Content.Shared.Audio; + +namespace Content.Server.Supermatter.Systems; + +public sealed partial class SupermatterSystem : EntitySystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + [Dependency] private readonly ChatSystem _chat = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly ExplosionSystem _explosion = default!; + [Dependency] private readonly TransformSystem _xform = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedAmbientSoundSystem _ambient = default!; + [Dependency] private readonly LightningSystem _lightning = default!; + [Dependency] private readonly AlertLevelSystem _alert = default!; + [Dependency] private readonly StationSystem _station = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + + SubscribeLocalEvent(OnCollideEvent); + SubscribeLocalEvent(OnHandInteract); + SubscribeLocalEvent(OnItemInteract); + SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnGetSliver); + } + + + public override void Update(float frameTime) + { + base.Update(frameTime); + + foreach (var sm in EntityManager.EntityQuery()) + { + if (!sm.Activated) + return; + + var uid = sm.Owner; + sm.UpdateAccumulator += frameTime; + + if (sm.UpdateAccumulator >= sm.UpdateTimer) + { + sm.UpdateAccumulator -= sm.UpdateTimer; + Cycle(uid, sm); + } + } + } + + + public void Cycle(EntityUid uid, SupermatterComponent sm) + { + sm.ZapAccumulator++; + sm.YellAccumulator++; + + ProcessAtmos(uid, sm); + HandleDamage(uid, sm); + + if (sm.Damage >= sm.DamageDelaminationPoint || sm.Delamming) + HandleDelamination(uid, sm); + + HandleSoundLoop(uid, sm); + + if (sm.ZapAccumulator >= sm.ZapTimer) + { + sm.ZapAccumulator -= sm.ZapTimer; + SupermatterZap(uid, sm); + } + + if (sm.YellAccumulator >= sm.YellTimer) + { + sm.YellAccumulator -= sm.YellTimer; + AnnounceCoreDamage(uid, sm); + } + } + + private void OnMapInit(EntityUid uid, SupermatterComponent sm, MapInitEvent args) + { + // Set the Sound + _ambient.SetAmbience(uid, true); + + // Add Air to the initialized SM in the Map so it doesn't delam on its' own + var mix = _atmosphere.GetContainingMixture(uid, true, true); + mix?.AdjustMoles(Gas.Oxygen, Atmospherics.OxygenMolesStandard); + mix?.AdjustMoles(Gas.Nitrogen, Atmospherics.NitrogenMolesStandard); + } + + private void OnCollideEvent(EntityUid uid, SupermatterComponent sm, ref StartCollideEvent args) + { + if (!sm.Activated) + sm.Activated = true; + + var target = args.OtherEntity; + if (args.OtherBody.BodyType == BodyType.Static + || HasComp(target) + || _container.IsEntityInContainer(uid)) + return; + + if (!HasComp(target)) + { + EntityManager.SpawnEntity(sm.CollisionResultPrototype, Transform(target).Coordinates); + _audio.PlayPvs(sm.DustSound, uid); + sm.Power += args.OtherBody.Mass; + } + + EntityManager.QueueDeleteEntity(target); + + if (TryComp(target, out var food)) + sm.Power += food.Energy; + else if (TryComp(target, out var projectile)) + sm.Power += (float) projectile.Damage.GetTotal(); + else + sm.Power++; + + sm.MatterPower += HasComp(target) ? 200 : 0; + } + + private void OnHandInteract(EntityUid uid, SupermatterComponent sm, ref InteractHandEvent args) + { + if (!sm.Activated) + sm.Activated = true; + + var target = args.User; + + if (HasComp(target)) + return; + + sm.MatterPower += 200; + + EntityManager.SpawnEntity(sm.CollisionResultPrototype, Transform(target).Coordinates); + _audio.PlayPvs(sm.DustSound, uid); + EntityManager.QueueDeleteEntity(target); + } + + private void OnItemInteract(EntityUid uid, SupermatterComponent sm, ref InteractUsingEvent args) + { + if (!sm.Activated) + sm.Activated = true; + + if (sm.SliverRemoved) + return; + + if (!HasComp(args.Used)) + return; + + var dae = new DoAfterArgs(EntityManager, args.User, 30f, new SupermatterDoAfterEvent(), args.Target) + { + BreakOnDamage = true, + BreakOnHandChange = false, + BreakOnTargetMove = true, + BreakOnUserMove = true, + BreakOnWeightlessMove = false, + NeedHand = true, + RequireCanInteract = true, + }; + + _doAfter.TryStartDoAfter(dae); + _popup.PopupClient(Loc.GetString("supermatter-tamper-begin"), uid, args.User); + } + + private void OnGetSliver(EntityUid uid, SupermatterComponent sm, ref SupermatterDoAfterEvent args) + { + if (args.Cancelled) + return; + + // Your criminal actions will not go unnoticed + sm.Damage += sm.DamageDelaminationPoint / 10; + + var integrity = GetIntegrity(sm).ToString("0.00"); + SendSupermatterAnnouncement(uid, Loc.GetString("supermatter-announcement-cc-tamper", ("integrity", integrity)), true, "Central Command"); + + Spawn(sm.SliverPrototype, _transform.GetMapCoordinates(args.User)); + _popup.PopupClient(Loc.GetString("supermatter-tamper-end"), uid, args.User); + + sm.DelamTimer /= 2; + } + + private void OnExamine(EntityUid uid, SupermatterComponent sm, ref ExaminedEvent args) + { + if (args.IsInDetailsRange) + args.PushMarkup(Loc.GetString("supermatter-examine-integrity", ("integrity", GetIntegrity(sm).ToString("0.00")))); + } +} diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 985d9da1a18..facbd1d71b6 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1,3 +1,4 @@ +using Content.Shared.Supermatter.Components; using Robust.Shared; using Robust.Shared.Configuration; @@ -2339,5 +2340,54 @@ public static readonly CVarDef CVarDef.Create("contests.max_percentage", 0.25f, CVar.REPLICATED | CVar.SERVER); #endregion + + #region Supermatter System + + /// + /// With completely default supermatter values, Singuloose delamination will occur if engineers inject at least 900 moles of coolant per tile + /// in the crystal chamber. For reference, a gas canister contains 1800 moles of air. This Cvar directly multiplies the amount of moles required to singuloose. + /// + public static readonly CVarDef SupermatterSingulooseMolesModifier = + CVarDef.Create("supermatter.singuloose_moles_modifier", 1f, CVar.SERVER); + + /// + /// Toggles whether or not Singuloose delaminations can occur. If both Singuloose and Tesloose are disabled, it will always delam into a Nuke. + /// + public static readonly CVarDef SupermatterDoSingulooseDelam = + CVarDef.Create("supermatter.do_singuloose", true, CVar.SERVER); + + /// + /// By default, Supermatter will "Tesloose" if the conditions for Singuloose are not met, and the core's power is at least 4000. + /// The actual reasons for being at least this amount vary by how the core was screwed up, but traditionally it's caused by "The core is on fire". + /// This Cvar multiplies said power threshold for the purpose of determining if the delam is a Tesloose. + /// + public static readonly CVarDef SupermatterTesloosePowerModifier = + CVarDef.Create("supermatter.tesloose_power_modifier", 1f, CVar.SERVER); + + /// + /// Toggles whether or not Tesloose delaminations can occur. If both Singuloose and Tesloose are disabled, it will always delam into a Nuke. + /// + public static readonly CVarDef SupermatterDoTeslooseDelam = + CVarDef.Create("supermatter.do_tesloose", true, CVar.SERVER); + + /// + /// When true, bypass the normal checks to determine delam type, and instead use the type chosen by supermatter.forced_delam_type + /// + public static readonly CVarDef SupermatterDoForceDelam = + CVarDef.Create("supermatter.do_force_delam", false, CVar.SERVER); + + /// + /// If supermatter.do_force_delam is true, this determines the delamination type, bypassing the normal checks. + /// + public static readonly CVarDef SupermatterForcedDelamType = + CVarDef.Create("supermatter.forced_delam_type", DelamType.Singulo, CVar.SERVER); + + /// + /// Directly multiplies the amount of rads put out by the supermatter. Be VERY conservative with this. + /// + public static readonly CVarDef SupermatterRadsModifier = + CVarDef.Create("supermatter.rads_modifier", 1f, CVar.SERVER); + + #endregion } } diff --git a/Content.Shared/Supermatter/Components/SupermatterComponent.cs b/Content.Shared/Supermatter/Components/SupermatterComponent.cs new file mode 100644 index 00000000000..ad7604f5ba6 --- /dev/null +++ b/Content.Shared/Supermatter/Components/SupermatterComponent.cs @@ -0,0 +1,390 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Audio; +using Content.Shared.Atmos; +using Content.Shared.Whitelist; +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Supermatter.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class SupermatterComponent : Component +{ + #region Base + + /// + /// The SM will only cycle if activated. + /// + [DataField] + public bool Activated = false; + + [DataField] + public string SliverPrototype = "SupermatterSliver"; + + /// + /// Affects delamination timer. + /// If removed - delamination timer is divided by 2. + /// + [DataField] + public bool SliverRemoved = false; + + public string[] LightningPrototypes = + { + "Lightning", + "ChargedLightning", + "SuperchargedLightning", + "HyperchargedLightning" + }; + + [DataField] + public string SingularitySpawnPrototype = "Singularity"; + + [DataField] + public string TeslaSpawnPrototype = "TeslaEnergyBall"; + + [DataField] + public string KudzuSpawnPrototype = "SupermatterKudzu"; + + /// + /// What spawns in the place of an unfortunate entity that got removed by the SM. + /// + [DataField] + public string CollisionResultPrototype = "Ash"; + + [DataField] + public SoundSpecifier DustSound = new SoundPathSpecifier("/Audio/Effects/Grenades/Supermatter/supermatter_start.ogg"); + + [DataField] + public SoundSpecifier CalmSound = new SoundPathSpecifier("/Audio/Supermatter/calm.ogg"); + + [DataField] + public SoundSpecifier DelamSound = new SoundPathSpecifier("/Audio/Supermatter/delamming.ogg"); + + [DataField] + public SoundSpecifier CurrentSoundLoop = new SoundPathSpecifier("/Audio/Supermatter/calm.ogg"); + + #endregion + + #region Processing + + [DataField] + public float Power; + + [DataField] + public float MatterPower; + + [DataField] + public float MatterPowerConversion = 10f; + + /// + /// The portion of the gasmix we're on + /// + [DataField] + public float GasEfficiency = 0.15f; + + /// + /// Based on CO2 percentage, this slowly moves between 0 and 1. + /// We use it to calculate the powerloss_inhibitor. + /// + [DataField] + public float PowerlossDynamicScaling; + + /// + /// Affects the amount of damage and minimum point at which the SM takes heat damage + /// + [DataField] + public float DynamicHeatResistance = 1; + + /// + /// Multiplier on damage the core takes from absorbing hot gas. + /// Default is ~1/350. + /// + [DataField] + public float MoleHeatPenalty = 0.00286f; + + /// + /// Inverse of + /// + [DataField] + public float MoleHeatThreshold = 350f; + + /// + /// Multiplier on power generated by nuclear reactions + /// + [DataField] + public float ReactionPowerModifier = 0.55f; + + /// + /// Acts as a multiplier on the amount that nuclear reactions increase the supermatter core temperature + /// + [DataField] + public float ThermalReleaseModifier = 0.2f; + + /// + /// Multiplier on how much plasma is released during supermatter reactions + /// Default is ~1/750 + /// + [DataField] + public float PlasmaReleaseModifier = 0.001333f; + + /// + /// Multiplier on how much oxygen is released during supermatter reactions. + /// Default is ~1/325 + /// + [DataField] + public float OxygenReleaseEfficiencyModifier = 0.0031f; + + #endregion + + #region Timing + + /// + /// We yell if over 50 damage every YellTimer Seconds + /// + [DataField] + public float YellTimer = 60f; + + /// + /// Set to YellTimer at first so it doesnt yell a minute after being hit + /// + [DataField] + public float YellAccumulator = 60f; + + /// + /// Timer for delam + /// + [DataField] + public float DelamTimerAccumulator; + + /// + /// Time until delam + /// + [DataField] + public float DelamTimer = 120f; + + /// + /// The message timer + /// + [DataField] + public float SpeakAccumulator = 60f; + + [DataField] + public float UpdateAccumulator = 0f; + + [DataField] + public float UpdateTimer = 1f; + + [DataField] + public float ZapAccumulator = 0f; + + [DataField] + public float ZapTimer = 10f; + + #endregion + + #region Thresholds + + /// + /// The heat threshold in Kelvin, after which the supermatter begins taking damage. + /// + [DataField] + public float HeatThreshold = 2500f; + + /// + /// Percentage of inhibitor gas needed before the charge inertia chain reaction effect starts. + /// + [DataField] + public float PowerlossInhibitionGasThreshold = 0.20f; + + /// + /// Moles of the gas needed before the charge inertia chain reaction effect starts. + /// Scales powerloss inhibition down until this amount of moles is reached. + /// + [DataField] + public float PowerlossInhibitionMoleThreshold = 20f; + + /// + /// Bonus powerloss inhibition boost if this amount of moles is reached + /// + [DataField] + public float PowerlossInhibitionMoleBoostThreshold = 500f; + + /// + /// Above this value we can get lord singulo and independent mol damage, below it we can heal damage + /// + [DataField] + public float MolePenaltyThreshold = 900f; + + /// + /// More moles of gases are harder to heat than fewer, so let's scale heat damage around them + /// + [DataField] + public float MoleHeatPenaltyThreshold; + + /// + /// The cutoff on power properly doing damage, pulling shit around, + /// and delamming into a tesla. Low chance of pyro anomalies, +2 bolts of electricity + /// + [DataField] + public float PowerPenaltyThreshold = 4000f; + + /// + /// Maximum safe operational temperature in degrees Celsius. + /// Supermatter begins taking damage above this temperature. + /// + [DataField] + public float HeatPenaltyThreshold = 40f; + + #endregion + + #region Damage + + /// + /// The amount of damage taken + /// + [DataField] + public float Damage = 0f; + + /// + /// The damage from before this cycle. + /// Used to limit the damage we can take each cycle, and for safe alert. + /// + [DataField] + public float DamageArchived = 0f; + + /// + /// Is multiplied by ExplosionPoint to cap evironmental damage per cycle + /// + [DataField] + public float DamageHardcap = 0.002f; + + /// + /// Environmental damage is scaled by this + /// + [DataField] + public float DamageIncreaseMultiplier = 0.25f; + + /// + /// Max space damage the SM will take per cycle + /// + [DataField] + public float MaxSpaceExposureDamage = 2; + + /// + /// The point at which we should start sending radio messages about the damage. + /// + [DataField] + public float DamageWarningThreshold = 50; + + /// + /// The point at which we start sending station announcements about the damage. + /// + [DataField] + public float DamageEmergencyThreshold = 500; + + /// + /// The point at which the SM begins delaminating. + /// + [DataField] + public int DamageDelaminationPoint = 900; + + [DataField] + public bool Delamming = false; + + [DataField] + public DelamType PreferredDelamType = DelamType.Explosion; + + #endregion + + #region Announcements + + [DataField] + public string AlertCodeYellowId = "yellow"; + + [DataField] + public string AlertCodeDeltaId = "delta"; + + [DataField] + public bool DelamAnnounced = false; + + #endregion + + #region Gases + + /// + /// How much gas is in the SM + /// + [DataField] + public Dictionary GasStorage = new Dictionary() + { + { Gas.Oxygen, 0f }, + { Gas.Nitrogen, 0f }, + { Gas.CarbonDioxide, 0f }, + { Gas.Plasma, 0f }, + { Gas.Tritium, 0f }, + { Gas.WaterVapor, 0f }, + { Gas.Frezon, 0f }, + { Gas.Ammonia, 0f }, + { Gas.NitrousOxide, 0f }, + }; + + /// + /// Stores information about how every gas interacts with the SM + /// + //TODO: Replace this with serializable GasFact array something + public readonly Dictionary GasDataFields = new() + { + { Gas.Oxygen, (1.5f, 1f, 1f) }, + { Gas.Nitrogen, (0f, -1.5f, -1f) }, + { Gas.CarbonDioxide, (0f, 0.1f, 1f) }, + { Gas.Plasma, (4f, 15f, 1f) }, + { Gas.Tritium, (30f, 10f, 1f) }, + { Gas.WaterVapor, (2f, 12f, 1f) }, + { Gas.Frezon, (3f, -10f, -1f) }, + { Gas.Ammonia, (0f, .5f, 1f) }, + { Gas.NitrousOxide, (0f, -5f, -1f) }, + }; + + #endregion +} + + +public enum SupermatterSound : sbyte +{ + Aggressive = 0, + Delam = 1 +} + +public enum DelamType : int +{ + Explosion = 0, + Singulo = 1, + Tesla = 2, + Cascade = 3 +} + +[Serializable, DataDefinition] +public sealed partial class GasFact +{ + [DataField] + public float TransmitModifier; + + [DataField] + public float HeatPenalty; + + [DataField] + public float PowerMixRatio; + + public GasFact(float transmitModifier, float heatPenalty, float powerMixRatio) + { + TransmitModifier = transmitModifier; + HeatPenalty = heatPenalty; + PowerMixRatio = powerMixRatio; + } +} + +[Serializable, NetSerializable] +public sealed partial class SupermatterDoAfterEvent : SimpleDoAfterEvent +{ + +} diff --git a/Content.Shared/Supermatter/Components/SupermatterFoodComponent.cs b/Content.Shared/Supermatter/Components/SupermatterFoodComponent.cs new file mode 100644 index 00000000000..9d235a4b4d3 --- /dev/null +++ b/Content.Shared/Supermatter/Components/SupermatterFoodComponent.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Supermatter.Components; + +[RegisterComponent] +public sealed partial class SupermatterFoodComponent : Component +{ + [DataField] + public int Energy { get; set; } = 1; +} diff --git a/Content.Shared/Supermatter/Components/SupermatterImmuneComponent.cs b/Content.Shared/Supermatter/Components/SupermatterImmuneComponent.cs new file mode 100644 index 00000000000..b517115eca7 --- /dev/null +++ b/Content.Shared/Supermatter/Components/SupermatterImmuneComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Supermatter.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class SupermatterImmuneComponent : Component +{ + +} diff --git a/Resources/Audio/Supermatter/calm.ogg b/Resources/Audio/Supermatter/calm.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dc3102e57866eb386ca4f7977b5e9f3696db1a98 GIT binary patch literal 172011 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 EdSVilTuz2 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

)P%>x$;)u7(ofnE>YR_`jm~glc-b8) z(FHr3-6|e{j}98K4|yAJ`G-MKq=JmpieAVG*ZIgqRgA)jARPN`G*5>}Eyfmr_3VnN znt#_pqv9>!mTjNz-p`$iOS)O$QXGm>Zy?!8b}P&|sA;-$h#2)^K=BjmsmcXR4}wm) zb{9oScgZVkN95tVRcsiEO0oy!jFf8EseKYYNygA-i?CMPEu1XjZg(MXJIdd2sVM@#yfMSMS+t|c4)JB+J1Mn#b6pC;g2RJ6>%<`^3~47hLOC73|uOukmKarZ$nsf!pWumb=31 z?XNzj==xG!Z3pX|)>54<+?{exR5^N6TbNDeTBnsT7yN6eSgAHmDo5 z?rnaeidsU=i0a8IX{FV>iTecwJuD z5ASA4`HWN)sqS9em{vR=qyCwy3c!Qai<@95Mf$i)($;dx-U+N_Cxa6)W=$`d8Sp>|B_wraw*kXgBkQ1Z@sLE$eM(pq3?hYK%@c@K+JrY?HWik?b+tKbVU^5f z4z%EJxXtdtmaZmoOQ_IvC0fV`{sT<$bT;xuWE>ujh^j@i06vO*k}yrAFo%LJtRS8pxk0U(*iDM5~aI!|F^3E{=cq*03-1{)9}LehO?!e zwLQaD)XAAnxA>m{24Ong$=bnz;TiFl%)kKhE6YSwN`!Gv3ErUFpsqXQy9=Un*&!0Bf`o>|eG(hzgc2QmPnS@K+55wO`E*FO{?AF7@1E1DKLwXkd ztuX_Ew@#!5A~=ibGA;P+I$tKn=%YDvRG3p_rP}xQGLXv)pHr=aVA1xe$iPT7{Na^n zm=;!Df=tfQI7OWuz!3-NGX9uxts2ktXZa%v$x{}EuFCy!mxdYO`7z3aB7;Yhhoqxd zVT>?TV61cR1;i3KgDs5I9+1t{R0kb9vrq)^Ok! zCWEE8NT@`--%R+4CA4}vCpS#ZZ@yUx$S7a6iD}PdX>KO9J);p3xFy-zqoD5Qh3lL! zQ2!iWF+%(F>F$8{`9h(Dz%m!zDmjx#u-#_%l6HYkhUTdi&2+lz4U>l^)!)@qm|Ok=hp#{K2PUKT?62 zfpj#_q?YlUBbX-4wPzx7(qzHkNFfqO+u_dtws!9gcoRkQhI1Y{JFYzj4V1BtP!f84m{zZV`t0c2_ITtfODekZiyI zO6p)eqf3+PX{}vzmCJ^Ef!wm&@g?9rF zRrX~V53srbtx@m=^ykNSP%Mw0zjDbY#dqcRSL*Rxqsk0*A!AgFxVRV?sT~4GZwMzu z+z-cRHWw73wim*4t-N%;(lEyU5+&6OQPM0fxa1zG7goNMx5s#0{D$8;OX1P zMuFQ__Kjfhjs3J|8O>VK{l}0!ZJjIX?#VY7V_i~4T_Ah|itEISoVVKqe+6#v4_BiO zdK|r8O2g5x-1*J+Uk0$w39rO%{(>VL`DNbp;YOhP1YzxI`pPSo!7x&r+KrUBv-aQA8Jv%#K@jT#Zr|8Xkf5c7d(x+Tb zD5AYv&Nv~ZUC~7Ib`jp~_?NE-Oz4t)^Jq2UVEEa>?dTa--yvBU^=yg7?s{43!uV2Z zx9dWsGzToy$QbANi?}iR{!S0r!+@5ky2)2qU;{_tE!=a%&=A9_ICqy{2Ao2ow68`) zOyb;>QSxJ}7(%NEbaCBqraWfF6&%w-=4h>J?73u#4pjNC+jyf$fPvqB;@w-M7Sxfb zc6BsplF^zT9pAhjO#3FszUi@T?WN@5t+pU3tE2~mn$J3qx_=WOi+9Y)Glk*jQ@yyE zR9-|6A}E+8C(8{*N02k!Nb)i!hh+Ke%u+4K^K*-3xFtMypXPp9V*Iu*+czIzrVpG?L08l(<4Gr zy__j8{KGsrFE*D!q1a)FiMPR_!;u6SJ@iJo@FV^+Qcmdn1;5^|0d=$3mAH5Brqg~0yc$ve7UN@?MoaaAjf4p|Sxe}YZ8;C;gt)l+#U~cS zbmZ>YOecvglquy@$W2-COYUoF*;6{IguY&VT^RxPZV$3P5{9_j?t}jQfxgx$WUXm6 zW#QSQy~<0GGoF9jYTPot)Z`;Bp!89Mih0;um!`PQ>vDZa;_GzGXV)nGf%Hj5pt++E zI~$!|T~LqhaAJcW%qccb+b%_{?=5v!V@hDNU8=s`S?_Q+a-+ER?-set(1TmhL85Rw zSf0%&*eA)0XeIZ!D(|?^xuw2m`phyQWY00A{EL9y_{_>|ZKy}BW<>oxj!7BilIzTcNTE?b9CPG6i$w~j$Q;jtA-@K0-i2gdL{fVZ{>DcOE|%<%_&GNvP;qXq678V z6tAQCR8IE3PW@t6!VL1By#uNk_@_nyCx$NRLT9vW6o8!?HV_?#b&c8jFFu(YXFBaC zoxea9n_U?r`j6R|*>U6^#?! zFlT-|EqwgVExDQzuqS`%id@_S=ttORx;dasefQX~A^MymyXAfVWURp4JpJOCdjw2s z0wS51`d9Y&A2S@ie=is_9g6^NXeS?h&8r~$=6nk{6ogD^6_rL6Y#k=GACh^Zyk;PT zFlkPut%=>@)d)&Rqa@N!h zv+IVV*1Xl^I5CafE!2Z&>Q;Sr>`#FM0oNE+U)K6>i(9N3m(rxXGrn+tI{n%+rR8&C zeNfvx>a?O%;)geVNDfMOc9a~6S+3LKwzje43a{C%F!lYnc&*5+Gc3t!rxK7ji*__*6~M_XO9QPRS1|7mjbA+Untk@)O?68WZXaLuwLifpsozDe3oWqz?`vTZOr97UJrU>+H# zZECCX*6)V$KnfsVPrT|p#NSn4S%J&{)Qd2;4@1o7H%6IO-h0!lwkWkmdRG1$^{s};{3nIETxiE?|Ccm*3 zde=B((DmkrFv~tt?WI0ViHrX7WzQJXTWMUv+K27?!8|n1q~k9E>aZ^-;WSDt6kkg9 zyb@KgU}W0&pJ_Atg(;stXyUMDmZK@}EIR=8?}-3qCEh{@I-8k-bXqD!-FjWCh_NSJ zHads%hKHQLlYPy>Bl&F8tpa!PODj`R%MFnCoprUM$0=a7km>zB$GjoVgM|R4tJm)A z@L(hd_jI443UP;EplW0d8t|Gehwiw_ZOTo35@7KUaYY(s;8w(2cl?4SaV(ZR(38h- zD*I)b9l*d(M6o`r(vf0768R;uS_l&m%!j*&e@3OYB{MVUiBIzFz+VTOD1P#|jm5rn zAKlB~4cg(F3s-EBRXM>$+SWaf$IMp^ZAK12nE3203nTGq&87>CLr z!BfNg{<-CR4^AeFazm>5GOuXyBz6S@=U19l^!z@Nff2@qg`8&?Fg58}l-y@%7fmav zAuIf*@pzXnOusGh=#$oP+0|=Y%l_d#e1x81ph`R^W5<;vZE&^Kt93`1xRk-s4%KX{ z&PT?ttn<`uG_UX%8u&3{-deeQ zQtu7>Kt--8VIEn&LLNKwR$3&FHE`>m%dDW|DbmCZDv${xs8=GjtxR~D5p)^nu}ytt z!<_!&CkuEX;rC?8PrgQp483s`wlEYz%#Pr~4AgNM_6Oacm$jkWK=`uXD+wJ@gz zv6pV-7YlTJ-B#NvJmvywk7}A7%-AlPPtM$=rm$Zs&QWQx5ZTa{X*i?$vdx;WW}!g4 zd;;;???)aF_z!>BHlkX(mDAXNtSyihn#wirNt3E8Ux|&<&Q~PhFW;l~IOYoA0B|)T8^_w1q4Bn~j(32{SMJZMb{>+#QM9r5SvIEwgO*)Z-1)N9@;A`K#l?`U^6F}PIX|K&%Nag1XCw`+IRr-(_{bi zwp!#RryS)8P>-?95cGygW``-9Y0C=@DT>2jTs^b%ZK$4w7C_o8aC>-&?-V_M4 z8nYv%$6@7ha2)N67m zTABS7f7G*|JNO3LM2sn$mf(bo#9nT4@99)YOvgd%U!w$`kTF7wI)I~xc^Xxy( zV@wYnc85v(=ReN{&2*FS1=4e>FoPJ0rbu-ao6TP}N`sKulW}ZU4lDvMoRdtsFCY0FUZ7v zNVQ|WVM)H@f;FSUp53!Z-|;h{veTi0oa7bDTJtNNx;h+0sg>O32!+=^;-OtW)xeU3 z;$ok^Q?s%XC`~2tmup3{=B!eL*_74X+{A_NpMIw7DG%8_wvxYs4n1wbiti|SircRk z*$K4`R`18NtnbBkSyBkq4S~~eS|DiC^iNna-b@+?M+C=^q8|LALe{ysqNtM4Ql-Ns| z*qleAwip16wy`u3tnn8VcV%@=>(^a5xY4=tMhpwa!k-_mz|?d#8HHqe(OXV0WC+$n zt?1IBz0Ca3O-y68zb{s?bOyv}58a)ZHgCq;->wY{fESKsIeYN|X!cV}rwMY;92Fj> z4A=Qope43ZaY;GBJeBzB7wWMGTiCIBf%8SW4%|F*0bNBXMvrGl_@wRVBPcY72HHMzQEi`l+(--@D}K*0=%tzK@r zc%O3y>NODqeRGD_>Z9G{VU$>N(geZ;J=Wrm`1YeS@*-tn=>iTlBhPT+Q$ARVG}SoG zVq&}r$lzYteFvvGwi`6BfVP;Fj-TNk;W2_0N!5*L*gxXd@?^iwMasP&i|3LBTLH2` z#^W7zV@uU0#?2C^eZ^_O@(6?<#9>>-%x6C$TL@fm*3H61BVFsWdO^IgZ=T!NnHoAM zP*rg9$&3zt5P3oigos(t!Y^+F;kynRC!J4&9qWjJBT9rNWCU^hKA`PD%5TG^x2g2Z z3W{IBl3(n?uCKpGkP@=5T0iWZ3lbTV-{N(aF^kUOe^;(H2i3gE=)+%^SyER#X5T9Xmv60Yp{G&A4 zKdjvUoqF^hBftlDz;VDHO;M-6FjHHWYZiEsQiex>3Q+{C4#S3R_9s)@KTXWr3Nq?E?1;mP-sg3T9aV&kvO@f(UPeSYL0|77v}(j+ZP zM`(=HxV)3`r%9v*9qyMzwD6D&Rl!;%nX>65G z?-@Rvr(>z`BJBvT&K-w$i#gLCc#gG!iE5X6o2yy?OSYJqpRL|oG;wrj*EIn>k7nkd zXk-39uOugPlO~?LQ@xvvrngAcwTFim`MC_=hr*ddoC&hnlDb)n_K;D>EX_)H=?LHU z2%m@wKR&7^)x%0{EKC8Ds!vJHG%RO)GYGCA;#nHTiT=s zIC~-qjZgr2TBpgA zxfWwHdZtC@R0&*g?OG4#k2hwMRT2pL^Dc73h8rK?^CKcp<_9B>MDDS5KyuFBF78{M zrAeR{s33Rqz*!Qb6e4M)L)ch0Oq8n78Xp^f1n9g1lYEpj9-Vaq=r`E8s?P_(oGaR2 zVZN8}Qn+V|`UKu0FaiFA+7B=wYcV1Wu)FN{?d7vA?8)>!XYTDSAz{0esH#OH3%oN~ zK2$0yNmpZW)H*iasH0iAzPbQwSE>$BtzjkARu42Av=fRI?4s4uNr}j!H zKXd61j;2Rgpf=kNgUVF|6L+vVD{T^!A(Pr$Qvl@7aZJ2+?XbW2?SFnYuo~|;Q9#l^ zEWZyY93XI;(=XK}kHec>#71OtTOhutHh zcAffwT5~D69j*53wMVM@54ryM&DPmAqGLng zP!Hn!qEOKVl`v_AA+jz0K;tzpAeS;WC!X@n+$D>qr*-fZid^V%n;Ll2CDK{rchXF5 z?HlxVn2&taAxh5z`}~m=iW1yRDh&1BLk3>Jys0=vb{A%UGvNk)ptgOhEwpZrWaH_- zVJ=`n{uS@sML#n$)*B(j5W&<%I1TRg+1xyap6%4We-iYk&Ch2raRpbaD1dGXNt_YT zP_o z3c6*oh6Up37$%7ef3ekmi;nl6Ar+b1q;%}sff+zT+wz)QrOdGfk&w|h8(2VfR9+rS zmW)pta3gRroMO*z>ymj)(nf!3LEo<0gKDs8-xj^gUer}AgjVv)qUUk<>HW?zN3SGw z7}KE+(%_tyv}PLw^z3Xh-0s7SZ*ulJl3sAxo-GFN4Gl#Mu7r5Cbrx^$?thmC@G=Bt z;9ew$ivVa(e0F+Zu^@D91)=MI{&sJ(*tycFS%2~no@PZfXU3jo0MwPuEDv--{HR0? zGYjnCQie$~!ht^Fw+`RSWn6GJX1~!%B~XzkI5O&IGa?MEI3o>s4QnG-`+=#EBHW$> zqRH~4kqrY#&3g%*oaoA9SDX*=(7BhFX;i)7&|Iqs%PvGXU9M1>vH+>l%U^Ah@HQPj z`XuX+{b1uQ9fWgLx4j+FW;;mnG=Nsz6>|qrX4$|j*?+|+uRC;6_FKETJK{Zd!S(v) z)?w4NDIYhFZ2pnYg|c0(hrE+Z7bOLjByqVTV| za(;fOt26P+^BwaH%wpWvP=diYD@khlGrY0-DCI`?z1m@e@Pg z`_6&~z2yue>c{|J$XGRJtDLnAfw(1+$Hrc0FOrJIAL2aTE5B4;cU^g#r7cGl9}GVL z1l*SAha%sv9bNd-jH7LJKvvq{aWQyC5|!{w+Bv2B=FC)fEQxMfknlr@abDO#`X-^- zy)zz^Omig`W*&}RfvF?fnmG>|xbSkube`7eE^A_4(keFR**vIlFXSfeo@*JPVRG;` zU)Q?9Ue}cv{eadFr0!A0fT3rzYAkgQN+Zut*p!^w$U<))`9E%1FLEWCa$o`#X3j2Ob zu!iHiSgHZbA^AX?gY;=Zk=?O(Q|y(0tpZsq9UXyIUOXKi6` z=j3c|=ip>%WohT&$oOM#%|JgoF>)mnozG|yh8NU>Irzr=oh5IN(t}jm*;B-%df0@D4K4aP1Qx@gXmWkxL99X)@HIQ zNY$(mQ{5Z>;^8>sdq+ilbC?Vbb58S)Hf0frv~35Ocn6{)N^o8@UU_mw44IduSa%lS zC?zUJE!F9psw%w?!aapPpvTYpI!a=lFe)Oo{kQEfTqwPuY#*T0@*BHI5h#i1DH zN7%}Qo}A1~P>Fa^V`H?JfqJ{Xil~NFwU=0nl8>Ow9*zS50NKFi@VyvHn?GK8OK;$3 zFc4(OWNzdsTyQwPly??zgZT@KF`xEimA*$q;@?T0Cy*0P2&3-e)Jh7-YFd|QE@eRQ1fr^yRZg~lCxvaG! zAoj*%`mjKyix>U;6nEgH!2(>*PjTsr8twzhXRF?_HJ?q7qFS^#gvTGh$!GgpB7dn> z+<$0x6diGJZ63LePv2W_)Me~!hi~)!Yfrc;5IOa9&p1s(i7r4*YsvRbItg*}#H!GL zJy@TZ?MfCJJS%$7C^a>dBlL`~MZ9MeXOk+$zIXZ6`(t`MpTsV^d8FiaUU4};xd?|F5nrhat2yCB8#ZZ_d~FJc=>1&1E0L29J$~@pJfB;~{?2Fgj&QV_;>4y$CFVU}kNd~`S6vzt z{sDdNr!YiMRT8q}FF)}1N&K;H>F_T^Gts@2QxMeY?JXbe!2gLhv&TQz9&0f)sUKDmqfV# zjJ@i3fxlKs!>w!vm=N*x`RZ{_hQ32(D=`~IfE0(d`;9QQPH+PPxNPQn_C!SCrK*6lWm z{P(D&)7)gFwMyK^f9v0MtJijV zm)?a}Y_Hw9)SM8%oN30At?fK1n^3d=+tyW8%^J;j=3@qt8L}zH#~swo-;Y+MmR%)m zHr;Og@-C}Qsm~_&A{nBM+vWwf>F%RLca9eB41WWi->Y;0PuwX+sCmbyLYXxIqwv(P zwgZN%y1v~?(5xq*XZp;zCrLZq)qF(t7x(>+uY9~0edSJX!Iov$*7POw(YL5yIviLo z12sCjogB|t)&%@xU~}pCA?a)2K-N~8L{3@SUtx-kPr0so=9ci)!l^RsqOGxzZMV2X zlzsjo@qE{AkSKVj&(zZLXPe&4TLqiMiUb1e`l!8g#eWar@fee#{wsC-JaI!$_E?iRHSF-48*7&tDx3f8@+Y9R@Vxkb2Fxt2B8$I3>g zkey*WuDg7DS1SEl_&XVae^wv7o7)HtC+=eJc=}O>F?~D{CllZDYWVkZVyEgtJ~cH_ z*QMFCPX;=eg3o@%y*r4Ych+XCF8|;GyI|C~J*SQb1m9Avn|GnH*EV4Kq~S7Kwd&(6 zW)@E4X!jMju7vU?P1tpTxyU;}C{!AAKIrOW1Jb4I!AqZMkk>y_QI!9c|}&#ip6OOZlv$;%#1HZ`u>~Yfo|&&%WY-Ed;I`#9?kmH z7t?nwisUeIVtBB1E>PkEl0M00wp!0ki&s_FKq`9AW8{0!k)bDaU|A+!K{Y(joVW?~ zFhbMW^PLsGf$I0mR;+gK-~F5LBRs5p{avs_{PTPxY4vJqfe?(y?GDvOkd%Bzwpr3y z)V9F|V$6x~M08}N%+NLBuX=1XQfp@^R>XaZM6>431)_W;5aqZ*6$j(>6 zX9IFiMqY&7w`-<^JR&5pgz9y3F@z=Tjv$fsplC1Dyz9IPZktu1xXOlB{B1f?w8#%E zwRHON4|}~nMKA$>ZmhZ+PW`9VZs5cnajO12?`RCkSQEVeZ1x>`3$=~a<6``pr>i1& zAjSAo`);l_r?J$(26FVR%OiiZ%hZv?2ByIaw141uc-_a!Ood7w((R~&cG#eG| z1se=}m@WSIzIblfeB+?NK)|h7%2exTz8rvtpSmwVl1u@&1UWeTuxL^(OAlW6YDBM* zdY#6!gnN2ucjHL0bP-I};7|eE^l#W)}zFsV61ZlDmR&Evf#D7eRpD|Rw+8Z-;n|QTrExt^xAB6@Gd@MyD)%KiDVxzThuzopfimS*|YJfJg z5?zV50|=!Pr=uz}YD`pMz}r}~W)?mzSqYz%)-KCaKiK=xB4YW-ji3hyed0PpN4a4B z(_it>3Vx!K-+L`R((NvkVbqJWW+Fs|02!QR(Rgh9H|ze`k>=f9}ehR2!S+k z-y^@CX<%tJko#3$V9%Azs&3cU8_wz>kAoxL|Aa`NMPfC^sQ2Ow7)4pBIhcG3P_Uzr zi$RF&eJEHiR{*O)!j0#I&cBf%Z*G!D^MbDEa-kxC8_VWsW_H_9-%i(to9G>hFoAZo zi?d(RL$t+Po0=9*=8^Ucyjr50Y&90`zBvL^q)|3u_VZ}Y*JDTD6AI-L%7)<`YgY~A zgH3;jI)ASDutV#O@gUlrCk2o-9S(pxmEJ51=mc@a%)UzKyuRUogHO|+16m25eTcu9JehKDa8Y9gZ#>$)v-kd26bEbIu_gJQTDr`NaWh8Pan+(W^WCT zVrc}Pw>~O#vdZ(t_D)ri0v{G940?nPqP$k;+Y*fY2|M7y{M*cYVjs{>{uUv`(n=%l zHtb6=NEE?%+=KX+x`TqLwQR%zQc;6_OO>V1u61MQ~);x|i3l+o?Y(30tJJ>Ed!qQ|ZsO+UY+?Gbif zI5TrZayk%rmzMm9ac$z&bfa~wZywRka70h7x6U*`Ywc$Eq9ex$^!wGik`+UXvsm!A zIjKy?fS2_6$63}x7t%wUYOW%-azM4nXz~CMKr$23-@A2Jqz-U@X0L0PP%m-fQP5Bn zN}V+l_|q_^e%u`bZ8ULS!rZSBP$NWvxpPyR!0rv4zk{iDJJJ+led;;DrI6=-Mo>;5 zjn(-acWy)GG>Tmup8@#^KL%Z(-f{fsx3v~_?&Q+HLpvSUji8@xz7#6AibSekG+LeP@hIW>|8rWH3YA~#g1BXd)!yYUbQ)gW;5N7 z{L`3r`h8{TpU*t2CCx2dc0o&42A-H*gnu8fCc0M<+~>+7q@eh050G+N?$;f$IIm{a zzO}{l$6gJ6nr6}9RlkU@86;AR-t2$9UCi}y*B~Swszy2kGy{bMt32hN4wboCsdI}sg=Crf@xl0ruP-6oDsNYwC-E@PTNBN zhh_j<5AVWCX*Z~;|AV>k|4z^AZCtEvb zXGZ|n;0W+j8BUMCNBjbSxT{-RSRcf6+VCtVGSYVTdG6H0l0()j1v?@1Pgi(kh?d8J zZ%GqL7JdW)jkGK37;>_{h5S{GsqhtWBi(1kSoMM|Y5Djj#@DP&I-Y3zt|}N+16~?9E0-MY$>K*Tdv^YLng`N2C2m~G$-x{< z^z|O?rCVr*ri4{iuT>l2gkRW|2vhYnF;dZ5;uM}710_LZ%4uoD@X?QhnJU{hoNDyL zJR`mnok@0ODu2|wo67e=5{GkJ@7pxBYo0qeq+uz7KXTjHtFnV=;Fh}_ z@#)*4`4ups1r77Xy5s^k=*x47xXUNq%L7_CgBwruI>uW1Yjmo-nR4pD94Qc@CAD=AFFNR;zL9$~bSLNfPAHj_orWieskdr#bm zlRA2Cw7a03Ru>h#Ii><{Ey@rRaJ4;AFS|dFZ^-gfuZQHtk)jhGM%}H?Q>qe&zo!_X zVNX$N&1j-Ikl&dj4GusZ$~PB`jfl@N0U3Aw;mHEmitWlqqTW|J8P;{KJ zm9pRxtK9ix&F>7FUNh_9B5xD&t$lpm#`K0$~&4`*`;pUhs!qM&0d;}b<_x<}sYb&MiZ;1+P z2ggs*3g=BxWQpKse%Tx2?73ZYy5Njdl7^tpzo3B)v zh(|K}6)>0t+HiW%&v7F9!frS!UOJ(tOQD^uyS=VqPb~^%mJ0%pk2EAVj@%0a+Lr7N zyQS%PRj_7*qN)*dpR86UB)b1Hor7y!!*oHHmcFG$ zA<*g4=?Gr;FxK$m#Qw?~wt1iSmlWL74Vnl#e0UVhg0=j)hF;uR7CzFhh!&RaL)q1t zj_lyu=2egrf_(Bq}Tq_1a~`f zJa^PrU0XHs0Fb0b?`r?qFXfZP>w_M*gLd`=;EL_6i=wtIO7Wl3SqpUZVjarTzlIzz zoObA0Qgs}y)084gmYlVvTqJD-3_2SXKd|4#E?U%Cibwgi?@iS;s;5sul~%1r;c?d( z*`xK>kdh@p>uiw)63MiSujz1d4QOhBhruvGO)G^*eapcxYXp@Lgn93ILoX=j4te&piID z`7NDR;BQ|*{ea*gcbkyxx(TGN4r@Ar7#pJi4?7*d2VZz_6{K9Ee(UIM8ewVbbMN)k z76R%CihRD`NLCj9nfpm9NW%ITG^NUwQ_Uy9Yn%Hf-PjJ`*qk2>2Mx*tVs z^;b8mBf`SKDLG z>-`Ygea!oSQFG9>Gk|b)ASqt&y<%Wc#QQ&Ajx;3MPtn~LcDJ38yx%?}!JN5C0c@l1 z-ot;nL}|Kf?*{XJGC<}~ltPUzBw)!o*`tYI4>weZORnNTGA_}h+EOjk=T}Fvcw0pE z_?b#M(D510hw;lny}E>P7G|V&osz{h#t}(0k5}63VD+Ci*nOZBHAeQksXakvBX?lj zUMCia#!(Pio&n=bM1{rRP!{fW3&l6n2cx1t*(7$LmnTK)1 zrg&G65U>8?f$D)ex_km*fcZ2mHGa!QMS!jO=+x36hL^{MK5MELfP(KIqBb~H@j-n$%?O~!v!059i5Us^UtDD?x>eq6KmaL6l9+s(`Urn(9FCW67BPTy)-R}vzGWZ(P|Jc zg6p6LFD$VS0j4;*qQy7TR8B8Q#$HeFs??_MTJLD#s#k6J)eu#&sK*go|8D?EX@RG5Xw*)Y9^plo*hH)B~ z_zyZ-CwG0;CcNqp9d+;5Lc0=ONWj;%_(}QSACkotSxr8mXGbjdKdHS^m?@Q(c(s*T2eQ{GNS>#OtCPa66qIwWFJ_W*x$ zvtPvsVJWC&aQ&Jo#ycXRFWU1b11|^KY9u-1kY|wn#1pe43UAx0^NK%3Dju|(eE+cO zzw`DJH)z)~c3JLXy)~kjY5=CE1y94&Ho$w23QM!!dpf?kNi%LSh6mHG&#yHg@*bp| zkfrZ7;HV{PX`uVwLsoAdOsy_%2xm?!ztW^yB}ppU6p_Mc_gi$l&nQ~7Mw5I_S#gm z>Idp`e8+9S8@g?GhVC>?zCL3~sgp5VfkWt%;1ouM043jOm?f#)Y&UielskD-P)-vo zx;JO#$7kLrRa*8*N~aEzs7>9tbQF}(Zs6>rddcNZhK{aZsL3ROKget8?yrcJ+3Tm4 ztW7PnlOq%5YGOY(w@<-Tr%!^Dxcd**oP^3qzm5ANwT>iuAfzL!0w*cl@Cud%Ya52pP15a68?cvTMA(mM zTF~FxK_M@*n7zF)eh|fag(a@g;G5}n!1qP|cI)4;XUOr~sv>tQt0AFs=T=w4hB6HS z;KE3euc@}Y`*AUg_j&;*joD~Lq>L`#Sd41|XRi1-TFAZ#8#AOSqC;P{-{!d=dEe|z ze#nN(pE3nlCUG;~(KL!LLTb;6z7d|eLo9(P&Py}kDowp$TEOO4<{IFbxCKR(!Ma1S zO=bWQQ#*^mg*0P)!gDRc&e*UYRz1e=^-C`KqsW*~2t)9JXO(d;ujSJaCalL_f?}!_ zx|0tbB#~w*>vv*7B8W7o2FC zatLfN7qMWn*gRf&U5(x?w+N5&k04FAHJbx>{1cbc_{Xu7L!YxAWnC>JEk|QL#g}!g z?h?uUb(^nDePZ34e>lF>BH-jw7V(*IRlYBH9i`2mgzt+E_r}@ojgWOGt?X9g^ERkt z1*$hiH(n^GIA7$R@Rq?S&L!UG0AM+X4b74pd!x&hu8hId02M<4kt%C}B08H)eV5#ON&ok$PPpQFWiLt)jLC9OqR zGbqJR#{1XOsPDm#Z&L*8_RgYd(b#Ok3F3rJ4X@pT={`h5^Uv9$9!@$@sXyGeo9Z@|>Tc;91GcU#Q2`XLE{f}!)wl1@ z-J5|bHe1|;fUHo#!$F(@G=Y|P3Y)5TCvi4bry}3RY^i?~LsL~{mGZS4pvlP%)obT+ zo6meJzPh^>GDHuwu*^_|t3SCiDAtHFQ)}!C5F5Feo!d}q3;+bOzqJH4J*{=KGj6N- zUQ>M2vtegvGpg97nW?S6`GeyW+Ksmek1SZ~{b!{VP+!P;`974jC0u@3mr+zvCRn+& z#jb8at&mFi#CxV?vKsmQsG?vxs$!?0pnG&-5A=s#8^Nco^J?5C&&Nx%-}V>jH%$n% zgRY}~@SYOG6Ze54ZV`rW(N(63Ip{y`mwpXCTGpHi;Io{Z#rb^=#)DVqsnCH>ib?nT zY&uLBM-xusBcJH*t`$buswG0sFHBDo?>9&;jl%W_$j=tVU*yp9?0y#do{pKay8`dh z_D;J9s($l5Lb5byr6l^kh@RHd+5=F9F4Hs2c!7pkt3NqD8fz+-iLd^@L^1lm5`{D% zQ50W^pOA;zSUT82ZLRGgj*bq_j_wY2PR_0_5IcKkX9yJd189;EsP#Vy!_KM{prc|d z#jQKPYJPhz+XB}~OTaa;wilQzCb%oV;#Mph;evp4pz`)QnJbDak2+6-66AjV$Kej- zDEYFdvpK&+sN|7@y&alcFMb|X)e_up`bEQQf3d;qaR(9mYJk-QmfllpmYu~@gKVg0 zSE?#f%d$=5n|x3jWp{4fvTBP95*^Irv}aju|4_UMKt*(UYSl%aziPcSS5(;D-TXR= zf!i*eW;t~U))&R=AbVyJgY?%&05+#1Q97o{>z7-#Sn@%ag5xnerbsneBIrXFz(med%<@LbcQP%W3FnZtCC{a zeAB?&QV~-40X(*eyq-$$TX*92|6SYW>W!ubLqtYW+W1?c==*pO-j#Yn9xJXP%JSx`GrRW5sY{_BEt zQNEIrPo4qaUoEb7yqB1T;2Ti&J)pc20F{Gmn{r3$$3-V9>P z_UnIAa3Q*e`^&QG|7T;$SN1BI&gL__*Q z_N%BZUI5{Wc5$+SWHeUTUmNX^TSu;25`AM_&POBI^{7U!x<{AS%+D$xp~~!$jO*p2 zDyS#?=RoDE3(q&|WGw1aNRO1MW3^$yNL46N-7038n>O%^*;T{`a8^+EATz<3C47Xa zX1&2xhM!zHu`O7{F0mfX&Lv_jzmHyiRnUEa7b5+4s6J{sFyNGBNbz^S8NR4+*P->> z+?`eDdSme!F`8Y)!wkc!TI4A-jw<<1a`i;%Npxd$>c|VVH{4#k)XhwcI4Mzya77ws zLRxdE7%GiZ(5=hl-<~zT8B*7{o!~Z{+S`kBA>|2~g5sMyz$}^hHzEp=&hMgS5(C!X z4;S%oLZzK+RdkgGH$?BQ=NM5$Fq%ZFO)!=AaHMtXPmWnA z;<#9p7W?;u*Q%;Mwk?P1qSG&%eqBAH?IV_<;(l#Ob$PfKw{Zap*YvgeQ$d_qdTQWV z#rpf_*{nVDT6xL#H>nv>CHO@krd_IsL|GnHMmUOQ^91fTEV_W{u34$=4GkcV|M(hI2j0A(sx-EGercs~9a}3wkUgbp9^&wAA>_LZ4xi}5*~qB`d${79YAZOQEmonO@Mvm(XC|flGKHxo7k%adxY87h{=WFsIo(yKj6)w$gRWVd3_pE5OA8MHsQn zwQkMx#lQsaU!n}Imp59`8RgozQR6{|`iV^c+dw%2{ za^uW{Pw@4`O_y=o94pRPRJ538?IQ6--)|xOrClG(4E?eUH>7kGlG;vYRvL zX1nS~w-Y@k467AJ4+BsTbJ#Om;-&e>7hD>K}_L;vXYGm>5u1-R={O7ON z%}6d?t)eGn7@Eg_UD%NIo*DTu>_0{8Snkg`=f2l#Z*uZ-WXr3_*DHUDmx6O;ZI-9T zl7}U$l8V?`sBp#3T@6w7(bdPQ=%?oYegWXr1=;<5@ud^|8M!4F3VpcE5mq0~tr`pr zT1vmi9u9_)e2F;CT)E4kg`+MmcdiVA9K805^`s|OJSIm2YbVc6;{^Y}R3mS9^Uhtc zIrZE(x=hz>_}j7~jp5vU>>rvP5V{Ca-`}ra8Mgo)0N-EoSc8-W|?%Z3NHmSl#RJB3)|6QANjBM@S zd!I+#kxBhF(nmY&nNyySgKTUFZ&-O7Wf1tc~~H1sxO;Yp4)+Ez-$>)n-KY(_?zt7 zTJ=7Aql0tlQTV;zCX;HeBTj7z(r{bMQ}%D6KIltR&d1W0Gq<>VNxRG(N+rG+k1OzF z5FJk-iuyTO#hZiKfK&9}4+}=^7Vtph-P$TXFBa>4=_B59_%Wb%P1>sjq3dB9b5Bql zY8#HfS5}f|DjlT7ALZ&UpTr!09HZj@a<&vzsmCn}>G|8xs-)o(dg* zY1_!d3ko!lmi>`!wo|P6jXBKdAjM3_+rqO}evw;e(ycr%r+<#`7hEgq+IU+ItK1wg zZ`CHcKiN;S#E4g2jejKPySmwZ{ehF$)8HG-cY;Z1M(1QF>8yLSmDl1;C<|c#G(sfC z5=%bAmTzpL8TO5cp|;+N61DaA7%j*hP(83B}9 zMi}EqaCP@8Ksnre|+6%Fn9j6Cfo+VV0tAkbcW;u!G708Ojk(va1B2Jtvh0&TN}? zHtc}Nbng59xmV_xee6gDE#L#JgYPQHktX7+=gfYGPyVShfft=te*x29IzIM#ww{Qn zi*OhqKY{`)f*;w-wc$znBE?0czOOR$Dk)t0JQ_w9HPoU%{T=3#tsx;$b$Z&pIMqcN z5raJix~?@2QHNe5-JbMuT5&5W+3kXxd9*@Bw!7-9WJU{K)_3xNO3$G!iw=Lb99vRS zY@lh#zm=}YE=XMJ%2H4u4Q+>@rca&}Ha2c9T)-kDaZ`Ha3GuuKJm2D8579%{rCtvX zoG8{3anRe^KskO44jB2*8~Y&2S2Eq)a!e4o(%?uIC)7^P*h2Six5+>(M7_wnCav!L(LP13X8Ff1&hx3*|SN!6fkyBLrDWfc+Y~HLb zS`M@)DXU#t(sO2Io#Fi`?t|k|h5nW?~si6l>$- z1@ctjXl!~S*`ny_ooxO(*M}xKl2_DrihdrOEH`JzFZ?}r{z0aN29PzUsu$_M5x0}e zbO&ut#1#N7YzS)ySk=dBJ26YnQ9_^3PNdrRvI!%=LhT}cnfG1(+O!5AZmWb@Z}oaZ zGhXhJTEoJAzH6W+Vz9te)vTK_o$S&#dPmjCZ%kks~ZNVUtu&hOsMCF$Q8o7p{Sq_dm5TDham6DRk=80Rp5@5X^ zXA1?hmhy|H`9Q@%u3PMI=ftSQ$C^jhTD#j$%UhNs$hT%*o8ls)h{C2hmk*s(bZ5`- zDUe1M^SW$YvuGAsr=mT(H9+^Zq2li@Q(3H9P~0_`ptytY1<8FK&bm?T8r|3aS~Wci zKt2F1AN$Z-q&EuwOpq2Y4z1h6lqs1j#rnC3`!e{Z)zYpnMiUo3UzD+vt3c2CW0P`= z$A4k`qLVD$b)1%oF^uiytc$+!&33pqKhftO@BhSxrLpRc*+4=p(Y#GY3=$yB9lL5mI76T8G@1g5b51hc#3LDl2M@Hsz zu=pQy#OM?7<;k%5-zRD$s=XV{!5M9Nv!WndOLWA?6Gz6w*0T2QO~R#LJh%0YtE6l_ zX{y7mNPBi{9NYi@Ad;#>T zVoC!CQfWcMM;|6!06_6G(lDE`R;1tfdX6&0HYkS?v)r=W%csgKb$!np>}+>xmzVDY zJ?;QLK63pF^L(n#gsm6@$YKUW`aeZ-mFBk~mD-Aa zvL<`VYYf>h36dDkJco>qGD%_x0s`3~~TVKqc!-Ok!jVX6=A zr@JiP=*eJ+?6L4X#{Ik#pcvU<)lP*_;Dy%-tq))iJKRTQRd z3i2`9+Waxh>$Z^hyuh&@yyWodcB8u~o$F$?aUzlV_Uk*@NO*a!chujzz_Sh$R?JOY zbA>;n3aXQ}^je+>BXG-GrKy6R!s@2eVL&rJ&_=Q1nWB{k3^5#L{h7B@U|$mUDE zr=9ozt*^dP7@RlSzfz0M5);3E*ynvT!E@VI!u5<4Zh`^={8U^1Zy)p_5N|So2%*89cpZw~Y$>J5->e1dL zJSMt)ni0XGPwpFAMWx2Dclljz5~hDhjp?(G-8JQDPF_jyvBfl@W% z=o=9#K+@@WXhlG~^06jU`CO1WRsrurZ@Um=i}VySqD4kTx1EngWo4L{OFI2(Dt^@(LsF9s$Qn9 zbraG@Q#aOT_hE)jRX_xbz3oaoWw9f4utpqs3Dcvp&ajzHJEWtIlk-rp1UsZTJ7}W8 zmt3PBVESQv0-RZ=>!SvXJP5d}&ct(wOXvAROS+4AhM%p!*Ql|ptqAU+KiahMq3_pF z@atFWf@LXU3hU{>c$lFCxwURJpor^f`RHFKDJeQFXc4jCZeSNY0e;C`@QRsu)Z}S8 z@UTY|mG!~Zw9**^dIoBK)6>%??02s7MdGYc6&D3An7y)mjl2lSt!xFq0ZKm<39=5n z8?W1#jIJ$Wi_4N7SvsR4QI};y3|bkfez`D!k7@ah7(tCZtgBJD7)&9{`79ZN{Nsi` ziC{Y^TBXKUI!l*t+?i6OeKXcO2Mzkc9TGQ{-p(6Wd3CBu4=kX5mU*~~Lg_gXYQ48R z#3!)XXiwS$Nc~lcQbo9q`kFi6r$Q-WhjU$74dzWMpVU^0}UAow$S%q+uMYq=U{D(zKT z8Vj#j)k|Y9jSR_(oX5>f_Yt>E1b9V@#tO$unE}TfwDJ9A21jZPigmY;liIZmVxP_u zGRk{;LwpL+19e^TzLdGu8e~k^dQH2)2YD%w`yIs~? zSUBbEiNre9Wse{DW}S2hwaeS{<<|W#A-%n$>>)GwcG)-Dn_fkYUt#xV!?<$hOFNP{ z!x7#gpvxS>$JsPFuq>rb>7ZVKTd#_ zUAK%s{ISQBD!q9E!UAK5a`xo%C6Q-(iecEQQIo9D41r^Agu|{f=#eMtAA`x2*#P*9 z2;Cg$WkNO;gT%L&{52Z3HiyEp>bgZsRqN(P2&3hK4~2w45lQsPJzNe~EaTZGwLjQq zm4B`Et}x$R$@T5#g!;>!6J07e|sbXJ{Mcnxe~V6 zB28`{p$Be9q&ZoaaKEu9-$=`5%L*5b9R=0KF@Q#k#RIoigFwTUti0%Tcb zvc#@b>ct&r!cxJRQfRdU3uhkuB&Nv#DW!N`&MNP{L06;ZjWd?Z1KR0QMihkcbV);F zd*=wcr8e`r^TAxc=TaweI7VGb&?z2?Vg-=@@2P zW56JcJpbxvW5ZYftp4Jf2*>H4@(+c>9sJmp%iv&TrxOWknE12L9FuXFl@3{YI} zg&FjIj}I3W%NSz5324M>ackOHhim%qlI5g`S+5xG`GzMs*BC|O=jURo=}7B(P10sW z_RaT4p;rq}n=0pJak>P>F?^+Z(lKUkd#}6(p>qS-&Xs!TcMLN;ttPxJ zH>&o&v}6uvwJkNV`#3GHxNooCnq@SB>$_ktZ(u%9EkDy(d=qx++q~TK zA3eDmW=kbGYpPmB*3<9$Yr>n>UzMn+d$%+<{cTo=A}&H7w*!iF)S+R{1Glm+`l{5N zzi>8E(U--FDX*xmzLE=>XpS=c*qI|`cqv(LV!kG=bB%QI^)Zm*>x`d0a=LTLzofCp z5~Zu3PE{%>byfPIH(Ut34TugN*UMPG(*l;S;A(th&C}I{zvYu@_@*b5*yJekPg`i5 zjKGJ8?#2w1y=mev!89J}42zLZ^S;N19bZTLM}cLA>mMw>3|%|bdef3^A9hZ<=P~Z` zLENs@8C>LM*T2mW+CJ3tcINC>7O#94SeTty1z)}Dhf~_~abIJ;Txhla{(u`4Y}H-g zLF!-8>v)z|c>3uNAAh?jn~x)F0zR?bF<0xA)Oh?M(OAWI>rEz%vgS!c7t;uoRN`Hr zAcsQ9J*?rsJO>Km#$cB`9jY0%q>2w8V1j!|{xzL_rlx@(`o=V0Le-N!^xUn0@`m^Q zBt35M%UjkW%-lblL-$XYj+MII?ars~{#pIQKyI{*MJ+-_D6tmk)WOsL6v_x|83+fk zglQJioMr^4$_UY?w=YjLz~)2e@?&D@fhNG6sXe~W3S@XoR_xt-ZNx@hU)k9^_{M0{ z=~2~h7;d&by{`g&ZFjeY6E?I^6Be)11ibGhlijv4^=@}r=?;-;F~e6S9vbiYzx)2v zfuw|gurwdxRhs5cy!&(@m9yw6-ORoTe|q;hy(lZi`mKJ017iL7le0?jhcn_oHfgeV z4hN_krk`%}?4yh~ekdHk+l zH}@7Glz6GmJA+MG^<(>aFv{g?mu=HRWyf-)di*NlN7_qtUMM0jMY5$S58AH0PhV}> zuwqd|(i4GWRQokbjzrtyZp~vP%U>HkV2x~VP46?-sgrGK4_HF&5u;Q%{ZGTb)b8r9 zMcq3#YY1m`PRAC`TAekg_qw%MUg_=N1{!%f-VVqr&^Pa`q^}w)-f6DtY24u1buE(A zIfV@=kOY*(d?5OgpyfmsBm&(Woa~}KM(}tR#KQv;v7;Pzq7+Kq$(eQR(odf*ha9aV zeqfpMel+Np4-@@;&cDY&3oCHdD{3FRXEXG8Y04YgpY=dh1C2tFi7Dsb5rF@(a~yyq zfE9NJ#Ag(;d2-UVwi=ojtj!j;Wh~aKv#)p%$0pvvkA`Zz$jv`84!t4+a`Z|2P*-KI zoE1H6v-1??9*+E)eDO>reEf^~l$VrLMRRdah|4-!@L$GL&FW3K@NOY;H%4$&L29b9 z@40o$c(N~sb#eTm7a2J>x!cw+SX?}K=gF9KxlQAT?E7QS)Q2vm?|nF=v6adVO^dS4 zh1OiT2tOs6a)#f2SmG;qJ-OnETr3)jTF&z2y;nJ_gD-wSzZits=P3ShOE^4Nz6$`z_Py6%u4XTw% z;RrQ(%ZyyV9{dE}%Itg0KLHVd?TGs~m}&rC%iX!1#-TxM@OJJx(nV8@tM5lVtrw@R zxcGFyqDRu{JlQmo;(T48%c?HzY#lb1aZe*@NiAE(YU3gN^u;sNGsD^Fn0cqmk!rMv zkV!@2ecA|50H$n!7-t@3{9}&K902^^d-swZtFCE$o@y#VX^gr6HBUg96*j75 zvJ(pE%101aKoWBK?a-DK_GIu7BDDP1P5VENgBeRXf?`Z5yE}{FG{kb2 zBNb&GobHe-Lh`T9Z6r=gOJJ{!6h#yW1W(e@w%e8hrPV1kxjp|hi!P+pwol=&UitgtgHKS%pWwQb z#7AKCx3h;r15zdL&c6DZ4M1qLq_eYI4mo4GIRLH@9%*N}%w6mWo<2)koFb8Y-V9SW z)w`2%QkR2fYSg1Q=F98ps-~cfiOK!pia7|wCowgaT2YrwBBP_xrQDbX;m1-F2i-T1v9G;~Qo zyvX5gdZY!>_q?8ZbWi`Ys;4iMw!$u-wMXi!Ghg}b-~UA|wvbC~)jncihB*QVSRyK2 zb=3iA&x0!-W_Vq(QH`JTVO_z^6Z{X`>9x@-mX~7Hj~Hi!Dv!{B+PJuanyOXa;+*25f&87{sF@4SN&?m6Xn5Jc5FR(m84AW;80LARy8$(%l`C z97s$$$D~G#ZPXZJuzk1h@qWj99Q?%}_chpkU)Oz|*LnWVa!1HT!!d49GEtT{n>LoI z1ujeB1>8uQA!(y;w4FKG|HTi?kr8A}Xi9tihQ0a10B-sBndcRH@vWZ0pcL~>P1t3S zY3eiA3}&33O|tj}_bg`~hP+^cxNm%Lsl%hSw2)(;W= zV-@-<#f2CUebv$G*CyVp8B2Z-FcSi8Q~kmPDRiG7sppRH+rK#D^#6m z#l))e?~btTOw6yk2bbddZ6upy-!wt#7nel24oh8HXMRodcLM{qtI-&yV$0rLYX%DC zduC(^wM*OXDU=<1NcL(GPOEiNKE~c$xlY4xUh7qo=PI3nZH?+3t4lCiM5rRlqtiQi z-w*Y^B3|OP2i$hk_6%=QB0h|7TyQRztF7#eEP>qod-MeCM`4kM1w<`VN&4a}jN3wM zWpx#5G+sp@5{r!OO#9(7!^C91qr9EW2;}Nn8AV1DGLeaSd%WH$bKpLK5NG#JD2Ikl zk#VLJ3-9}qRByP261=L%^Ayk0t_EhN_iPH&gH=tzcK!(s3yDc_J6u07s|!^kV3BT^ ziX$)K;U0e#r0IG;?}y ziA~Tva)C;Q?GB5xMA0hhI7riN765=h!A=`o1CzM~n4p^kl=Vgp4nm4Jem=X}Kx*%; z(8ilruGCBnbO&;a^jAnNh!Z;>C^Xt=h&_FE3nX>Rrd!}O4NBHAIfx5hm#R2>QI#Ds zarR{9oN4gF>2451TTi_Gu`_Tu3@7ocXwpW7GR`f&kUOh$KX$jz3ODF$-&Wgh3C^`D zE(@L6xa~wprn~ySX6I`=@%8mBS)~o1sbJfB0gk_M(9(8CoO!L{ThS&?hpc~3i!DeK;R>-N$LnlWdKaz5DNDD9_XYH} zFrbkIo7l*Ll)#Cu3uiL93i9MVuV!Ag@w_*cG$Z%3FoZ5BaBiWd?Uwgla{ZAkvqzND zGv_>(PLCsLm9L1>`MF}(7;?jd*MEHW2^wqjaqBDX(E!N=eWZW+BNxGplv1*dV@g35 zT^Q?7xJ#MFZ?`p$oVX3_AF!0ihlm)oyAN+c)OeUv?wl3!yz z{iOotu=j92*drS1$HD0MiPfm=rxz@LF+c`vI}$Y&85b5ctM*=Q?NxW+i=sEwqeQFL z{KxC(9vVLxUk&8Ov)KZxAlzbgaM z$k4+SGnvzT6Gc0qHI$8Z%Rm$doYo*zwgZ+&R_W_Hm+}Wn$a`D4J=3YBwl;xZVwxi8 zJuZWO9$(^^h5aHcONY_IzVz&?l@Ff|VjE^g&YiE8bCVOvISF_oQ4RF(z5=-Eyj`VTTMx9&;2uvi8U0UKC1l{F*^@Yp z+MHZs^w?A>ya?2*=NO2pk-O|E0mHdx0=y|K_E#CJkG!vxndCb6Sffv)L!Ix3 z+&SCob;{+dZ4HS$bd5Gk-dAJ-CxhVa7c?Vx9BMTJU8E-*1}*?!pqBZH!)0O_$4{@M z_5QpL4TsS$bxNM%EgiR*pmZ(HRvH#H8bRaoZH}>w>>&0I_A6~WIRfK+Mo|CC3y#i7 z8?({U0U8K;iBBHOr@k6EOJ82Eoa@8D`k7-qu8fgJttu(b3aLP6zZ{jJny{@UXlT@W z;yWdwSlCBtJ4vr^$J%u8EQ9kuCli_izYegRx$N$!?B!h%w{O+IOIMTLzJE5~w05s? zu~uT01#~V@9;x&q+3!Kh4EI|b9Sfh#%a*JA6U<~#G4V6oKZ zmyMu5x&8wmc(#`VuoVc&h!G9zWP+P2DQ5&LWDqpn+~yKus<@Nnj_(x2B zDDe%5Zr5v6Fy)SN4oXXk4d3Qgy((*JeFkTg|~nCF2&!r>xX z1Dbv?Z7^g$kK5vi0h|`oXY&QGi~?%zM!wy@Hi4;DKj)TzB*eEJz9E~#o~g!q>sFMd zR@WMx$9ZI+gTLvJs}{EV>@c`CBd4u-kx+#eEmv`sfnuCG#*AF)sdtPp|21E`CLloPe5wM}(-cSqh!6q*xQTjQmvu`%K<-X^ouQqLp^CuMjvnze29+Jb%Gg!{{&@80= z^|KoG@X(___>pznHeu+Vmpgcs+8Wsc37*Gd==)=wD$tG1xmIRd8nd3%1aNdaVs%+7#TKJO(2%&bt6&P=wTU$3Tsld|C4oio-g|2ga` zfgsw_1dE(MiJvs!cvvkrTcnH*q3W*45%C&?@t;@z_v2OLcaDhcV5x4B!v@a2`F@?Q17eszcs#4mC@{`=RJ_Fvv zruKa8fraee)k(dj?QbO#Hyy?PgswZlAGP~IFd0O1-j8+k&t(D;Na9XKG^VvRg?2cD z{R={OVfCy z1fa(2W;TTM@2^0cue!JS6;w_*>4t^%BMac22Ok>X{0d9}K3iGyre|e%C@Id>f*Cx# zK^_Sy4JnNCJ6S!*sSLZ}OI|r5h7I9s?gs9ik`}_)Y7bMT!8E?q_=%F?SMBiDsviRSIq;=;wO|oB z@1I+Wex5UQxn}A1#3XKX=0Kf|3T{Hy&ubA5$U(oI|36%k zNgW-`bFN5>d0k~5@dd(FC>olLyZ}7uu9_ZhYydY5eM`kV*Kp?>83!f~{Tg#Q!~0~r z+D^RbzSu@mYaYuodD7I{Sl;hdQ@To>yxOMsXz(s2Q4rG-z$#ie`Rb@8SV885$NQ8= zP%W~8_}}5xdiTA1K$H;*@CGltlL}ZzsNyIz*-hS(LODFXxr#sOpYB5zp}0mQZh+_g z44r!`ryx6OA+omzCNBR$2=HXRN)oj5vGo|@MtQStM!lm9&W05fv%jcU&g;GQ)gaJC zyY3pW3iDF$$A`ELVnEEOBAr3Kj*iu#jEwM9g`k@dPwdc#BJV{}*Bde1nT(dsVt_m~ zTcPDfnEF=_a#mwZd?6KOOlUfER$sJqo;mOG@g%Y#z(9#c#vW1HkrOt%z{ih+(IBcL z6=5SFm8Yv;_IB19IBFuR#s`_*Pn+h)E$T{4uWw8?OMgNmMp7Ms+~Gfu`@;hTO@(RY zOE+_7>gHmvv>^2&Q6hDf(v+EDOq^}|t)?UQ^8kiFyER$IX2PL8U~t=U(0fUiZ61*} zIi%S++B_HQ{_69>?S-TdM94Ly*7SuAbOW1hF$-wUfH2`V8!o!F2yw(tRs6@x?-Zb_ z*>7lmZ{KjCO#L?d;>`JcVD9GsjO|h~qfxcbPCxpUhU`{U8c=3sn}f+<=4i8`Y{*t| zZ)|AVPj+u&C1DDomu&y;<+(rW>D62`=Z0890xeWIWF@^s!Du`r<$KJcNAE#x5TwN> z*Vg1wxjZsD`c?TgPXDuxL{=uNQao{42^lb?PG}Aec_R&XX{{?VxLp}RT<$SxW2MQV z=Xc$>L3E$f&$a=qzt*yCi{Y0gRHdQmB>3UCsHdEnlMkEXn)r2oXM_I`t0&ey$>6#qx2B+s=o^0k@Cgsh(!5AKcCrdcGcsLNRlm}kMvO#=h8t5Rd! z-*NfobCRxeP0ssMuT49BZpE}{W~h0iTsR7^t2OUX0wqB|4W*yt+w!cD$5lFvjFa8V zX4UL16}GK>;MbPX&=ksg(Vu`(Op+-Z$FNEcy8EGqr_5iZ#>RGgDU9|k5;Yk;l;;&_ zOaR}Y%I_Z@6+L?j^GW94_>*@L61Z2{1vhUXq|;JMlxH&b!wS33f_f?zgN*rvS%2am zCMH!yP!F6wgYqFHa3NiSUEKmTt`Pfzb)$#8FEXTR1KDv$`;SsTv~87)`oA#LbLP0= z^zllgmP^&roI^O#vgfv3$GFs|HRaozd{SbYzo;VUsOLp}?OZR<$9PT#QIyeVOllG! zfUpF+_4DK3ykT25-mWzqkLh8?XyyD?f@y?a*GZ=YdU`LsDZXd5NF0tIu%zV*5cbC8a;K^>CY@p-gYwp%wvCrlWritzcYLVxMCq=vc+~Qh;>Il339VlS znvNeTS@bvz5QMir!CwdmjcD@i3jmswm#SAj`ZKz9OsP|6%h`3U2zU5PqUK5?y9`FY z>Q$rXKk`yrKp`m!q3_|el1YA>?P_K-&z1|D01J9relbp!0K36bcKzCkjJr2Ps0Mhs z2fusdK!MV6ZTFHC>$+_yw0zOU;j|77_=%gy)v64Vyz3hW#9j)|f}@>>aJ(2h z86|&N?9~jF_{kh@7l?Js)4v_X{N(YP8TP8BZf3ifP{^aX($#k*pVcS1X3qn-bF_%A zs<_s?{mE(!x2cG$YdQhni8eRL=V>d;F*rL)#t+sR*&KJiFfK$r*c_pbWK~G=y*(A@ zr3Gg+^hVT$1Yv1ab*2`%mqjYt{6YhFs(+0dxJ(SUjk<^P0Q*?LQj+L#5WB$ruV@>Z zHuw<1Ng#opaaV>NWeO!;>d3T>8n0lJ^Mi?~ZXI>IMwLhZ$vBxErQ0KyGh)P0-1HT+JZ1$C ztCB}wskL!AKLP`D3Y4oBt^rpEzE(79`_Hz;EW^*!ZYF5KsiDh~(rA`nu+dx9CZ|&z<>0&3(9G)3O32K! z`=?iK^p*4q+*Q)*`h#ZqqhR}LM1=Z6Z9@BfbwQrHquGiLTA4TH z+IId6zt@}tJ}uXG-+z#vU&lzk`tX;!e+=`AKRwQ|22xl*G1ZLmn0^cl@dW@|gYpB( zQoss(y0s*mzwx%NZn6=U1{rY{j^jJ%naZSSJheOy?vQJJH*Q}@SMH~YS_^WdqDxn$ zN~ih%?MWB9e0Gv!RatRz?EO6ux$fXRGh}c=g=3o*y`zB17|sjPu;UBU7&%wyNZ?DC zLyo9wJ%tWmkzodCF^4Qf`_rISSK_1i`=I`)aAzl(#G`xnThr`9z=!mp7snhEGxJj> zH%#aQvrVE7tc+|6qwUKhrYZn`GoV@wukf;ffXK=YbbBu6nuqTk(H%ybo8DQY@M&1o z_s!dud7Jv(tmXdq+WVS0hWtGwacccKcN%$3ziMGwJBmSjC#)zG?kUMFIdGq{~A&WhX0%_kC~1 zb9K~m>1D8mzAwGM$o1!H3UX)k0R%c%`P(`rrz);@03B0nA?4rg|<5@ga%{wH^Q1y=wt+^JV~U9Z=AoFF$06G zQj&^4dF-;V1y9Z_W9V-;C?9GGNYwBBBm9+PthS~TM}M{*L2V%7Mt_}4R3nLsY(Ge- zf5)_Y>b>Q=yN8!9>m4a=cuQ zCY<{+x>SOOzCBZq&6bg%q@}Ib!bjQA_e_8kt*ch$Cy9dN5s;;0dwhc( zve2`GB5r}*U(3+v-cZdbDk)a>2^=f>ye+WwUt}H|UqVF?8yALIIt{LujUaZgg+ILh z5lV~Gey(U;f&tGd!}?T~W;DuDxPh5inRm(M0XSrq`+H36zOn2Ctc5h6*ERlUX89^_ z3TCba_xbv({z=SN|3wQvJBiuQ2Q3UQcBJTz2C=BJ_K72|9ol@tF(+8LB+y{=5RN|F z^Ujct9BO0u8!!W4b4U-os-Bf0kuXNm2ztWCON5sXEGhAzTxDDo>zx%dd!0?!DjK)g z#*R;8%VAEJc9ib2)6X7dLXwps z+r^)Sxw9#{;NVtQJBeXaZ7iK2BPxU7pAd?+F*gf1nhUP0(eu{|m}paE`8x>UzQV_5 zSluZ7&-1-NqrpU1_Q69@6KWDqG;xXQ)@Pf_{!3vj{btUOhSMll$|QqHLH5Y`5ao@f zfbqoASEmFAkCzXqI= z;*FP1BbDq=RB}Xc;LfJY0zEBuD>L1xIO4M;>#dhC?)2V+trYq62k&jl#?8n`$YfIoC(227wEnqq#Hmf^9l+-i3UZ*6~jx!d1;Uv~ovlPWxfOc6P1m z&%deG_NQpxXiJMKRH8ECS83CsY$=ZVk8K2IAWwl*EzxbgQd=v5I#cV-&7 zf0s@_=L9!`&OY+lf3v*Uhi^CL(h=^8lHK-e@NxECtqe?pPs{WMZ5?Okl3 zJ#B5oA{BN7t%|ImbgomB*V>f}H?F>SF`A)7ID2a9+%G@j(=nkCd!lzRbWcSwH;N4Z zi@vqHv{nig9J$8_xFT|tgKktm+>xSh4zVOh9qExFJZD;LX-YR3lo%=-GX;v~W{)@W z3G9_U2;6<~N)*T6{cjVX(jE3MiI^ z?&CB;U-BA_?G|?GvE(XTnae!O(Up10R+#J3XxXak#L(TI4Igf>39$Rl9x3@6()08= zX?)v}xX5*LMj9Ho?`9GU4Ij?>9rJrv{rS_0fJw*IGNj6Zw|6M0cs!uf?o~nOSbs}8 z8$J4&u9$9-M-{!xbnE>?D%QC_H#e6=XDYqH^^ZrV1&S8JsOMPJJ$3SvphKPQS$xyZ zVI|GU>H2jnw&cMGU(m68h*(BhoHdBRu-jZta*0+tozi&p0f+ecK>qb@_O6F@4de%w z{V!cVe!;Jl!kSr`0v{q0p1qG6*a9l9kITQAxV&6P2+z+dak`W@dYzuS)!6It0G#~; zg$FBS2Wq`)xatOK_VB)%&6n$5+rf7I=|`d;O!R;L_qMI;nDiR=f+KW6M@LUU5$%+b zbmm0L02Wnc=_HFW)yn5hazCf??5mmxS8@Fb$_{MgXFrVmT9bcMos=>ciGy7)Iw5lv zAB_Ku4f9U>e49c?mabGyxh>T_J(wZcjDqzRT{_$ue?pFbm0i#~nj(+_Pc{pOF97>j zAU0N-2+iULsA3Ot8hu(~b{aXfx^u%0m~UPfvd3$Bsp!Y0eqNpOw*6q$ryu#=;7+ht zmr?4X)GHZHf6ITK{q*0KmuD}7^0opZlG) z+Em$iTH5MS@hAChP5kwT!Oq3uClgT_1c6GVMGnvocxS-)rh+hLbm^_kTNxSBD`YU- zOG22POE)Owr;pqEK??-gAoq(n{XaY|Q{8mhKf8=*tI^O(SZZrK$ zxZ|;Jd_ei|lMuY``C)dAHvMgtAkJ;Q-Kb|W6~v32z}(Jo$*KZir{CuRU6O$8%w*OD z6p26k-oZ*7NMR3Km>H6c+x5gw9kvzXG&|BsYLlFeXJa=2eDj@*-{_pSm?Cc146hDo zN(d>t>RrF414VRhoZeox9lww=)0RRusHz8^eQ0*a{aysl7zS<8&cPI~w%`*a9AOO^ z(QxZ+|LoQxR~LQmS9z)>DdOxhzxS2x1kb-siIY1*d+%Q1>^UIhFYbUKH?JkOim+D& zl4ibs1{6zgHrTW(!rG}>A7#`>NRS6`byFOq*fWhArOCZQQ(+Hj&Ko_92H zhG~dA2_L=^>X`ie;$w~gCbua5Ewd~bf-b)=v$<@*xf!WWUS->`3BFy`fZ;9Y6=f?j zo@c|CoU}#Tyv{{#d)wQSMXOfNYP+LCOSaGgS}Am-xY~ii;DhKx6nARwE+X+fP^YJH z*Z<%6!tr}QXjd-M7IXy=F@;k51hJ8~!l>Reo@atGoO0%@VQQkVSg|#>R=1IJdVt;w-B^cEEi$utU0(f=TF`Mhunga9ssG9*O39qxySL|2XTvk@-*L4lNmf zsW3c^cgle3d_F0xy&Vn)=lcaHi1@S}-2@&VNk(O~-4PgYGD3z}qDxP=8M>N(&2O&Tn-8p|l->KR6+({W z6$C|LsWQzYc9E}|GAf(T0VrXDNZ7RUQZ8VKHrWnbI-F~E)7+7pnBFTV%eq`=5Q8Ym zP6!-m`o_D63{3$pNsia)kB{Nk6oQ_@k~EAbO$kvuqV!VZ2G}=6S#^AkWSFd->vnJ@I-{N z_wuQt7J(Kp$i%8&X|Nq!lZ~lEM+Vje!%NoUH(V3~5OeNtOm;vZx{U2C7RO?^T2tlV zXmZ@LC26OK&Y|N^rR)i0(EbM=+&gPRf9{K#E7H6qdNk_21EA>}1iXL?S4`UACJMMF zj>zuTLaYM)Ye`lCkcHpQfPYlb_0n{CHRg71y3;)~LPgmc_ejh+wu-a!uF)DMn34xy zJwM)P;PlPkmLVjNPw5skPzAtri$?S4t~?uP=XmVah6+CXA$*&(I{!?AG$P6?z;=6e zc>+Aj4W|75#;}ce2dtixQVl(eo}VZUF#nz2VvXlD3dOIq%;#W5yReN^DJ@DMJO%A= zn!awy1l%tH4(5+0@dr5G?-q45r#~t0;kI8tu_46?ZvN1j_nE z9Lv~49cnr}l)Jiz*IL{UTtxXSq}bzI7f+Q&H|^JZ+GR6C#!gawL$W1D3BN0UIXNRQ zkC<+Fukm~Qq7g4X+_SeV`f$rLd@?obgCJ{1bNw zj7cS%iQO4&Nl3&tg{JK3@86!Ekmj`R64aQsdnnd<8$rL^=BC@x=hEBQ@#&|xqE7wxO`Pf|MNUBT-CQ4$57y0lo~{al2|vC*zp{G;&DR2kou-9b?S)H8rYo(gEC|84 zwqUfuv9IjZk(7bni;eLlKY?UO5E2tS&seQ@&QrVSf z{@HlQ+0YEeWHc*ItRDpMga@cJ_8IlJR)~07-4iB7QdG>XL<@l!&1u@~X#}^Lo^k{K4 zRh7;CfQ%H43lI>C*ADQ^J`htXGH1?1dFULlLl$Myriuanp4GWP%zPT6rhN9MrW7oA zy(lhXiLX202#9p~k#IY?V)mo2V{0hAdqcK;8v!O8efAd5G6PF<4zb&K86g>F?7G7q zoPydQtqCyxHB9G=%tUkDKHS#Eo-w;7WqW(&j&3aOr5EB7c&xB@fB6Yo`5SKgL@Zz* z5j|v7?K1UiP|NNg&0EvIfzKix7&hl$%%0+3t0AR0T;YpierIz$IdC@5tnasgYlF%; z<0ib%RbDlR!S=eZ&!A!p2ye{WInAw)HM6QzayYRv6$ixwKObS9<6$^caCvOpIY+Zc zRHq^lu4>Fv1?X=>0KpT`bZ97dK?I7>plo_|XFC*H|F7`y^Tq!O4|jplgsiLo@R(Yd znOQ)Mj7;9XrO^y%G-(>`E{$epXk|^KY3D;+GhVfEK2egsz^=r>mC5fTUPnc8zB|sr zulhK`@XVtD%H?M8-MaDW?M%xT`+L3*%x8YxHyIn!>%f{O^}gZLqN20HQ({`GI%@?E zaH7K*9tKmq=qJGFz}c^BWofzjNEyor$jfO5qgNl4RmGZ&3n|n}d4mi~b`@F|&`cm; zqU9o$g9|0*YRZxPlxhpyv*{5pWR>O*L!%XXW@V8 z?>E&8$pPm+EP+V?w5hSA9_R!v9A}>Xs35qgZc#~IcH(Z4d_;qm8vAE~p_(E(1STt8 zG0AVJ^lRfm;i)JhK`pMJWvVf+C1P`ApIdTa9e#*ra3Q6YTQ1H)2mV&<@XCMdhr6?$ zt&T?W6=iE8_PqxwJtPAoO8Jpaebr3N*iCG=gsD<>7+yaCznQ1ut7|bTa>M#%@~K*p+f`_vwlN?Lz9IRW@MohFsRFz zKFpkZ{{-(HVy?L{!jrE;&|*?cWlJ6b?NDp>eILDgP!Dupx`4Sf;Eqd7h$nZ+L)p%^FfafA>Z_B6f*^9t$5kO)o!)+z?&++$|FdKh@8%tTvM(nM3QJ zl5&zknGqHe?|p4sTearTEKAz>JNsJ^lX`3iI!hn6>20Q}9nLo^O`3cC>8Nc1Z*y); zORqarJtfXLF5vi$0!(vHc^YPIQmUykj3X7n4k;-^c82Hj<&kzxt$(}%i?-3qr+rdU zeDs7O6Mbkt_H^h*T>0mw(vvUakjF{01NJ;{ z)Tl1@%lEW6(ZaeQ7`=HbXa~%KVK0A(oOo)y=$1*v$Hy=DukM&q&j=~6o91WzJWi%4 z{4O#$&9TX<7(Lg<=}yWF{&SrFbO#-%S-HbZiXtI18GqYYuIvqsg0S@O>~SWNtwpmk z*D1tMhi|tv=LbuGcU)06olDngSF?aXgiN+*+|-QTRl(EAtT-J*KBZPWrdFn`)n;*9 zC*?1CkdSh^@8YU2uIoLE_{_4?WhJAN-`ZoKPCH+KuzS-0wePrwJEX5~P2Q8$r*WN~ zc=$1a2&efR~(8sZL3^#2GU!v_i+5g+8*JZZLnN3aFOhH-b<> z&%8BryMFyLZ=c=x{A@kEl*Ab#MKkAg^pJV@yE9`XWF@KiI4R`b0a@FI&eX%9t<7-* z3rYKTZ;>#zX4MR!^&F*UK;R)lc{Qcj3{#{N{HC5S2413HI-~_po!I;VBtD@s{98FnX_5 zZX?g`k>x4H3&2}0_-UCi2n##K`fHe^TWlI8*9WaJL{`i;tUG$ADq;88a3xC@N`ReP ztrNeZ0sSp4FNsEsBK=Fh>`{%U_5GW+Xz{bgo0``}9Rv;U#@63pRK6J6*V9|>`MZNf zsr=w@M7iU&SBNWk+BG&vsY+In$&T*50Z8(0BRKBtV+e6~96Ra3d`czh`eUDP zB@W-1c@nLPCpX+UUwY-a4y|x-$Ue9SzwiY6+lWhh&eE{h^0gn`6bH8u`DC|C|fR;t!%fs0uLC z(mW>~x8%r_`)G2c%cQ+ufCrz%YL;}T;|JoNum)U=UB0sjq1?6kjB=Amr(ZSUpCPRu z$J;pe^X&=5O(NX;Uu0 zMdkQS+SJ3bvf(0yBk!AKsT;q3>o*L)3JNr>$qgPp-+2n}I$*v z<>o1PxrXR5={Mb3;PbSjRb#};I7gQ2*AKHAjVgEDTM5jlp7)NJV5?bDg|6As_@8L`2?$CH z!)GR06ybj?yA#Un#DRM9as8KXhs#zcpP{J=@`XKvgMTO2PMBb!NgBndoAMvU^m8&U z&w_VIRSM;fvmcAW9vNnE=%eZ*vBAFPf=}2msYqN;xTBMl5MT75%g9zdrZPggYEk4^ zxWnG&ZHu%nN24iMr?lI^qkBAc3?>25(?4pmGa8)ZD~jsoI3wrIZrCseHOjbJEb!I9 z82)=K`(A^L8L9WX?4qYqpd`O_(CKaEtJ9tt2=ljMYnPlZGawGcGloy*-nm}(RbBR| zRKzCp(uxAt{lpJ3s56p@0KwfscgpzXUeBX|=;w2pQSA}s^O>cRZZ~*UZC|HK9Xyag z*wcpRkOnz18rRKCGraVNoWesra1+Q*50(`7Pu88L`<4((hR;1_m&?kg%mUBgGHNY1 zwZhgM)xo{}*alA1503)>gmTsA_paXiyx|d@&|`GJ zAm%q}L>{42a;b`F+(T2r6RC&KvMOauG*bH+k{W`te3)8l7M320Dm*>y*a|5h)M>5O zUT+_kQcSJzvl;uf&@vK4NsPWvU|W_~PV1}NYE<%=HtzoM-NC}?7zs0xDN&xibi@%v zF}dK1_Fs>oh&ZdAlhgmE`cEdqBN!nb|WQHL{GQmuwCcs4o6C4&Pf0o*|s6; zf)`y31baWKo#CIJ6AnPcZ!gIq*0=qWij)^{N!!k4^wG|ed{~+`8a4+zNeNz!|MNtaKSypI%+W-rHOsXE!Zx zmEerxyo;#ek)d2?3>f5Q;&a05Z+p!CBK%@b01Oj*?`kUjR>t7l?0yC&9GLto#*`a>4o+_hj`Rn3E_VZEqj5?h)8aNk!@MZ*(%dSU^CN3MYd8+u)C^2 zA*M%!iM;7jh-eD3 zPmp_x#A(5E<@}_CU*Cw~^IK@{|CSX^cTY*1r;4z`Gh?&YY!0TF)#T$UQCZIzk3qd;H)=sLg_-Z~ z%n87_=)eBgnaf-$_j4gj6`ej5L(I-;q`;!{b{CqSJJ9C9RpM5?6I@zV$+Zx}sqmLx z;<{HA2ERgY4z$56Sza=;vAp!k<(!zi5{EtzTlsb3nd8$UFEUNKyRmBPs9Xe$af1sb zG@*L=(nXVYI23mH2lKXQ%eM8j@t0CGgC{XBOVci>3w1EZqqPy(-8Je>Tfc{EZCJyn zR*=#M2nYMb+gY}95C}b3O$9eYsT1Y^T8))+Trpn~v$g$~Pu)mB0AsWHZewM%{bjp_ zi5kIQdTwYby+7D^{s9yGR{+Q8FYN=)*fI_MPHW2h4CUk@@cb+Qnw#%gjp~pkB3Z-a*_XtB^|n@N()qO z#OUXY$hGreTP;ht?K?&!l|%f0Az6jBWCd~-Ur5exvb{7Op|(razMGr#Y_*L4SC%uM zTI(1&XX1oA2ilzuLS+-o$tcB8b#K!^3AMJ5L z|D8E3N=od$AkA5dKAFzoO$q?KB22@(ycQ1PVM9?dXjz!S>wYd9naY(PV1sR=W~F|Y z{T)7R+O;fG2E$^^gMePAQ_0O|yb_*r2tC{Q>odRlZSTz#ar+reSyUQl`HhWTb zBhL9eIJNUN&z1@czF2XZ9LGY=X7|=!KK^;y!=fJj#&$lBUPz@#g>` zn6UBRR;xqbVO;OIH=~y0kfw%ywAqSJjv#a*8}h23;8-YTkbrqswt}HnO;>*S7*^<4 zT$`EAcy-XI4$|9NbnbuUipQ4!Cs*79?y>L5Q_&AB%*~CU7Um|#Z|&aMS=(CKTACTX zwX`vKYieO?W@Tmb*2;oL1AcCmi-Xxd+}t~Ax1kY7w1cv)&ERpN1_XuZ1&YXg+Z4&t zwW=Xw`c6oje|BcJ{iu<_z0uGNgFI9o>wxF(uagOUpe;v$@&}=&*-x*|N1JMM-Mnh{ ztnQjCN%k1K&&$dTIJI*`{{6`aB&QZWkduj1tLvk7R6GP{=dSJBY z*@FIcP-$s}Mg+RwnY5+kH2p+-+ro>S^GChl;Gwow5L?wdv;CA(1eLIXSFC$I#e#l*qqvGjFalf5!}Oob%83?OtaUk zhR;L~PkGOD6uYW$qUxn@vG&|?SZwxVQW<`w`t9x39e2s5bZRln`xc{6Lka;&2`Q$D ztjiy1_wDGT>OMmY^b|Zx&mUVPn&nXV@RxxGQ7zVJrI5u05^dIeLn%6xoOLGaMXRP@ zA<6`(d3tteAN$Tpouffy!Lz4dg%0*fIWawS?Hy+O_JecFlCmPky{zo4E^8C#V~(1) zV23b){QpaE%YsIB*HrSEE- zmSwrLnYT=R-vF80oe~x2QybVk+&HqaOlGd(Aj%GF z(Oj8(cEtJn=xe^j)v1hGgjQ%5;d#OC0`)Np1!PYwoz)4^49n!MMoeisasLHbBAKh6CJX6~og+A@I(1-B!V4TwxvmPIb=vEWmd)(h_ z(0?$wO;6YVmJlmZ!^yR84FN-Nj`-JB>72&0e*~#}m zpXAyY>|B^54LO=qX!sxM@W{pwcnO2m;zBUt-mx#xy>SEZCU5hbLK9hiFG_RzT^JZa zkT+!ay1Kh>UYUBl`txV+hJr{a*cm(O@4#(Q-zwQmrcG^m?q28)N3s|UdnOY78xRTY zIUpf{o}`S@rl8v!7{iKF`FKN|HF8r;KNR}s4?uDRPsA-0xg|+{y>Ba@n%pFSKl6Gm zc_zwA{W@A(oN!;c}hl>?zUWg|YQ2JUbZeT7x-zUMp!X_9$K zx3C-xq?l5hBNjH-7oUP0@)!L(=zABzZ*KV$8+9(gZ)_cjkNl+(iFhUh9|)@r;H8~2 z-Ko7Hvj7QOz`fG^J{pxjEpRfXCHq-J*Ch+h!7y$>u6qsa6Kc~^EzhNuYq-36kMN}( zlK@1F!iGoigty26Jk2lerMDeAt&5(jRS8b>aEss763wpv5fds`^L~44)O9A4RhnD? zd{dv8m787FAKQtHPk<=$0+{2JuYah~`yc?1-%)^|bbM-m9+yUJuV_6o!u9=nfJ3E( zrXWcQ^ol>9MHS3_*0pYL0>7u6V$#Oa2FC7)r|pX7P5kV}uFBw6H$pg(t?}Z_1S9?? zg2fXEE_q|?B!3l$Wrgi&LhR@MvzAilOKiMPX4TUJ5&t6KS+1#=Sgy}i=5FlkouR#- zMGVpO_G6^E)4nctnt%DPwx)kCUq`6DqG@Wo{y5IKtTc3KQA`fw#W>whdvZBH{h4yD z2G!QmTd#>2F|8VDGG~=cHh5&7$fL7(31Ra<%JRY+Icl@kN`mmhdfP(s z+(x$rVnyLt=E;RMXj$p(0{r0*qWthsKmEr?+0Ys;i|vIhhEHRw<>wCM>_Y1r|MHi> z9Z=vBc4crjLb5Mwn{BM?MP8l%;?djjXV|#P$D)`@XQY)MJ_N&^zm?2Od!gnmu*Mj4 zjxfEKt|{x-KGsLT1vGCP1pM{e+DhUM`Xlse+mEO~G`QxWy{r|o?tm4@h97dgxf=O9 zd}E6!e+^a@e0_7`!_okoY^Uki;**1GP-a+JhLUa>|05M9oCq6jOc;9uh>|sx?5y>0 zyQOixx9?u{kcOZNcKDIU{<#}8XFz+tJHk_Y4s;~F7;=(?(Amra9mEDD*IO~)t@|rY z2)w)H3avbkR1-*mjoS56BmqYa$9I&dD}7OE>Dc*r*5vCOKDi|JXb{Rg ziFa)LM=uH}G8j9s4|v+}egjzd@E}D}7~mOig(SYG(tQpqdm$SWb^i?lvvKyVZ9BO2 z#)1|pM1?AXkMBTsL`D`S_uH(L!3Y&aEpc@pgGxL{+EEBS$l4yy6l|Rw7iNLPc=vp& z^z_bMgHeM?GAoC2Az6`l!7ga~2G4nUP@u<*&0G(kWE zO+%TXvnSIBC(qzp_gv9UTFhl7ff}noLBX)coIQF?RaClUOEsSTvp`(u%<|l4b2Xn1 zdsJbAz71upYwU05UN3M`80{Ey{5l{`k7n8q)y+xg;tODX>;69@$l=B zHF^HOnq2T!;`-t|{4h zcg;a=R%_cj;(rvdh}U$# z0?hJRq{dp-W8%t6b0EESab^SgD@&UW+)Imq9{P~3)*>?1d30y=Ep|cUx90>Nbm0=tesfA(OfbW+ZTmBu zv3?J|K=^MeRxV~ig=#;74P+6pZs3FYaZKe(EN5S47CHAm>iQ#6%F-< zP|PoqH?u>Qi@be)RqE6vfyaObBz)~%D947{f} z*4mSf8`&7oOMgcFwcxh&39l4&Z*N*T`!1SIJLwsm{M;Nm|1GrGaO8P(>5)U>@y^aS zg!V%;>cQTLEQn_H=PbjZb=SJ>8og6eH&KERZ3i92&C-nA_KYa!^IAW;$`l%pEh#Tq z%HU?BT(;SN#|-ZD23eyTr1SikM>*ximp!ilwHJlo0v)IJtlEKUC1%Ht?63W4;3MRF zSn!{J`jm5o=Y4k8e9bB_%vOh!w$k)>ERwXGzb&27tYeR^3@f3yGU@((*AdHSO&Ci< zZUt#;f%Wwz8?M3f=xX$?iX4$^$%$v~4eaU8OKOeaS@xI;rm8s+-Z@g+1DTR8rba}l zayi7lj^;n;TY+U97wE$DnscbD`5E}7JozGT6aO`6TAtkX4Hpip^KE-&jT8Yvz~oq` z(iYa71UdDFLhC8I*AwtwYF&NN-^Z1fJ3?ZS=F35T<*Xl%o=cijpK^!+n{4&a zXn$?DIeDMY;R5PZRq*>*fbQ;LfaWXV_}6zY=S(&X@OnQh^IP)>(W)D7P;a&h?Du6? zH+}T%ZYzZM!!O1kn&sK`T}pPIt9M+8vMNzts_k7gh&t7%EH&$jg#e5 zShjX(aP|+rC}q2{^6PoU5j~V^-)cs|eKZpasH=KVC+ZZnE(x|UcO~9&75TMmAeZ;D z;Z6F=8{g8*_&Cgm_>khd4|YOi(RuCCiXjPla!}kOGPX?;?GtQfJwnl$SdvNBy!dnd z$tiC>*Va=d73I+*{~igKj~hoG^bG`OSdHWooL{}|w1#9><2x||+}h!(GQIHK+y2Wc zYNa%+PU)T9T{zr!)J?5u`u^k(wfz@(vPC05_+LD5W-HFBpq%8RAN}^Z^pwqpDr-8( zwbqE%L)q(GcXGqg2u3>qe_xAEYrIA~rUB3E&{A&Xe6lMw>UJqnX6~4rWyR?(xzzM=rII$! zZ1vR_xe-ye?{ek`BMW1q1Eak>*s!?eHpT$4x)bS=}%Hl*S z5L+C5-`J}=arW+mv#q{4-zwdtrT?W+Cx21X)ju>1CjlV}9+8={*F9znk}ZqEG=3#N zFX0hg_ z#^{>?uRPxioN3Nwx&N+SwfBjOi@#0bYe$h=RbMjX9>;wcf=AR)#q@CI;tq>%s@M^#D9-mHXB(SC3r(ruxDhkWCx&& zPLMoOR&qzUF#pDr`?bY|q zju3Z#!)2dX+uPf^cm%jYUA$cOMA>gfF7op{7Uprbag*&4%81E6oSp=ypIcdWDRg;@ zbZ9ycpSe#Ed7M8W$ACv|MO61N5?zu4Tuls)vZuSp|8Dj4B73}OiO~4fw{ocTQ3pLh zf&YxteE{EG_mw82v%dBP;!Xt-kC6lOe&JiL24?vlx^9{+@rlosbq9s|eC=RRFh z!HVeOM7funo)4oc7eJoC1j)ISmamRCFx{dszW(1kFQi1<82YQjqsM!QF^n(m&z=e% zlsWA#vEbHPL>va}0G%LctoMaxBYt@&;X^L0i=XTblCtwo>4PHcnTMO^@f2Y!Ns z-w^^}-IHf{{>t+liv#$E3EF@bj%L^At84qU%R;cvYbB9yO`c*uv$ztv>zUHVOI4z6&| z1$g(yRSyHRo}0p6uQd}_V2oNu4fG=}?&p{QOq{IxQ)43=Xg%^6?S%~Nnw}J8E7u-0KJ=uI^B%1xEaz@n$R%Zx_m$c-v;o{;r8wFh+(B8Dp6Q+=sN)m<|KT=gO_O0hfrb?1p z&jT(asSOWYTuE4PqDOrk zJ?%oQX~L5BstSO!u8t2U2S4ZHQsRxaH*&(EqZkyfqpI~}+7Q3)td zQYG{uYr8QfE1lrL^xL0lN3U(wSTbvWeKKetkZlR;&S`=6PGovxG2#kBN11rPN0Vtw zcFEOFf24=Dmg1&x$?}i#g*j|>9v+}?Bl^a#lfc1`Z{=`Xp-&?RIwEuHKMiiT3Sp{j zw?^?8cFerknS_pY82RDGM+5nWVxb9h?23q5TYmBDfO-$5L!OTBpI`%0-W*Xx>=-3H z@NQDEi2T@|nd&QNObbB$-S#7hVx(*yiN|AzJ}3pG1YNPC>q#iM4sfycG4{Ywh3*8oL*uaNW%%i| zG$SxJOd2qm-SF)PH1@C!K`;9B&@G+^OQZA@)jL7M9Jl?h!ox)XH~n87J~0j8neGhy z&0)@M%)+wM{ACE@PFHpsp^}zb&3JGv>EB{&&!K?DEVwT14SDvP48FUMvX~h-rIOb` zK-Z(RHk(!T3*aM=Y(T0fD19mH`f$jwj-+|)$~fT-&M;KeG`zoyRf(r3F26eO?G-hk z+Oa7uAt|#+ws%PJbTxgbsZzU&4SE1~cI>3avV%ji%>xvX;|-xk?q|fnj)&!LURFbJ z{w6KkN)J97&6LfI6V=Ar$76qIX4)Jj^zn77Pq8m4vqeB}Cn76WTQ(e?jp}Csw=HKvcseMzIgYjsOvU?DQ9MJk?c*Z#*FvvvVIDwGlBAF_;Cw30RI8Y^1p8KLM z)Im)5s+G#sWl?PkxtaNL;ibK5mj1b{ZeT=5Lvn9*g&jNz;MQVQ@H@adq>?RdGWqS`z2dh&{6TZLb6psMhx3DuN1h!=4AJlV;E?yMoWKaJt&R zsa_*p-_5^|W1b1yWk)Z`T)0jnHUCmPwWZCv?M z%QXL_F8T~bsbd3nGJB{OiVY+)_#KCDeU?o>&`1b-Coz__cG-wTfiIImz0xnGU>z?Oy72&~dFW$NOA7UiO9d z?n;@e5hk=oEmeH1eNMdfKBPeWo9(1Ykkbk~zbM#0fk>K8KG0@B%Lg&7DDv!rz2F$% zb$ePQg-Lb;O;LUnS@^Q`$(XSBUghYTiNeD1EbWy`CW-Xc z)m`wDX`sTPwuRufVGWVF;W?#{fqZ7!5UE#^C-Zo%pOD-!XfrxrOK{=)jOonIdTUmm z_XL@@cfJ9n8P!7+jO}vB%^$$k@DUYa_{Z~hhaejfkJWn7VQT~bRfxX2vD%-AQ>gOtHunIl2z_7gI&D+o9i9?Pk7@U}99;j()gPC1s=NTo2f- zZ5OgL_aJ+Clea@WyLl@MSDS*wESm2mqs5H@%I<zY|};W*SQbtb4b>o(Vd4U&>573{V>y5~ewip~sJ?9JGY46$jR)DG;H zFC7vZu1;5J8F=^J2NGL*BJ0GHUh~Pocf8k5QB_qL0!Qy}sqo%N4Den)%E(PtTYe-r zF*3in&|Hz{>mR1etx-yaF{9K@!hx&sUb#7m--$^OE^;a(Q;jo(N$}9!1(kWc`7ckO z4#&9j6nUA2*NYB!rz9@O^R)7T#8fh^YUPaQ7%0=_+w9CyT+`cSpOZ42<6n#YIClAw zL%4$x64)%1>QQTv)D_yi*-%)N+c-O((&}2PP#VP?Rwbz7<(emkyu-uH{mtS_9JxAL z#v2Q=YEAKnpQpf#iUQDgR)NL%;3W-Aq~g1o_egxfqw3a$@kv1^l05n!WtMxMy4%vn yY7bB9$j;y6e~4pYYU}8%Q%&h5#Aq4nzg(*TNy!(41P#YqNPm-ue>xzZJpTibb(Vtw literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/objectives/conditions/steal.ftl b/Resources/Locale/en-US/objectives/conditions/steal.ftl index 00c8e0fdaf9..0709bf6e5e6 100644 --- a/Resources/Locale/en-US/objectives/conditions/steal.ftl +++ b/Resources/Locale/en-US/objectives/conditions/steal.ftl @@ -9,3 +9,6 @@ objective-condition-steal-Ian = head of personnel's corgi objective-condition-thief-description = The {$itemName} would be a great addition to my collection! objective-condition-thief-animal-description = The {$itemName} would be a great addition to my collection! Most importantly, alive. objective-condition-thief-multiply-description = I need to get {$count} {MAKEPLURAL($itemName)} and take them with me. + +objective-condition-steal-smsliver-title = Cut off a sliver from the supermatter crystal. +objective-condition-steal-smsliver-description = Use any cutting tool that comes in handy. A scalpel is more recommended. Also, don't die of radiation poisoning. diff --git a/Resources/Locale/en-US/supermatter/supermatter.ftl b/Resources/Locale/en-US/supermatter/supermatter.ftl new file mode 100644 index 00000000000..52593f5524e --- /dev/null +++ b/Resources/Locale/en-US/supermatter/supermatter.ftl @@ -0,0 +1,26 @@ +supermatter-announcer = Automatic Supermatter Engine +supermatter-examine-integrity = + Its' integrity is [color=yellow]{$integrity}%[/color]. +supermatter-announcement-warning = + Warning! Crystal hyperstructure integrity faltering! Integrity: {$integrity}%. +supermatter-announcement-emergency = + DANGER! Crystal hyperstructure integrity reaching critical levels! Integrity: {$integrity}%. +supermatter-announcement-delam-explosion = + CRYSTAL DELAMINATION IMMINENT! The crystal has reached critical integrity failure! Emergency causality destabilization field has been engaged. +supermatter-announcement-delam-overmass = + CRYSTAL DELAMINATION IMMINENT! Crystal hyperstructure integrity has reached critical mass failure! Singularity formation imminent! +supermatter-announcement-delam-tesla = + CRYSTAL DELAMINATION IMMINENT! Crystal hyperstructure integrity has reached critical power surge failure! Energy ball formation imminent! +supermatter-announcement-delam-cascade = + CRYSTAL DELAMINATION IMMINENT! Harmonic frequency limits exceeded, casualty destabilization field could not be engaged! +supermatter-announcement-delam-cancel = + Crystalline hyperstructure returning to safe operating parameters. Failsafe has been Disengaged. Integrity: {$integrity}%. +supermatter-seconds-before-delam = + Estimated time before delamination: {$seconds} seconds. +supermatter-tamper-begin = + You begin carefully cutting a piece off the supermatter crystal... +supermatter-tamper-end = + You feel the power of a thousand suns laying on your palms. Or is it all the radiation? +supermatter-announcement-cc-tamper = + Our automatic casualty system has detected that the supermatter crystal structural integrity was compromised by an external force. + Engineering department, report to the supermatter engine immediately. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 974da1ebccd..e0d8e7290da 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -342,6 +342,9 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitEngineeringWhite + - type: ClothingGrantComponent + component: + - type: SupermatterImmune #Chief Medical Officer's Hardsuit - type: entity diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index 6291fd23335..6c9ec2049f4 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -95,6 +95,7 @@ - type: InventorySlots - type: Loadout prototypes: [ MobAghostGear ] + - type: SupermatterImmune - type: entity id: ActionAGhostShowSolar diff --git a/Resources/Prototypes/Entities/Objects/Misc/supermatter_sliver.yml b/Resources/Prototypes/Entities/Objects/Misc/supermatter_sliver.yml new file mode 100644 index 00000000000..d62935523d5 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Misc/supermatter_sliver.yml @@ -0,0 +1,25 @@ +- type: entity + parent: BaseItem + id: SupermatterSliver + name: supermatter sliver + description: A shard from the station's Supermatter crystal. Highly radioactive. + components: + - type: PointLight + enabled: true + radius: 3 + energy: 2 + color: "#fff633" + - type: RadiationSource + intensity: .75 + - type: Icon + sprite: Supermatter/supermatter_sliver.rsi + state: icon + - type: Sprite + sprite: Supermatter/supermatter_sliver.rsi + state: icon + - type: StealTarget + stealGroup: SupermatterSliver + - type: Tag + tags: + - HighRiskItem + - type: SupermatterImmune diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 8f54bb8059c..da67b5a5928 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -130,6 +130,7 @@ solution: food - type: Extractable grindableSolutionName: food + - type: SupermatterImmune - type: entity parent: Ash diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml index 25d219ab945..b8d66c61e38 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml @@ -3,6 +3,7 @@ name: gravitational singularity description: A mesmerizing swirl of darkness that sucks in everything. If it's moving towards you, run. components: + - type: SupermatterImmune - type: Clickable - type: AmbientSound volume: -4 diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Supermatter/supermatter.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Supermatter/supermatter.yml new file mode 100644 index 00000000000..6fc3429600a --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Supermatter/supermatter.yml @@ -0,0 +1,66 @@ +- type: entity + id: Supermatter + name: supermatter crystal + description: A strangely translucent and iridescent crystal. + placement: + mode: SnapgridCenter + components: + - type: Supermatter + - type: RadiationSource + - type: AmbientSound + range: 5 + volume: 0 + sound: + path: /Audio/Supermatter/calm.ogg + - type: Physics + - type: Speech + speechSounds: Pai + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + mask: + - Impassable + - MidImpassable + - HighImpassable + - LowImpassable + - InteractImpassable + - Opaque + layer: + - MidImpassable + - HighImpassable + - BulletImpassable + - InteractImpassable + - type: Transform + anchored: true + noRot: true + - type: CollisionWake + enabled: false + - type: Clickable + - type: InteractionOutline + - type: Sprite + drawdepth: WallMountedItems + sprite: Supermatter/supermatter.rsi + state: supermatter + - type: Icon + sprite: Supermatter/supermatter.rsi + state: supermatter + - type: PointLight + enabled: true + radius: 10 + energy: 5 + color: "#ffe000" + - type: Explosive + explosionType: Supermatter + maxIntensity: 25000 + intensitySlope: 5 + totalIntensity: 25000 + - type: GuideHelp + guides: [ Supermatter, Power ] + - type: WarpPoint + follow: true + location: supermatter + - type: SinguloFood + energy: 10000 \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml index 48994ac7d84..55a22a59a58 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/coil.yml @@ -5,6 +5,7 @@ placement: mode: SnapgridCenter components: + - type: SupermatterImmune - type: Transform anchored: true - type: Physics @@ -110,6 +111,7 @@ placement: mode: SnapgridCenter components: + - type: SupermatterImmune - type: Transform anchored: true - type: Physics diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml index ea41ba3a20d..1cfdb9256a5 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml @@ -2,6 +2,7 @@ id: BaseEnergyBall abstract: true components: + - type: SupermatterImmune - type: Clickable - type: Physics bodyType: KinematicController diff --git a/Resources/Prototypes/Guidebook/engineering.yml b/Resources/Prototypes/Guidebook/engineering.yml index 21d17f02279..e08d46276cd 100644 --- a/Resources/Prototypes/Guidebook/engineering.yml +++ b/Resources/Prototypes/Guidebook/engineering.yml @@ -66,6 +66,7 @@ - Singularity - TEG - RTG + - Supermatter - type: guideEntry id: AME @@ -91,3 +92,8 @@ id: PortableGenerator name: guide-entry-portable-generator text: "/ServerInfo/Guidebook/Engineering/PortableGenerator.xml" + +- type: guideEntry + id: Supermatter + name: guide-entry-sm + text: "/ServerInfo/Guidebook/Engineering/Supermatter.xml" diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index f00641702a2..263494f7987 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -26,6 +26,7 @@ LOLuckyBillStealObjective: 0.5 # DeltaV - LO steal objective, see Resources/Prototypes/DeltaV/Objectives/traitor.yml HoPBookIanDossierStealObjective: 1 # DeltaV - HoP steal objective, see Resources/Prototypes/DeltaV/Objectives/traitor.yml HoSGunStealObjective: 0.5 + StealSupermatterSliverObjective: 0.5 - type: weightedRandom id: TraitorObjectiveGroupKill diff --git a/Resources/Prototypes/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Objectives/stealTargetGroups.yml index 11e503d7940..e93c9c319da 100644 --- a/Resources/Prototypes/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/Objectives/stealTargetGroups.yml @@ -1,5 +1,12 @@ # Traitor single items +- type: stealTargetGroup + id: SupermatterSliver + name: supermatter sliver + sprite: + sprite: Supermatter/supermatter_sliver.rsi + state: icon + - type: stealTargetGroup id: Hypospray name: hypospray diff --git a/Resources/Prototypes/Objectives/traitor.yml b/Resources/Prototypes/Objectives/traitor.yml index ffeba32546d..d9c071c30c0 100644 --- a/Resources/Prototypes/Objectives/traitor.yml +++ b/Resources/Prototypes/Objectives/traitor.yml @@ -309,3 +309,15 @@ - type: StealCondition stealGroup: NukeDisk owner: objective-condition-steal-station + +- type: entity + noSpawn: true + parent: BaseTraitorStealObjective + id: StealSupermatterSliverObjective + components: + - type: Objective + difficulty: 3.5 + - type: StealCondition + stealGroup: SupermatterSliver + objectiveNoOwnerText: objective-condition-steal-smsliver-title + descriptionText: objective-condition-steal-smsliver-description \ No newline at end of file diff --git a/Resources/Prototypes/explosion.yml b/Resources/Prototypes/explosion.yml index 1eaf4f52ff4..7ef2e774a71 100644 --- a/Resources/Prototypes/explosion.yml +++ b/Resources/Prototypes/explosion.yml @@ -117,3 +117,19 @@ lightColor: Orange texturePath: /Textures/Effects/fire.rsi fireStates: 6 + +- type: explosion + id: Supermatter + damagePerIntensity: + types: + Radiation: 5 + Heat: 4 + Blunt: 3 + Piercing: 3 + tileBreakChance: [0, 0.5, 1] + tileBreakIntensity: [0, 10, 30] + tileBreakRerollReduction: 20 + lightColor: Yellow + fireColor: Green + texturePath: /Textures/Effects/fire_greyscale.rsi + fireStates: 3 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index c2e46d5f590..9b0ad51cfb6 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1119,10 +1119,10 @@ id: SmallMech - type: Tag - id: SnapPop + id: Smokable - type: Tag - id: Smokable + id: SnapPop - type: Tag id: SnowyLabs diff --git a/Resources/ServerInfo/Guidebook/Engineering/Supermatter.xml b/Resources/ServerInfo/Guidebook/Engineering/Supermatter.xml new file mode 100644 index 00000000000..6e89df44324 --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Engineering/Supermatter.xml @@ -0,0 +1,65 @@ + + + + + # The Supermatter Engine + + So you've decided to take on the challenge and set up the Supermatter Engine? First, let's give you a short overview of the main Supermatter crystal beforehand. + + Its primary features are emitting electrical arcs that are harnessed to power the station through tesla coils. + + Side effects include radiation emission, releasing hot oxygen and plasma, heating the air around, and exploding, transforming into a black hole or an energy ball and eating the entire station if you screw up hard enough. + + It begins inert but being hit by an object or a projectile will activate it and it'll start exhibiting nearly all of the aforementioned properties. + + ## Words of Warning + + 1. The Supermatter crystal is [color=red]VERY DANGEROUS[/color]. Activating the crystal should be the last step in setting up any form of Supermatter based power! + + 2. [color=red]PUT YOUR RADIATION SUIT ON[/color]. + + 3. Most the Supermatter setup involves a gas loop that is designed to cool down the Supermatter chamber. Please have at least some knowledge of gases and their atmospheric properties. + + 4. Anything that bumps into the Supermatter is [color=red]fundamentally annihilated[/color]. [color=red]Do not touch it[/color]. This means weld and bolt the door to the chamber. + + ## Gas Interactions + + Here's a list of all gases from least dangerous to most dangerous. + + 1. [color=#bffffe]Frezon[/color]. Aside from cooling down the Supermatter, it basically stops power and waste production, which may come handy if the Supermatter is close to delaminating and you need to shut it down fast. + + 2. [color=#c20000]Nitrogen[/color]. N2 is the basic gas most Supermatter setups will run exclusively, being very simple to set up for. It dampens the power generation from heat, and reduces the amount of plasma the SM belches out, making it good for when you aren't trying to do something silly. + + 3. [color=#b16d6d]Nitrous oxide[/color]. Reinforces the heat resistance of the crystal, allowing for much hotter setups than usual. However, at high temperatures it will decompose into Nitrogen and Oxygen. While N2 is good, O2 certainly is not. This O2 will also react with the Plasma to create Tritium and then a Tritium fire. + + 4. [color=#62d5ca]Oxygen[/color]. Provides a boost to power transmission without actively increasing the waste gas amount or temperature. Pretty risky to use, as any disruption of the cooling loop will soon cause a plasma fire in the crystal chamber. Even just a high concentration of O2 will activate and continuously power the crystal. + + 5. [color=#19b348]Ammonia[/color]. Increases the power generation slightly at a minor cost to the heat penalty. + + 6. [color=#979797]Carbon Dioxide[/color]. In low concentrations, it will increase the crystal's power generation. In high concentrations it will raise the crystal's energy to extremely high levels. With poor management and insufficient or downright bad preparation, it will eventually exceed safe energy levels and begin a charge delamination, producing electric arcs and anomalies until it eventually explodes into a Tesla ball. + + [color=red]7[/color]. [color=#ff9d00]Plasma[/color]. Very similar to Oxygen but provides a higher power boost as well as a much higher waste and heat penalty. The extreme pressures and volumes of gas produced by this gas are very likely to clog pipes and overheat the chamber. + + [color=red]8[/color]. [color=#08a800]Tritium[/color]. Increases the power production of the Supermatter by up to 3 times, there is one slight issue with it. It is dangerous. It is very dangerous. Tritium is a horrifyingly irritable and jumpy gas. While it isn't as harmful to the heat level as Plasma is (just barely), it also has the second worst heat capacity of all gasses while Plasma has the second highest. This means that Plasma can be kept happy with enough cooling, whereas Tritium eagerly goes from a safe space loop into a burning hellfire. Add to this the byproduct of large amounts of Oxygen production (not exclusive to Tritium, an issue in a Plasma engine too), and you have a tritium fire and a very hot crystal. Do not use this gas unless you have a very strong understanding of atmospherics and the Supermatter, and are willing to get creative. + + ## Practical guide to the Supermatter + + Now, forget about everything you've just read and get to setting up the most basic loop there is: the Nitrogen loop. + + The atmospheric setup in its' most basic form should look like this: + + (We did not have enough budget for images, here is a text representation) + + 1. Nitrogen gets pumped into the chamber by passive vents from one side + + 2. Every gas gets pumped out of the chamber by using scrubbers set on Siphon on the other side. + + 3. The output gets filtered, cooled down, and excess nitrogen gets either routed into space or rerouted into the input. + + That's basically it. I hope you understand at least something in this example. Now get to it! + + ## Experiment + + You're not a real engineer if you haven't figured out the most efficient way to produce electricity using the Supermatter crystal, are you? + + \ No newline at end of file diff --git a/Resources/Textures/Supermatter/supermatter.rsi/meta.json b/Resources/Textures/Supermatter/supermatter.rsi/meta.json new file mode 100644 index 00000000000..6bca0558a89 --- /dev/null +++ b/Resources/Textures/Supermatter/supermatter.rsi/meta.json @@ -0,0 +1,15 @@ +{ + "version": 1, + "copyright": "Taken and edited from https://tgstation13.org/wiki/images/a/a4/Supermatter-bg.gif", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 48 + }, + "states": [ + { + "name": "supermatter", + "delays": [ [ 0.08, 0.08, 0.08 ] ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Supermatter/supermatter.rsi/supermatter.png b/Resources/Textures/Supermatter/supermatter.rsi/supermatter.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5747a315fec5fc2d2965078fe08a0dd9296681 GIT binary patch literal 28899 zcmeHw2YgjU_W$?3_mY={RMH@gkc1l35lAG05)@V`0%F~dgyew{NH7US+`nbjRTr_~ zu5DQrR~HmP#D=2MkzLE8^b*oT3h5#By?g)X%*%awDL|sZ$nWFux$oXPcV^DanbT(G zobdFFX*W7K_&5M?nld?ICfz5{HP_CTemCvQET-F@m9uZpoSC>ha7lXF{FFt8z|04h z7y=C|Qsx6IPA;Bt%4tuaqp`umUmCBO@AuQ&GshG+UVVJ_y7DP&2R-SWH1?kV=}*Vm z*(8U)w(y7l1l~IG>YGNzo}7Dg^oj}BZ(Uh3@pa7|tHQRv?4$YN+J_v+jr#V}RWF>G zc>K0?`wzW+&kY5Swj{)l-@V~4ZZGy5VEg@!zo#EbH|>7t-=3xVxTiNKDTnucx_nW+ zv->}vS^LbZ`}8>v>9*amM(@4-sb%X1HaJ(W-Ro78Hr>6-HuvBi9(#5Sc^Hr$PnkGz z#*~Q@)#1<}*8aa2;wSH!;J5FdSqmqPbY3<*@A-9cCninuyUBCa+;ty&-nlgL^SXYo zjS3kN{_LL@?%MU-zV{wm_0eYM&3_JTl=9Byyj>hLM2;Bo@l(|~+Xhuu#8;e=uHU$S z_D2!U8(uRcud$E1=XTG>J}AD?^&y?>3$MJpe(S2(70-U~U}NJ-@BBN?oR$41{^7^u zN2Z578CJxq$EW{sS<~u_6N!&5_{-|M=f6Jo z=Br+M@b-$tIZ?Co2Ig&e>%PB56#Q|{*tGlSEOa{h`LKr*H*DCH{Q0yD$0=70eqvO@ zfqUQltIt(??>#a(>Vm@n_Sa#4LGdsp-5|WW$t|A8nlU+#|V*bMn5}_@4)N7CO5= z@Y9fq=^^8%uA8kn^S|PMIP5$S7P+mc{^*HsO0>`aYx7HKk32SU?prsXC<~|zC@wG0 zj`^qj5WJ2nrNMG8e`N-9B|j;Ka0aL*S_JQQ?tclUAfGiw?Th zA#hxJ^8C1&2{*JhL2vOv_hx1;iHnF>zI=K3@|f_n^aT-7v9Ylck;>8ixH8L_MEu%(SJJe;3jM>Dc5i<=LX-m_S43m}_QZs|Cn@CQw)L*hR zeUTVWa#Dn0kzp|v%^;{z?Lgi*W$Fw|4MxF&l*LO#Ekbs?l9?&<+mO|+Z~R3J$GRg_ z-O_Hm((2enVJbCsYFt8E(o*i;l!W*oh98%lmXwklCms!B$BY`2oD>x{+7LA=Y*b8a zV%WT~hUl=U=x9T9RP^YvQS)N0nwpZDk(rp9WZwv(GBstG7n>LpNlhik#wLZ0 znm=lOSYlLSOjz{%s3huVQfy+>Xwg)1Qrrz`>5CI-I#U)WE-*waNnId5Fv8=mn=vIm zC^|f{Eoa7}#LW3rfp{P#H92j0M%$;^DT@uWG7}k}QDdUUj3M}AM@Ns2iHDsUAzymhKZwC~OGdks7fgtD;6(P3>U8yytUI@k!780u)pMRdZ)I8ne##85qR z9*HiJgb@}|*orR}I+roE&ckJdKu!M+q(}Ju9bLbpt4A2vweZ2m?JT{5y5^ z8oC_X7E^{)vVfM;Qfc(=jqlMi%XZ#PHzq*ge{X)Z{zb~MUo!cQ44|JoUlLwhJAg9v znNy}t(ihw6wXQxdY~2_F1Y%0Ub+cDU(%iXkydhDMZl~s|{2*=N!Ys9df4UJr<<&q`jV$RZguHgVzkY$^st*-_1^kqel*`=I=dePc7SR1elIYQ+VK7 zt%JCrcZ5dsFZfLP7Y2Ir*3;!nV(`sdSM%T*uG$BUZX>)CUV(>$44CqvZWYR7LGDCPOzzktS* zQ`92expxZzYC|2d&-v1^Sx`o7Qj7HJowW{7Dh6%R$;1YolXPr`Oz=(o#Ux7-WmyYg{m67pc44R?W5Ea?(Y@i52)k6lF3G=(O7h7AU?lWrGOIo&{|HUH3Frcdd~%Rs*RHcHotV3{Z{xa3m|13()N@Jx`lvCVgGW-f%fFz z0SP=>p%uhKs~p-wV_{9fvViP@Zc@QT5zvYJJMg|b`vpghq9>|6=nX1pv;3^c-wa=C z=KVOB;hW_4@L3}`Nzjw)7TAmS%s$VgyWP;%yz=WS|EX_a$F`*Z)8s%(n>elyz^O3r7&oTuZTuF^*j zCnyK@HXv@O`7009cVt&30pD34qHxo6_|CpokR=O4UN<1?yLJ_rrPK^<=++CaM7g7T zzg)lC(LsyIp$=dr-v-~z=jL{3<`omc{a7h{|7OYe*6TEk7*!)6?}!Z=&rG8Ww338O z>j_cMbPSrt8)@yZ^}+~Hbj;T_*!jxmqE7sxDXlz5(zaFdcbxsg_jg;6AZ7g|>NQs8 z&M(`u;8mswffSKTg6asAu8<(ezj&=E)nYVa_iNiBlThmnpJ$)?C8IwLAB>Xb2gt@M_C}oRznCg$%<)%qhJBwfqreIDVgBbUkgX)lW@1wAgiAf)4!CP#GaPj$logfyZ1|3vb8xxlZt&E!9Q?#a zh2K(Jr9o{Tob4f5WWcat!^HqK8V#IXWWwJGdN<=G*xyxr%Py?N`1I4*^ZYRQo)|Ck zbR#BHSuHJ88pQjaT{)Pb`4E0{W+MB`b-)K(;CCy@f-o&iMiWe$Oen?*Ah-e6!j9qV zXkxrP75EI`SAR9IL5fByiK7Zt#> zzXY#g{n28yCE;g}!lNV*7vBw&=`k(}t;viW(Wq>~gzJLw^;c)bH~!&#PCIvGAzqFW z6hpX0!TTdnTqEJZH#&1)QBe^gU?3{0s^H~h2j>7=G}lYL06)47{?>5R)yvqhUys!* zA85Z8sH>}kq9~}PyPEt%`yuaeotRN3YmMelh`;|H?Ed_$D65v^`}pg;+T~r7;E6#) zy+je^NIVK@@EW2PPW6qQ5l~Z8WByierY3&rZTJF!tqp4GND0{tD(Tz{D$!)6T8oaI z6FhA^woTNP<;PL*-e&Qff8@Nl^Ur`VGe=Lj-dp4`vaG*zCJ(-_(ugxe%stcB(#(rS%++f#r<8!9|AFQ?YSck(PWo&G}bKg$3napp%gF~6T7mALnXb&!YO zAhKD0@YOMKebx>plL_xVpt~kmwfp8f>sdw!^Sb;g zsX$8nyz}c41P*hDUw;BOoGr`eAZhHyclAdr83poP>`W-Gu0#C}k~z&S1m8mx=?(Y; zoN01~ZG|Ge1X-#T?Y5HvIx>7hM+Cvo+a6w_?t+(@?*;E$$$;x84iWr4F~LX3g8eVP z4ZY+5zK_qChjBOg;+jABh>K+a+X$@7eItE<<2RaZ0cAeKK7T6)^tAKm^SlTt5+q8$DV($EA^pX;#%{Ef1!lbjMxL6uY#o1#C$wI@_8F&6<~)e^nX4ChqR%h6tNL z<@LK44JIU*bsFC}U#QHHyDhRo)#U?cPDja>4ft+X5$^meaa-$oqEkN&oJhPl^)v5! zUoQBAZkd7HPu|7J?@RH-2I{ljX!B}N2p|%EtCwovImDUHA7r7!S*@vpPeUf}uGO!L zHNl?e)(NW+M>dOc@iztHgqQb(qpIP!<-2n~ z2_9sA-#bAktiQ_vKWNr06nyr+ume6gG7N>K1&{)7dR7QQ7Jj@2C_ZO|9<^v{ZXn(5 zC3HKJKHK%*ta(T9F`Kq51DM}qC!38PrW?WQgs`)lKNM|=H36B&oX^1Xx2#7AnZPSv z*Tb7cK~qE9c7Rqd!C7xaX>B8#PBp^R*x2jvdGM8uM!fcgJ#6hI6qS<2#r+n)RzF$A zwHPyQAo7UcnF5&4S=Tc!t33bpSEmGDf3vMb)Eqa-%kq8Kj#5HEy^sy69dKsTCX}43 z$D2Qd6LL?X#bh>zt-x9y3#nr(YGW-VEWA7KdDr`%v<^~g~vuac206zx|bPyM>5juWnn<0l* zlAO=hV~a+?nx&P{(ah^KqMMkr?bv=#;Aa<9psB?M zskc>-&?njBpn$a>C-KXJs&CR@=|9Z&KyU!f26dVR81r#giS2(LAYW?YJaG{la6Zci zUQY7@Db{dA7(=_(x(VPcgVa=BPu5_Cf>*X`QC-)9!TxT@D=O?g_>+br=ALgz1;^r< z412irS4jAp;ak|D*{GoiG4Z|*|9xqLAamB|ycW=E%^HK{fmf)Vu=k4( z)r;k?t&LukC!w^DQ`6Z3|taf}@Ss zV7R;+JPG?>ewBoCKhajNz%Td~l|}8TubolE9XfgPGzNI+uy=Pk{D~cy%z4ev+f=Oo zd8x~TXMN8X+Xk%jvyK%Z`*@uw&$5FD&vm(M(FZZYzArvrfjgd*!6dJ;l8OZNUX)h| zcUK4OJ3#E?J)l?M7kqTJfM1zikH^=ypsbR1wa%N(cMAouO<+%C@$fCD>8Q&Eab%K; zjSU){+Sx%v%?RNgA^Fg!YM%wW@a6~$9VUIY2-$#Qby{?&6a^JVEV#cKp5B8|TYn1f zL~YiIZ2}LMW?HLDxHGmKt`rItJKCZ9@QGb61i$!5IV$QJ@UPc(aP#s(X?Y$bGC>ZPiy>zR3Gb5g2b-gud`5U!Ha66)FSXOWH^A1FG$aAVCn}-QHzB{cL=2wogAHpA ziRXRWPr`53L5#j;0A5~5z6>VX8>HFqn0!d^dDCvxgSTtVHbFPx^Wv%`yAF0vZlvPM zyM*sMV;`=H@j=oQJrt62wX~hl(9}kOf&%om8a#H#8F&wNgMQd#G@RH*gPVkL`W-m? zQwj9_oZuf~D;738cjSQiU87l#qAD40e={6+jXjF|+-6Lh>w|ryCWA-#;Oa@V#DfpY zK8l6M|_eO2y3E(5jJFq$>Qvqh)Y*(_`RZ7x=pA zh$`|(#@Ik_y9wo_+VbC6z@BCPgvgRDLo3ob8GS=ai$A z$Zf)+KZ*hHGnXkN>F#m*E8LRW411?j7Itcf1$q$%5otf=#CrHozXQ3O--g!CPFQin z!aPJh-du5Xv7vt1!ANSAW`cHks`0@$Zn!0;Oi-f=pD9zXw?j2?)`0v2cyNt`2IS&= zjR~%eYPO^lX5Wi#N*4 z&%wjPL)>fYY94*;spl#^-TOaMr34_r=`0-j*}>kFhx$6Q4G6|NdmM2n&lcs){ut<9 z1NVWBaPzi9LyHmr_{4_Dz7gjt8&P2jM$F*zup>i97x*_gN?+m0w~Q!j7>IYamLWU8 ziMHB3kXu**clS2~Ys38@|ChIfv8|btukN9V7Jy)Oborf5ld)!jRyh zIC}g98X8S#Y%yDS4RwlG?7Y3Qn#lcjBqUW5Vq`c~n@~lYk&1F*OOQ=eU!oK?S??o1 zkLnY3!YJBuCfaH#mOnI{xjjOjJ7CVpp(FkYV zVx&J^OJ=wUl`T4)%u)!Mw6jIVk1Ehr3KZ4=A5!ohJ!=9Mh>DFCQj19#M{FOciH#T4 zfZ>KZHpcZ;3yX!FbzQX$^?u^SaTJ~{5b*tc{FRu9p>#OYB7`AZYYkMNjibs68?xdQ z*k~0v+LP+ln_J+G)H+&Q)Hj>?+0jlG^*zlpT&Oy(%L31&=sNXPg>R7tVPRpSWer+L zz>(jPtU#u7!k#9s&*@TixdUoqL_PMPBTYU?icFDxv8n_dWyODNK+hP;Ch5E+H zhWcleE!`)RmikTg?WjH{cT#oMbw#Gtj|$(?!nSSZ%}uK^zv|vH+3Wjt`14pAg~+C=5p0sR-`4Dok(_G8nsdD^em z>s|!ZEdP3 ze+U0zrULc{yb`J4q6oMk`CHAm`pCY3ZBCI_4i#J!0bP=RhuK#>NEs1~ge#2-E{cFI z$zPpvt9#e616KwWTo3_WlK%x}U-chW-R7?(D!3p5x+4G1zWY{Wz${?pyKnyT+oysH zBA_GrxB2dy10+=5S7%>Eh3YoXR8W3mO*`vQDLveu*9?4D%lGxYO9U|a@7ua+^^yOX zx0l%X={Qj9j;r3|DhseM8&vw*U40;@;VJ-yG0jUC%mpK+Zi39i1I=_2IfvfO=2q$$H_!55n=qipNzgR(O_Wsq32(}lL z{G;NM)U`xQo71%b)(1a=8dN`ihR<8%)9<_sf4WBt2V0=1qUdM)@$2PtPP~!-ApWnyd1dWtWT_djwot}=&e?c6<){iN?rp=GP zMY)f5fKQR{9-Ua42KMprJNOQ99Kqm0KBy|IfQO@AoZ1RUre7RK(B{Wq_;EPSHz;`i zLmRyF(K|m+7W5+8+Q|TQmzLuQ)Wab@GH3rm_8|MEaRg^KQ)oOnWN|93=*3a|f~MLb zKy9ay{P>9zMCwgHem?2t!_W5)lG8+86C4BEJXlrOzxKTo0zyMWF)$zyuk7^hRX=|9 z=$enWooyw!yV;^H=VzXT^dgqpA%G7-bF&Upv{yL{*A|f<|9G<>Kk0VWhnRf{Ro@}* zhb4}H{D#?gNca}BuVIHc0xnxzR)x*`^jLUj72bKuQABuheqW|`2;kFLXGaN7%x&s* zKYn(=YNAu!74vMM^BF^0AiOQYvkx&~QG?tE$%am9?M)~r7dGRr?ZTC{xBU2nhRft7 zPFv|A?@{>8>l97J5Zn9>`K>RKg#wuToouxT9Udq`+1Qzy{r-E)kAJXV00xGWui)u9 zU|T@a%mzFI`eMxOU|JAhqcw@Y7BzLqe=n;aKYN+USu;?)D+QYB$c%Qq>4O)60G@q4 z`O>PM7S^61y%|Tqe*A^oHsScU#YlavnY_aK{%ldm02Y4kXe2t>pkUkC%}t-rXyj#z-@&Tk;Sb-`Pq4b4Zb~4OuqY$z2dvi&dbu7{b1ky`(J7# zmst8s55g--}l=u9!vHXb$<%v?ww+oFVX5JC1?>_ElN8F0Ninw*&rW6KT*+_W)t%#Sn()Ls8l22;L?!v|7t14XO-L2`$pz2_JOc-5Czd>S z9>>lN!kV{>Q9$Kv90s6_wrh@Zbsz^^4%q)=*!Grwq)5#oEl*<%EVK!;2$`zzj#M_!hO>omK#a$0pp{RuZ zR1W#>=NHf)dLpUs^&8@S72(1h*gv0r^IhnV9jSi% z-RYWIpUYk<_CWRB?@qgyvy24+eH}Y+IR|;MwmVsZ7c2aK@tcJL)Kj7Vi-Wu}$MnB# lg*Q{r7xMoR@GFhLYtdid(8WAIg~3gkG%aEC^>hFH{{cyqcI^NF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Supermatter/supermatter_sliver.rsi/icon.png b/Resources/Textures/Supermatter/supermatter_sliver.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2187706b107afd46d3d977ef25092feee253cd8b GIT binary patch literal 357 zcmV-r0h<1aP)ugi+s(f3-PG?@+kv<2$y(1BY3}*}r{UA3Re!wlF Date: Sat, 3 Aug 2024 00:42:15 +0000 Subject: [PATCH 53/82] Automatic Changelog Update (#341) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 51dd6418484..6d6093caef4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4839,3 +4839,9 @@ Entries: breaking the game. id: 6205 time: '2024-08-02T22:52:41.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: 'Supermatter Engines have been implemented. ' + id: 6206 + time: '2024-08-03T00:41:54.0000000+00:00' From d2e976e91d8ddf3af2abaa56696033a2cce4b05f Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Fri, 2 Aug 2024 23:56:09 -0400 Subject: [PATCH 54/82] Fix NoMaterialArbitrage Test Fail (#653) # Description This test fail has annoyed me for the last time. ![image](https://github.com/user-attachments/assets/84dea50c-d907-4db1-b58e-fd3f9df61bbf) --- Resources/Prototypes/Entities/Structures/Furniture/dresser.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index 2caa4010ca0..6c50b334091 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -51,6 +51,8 @@ parent: Dresser suffix: Filled components: + - type: StaticPrice + price: 5 - type: StorageFill contents: - id: ClothingNeckLGBTPin From 9d25d0f1831039b58565258a617643c20fde696e Mon Sep 17 00:00:00 2001 From: Tmanzxd <164098915+Tmanzxd@users.noreply.github.com> Date: Sat, 3 Aug 2024 06:02:45 -0500 Subject: [PATCH 55/82] =?UTF-8?q?Fix=20for=20Failed=20to=20Cherry-Pick=20P?= =?UTF-8?q?R=20#26217:=20Fix=20Pressure=20Damage=20Calculat=E2=80=A6=20(#6?= =?UTF-8?q?55)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #245 --- .../Atmos/EntitySystems/BarotraumaSystem.cs | 107 ++++++++---------- Content.Shared/Atmos/Atmospherics.cs | 2 +- .../Prototypes/Atmospherics/thresholds.yml | 9 +- 3 files changed, 53 insertions(+), 65 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs index fc77a1c8d94..d55ef355f02 100644 --- a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs +++ b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs @@ -153,9 +153,6 @@ public float GetFeltLowPressure(EntityUid uid, BarotraumaComponent barotrauma, f return Math.Min(modified, Atmospherics.OneAtmosphere); } - ///

- /// Returns adjusted pressure after having applied resistances from equipment and innate (if any), to check against a high pressure hazard threshold - /// public float GetFeltHighPressure(EntityUid uid, BarotraumaComponent barotrauma, float environmentPressure) { if (barotrauma.HasImmunity) @@ -226,69 +223,59 @@ public override void Update(float frameTime) pressure = MathF.Max(mixture.Pressure, 1f); } - switch (pressure) + pressure = pressure switch { - // Low pressure. - case <= Atmospherics.WarningLowPressure: - pressure = GetFeltLowPressure(uid, barotrauma, pressure); - - if (pressure > Atmospherics.WarningLowPressure) - goto default; + // Adjust pressure based on equipment. Works differently depending on if it's "high" or "low". + <= Atmospherics.WarningLowPressure => GetFeltLowPressure(uid, barotrauma, pressure), + >= Atmospherics.WarningHighPressure => GetFeltHighPressure(uid, barotrauma, pressure), + _ => pressure + }; + if (pressure <= Atmospherics.HazardLowPressure) + { + // Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear. + _damageableSystem.TryChangeDamage(uid, barotrauma.Damage * Atmospherics.LowPressureDamage, true, false); + if (!barotrauma.TakingDamage) + { + barotrauma.TakingDamage = true; + _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} started taking low pressure damage"); + } - // Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear. - _damageableSystem.TryChangeDamage(uid, barotrauma.Damage * Atmospherics.LowPressureDamage, true, false); + _alertsSystem.ShowAlert(uid, AlertType.LowPressure, 2); + } + else if (pressure >= Atmospherics.HazardHighPressure) + { + var damageScale = MathF.Min(((pressure / Atmospherics.HazardHighPressure) - 1) * Atmospherics.PressureDamageCoefficient, Atmospherics.MaxHighPressureDamage); - if (!barotrauma.TakingDamage) - { - barotrauma.TakingDamage = true; - _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} started taking low pressure damage"); - } + _damageableSystem.TryChangeDamage(uid, barotrauma.Damage * damageScale, true, false); - if (pressure <= Atmospherics.HazardLowPressure) - { - _alertsSystem.ShowAlert(uid, AlertType.LowPressure, 2); + _alertsSystem.ShowAlert(uid, AlertType.HighPressure, 2); + } + else + { + // Within safe pressure limits + if (barotrauma.TakingDamage) + { + barotrauma.TakingDamage = false; + _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} stopped taking pressure damage"); + } + if (!barotrauma.TakingDamage) + { + barotrauma.TakingDamage = true; + _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} started taking high pressure damage"); + } + // Set correct alert. + switch (pressure) + { + case <= Atmospherics.WarningLowPressure: + _alertsSystem.ShowAlert(uid, AlertType.LowPressure, 1); break; - } - - _alertsSystem.ShowAlert(uid, AlertType.LowPressure, 1); - break; - - // High pressure. - case >= Atmospherics.WarningHighPressure: - pressure = GetFeltHighPressure(uid, barotrauma, pressure); - - if (pressure < Atmospherics.WarningHighPressure) - goto default; - - var damageScale = MathF.Min((pressure / Atmospherics.HazardHighPressure) * Atmospherics.PressureDamageCoefficient, Atmospherics.MaxHighPressureDamage); - - // Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear. - _damageableSystem.TryChangeDamage(uid, barotrauma.Damage * damageScale, true, false); - - if (!barotrauma.TakingDamage) - { - barotrauma.TakingDamage = true; - _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} started taking high pressure damage"); - } - - if (pressure >= Atmospherics.HazardHighPressure) - { - _alertsSystem.ShowAlert(uid, AlertType.HighPressure, 2); + case >= Atmospherics.WarningHighPressure: + _alertsSystem.ShowAlert(uid, AlertType.HighPressure, 1); break; - } - - _alertsSystem.ShowAlert(uid, AlertType.HighPressure, 1); - break; - - // Normal pressure. - default: - if (barotrauma.TakingDamage) - { - barotrauma.TakingDamage = false; - _adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} stopped taking pressure damage"); - } - _alertsSystem.ClearAlertCategory(uid, AlertCategory.Pressure); - break; + default: + _alertsSystem.ClearAlertCategory(uid, AlertCategory.Pressure); + break; + } } } } diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 6a8587ca239..78b692d52de 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -271,7 +271,7 @@ public static class Atmospherics public const float HazardLowPressure = 20f; /// - /// The amount of pressure damage someone takes is equal to (pressure / HAZARD_HIGH_PRESSURE)*PRESSURE_DAMAGE_COEFFICIENT, + /// /// The amount of pressure damage someone takes is equal to ((pressure / HAZARD_HIGH_PRESSURE) - 1)*PRESSURE_DAMAGE_COEFFICIENT /// with the maximum of MaxHighPressureDamage. /// public const float PressureDamageCoefficient = 4; diff --git a/Resources/Prototypes/Atmospherics/thresholds.yml b/Resources/Prototypes/Atmospherics/thresholds.yml index 9b09d64a10c..22ca42869ed 100644 --- a/Resources/Prototypes/Atmospherics/thresholds.yml +++ b/Resources/Prototypes/Atmospherics/thresholds.yml @@ -12,13 +12,14 @@ - type: alarmThreshold id: stationPressure upperBound: !type:AlarmThresholdSetting - threshold: 550 # as defined in Atmospherics.cs + threshold: 550 # HazardHighPressure from Atmospherics.cs lowerBound: !type:AlarmThresholdSetting - threshold: 20 # as defined in Atmospherics.cs + # Actual low pressure damage threshold is at 20 kPa, but below ~85 kPa you can't breathe due to lack of oxygen. + threshold: 20 upperWarnAround: !type:AlarmThresholdSetting - threshold: 0.7 + threshold: 0.7 # 385 kPa, WarningHighPressure from Atmospherics.cs lowerWarnAround: !type:AlarmThresholdSetting - threshold: 2.5 + threshold: 1.05 # ~90 kPa # a reminder that all of these are percentages (where 1 is 100%), # so 0.01 is 1%, From 7e822bec5e9bc4c498f872a8302b06591a08b21b Mon Sep 17 00:00:00 2001 From: SleepyScarecrow <136123749+SleepyScarecrow@users.noreply.github.com> Date: Sat, 3 Aug 2024 07:04:01 -0400 Subject: [PATCH 56/82] Changed Rouny Sprite (#649) # Description Changed the rouny sprite to be less simplistic --- # Changelog :cl: Tilkku - tweak: Rouny Sprite Changed --- .../Mobs/Aliens/Xenos/rouny.rsi/crit.png | Bin 1357 -> 3967 bytes .../Mobs/Aliens/Xenos/rouny.rsi/dead.png | Bin 2373 -> 5646 bytes .../Mobs/Aliens/Xenos/rouny.rsi/meta.json | 42 +++++++++--------- .../Mobs/Aliens/Xenos/rouny.rsi/running.png | Bin 3810 -> 11054 bytes .../Mobs/Aliens/Xenos/rouny.rsi/sleeping.png | Bin 600 -> 2887 bytes 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/crit.png b/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/crit.png index 0be8b9b1ddb6724ea152355e6589b13075437b12..23a7ec0af6ce506eb43bb5cea68bc2adc5a96e93 100644 GIT binary patch delta 3960 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 z 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 delta 2354 zcmV-23C;G7EX5L#EPuoR01m_fl`9S#000R0Nkl6~aFxk!Y2Y#k57}IzQ zmUEmc6{Jjn^}zXHd_EXv)5k&ICEQ#{nt+R)`}u_n=YLUBewFLI3-7#s5XA)?Cz}`! ze(Fc*O-8}E2sqXLBc9`2h$Ur>Y;kctJ9X)4-ZgX#>u)>HLJl!t_M0I zJr^$(_J4YY@ppLKWAzcRLZN6+1rZ4e__(!%uU!0Fh9r@z&LK67qfQth=S$C*^w*el zA`%ktNaa;q$5SLlqD(Cl%O^Bu60^j#i=jw^MZ1r3f-P!ETGtGdXOkZs zaw(kiAQZU>k5+ait;|@YO+aKum}u7jQ+(Nh1?lX|HbO`saXV58vax$yw zKoBqelPbmQfE7kps~S$^cJLnGF<8b6NR(=*B@({zc#yYzz|&Ge>eV2vf7x2IF%YS6 z4S(`b88f4Q{I`rJ@7D43MhP|b4h-~#jx#c0?K%hY=K??9rUT8RW6J*r_h7%Qi9UiT z=PbZMH*U}Z8L1&st_H`N@g-2uL=^%&h$5l$D#y`w#WcLTGkT2Q2lM#$9Wq*)qt9J) zbCi@aC<<_u+P`{05BnV#k(~}QvINA8mwzn>Hay61;I)uapMOEZp524!^#pOhI?p_I z{%jC;-Y%K4w*?LD=>lFhIv|tG^Gb=p4NSZBR>@S!<#vuYAJS8bGVzc$0mAr(S0z00 zJqLzp(i<8kSsx`dUXuT|U4IT3PL7`6=irGoUhMls#=K$%Lk~&&m33##fLHzg?pr*n*HL0*Lcqk6>!tki?q>i>Wj%Sfe zbIft##4sKvbqE4PG^o0V!etYM&6-|Hk%zHLY_5%LDs8F?gwtO^!hfKdHFEfM19cTh z+jxPb2?!VgC=O-Z{e|n?-Vq-2^nCzs?+)&?UUjnNqg6=!yto>=pHn-sji*DxKK1(81#6amBD z&^kA41QwEhz;wdMFp_tIEPz`|6zu$oj@3uz+irNic2UvnvVXb0ZlIQ`K+91IGmaw;3#_Jp0;T@%(2KtQjpXhgo zX}=n?HZZM+UxGaCr&|W&$~8dFU=F3W2cCp`4e~YDjsdr8N9cvB-L_if{$SL7GlaB@ zA!~OyTpOr`sPYWPec8Erb)+f=!W%2Cl-Ktoeu$l@*MI35*$|1`BL9mg;cupF5xae6 zhlwB|W1FJp15Ltyex{d1Mt>wVk%q_mhfMvrB5Qvr8T*FGGWcE;X+>%-!spWbamADq zVCVUxep5&W#*$Et+$bfaL&B625F0__^|2)(W;vuv!jvl@-b>c8kVz7zoB#pw(A5AR z>wKgN1b>QSKc|u>WDNn41};-e(QYGW zJAV*+on%SK8Uiew@pPg>EynCPFJA4ILoAZX5wePa(2V&mSCH`!s0(mCj#G=wIxW~1 zQR8rmSw(AM>KAn&rYa4$6OfQ~1PE9Tu`4KvG4aatM94}4>?EGlSb-5gkw^vq Y2T4l%rHv@+#sB~S07*qoM6N<$f|%iCJOBUy diff --git a/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/meta.json index ce2209e72dd..cc020d01c46 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/meta.json @@ -1,24 +1,24 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/tgstation/TerraGov-Marine-Corps/blob/a2034543920664ddf0c0f3c681bf1d8003dc2ade/icons/Xeno/2x2_Xenos.dmi", - "size": { - "x": 64, - "y": 64 - }, - "states": [ - { - "name": "running", - "directions": 4 + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "DakoDragon, discord ID: 56038550335922176", + "size": { + "x": 64, + "y": 64 }, - { - "name": "sleeping" - }, - { - "name": "dead" - }, - { - "name": "crit" - } - ] + "states": [ + { + "name": "running", + "directions": 4 + }, + { + "name": "sleeping" + }, + { + "name": "dead" + }, + { + "name": "crit" + } + ] } diff --git a/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/running.png b/Resources/Textures/Mobs/Aliens/Xenos/rouny.rsi/running.png index 2bbe1c603ebd34666782723ceaa52f655f4d388e..1438285113f2ade192e11385efe9fecfc529ede8 100644 GIT binary patch literal 11054 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 IKbeL7AJieO4*&oF literal 3810 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 From b5bc58386aac307b206e388810b06011ab6ba4b2 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sat, 3 Aug 2024 11:04:23 +0000 Subject: [PATCH 57/82] Automatic Changelog Update (#649) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6d6093caef4..c1c317f536f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4845,3 +4845,9 @@ Entries: message: 'Supermatter Engines have been implemented. ' id: 6206 time: '2024-08-03T00:41:54.0000000+00:00' +- author: Tilkku + changes: + - type: Tweak + message: Rouny Sprite Changed + id: 6207 + time: '2024-08-03T11:04:01.0000000+00:00' From 75b36bff1eacf4db236c4128f1b6f2389efe5236 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Sun, 4 Aug 2024 01:34:22 +0300 Subject: [PATCH 58/82] Fix Event Manager Allowing to Start Multiple Events of the Same Type in a Short Time Window (#645) # Description Makes it so that the event scheduler doesn't pick events that were already added (but not yet ended). In order to fix this:

![image](https://github.com/user-attachments/assets/fd73dbce-7cbc-489b-8990-7ae791723351)

--- Content.Server/StationEvents/EventManagerSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 261e8ca46dd..2d8606e9293 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -162,7 +162,7 @@ public TimeSpan TimeSinceLastEvent(EntityPrototype stationEvent) private bool CanRun(EntityPrototype prototype, StationEventComponent stationEvent, int playerCount, TimeSpan currentTime) { - if (GameTicker.IsGameRuleActive(prototype.ID)) + if (GameTicker.IsGameRuleAdded(prototype.ID)) return false; if (stationEvent.MaxOccurrences.HasValue && GetOccurrences(prototype) >= stationEvent.MaxOccurrences.Value) From dd2a0cf29d2935b3adcfd9eff2caaedb606cfbff Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sat, 3 Aug 2024 20:23:53 -0400 Subject: [PATCH 59/82] Remove Clothesmate Bloat (#637) # Description The original intended purpose of Loadouts as designed by Death was to serve as the ultimate solution to the Clothesmate BLOAT. Ironically, when Wizden made their own Loadouts, they made a version of Loadout that is incapable of this. Now that we've more significantly fleshed out EE Loadouts to fulfill that purpose, I can finally trim down the Clothesmate. I haven't touched any of the other vendors, just the Clothesmate. As an aside, the cost of a Clothing restock has gone down from a fucking ridiculous 4500, down to only 1500. Making it something Cargo techs can actually reasonably buy. Clothesmates now only contain the absolute barest minimum clothes for a greytider. This also helpfully serves as a balancing act against Loadouts being able to provide items other than clothes. It is much harder to get clothing outside of loadouts, preventing people from spamming useless clothing entities on the station. If you spend all your loadout points on items, you are locking yourself out of wearing actually nice drip. Choose how you spend your points wisely!

Media

![image](https://github.com/user-attachments/assets/9f6d7668-c8ba-4404-834c-b4f885b6617f)

--- # Changelog :cl: - tweak: Due to budget cuts, Nanotrasen has ceased stocking Clothesmate vendors with more clothing than the average cargo tech can afford. Civilians are advised to bring their own clothes to the station if they wish to wear anything other than grey. --- .../Catalog/Cargo/cargo_vending.yml | 2 +- .../Inventories/clothesmate.yml | 117 ++---------------- .../Structures/Machines/vending_machines.yml | 2 +- 3 files changed, 15 insertions(+), 106 deletions(-) diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index 93c60e4caa0..7062b2eb155 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -33,7 +33,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockClothesFilled - cost: 4500 + cost: 1500 category: cargoproduct-category-name-service group: market diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 2c4c27137f0..bc8f73d618c 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -1,116 +1,25 @@ - type: vendingMachineInventory id: ClothesMateInventory startingInventory: - ClothingBackpack: 5 - ClothingBackpackDuffel: 5 - ClothingBackpackSatchel: 3 + # STOP! ADD NOTHING TO THIS! GO PUT YOUR CLOTHES IN LOADOUTS INSTEAD! + ClothingBackpack: 2 + ClothingBackpackDuffel: 2 + ClothingBackpackSatchel: 2 ClothingBackpackSatchelLeather: 2 - ClothingRandomSpawner: 8 - ClothingHeadHatBeret: 4 + ClothingRandomSpawner: 6 ClothingHeadBandBlack: 2 - ClothingHeadBandBlue: 2 - ClothingHeadBandGreen: 2 - ClothingHeadBandRed: 2 - ClothingHeadBandSkull: 2 - ClothingHeadHatGreyFlatcap: 3 - ClothingHeadHatBrownFlatcap: 3 - ClothingUniformJumpsuitColorGrey: 8 - ClothingUniformJumpskirtColorGrey: 8 - ClothingUniformJumpsuitColorWhite: 3 - ClothingUniformJumpskirtColorWhite: 3 - ClothingUniformJumpsuitColorBlack: 3 - ClothingUniformJumpskirtColorBlack: 3 - ClothingUniformJumpsuitColorBlue: 2 - ClothingUniformJumpskirtColorBlue: 2 - ClothingUniformJumpsuitColorYellow: 2 - ClothingUniformJumpskirtColorYellow: 2 - ClothingUniformJumpsuitColorGreen: 2 - ClothingUniformJumpskirtColorGreen: 2 - ClothingUniformJumpsuitColorOrange: 2 - ClothingUniformJumpskirtColorOrange: 2 - ClothingUniformJumpsuitColorRed: 2 - ClothingUniformJumpskirtColorRed: 2 - ClothingUniformJumpsuitColorPurple: 2 - ClothingUniformJumpskirtColorPurple: 2 - ClothingUniformJumpsuitColorPink: 2 - ClothingUniformJumpskirtColorPink: 2 - ClothingUniformJumpsuitColorDarkBlue: 2 - ClothingUniformJumpskirtColorDarkBlue: 2 - ClothingUniformJumpsuitColorDarkGreen: 2 - ClothingUniformJumpskirtColorDarkGreen: 2 - ClothingUniformJumpsuitColorTeal: 2 - ClothingUniformJumpskirtColorTeal: 2 - ClothingUniformJumpsuitHawaiBlack: 2 - ClothingUniformJumpsuitHawaiBlue: 2 - ClothingUniformJumpsuitHawaiRed: 2 - ClothingUniformJumpsuitHawaiYellow: 2 - ClothingUniformJumpsuitFlannel: 2 - ClothingUniformJumpsuitCasualBlue: 2 - ClothingUniformJumpskirtCasualBlue: 2 - ClothingUniformJumpsuitCasualPurple: 2 - ClothingUniformJumpskirtCasualPurple: 2 - ClothingUniformJumpsuitCasualRed: 2 - ClothingUniformJumpskirtCasualRed: 2 - ClothingUniformJumpsuitTshirtJeans: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitTshirtJeansGray: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitTshirtJeansPeach: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitJeansGreen: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitJeansRed: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitJeansBrown: 2 # Nyano - Clothing addition - ClothingUniformJumpsuitLostTourist: 2 # Nyano - Clothing addition - ClothingShoesColorBlack: 8 - ClothingShoesColorBrown: 4 - ClothingShoesColorWhite: 3 - ClothingShoesColorBlue: 2 - ClothingShoesColorYellow: 2 - ClothingShoesColorGreen: 2 - ClothingShoesColorOrange: 2 - ClothingShoesColorRed: 2 - ClothingShoesColorPurple: 2 - ClothingHeadHatGreysoft: 8 - ClothingHeadHatMimesoft: 3 - ClothingHeadHatBluesoft: 2 - ClothingHeadHatYellowsoft: 2 - ClothingHeadHatGreensoft: 2 - ClothingHeadHatOrangesoft: 2 - ClothingHeadHatRedsoft: 2 - ClothingHeadHatBlacksoft: 2 - ClothingHeadHatPurplesoft: 2 + ClothingHeadHatGreyFlatcap: 2 + ClothingUniformJumpsuitColorGrey: 2 + ClothingUniformJumpskirtColorGrey: 2 + ClothingShoesColorBlack: 4 + ClothingHeadHatGreysoft: 2 ClothingHeadHatCorpsoft: 2 - ClothingOuterWinterCoat: 2 # Nyano - Clothing addition - ClothingOuterWinterCoatLong: 2 # Nyano - Clothing addition - ClothingOuterWinterCoatPlaid: 2 # Nyano - Clothing addition - ClothingOuterCoatHyenhSweater: 2 # Nyano - Clothing addition - ClothingOuterCoatLettermanBlue: 2 # Nyano - Clothing addition - ClothingOuterCoatLettermanRed: 2 # Nyano - Clothing addition - ClothingOuterDenimJacket: 2 # DeltaV - Clothing addition - ClothingOuterCorporateJacket: 2 # DeltaV - Clothing addition - ClothingOuterCsCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterEeCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterHiCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterHmCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterIdCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterZhCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterGeCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterFaCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterDdCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingOuterBcCorporateJacket: 2 # Einstein Engines - Clothing addition - ClothingShoesBootsFishing: 2 # Nyano - Clothing addition - ClothingHeadTinfoil: 2 # Nyano - Clothing addition - ClothingHeadFishCap: 2 - ClothingHeadRastaHat: 2 + ClothingOuterWinterCoat: 2 + ClothingOuterCorporateJacket: 2 ClothingBeltStorageWaistbag: 3 ClothingEyesGlasses: 6 ClothingHandsGlovesColorBlack: 4 - ClothingHandsGlovesColorGray: 4 - ClothingHandsGlovesColorBrown: 2 - ClothingHandsGlovesColorWhite: 2 - ClothingHandsGlovesColorRed: 2 - ClothingHandsGlovesColorBlue: 2 - ClothingHandsGlovesColorGreen: 2 - ClothingHandsGlovesColorOrange: 2 - ClothingHandsGlovesColorPurple: 2 - ClothingEyesGlassesCheapSunglasses: 3 + ClothingEyesGlassesCheapSunglasses: 2 contrabandInventory: ClothingMaskNeckGaiter: 2 ClothingUniformJumpsuitTacticool: 1 diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index fcc6e4974c1..02cdd80af35 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -322,7 +322,7 @@ parent: VendingMachine id: VendingMachineClothing name: ClothesMate - description: A vending machine for clothing. + description: A vending machine for dispensing the cheapest clothing Nanotrasen can buy. components: - type: VendingMachine pack: ClothesMateInventory From 62045fff8af44c1e278ddbd9ea214aea59a9b206 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 4 Aug 2024 00:24:28 +0000 Subject: [PATCH 60/82] Automatic Changelog Update (#637) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c1c317f536f..f947f711fb2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4851,3 +4851,13 @@ Entries: message: Rouny Sprite Changed id: 6207 time: '2024-08-03T11:04:01.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: >- + Due to budget cuts, Nanotrasen has ceased stocking Clothesmate vendors + with more clothing than the average cargo tech can afford. Civilians are + advised to bring their own clothes to the station if they wish to wear + anything other than grey. + id: 6208 + time: '2024-08-04T00:23:53.0000000+00:00' From fb7c4d9da85d283fa9dac846ba9f272abc819f15 Mon Sep 17 00:00:00 2001 From: Tmanzxd <164098915+Tmanzxd@users.noreply.github.com> Date: Sat, 3 Aug 2024 20:15:19 -0500 Subject: [PATCH 61/82] Fixes Failed to Cherry-Pick PR #25986: Return Detective to Security #145 (#656) Partial fix to #145, as the changes in inventory will need reflected in the Security Loadout system which will be in another PR. Made so Detective has the same access as Security Officers. --- Resources/Prototypes/Roles/Jobs/Security/detective.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index 0ed2eba9556..861088b5e5c 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -17,6 +17,8 @@ - Maintenance - Service - Detective + - External + - Cryogenics special: - !type:AddImplantSpecial implants: [ MindShieldImplant ] From 1509caa60d2d967031577dd590f875f2e02ffafc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 3 Aug 2024 18:22:30 -0700 Subject: [PATCH 62/82] Update Credits (#667) This is an automated Pull Request. This PR updates the GitHub contributors in the credits section. Co-authored-by: SimpleStation Changelogs --- 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 e6c7690ad37..6e47a71e43f 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, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, 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, Deeeeja, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, 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, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, 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, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, 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, Aexxie, africalimedrop, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, angelofallars, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, aspiringLich, avghdev, AzzyIsNotHere, BananaFlambe, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, BramvanZijp, Brandon-Huu, Bribrooo, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CaasGit, CakeQ, CaptainSqrBeard, Carbonhell, Carolyn3114, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, CodedCrow, ColdAutumnRain, Colin-Tel, 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, Deeeeja, deepdarkdepths, Delete69, deltanedas, DeltaV-Bot, DerbyX, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, 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, FoxxoTrystan, freeman2651, Froffy025, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, graevy, GreyMario, Guess-My-Name, gusxyz, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, Hoolny, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, Interrobang01, IProduceWidgets, ItsMeThom, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTrotter, KaiShibaa, kalane15, kalanosh, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Ko4ergaPunk, komunre, koteq, Krunklehorn, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, leonardo-dabepis, LetterN, Level10Cybermancer, lever1209, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, LovelyLophi, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, misandrie, MishaUnity, MisterMecky, Mith-randalf, Mnemotechnician, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nairodian, Naive817, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, OCOtheOmega, OctoRocket, OldDanceJacket, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, PHCodes, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, ProfanedBane, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, ShadowCommander, Shadowtheprotogen546, SignalWalker, SimpleStation14, Simyon264, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, spoogemonster, ssdaniel24, stalengd, Stealthbomber16, stellar-novas, StrawberryMoses, superjj18, SweptWasTaken, Szunti, TadJohnson00, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, Tmanzxd, tmtmtl30, TokenStyle, tom-leys, tomasalves8, Tomeno, Tornado-Technology, tosatur, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, UnicornOnLSD, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, VMSolidus, volundr-, Voomra, Vordenburg, vulppine, wafehling, WarMechanic, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem From f6a5a2fe7e76892ddd0c1148fc61d54499e12a6c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 4 Aug 2024 02:26:34 -0400 Subject: [PATCH 63/82] Add 4 Missing Vendors To Vendor Spawners (#639) # Description https://github.com/Simple-Station/Einstein-Engines/pull/400 added 4 new vendors that were never implemented in the game's spawners, so they never actually appeared ingame. This PR adds them to random vendor spawners, so that they'll show up on stations. # Changelog :cl: - add: SweatMAX, "hot foods", Mars Mart, and Nippon-tan vendors have all been added to vendor spawners. --- .../Prototypes/Entities/Markers/Spawners/Random/vending.yml | 4 ++++ .../Entities/Markers/Spawners/Random/vendingdrinks.yml | 1 + 2 files changed, 5 insertions(+) diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/vending.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/vending.yml index d55a7916b46..ca68d7df53b 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/vending.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/vending.yml @@ -31,4 +31,8 @@ - VendingMachineSoda - VendingMachineStarkist - VendingMachineSpaceUp + - VendingMachineFitness + - VendingMachineHotfood + - VendingMachineSolsnack + - VendingMachineWeeb chance: 1 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/vendingdrinks.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/vendingdrinks.yml index a911b7ebfc0..1e452098531 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/vendingdrinks.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/vendingdrinks.yml @@ -22,4 +22,5 @@ - VendingMachineSoda - VendingMachineStarkist - VendingMachineSpaceUp + - VendingMachineFitness chance: 1 From 1c26a1064595eb1956726b59a566a2d11aa5a142 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 4 Aug 2024 06:26:57 +0000 Subject: [PATCH 64/82] Automatic Changelog Update (#639) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f947f711fb2..878c3a83447 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4861,3 +4861,11 @@ Entries: anything other than grey. id: 6208 time: '2024-08-04T00:23:53.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: >- + SweatMAX, "hot foods", Mars Mart, and Nippon-tan vendors have all been + added to vendor spawners. + id: 6209 + time: '2024-08-04T06:26:34.0000000+00:00' From 23fc467bd1723d161b83b5c117d07c5b7043e2df Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Sun, 4 Aug 2024 17:30:31 +0800 Subject: [PATCH 65/82] New Trait: Voracious (#668) # Description **Voracious** is a 1-point Physical trait that makes you eat and drink twice as fast. Inspired by the SS13 trait of the same name. Roughly based on the Parkstation implementation of Voracious by @DEATHB4DEFEAT. ## Technical Details The new component `ConsumeDelayModifierComponent` is rather generic, and can decrease or _increase_ the consumption speed of food and/or drinks. This gives room to add a negative trait that includes slower eating/drinking. ## Media ![image](https://github.com/user-attachments/assets/f8475b2a-de0b-4cae-83c6-8a280139bfd8) # Changelog :cl: Skubman add: Add the Voracious trait, a 1-point trait that makes you eat and drink twice as fast. --- .../Nutrition/EntitySystems/DrinkSystem.cs | 7 +++++- .../Nutrition/EntitySystems/FoodSystem.cs | 7 +++++- .../Assorted/ConsumeDelayModifierComponent.cs | 22 +++++++++++++++++++ Resources/Locale/en-US/traits/traits.ftl | 5 +++++ Resources/Prototypes/Traits/skills.yml | 9 ++++++++ 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 Content.Server/Traits/Assorted/ConsumeDelayModifierComponent.cs diff --git a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs index 47e7fa6802c..2249926baab 100644 --- a/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/DrinkSystem.cs @@ -7,6 +7,7 @@ using Content.Server.Inventory; using Content.Server.Nutrition.Components; using Content.Server.Popups; +using Content.Server.Traits.Assorted.Components; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.CCVar; @@ -279,9 +280,13 @@ private bool TryDrink(EntityUid user, EntityUid target, DrinkComponent drink, En var flavors = _flavorProfile.GetLocalizedFlavorsMessage(user, drinkSolution); + var drinkDelay = drink.Delay; + if (TryComp(target, out var delayModifier)) + drinkDelay *= delayModifier.DrinkDelayMultiplier; + var doAfterEventArgs = new DoAfterArgs(EntityManager, user, - forceDrink ? drink.ForceFeedDelay : drink.Delay, + forceDrink ? drink.ForceFeedDelay : drinkDelay, new ConsumeDoAfterEvent(drink.Solution, flavors), eventTarget: item, target: target, diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index 06d1c4b42d3..84355f03c16 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Nutrition.Components; using Content.Server.Popups; using Content.Server.Stack; +using Content.Server.Traits.Assorted.Components; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.Body.Organ; @@ -176,9 +177,13 @@ private void OnFeedFood(Entity entity, ref AfterInteractEvent arg _adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(target):target} is eating {ToPrettyString(food):food} {SolutionContainerSystem.ToPrettyString(foodSolution)}"); } + var foodDelay = foodComp.Delay; + if (TryComp(target, out var delayModifier)) + foodDelay *= delayModifier.FoodDelayMultiplier; + var doAfterArgs = new DoAfterArgs(EntityManager, user, - forceFeed ? foodComp.ForceFeedDelay : foodComp.Delay, + forceFeed ? foodComp.ForceFeedDelay : foodDelay, new ConsumeDoAfterEvent(foodComp.Solution, flavors), eventTarget: food, target: target, diff --git a/Content.Server/Traits/Assorted/ConsumeDelayModifierComponent.cs b/Content.Server/Traits/Assorted/ConsumeDelayModifierComponent.cs new file mode 100644 index 00000000000..aa551a79f76 --- /dev/null +++ b/Content.Server/Traits/Assorted/ConsumeDelayModifierComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Server.Traits.Assorted.Components; + +/// +/// This is used for any trait that modifies how fast an entity consumes food and drinks. +/// +[RegisterComponent] +public sealed partial class ConsumeDelayModifierComponent : Component +{ + /// + /// What to multiply the eating delay by. + /// + [DataField] + public float FoodDelayMultiplier { get; set; } = 1f; + + /// + /// What to multiply the drinking delay by. + /// + [DataField] + public float DrinkDelayMultiplier { get; set; } = 1f; +} diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index cd5d1782ba3..25c309476f0 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -55,3 +55,8 @@ trait-name-Foreigner = Foreigner trait-description-Foreigner = For one reason or another you do not speak this station's primary language. Instead, you have a translator issued to you that only you can use. + +trait-name-Voracious = Voracious +trait-description-Voracious = + Nothing gets between you and your food. + Your endless consumption of food and drinks is twice as fast. diff --git a/Resources/Prototypes/Traits/skills.yml b/Resources/Prototypes/Traits/skills.yml index 2cfbd244e7e..6350cdc3c23 100644 --- a/Resources/Prototypes/Traits/skills.yml +++ b/Resources/Prototypes/Traits/skills.yml @@ -31,3 +31,12 @@ inverted: true species: - Felinid + +- type: trait + id: Voracious + category: Physical + points: -1 + components: + - type: ConsumeDelayModifier + foodDelayMultiplier: 0.5 + drinkDelayMultiplier: 0.5 From 09e11deea66600deac0694cecaa6b46139a92111 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Sun, 4 Aug 2024 09:30:53 +0000 Subject: [PATCH 66/82] Automatic Changelog Update (#668) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 878c3a83447..5ea713fda4f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4869,3 +4869,11 @@ Entries: added to vendor spawners. id: 6209 time: '2024-08-04T06:26:34.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: >- + Add the Voracious trait, a 1-point trait that makes you eat and drink + twice as fast. + id: 6210 + time: '2024-08-04T09:30:31.0000000+00:00' From 0b0e5f3998cff978283b76b5a1b5f8bd62bc97d7 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Sun, 4 Aug 2024 10:14:12 -0400 Subject: [PATCH 67/82] Zombie Improvements Take 2 (#652) # Description Problem: "Players like to stall zombie rounds" Solution: Fix the Anti-Stall mechanic. The set of functions for handling the automatic shuttle call now correctly only checks "The" station, rather than any grid containing a StationDataComponent. By using the less permissive _gameTicker.GetSpawnableStations(); function, the zombie gamerule no longer includes stations such as Centcomm, Planet Expeditions, some salvage wrecks, certain space ships, the Syndicate Listening Outpost, and Nukie World. Additionally, the check for "Healthy" humans no longer considers anyone infected with the zombie virus to be a "Healthy" human, ensuring that someone with a 200u jug of Bicaridine can no longer contribute to round stalling. Finally, dead (player)zombies are now by default checked for the purpose of calling the evac shuttle. The reason being for this assumption, is that dead zombies are still players removed from the round. If a majority of players are removed from the round(or fucked off to space), the shuttle should be called. # Changelog :cl: - fix: Zombie events have had their Anti-Stalling mechanic improved. Dead (Player) Zombies, Infected Players, and Initial Infected are all counted as zombies for the purpose of determine if the shuttle should be called. Additionally, any player who leaves the station is no longer counted as a healthy crewman for the automatic shuttle call. --- .../GameTicking/Rules/ZombieRuleSystem.cs | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index e8dc37dc1eb..5714337d4db 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -43,6 +43,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem [Dependency] private readonly AntagSelectionSystem _antagSelection = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly AnnouncerSystem _announcer = default!; + [Dependency] private readonly GameTicker _gameTicker = default!; public override void Initialize() { @@ -89,7 +90,7 @@ private void OnRoundEndText(RoundEndTextAppendEvent ev) ("username", player.Value))); } - var healthy = GetHealthyHumans(); + var healthy = GetHealthyHumans(true); // Gets a bunch of the living players and displays them if they're under a threshold. // InitialInfected is used for the threshold because it scales with the player count well. if (healthy.Count <= 0 || healthy.Count > 2 * zombie.InitialInfectedNames.Count) @@ -185,7 +186,7 @@ private void OnZombifySelf(EntityUid uid, PendingZombieComponent component, Zomb /// Include healthy players that are not on the station grid /// Should dead zombies be included in the count /// - private float GetInfectedFraction(bool includeOffStation = true, bool includeDead = false) + private float GetInfectedFraction(bool includeOffStation = false, bool includeDead = true) { var players = GetHealthyHumans(includeOffStation); var zombieCount = 0; @@ -205,14 +206,14 @@ private float GetInfectedFraction(bool includeOffStation = true, bool includeDea /// Flying off via a shuttle disqualifies you. ///
/// Amount of times round start must fail before the server is shut down. diff --git a/Content.Shared/Movement/Components/CanWalkComponent.cs b/Content.Shared/Movement/Components/CanWalkComponent.cs deleted file mode 100644 index fab851595c7..00000000000 --- a/Content.Shared/Movement/Components/CanWalkComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Movement.Components; - -/// -/// Indicates if the entity can toggle walking or not. -/// -[NetworkedComponent, RegisterComponent] -public sealed partial class CanWalkComponent : Component -{ -} diff --git a/Content.Shared/Movement/Components/InputMoverComponent.cs b/Content.Shared/Movement/Components/InputMoverComponent.cs index 263190d46fd..916ecc90af1 100644 --- a/Content.Shared/Movement/Components/InputMoverComponent.cs +++ b/Content.Shared/Movement/Components/InputMoverComponent.cs @@ -1,6 +1,8 @@ using System.Numerics; using Content.Shared.Alert; +using Content.Shared.CCVar; using Content.Shared.Movement.Systems; +using Robust.Shared.Configuration; using Robust.Shared.GameStates; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; @@ -72,7 +74,10 @@ public sealed partial class InputMoverComponent : Component public const float LerpTime = 1.0f; - public bool Sprinting => (HeldMoveButtons & MoveButtons.Walk) == 0x0; + //NOTE I don't think I'm supposed to do this + public bool Sprinting => IoCManager.Resolve().GetCVar(CCVars.GamePressToSprint) + ? (HeldMoveButtons & MoveButtons.Walk) != 0x0 + : (HeldMoveButtons & MoveButtons.Walk) == 0x0; [ViewVariables(VVAccess.ReadWrite)] public bool CanMove = true; diff --git a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs index 813a18f974c..0f404f45b97 100644 --- a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs +++ b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs @@ -22,8 +22,8 @@ public sealed partial class MovementSpeedModifierComponent : Component public const float DefaultFriction = 20f; public const float DefaultFrictionNoInput = 20f; - public const float DefaultBaseWalkSpeed = 2.5f; - public const float DefaultBaseSprintSpeed = 4.5f; + public const float DefaultBaseWalkSpeed = 3f; + public const float DefaultBaseSprintSpeed = 5f; [AutoNetworkedField, ViewVariables] public float WalkSpeedModifier = 1.0f; diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 891bd518b1c..50cffa6ffea 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -620,7 +620,7 @@ public enum MoveButtons : byte Down = 2, Left = 4, Right = 8, - Walk = 16, + Walk = 16, // This may be either a sprint button or a walk button, depending on server config AnyDirection = Up | Down | Left | Right, } diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 4c2c91db6a1..0944634db35 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -289,12 +289,10 @@ protected void HandleMobMovement( PhysicsSystem.SetAngularVelocity(physicsUid, 0, body: physicsComponent); } - public void WalkingAlert(EntityUid player, bool walking) + private void WalkingAlert(EntityUid player, bool walking) { - if (HasComp(player)) - { - _alerts.ShowAlert(player, AlertType.Walking, walking ? (short) 0 : (short) 1); - } + walking = _configManager.GetCVar(CCVars.GamePressToSprint) ? !walking : walking; + _alerts.ShowAlert(player, AlertType.Walking, walking ? (short) 0 : (short) 1); } public void LerpRotation(EntityUid uid, InputMoverComponent mover, float frameTime) diff --git a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl index 8c6cf575d54..7b25b616b24 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -112,13 +112,13 @@ ui-options-header-dev = Development ui-options-header-general = General ui-options-hotkey-keymap = Use US QWERTY Keys -ui-options-hotkey-toggle-walk = Toggle Walk +ui-options-hotkey-toggle-walk = Toggle Speed ui-options-function-move-up = Move Up ui-options-function-move-left = Move Left ui-options-function-move-down = Move Down ui-options-function-move-right = Move Right -ui-options-function-walk = Walk +ui-options-function-walk = Change Speed ui-options-function-camera-rotate-left = Rotate left ui-options-function-camera-rotate-right = Rotate right diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index eba1253dde4..9ff9837a3b9 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -223,7 +223,6 @@ understands: - GalacticCommon - RobotTalk - - type: CanWalk - type: entity id: BaseBorgChassisNT diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 92ede14d3ec..29234ea34cf 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1313,7 +1313,6 @@ tags: - VimPilot - DoorBumpOpener - - type: CanWalk - type: entity name: monkey diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index 2515c7880ac..c2380c40278 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -293,7 +293,6 @@ solution: bloodstream - type: DrainableSolution solution: bloodstream - - type: CanWalk - type: entity name: Reagent Slime Spawner diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index e10bdbcf0ec..d1b3bd6a6a9 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -126,7 +126,6 @@ understands: - GalacticCommon - Mouse - - type: CanWalk - type: entity id: MobRatKingBuff diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 3735bcc4eca..fbf133a0f1e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -128,7 +128,6 @@ speechSounds: Slime - type: TypingIndicator proto: slime - - type: CanWalk - type: entity name: blue slime diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 1b9e9674f44..c4906f6f975 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -229,7 +229,6 @@ - CanPilot - FootstepSound - DoorBumpOpener - - type: CanWalk - type: entity save: false diff --git a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml index b265d9343a3..05d70e8adc5 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/harpy.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/harpy.yml @@ -119,8 +119,8 @@ False: {visible: false} True: {visible: true} - type: MovementSpeedModifier - baseWalkSpeed: 2.5 - baseSprintSpeed: 5.0 + baseWalkSpeed: 3 + baseSprintSpeed: 5.5 weightlessAcceleration: 2.5 - type: Inventory speciesId: harpy @@ -140,7 +140,6 @@ understands: - GalacticCommon - SolCommon - - type: entity save: false name: Urist McHands diff --git a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml index 471801f3a1f..6e5362d9bbb 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Mech/mechs.yml @@ -92,7 +92,6 @@ - type: GuideHelp guides: - Robotics - - type: CanWalk - type: entity id: MechRipley From a6237f3b75e60a7b4da86c10631aa04eb66ada0c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 08:31:14 +0000 Subject: [PATCH 32/82] Automatic Changelog Update (#485) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ceed259c0b0..3f14b7df941 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4752,3 +4752,11 @@ Entries: message: Prevent dionas and harpies from selecting shoes in Loadouts. id: 6195 time: '2024-08-01T02:37:45.0000000+00:00' +- author: DEATHB4DEFEAT + changes: + - type: Tweak + message: >- + The station's crew hivemind has decided to slow down their movement and + enjoy The Park instead of sprinting everywhere + id: 6196 + time: '2024-08-01T08:30:47.0000000+00:00' From 94098c6f7f6dffbc58f47bc003d3a1a3f94b4a2c Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 1 Aug 2024 17:12:49 -0400 Subject: [PATCH 33/82] Move Survival Boxes To Loadouts (#634) # Description Survival boxes take up a shitload of space, and very few people actually want them. Most people take the Epipen and Spacepen out, and throw the box away immediately on roundstart. Having survival boxes automatically in the backpack causes issues when Loadouts contain "large items", causing most or all of a person's loadout to be dumped on the floor at roundstart. While that isn't completely unavoidable, moving survival boxes to loadouts will go a long way towards ameliorating said issue. I intentionally omitted removing survival boxes from antagonist bags because we currently don't have antag character slots and loadouts. In the future when we have that update, we can remove survival boxes from the nukie bags too. # Changelog :cl: - add: Survival Boxes have been added to loadouts. --- .../Fills/Backpacks/StarterGear/backpack.yml | 51 ------------- .../Fills/Backpacks/StarterGear/duffelbag.yml | 54 +------------- .../Fills/Backpacks/StarterGear/satchel.yml | 53 +------------ .../Fills/Backpacks/StarterGear/backpack.yml | 3 - .../Fills/Backpacks/StarterGear/duffelbag.yml | 3 - .../Fills/Backpacks/StarterGear/satchel.yml | 3 - .../Clothing/Back/backpacks.yml/backpacks.yml | 1 - .../Clothing/Back/backpacks.yml/duffelbag.yml | 1 - .../Clothing/Back/backpacks.yml/satchel.yml | 1 - Resources/Prototypes/Loadouts/items.yml | 74 +++++++++++++++++++ .../Fills/Backpacks/StarterGear/backpack.yml | 1 - .../Fills/Backpacks/StarterGear/duffelbag.yml | 1 - .../Fills/Backpacks/StarterGear/satchel.yml | 1 - 13 files changed, 76 insertions(+), 171 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml index 2e09906b13e..4d33ec98a90 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml @@ -2,10 +2,6 @@ parent: ClothingBackpack id: ClothingBackpackFilled noSpawn: true - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -25,7 +21,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash # - id: MagazinePistol # DeltaV - Security doesn't get an extra mag @@ -36,7 +31,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: ForensicPad - id: ForensicScanner @@ -45,10 +39,6 @@ noSpawn: true parent: ClothingBackpackMedical id: ClothingBackpackMedicalFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -57,7 +47,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - type: entity @@ -67,7 +56,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- name: StationCharter #- name: TelescopicBaton @@ -78,7 +66,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalEngineering - id: Flash #- id: TelescopicBaton @@ -89,7 +76,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -100,7 +86,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -111,7 +96,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: Flash #- id: TelescopicBaton @@ -122,7 +106,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -133,7 +116,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: MagazinePistol @@ -141,37 +123,21 @@ noSpawn: true parent: ClothingBackpackEngineering id: ClothingBackpackEngineeringFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - type: entity noSpawn: true parent: ClothingBackpackAtmospherics id: ClothingBackpackAtmosphericsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - type: entity noSpawn: true parent: ClothingBackpackScience id: ClothingBackpackScienceFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackHydroponics id: ClothingBackpackHydroponicsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -180,17 +146,12 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampMime - type: entity noSpawn: true parent: ClothingBackpackChemistry id: ClothingBackpackChemistryFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -199,7 +160,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Bible - id: RubberStampChaplain @@ -210,7 +170,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: AcousticGuitarInstrument - id: SaxophoneInstrument @@ -221,7 +180,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: BookRandom - type: entity @@ -231,7 +189,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Lighter - id: CigPackBlack - id: HandLabeler @@ -372,19 +329,11 @@ noSpawn: true parent: ClothingBackpackCargo id: ClothingBackpackCargoFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackSalvage id: ClothingBackpackSalvageFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival # Pirate diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml index f7ad973b842..3cac13ab53e 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml @@ -2,10 +2,6 @@ noSpawn: true parent: ClothingBackpackDuffel id: ClothingBackpackDuffelFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -14,7 +10,6 @@ components: - type: StorageFill contents: - - id: BoxHug - id: RubberStampClown - type: entity @@ -24,7 +19,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash # - id: MagazinePistol # DeltaV - Security doesn't get an extra mag @@ -35,7 +29,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: ForensicPad - id: ForensicScanner @@ -53,10 +46,6 @@ noSpawn: true parent: ClothingBackpackDuffelMedical id: ClothingBackpackDuffelMedicalFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -65,7 +54,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - type: entity @@ -75,10 +63,10 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- name: StationCharter #- name: TelescopicBaton + - type: entity noSpawn: true parent: ClothingBackpackDuffelEngineering @@ -86,7 +74,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalEngineering - id: Flash #- id: TelescopicBaton @@ -97,7 +84,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -108,7 +94,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -119,7 +104,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: Flash #- id: TelescopicBaton @@ -130,7 +114,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -141,7 +124,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: MagazinePistol @@ -149,38 +131,21 @@ noSpawn: true parent: ClothingBackpackDuffelEngineering id: ClothingBackpackDuffelEngineeringFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - type: entity noSpawn: true parent: ClothingBackpackDuffelAtmospherics id: ClothingBackpackDuffelAtmosphericsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - - type: entity noSpawn: true parent: ClothingBackpackDuffelScience id: ClothingBackpackDuffelScienceFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackDuffelHydroponics id: ClothingBackpackDuffelHydroponicsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -189,17 +154,12 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampMime - type: entity noSpawn: true parent: ClothingBackpackDuffelChemistry id: ClothingBackpackDuffelChemistryFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -208,7 +168,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Bible - id: RubberStampChaplain @@ -219,7 +178,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: AcousticGuitarInstrument - id: SaxophoneInstrument @@ -230,7 +188,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: BookRandom - type: entity @@ -240,7 +197,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Lighter - id: CigPackBlack - id: BoxForensicPad @@ -250,16 +206,8 @@ noSpawn: true parent: ClothingBackpackDuffelCargo id: ClothingBackpackDuffelCargoFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackDuffelSalvage id: ClothingBackpackDuffelSalvageFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml index 1a3dda66487..89ae8fdf477 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml @@ -2,10 +2,6 @@ noSpawn: true parent: ClothingBackpackSatchel id: ClothingBackpackSatchelFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -14,7 +10,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Crowbar - id: Wrench - id: Screwdriver @@ -38,7 +33,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash # - id: MagazinePistol # DeltaV - Security doesn't get an extra mag @@ -49,7 +43,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: ForensicPad - id: ForensicScanner @@ -67,10 +60,6 @@ noSpawn: true parent: ClothingBackpackSatchelMedical id: ClothingBackpackSatchelMedicalFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -79,7 +68,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - type: entity @@ -89,10 +77,10 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- name: StationCharter #- name: TelescopicBaton + - type: entity noSpawn: true parent: ClothingBackpackSatchelEngineering @@ -100,7 +88,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalEngineering - id: Flash #- id: TelescopicBaton @@ -111,7 +98,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -122,7 +108,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -133,7 +118,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: Flash #- id: TelescopicBaton @@ -144,7 +128,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Flash #- id: TelescopicBaton @@ -155,7 +138,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: Flash - id: MagazinePistol @@ -163,46 +145,26 @@ noSpawn: true parent: ClothingBackpackSatchelEngineering id: ClothingBackpackSatchelEngineeringFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - type: entity noSpawn: true parent: ClothingBackpackSatchelAtmospherics id: ClothingBackpackSatchelAtmosphericsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalEngineering - type: entity noSpawn: true parent: ClothingBackpackSatchelScience id: ClothingBackpackSatchelScienceFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackSatchelHydroponics id: ClothingBackpackSatchelHydroponicsFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackSatchelChemistry id: ClothingBackpackSatchelChemistryFilled - components: - - type: StorageFill - contents: - - id: BoxSurvivalMedical - type: entity noSpawn: true @@ -211,7 +173,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: Bible - id: RubberStampChaplain @@ -222,7 +183,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: AcousticGuitarInstrument - id: SaxophoneInstrument @@ -233,7 +193,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: BookRandom - type: entity @@ -243,7 +202,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: BoxForensicPad - id: Lighter - id: CigPackBlack @@ -253,19 +211,11 @@ noSpawn: true parent: ClothingBackpackSatchelCargo id: ClothingBackpackSatchelCargoFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true parent: ClothingBackpackSatchelSalvage id: ClothingBackpackSatchelSalvageFilled - components: - - type: StorageFill - contents: - - id: BoxSurvival - type: entity noSpawn: true @@ -274,7 +224,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampMime - type: entity diff --git a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/backpack.yml b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/backpack.yml index dcde538f9cd..b73c1d5b4fc 100644 --- a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/backpack.yml +++ b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/backpack.yml @@ -18,7 +18,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib @@ -30,7 +29,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: RubberStampPsychologist @@ -41,5 +39,4 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampLawyer diff --git a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml index 4aa423e0aed..50ef77a316f 100644 --- a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml +++ b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib @@ -17,7 +16,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: RubberStampPsychologist @@ -28,5 +26,4 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampLawyer diff --git a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/satchel.yml b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/satchel.yml index 1ef1441b3b9..99a770e37e1 100644 --- a/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/satchel.yml +++ b/Resources/Prototypes/DeltaV/Catalog/Fills/Backpacks/StarterGear/satchel.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib @@ -17,7 +16,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalMedical - id: RubberStampPsychologist @@ -28,5 +26,4 @@ components: - type: StorageFill contents: - - id: BoxSurvival - id: RubberStampLawyer diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/backpacks.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/backpacks.yml index 38bbd956868..2fbc17d2585 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/backpacks.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/backpacks.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/duffelbag.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/duffelbag.yml index caf5aa3515b..bcd12b5e1b1 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/duffelbag.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/duffelbag.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/satchel.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/satchel.yml index 9c27500a1f7..31dc027a21e 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/satchel.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Back/backpacks.yml/satchel.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvivalSecurity - id: EmergencyRollerBedSpawnFolded - id: BodyBagFolded - id: Portafib diff --git a/Resources/Prototypes/Loadouts/items.yml b/Resources/Prototypes/Loadouts/items.yml index 71c44d365d4..75c0461c106 100644 --- a/Resources/Prototypes/Loadouts/items.yml +++ b/Resources/Prototypes/Loadouts/items.yml @@ -190,6 +190,80 @@ items: - FireExtinguisher +- type: loadout + id: LoadoutItemBoxSurvival + category: Items + cost: 2 #All survival kits are intentionally cheaper than their contents to help encourage people to buy them. The contents can be bought separately to save space, or as spares + items: + - BoxSurvival + requirements: + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Security + - Medical + - Engineering + - Epistemics + - !type:CharacterJobRequirement + inverted: true + jobs: + - Clown + +- type: loadout + id: LoadoutItemBoxSurvivalEngineering + category: Items + cost: 2 + items: + - BoxSurvivalEngineering + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Engineering + +- type: loadout + id: LoadoutItemBoxSurvivalSecurity + category: Items + cost: 2 + items: + - BoxSurvivalSecurity + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Security + +- type: loadout + id: LoadoutItemBoxSurvivalBrigmedic + category: Items + cost: 2 + items: + - BoxSurvivalBrigmedic + requirements: + - !type:CharacterJobRequirement + jobs: + - Brigmedic + +- type: loadout + id: LoadoutItemBoxSurvivalMedical + category: Items + cost: 2 + items: + - BoxSurvivalMedical + requirements: + - !type:CharacterDepartmentRequirement + departments: + - Medical + +- type: loadout + id: LoadoutItemBoxHug + category: Items + cost: 2 + items: + - BoxHug + requirements: + - !type:CharacterJobRequirement + jobs: + - Clown + #Misc Items - type: loadout id: LoadoutItemPAI diff --git a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/backpack.yml b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/backpack.yml index d72e0dd7cd8..810f9ec03b6 100644 --- a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/backpack.yml +++ b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/backpack.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival # - id: BoxForensicPad # DeltaV - Mantis is no longer a Detective - id: HandLabeler - id: PillMindbreakerToxin diff --git a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml index 982b820ad10..88e33cdd252 100644 --- a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml +++ b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival # - id: BoxForensicPad # DeltaV - Mantis is no longer a Detective - id: HandLabeler - id: PillMindbreakerToxin diff --git a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/satchel.yml b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/satchel.yml index 5644f36c9ce..e90759ac8fb 100644 --- a/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/satchel.yml +++ b/Resources/Prototypes/Nyanotrasen/Catalog/Fills/Backpacks/StarterGear/satchel.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: BoxSurvival # - id: BoxForensicPad # DeltaV - Mantis is no longer a Detective - id: HandLabeler - id: PillMindbreakerToxin From 11524d85723904027329509deb254420f48d7345 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 21:13:17 +0000 Subject: [PATCH 34/82] Automatic Changelog Update (#634) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3f14b7df941..103a69c104a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4760,3 +4760,9 @@ Entries: enjoy The Park instead of sprinting everywhere id: 6196 time: '2024-08-01T08:30:47.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: 'Survival Boxes have been added to loadouts. ' + id: 6197 + time: '2024-08-01T21:12:49.0000000+00:00' From dfdae62c84acb665228cfa0916092ecaabd312e2 Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 1 Aug 2024 17:55:09 -0400 Subject: [PATCH 35/82] Make Boxes Not Useless (#635) # Description Subcontainers such as Boxes, Medkits, and Lunchboxes are essentially useless items that players always throw away. The given reason for this is that because the boxes only ever provided the same or less inventory slots than the inventory slots they take away, using boxes only ever penalizes players. Since you can only ever open one container at a time, placing items in boxes means you have to first open your backpack, then open the box, then take the item out. How it SHOULD work instead, is that boxes contain slightly more inventory slots than what they remove. You would effectively be trading the ability to quickly and efficiently access all your items, for having slightly more inventory capacity. This PR buffs the parent of four different categories of items, such that 3x3 boxes occupy 9 inventory spaces and provide 16 spaces, and 2x4 boxes occupy 8 spaces and provide 12 spaces. The difference accounts for 3x3 boxes being significantly more inventory-awkward to put in your backpack than the 2x4 containers. Toolboxes are unchanged because they're already huge, and don't fit in backpacks anyway. Here's a demonstration of inventory management with a backpack full of boxes. https://github.com/user-attachments/assets/40b184f6-b061-4f0a-8e8b-7e2a7b9793bc # Changelog :cl: - add: Boxes(Cardboard, Medkits, Lunchboxes) now contain slightly more inventory slots than they occupy. --- Resources/Prototypes/Catalog/Fills/Boxes/general.yml | 2 +- .../Objects/Consumable/Food/Containers/lunchbox.yml | 6 +++--- .../Entities/Objects/Specific/Medical/medkits.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml index e4181d27a21..59a9e8d0056 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/general.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/general.yml @@ -11,7 +11,7 @@ - type: Storage maxItemSize: Small grid: - - 0,0,2,2 + - 0,0,3,3 - type: Sprite state: box - type: EmitSoundOnPickup diff --git a/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml index 46e689615b3..c7aae33c76d 100644 --- a/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml +++ b/Resources/Prototypes/DeltaV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml @@ -18,9 +18,9 @@ - type: Storage maxItemSize: Normal grid: - - 0,0,1,1 - - 3,0,1,1 - - 4,0,4,1 + - 0,0,1,2 + - 3,0,1,2 + - 4,0,4,2 - type: PhysicalComposition materialComposition: Plastic: 100 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml index d7f2231ec99..62e5ab44762 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/medkits.yml @@ -10,7 +10,7 @@ - type: Storage maxItemSize: Small grid: - - 0,0,3,1 + - 0,0,3,2 - type: Item size: Large sprite: Objects/Specific/Medical/firstaidkits.rsi From 437ac5ae2eccbe18645a210531563c1f746db841 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 21:55:34 +0000 Subject: [PATCH 36/82] Automatic Changelog Update (#635) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 103a69c104a..8ef76bac30b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4766,3 +4766,11 @@ Entries: message: 'Survival Boxes have been added to loadouts. ' id: 6197 time: '2024-08-01T21:12:49.0000000+00:00' +- author: VMSolidus + changes: + - type: Add + message: >- + Boxes(Cardboard, Medkits, Lunchboxes) now contain slightly more + inventory slots than they occupy. + id: 6198 + time: '2024-08-01T21:55:09.0000000+00:00' From 6bc8b60bff4d9d7c9d658ad0644e18b1fa07aaea Mon Sep 17 00:00:00 2001 From: VMSolidus Date: Thu, 1 Aug 2024 18:41:23 -0400 Subject: [PATCH 37/82] "Buff" Vision Traits (#636) # Description This takes Ultravision, Dogvision, and Normalvision, making all 3 traits into our first set of "Neutral" traits. They now cost 0 points, but still occupy one of the 5 trait selections. In the future we should have a decent roster of Positive, Neutral, and Negative traits. If Death ever finishes making Subcategories, we'll probably want to have Positive, Neutral, and Negative be the 3 "Main" categories, and all subcategories sit underneath them.

Media

Token screenshot for a 3 line PR because my maintainers will get onto me if I don't include some kind of media. :trollface: ![image](https://github.com/user-attachments/assets/27a7feea-a347-41bf-ae01-099eb84ed7af)

# Changelog :cl: - tweak: Ultraviolet Vision, Deuteranopia, and Trichromat Modification are all now 0 point Neutral traits. They still occupy one of your trait selections. --------- Signed-off-by: VMSolidus Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Resources/Prototypes/DeltaV/Traits/altvision.yml | 2 -- Resources/Prototypes/Traits/neutral.yml | 1 - 2 files changed, 3 deletions(-) diff --git a/Resources/Prototypes/DeltaV/Traits/altvision.yml b/Resources/Prototypes/DeltaV/Traits/altvision.yml index 97742d98ce5..390e14d4ad1 100644 --- a/Resources/Prototypes/DeltaV/Traits/altvision.yml +++ b/Resources/Prototypes/DeltaV/Traits/altvision.yml @@ -1,7 +1,6 @@ - type: trait id: UltraVision category: Visual - points: -1 requirements: - !type:CharacterSpeciesRequirement inverted: true @@ -18,7 +17,6 @@ - type: trait id: DogVision category: Visual - points: -1 requirements: - !type:CharacterSpeciesRequirement inverted: true diff --git a/Resources/Prototypes/Traits/neutral.yml b/Resources/Prototypes/Traits/neutral.yml index 28f6adc170a..ab5bcb238d7 100644 --- a/Resources/Prototypes/Traits/neutral.yml +++ b/Resources/Prototypes/Traits/neutral.yml @@ -31,7 +31,6 @@ - type: trait id: NormalVision category: Visual - points: -1 requirements: - !type:CharacterSpeciesRequirement species: From 0d1c9310cbe2fe2966e1a23cb98e1f5390fbd5f0 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 22:41:49 +0000 Subject: [PATCH 38/82] Automatic Changelog Update (#636) --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8ef76bac30b..3751e787af1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4774,3 +4774,12 @@ Entries: inventory slots than they occupy. id: 6198 time: '2024-08-01T21:55:09.0000000+00:00' +- author: VMSolidus + changes: + - type: Tweak + message: >- + Ultraviolet Vision, Deuteranopia, and Trichromat Modification are all + now 0 point Neutral traits. They still occupy one of your trait + selections. + id: 6199 + time: '2024-08-01T22:41:24.0000000+00:00' From c96cfcc2dbfe1de2d2e041a3dc8440903d7efaeb Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Fri, 2 Aug 2024 06:45:13 +0800 Subject: [PATCH 39/82] More Loadout Items: Wave 3 (#633) # Description Adds some useful items in the Items category and unused clothes into Loadouts. There are nine suits from Delta-V that were meant for a planned Mafia gamemode, but otherwise, they are unused. These suits were made by @TadJohnson00. I renamed some of the mobster suits to lessen the association with and added them to Loadouts. There is an "inspector's coat" in-game not used anywhere, that has been renamed to "slim trench coat" and added to Loadouts. Adds labels to survival boxes in the Loadouts UI to be able to distinguish against them. ## New Items ### Uniform Security (except HoS) can only select items marked with (*). - [2] black suit (*) - [2] dark suit (*) - [2] red suit (*) - [2] brown suit - Security doesn't have this as a Security Officer wearing this might be confused for the Detective. - [2] dubious suit (*) - [2] mafioso suit (*) - [2] white suit - [2] negative suit (*) - [2] gangster suit (*) ## Outer - [3] slim trench coat - [4] overcoat - More expensive than other coats due to its increased resistance to Slashing (10%) and Hea (25%). ## Items - [1] book [Random] - [1] water bottle - [1] space medipen - [1] emergency medipen - [1] folder [grey] - [1] breath mask - [1] emergency flare - [1] paper - This item gives four pieces of paper instead of one, as indicated in the loadout description. - [1] pen - [2] flashlight - [2] pipe - [3] flippo lighter - [3] pre-packed lunchbox [Filled, Random] ### Medkits Each medkit is only accessible to Medical (except Chemist) and Corpsman unless specified otherwise. - [4] first aid kit - Selectable by every role. - [4] brute trauma treatment kit - [4] burn treatment kit - [4] combat medical kit - Selectable only by Chief Medical Officer and Corpsman. - [4] oxygen deprivation treatment kit - [4] radiation treatment kit - [4] toxin treatment kit - [5] advanced first aid kit

Media

## Survival box labels ![image](https://github.com/user-attachments/assets/4eab5ed4-51a1-4784-a9d5-f41b76e35365) ## Mobster suits ![image](https://github.com/user-attachments/assets/c7b8a1dd-c243-4b9d-9973-860d8810b793) ## Vintage ![image](https://github.com/user-attachments/assets/09e4dc1e-bfeb-46d1-80d8-da4338b5348e) **Loadout:** black cowboy hat, **pipe**, **dubious suit**, **slim trench coat**, laceup shoes ## Dapper Cop ![image](https://github.com/user-attachments/assets/2b6fbe0d-b00a-4d20-ba8f-c1a766cda392) **Loadout:** white fedora, security hud, **pipe**, **gangster suit**, striped red scarf, white gloves ## Biker ![image](https://github.com/user-attachments/assets/f4ca8fe0-e600-42cd-83d7-070b57d57b46) **Loadout:** cheap sunglasses, **brown suit**, MNK black jacket, black gloves, black cowboy boots

--- # Changelog :cl: Skubman - add: Added new clothes in Loadouts: slim trench coat, and Mafia-style suits. - add: Added new useful items in Loadouts: lunchbox, more survival gear, paperwork, and medkits. --------- Signed-off-by: Angelo Fallaria --- Resources/Locale/en-US/loadouts/items.ftl | 22 ++ .../Entities/Clothing/Uniforms/jumpsuits.yml | 14 +- .../Entities/Clothing/OuterClothing/coats.yml | 4 +- Resources/Prototypes/Loadouts/items.yml | 217 +++++++++++++++++- .../Prototypes/Loadouts/outerClothing.yml | 14 ++ Resources/Prototypes/Loadouts/uniform.yml | 156 +++++++++++++ 6 files changed, 415 insertions(+), 12 deletions(-) diff --git a/Resources/Locale/en-US/loadouts/items.ftl b/Resources/Locale/en-US/loadouts/items.ftl index b92f56bc7cb..c2ec9a1c847 100644 --- a/Resources/Locale/en-US/loadouts/items.ftl +++ b/Resources/Locale/en-US/loadouts/items.ftl @@ -13,3 +13,25 @@ loadout-description-LoadoutItemPlushieSharkGrey = Introducing the Grey Shark Plu loadout-description-LoadoutItemPlushieCarp = Brace for extraterrestrial antics with the Purple Space Carp Plushie! A fishy invader from the cosmic deep, this plushie brings a splash of humor to zero-gravity escapades. From hostile waters to interstellar giggles, it's a cuddly contradiction that's out of this world loadout-description-LoadoutSolCommonTranslator = The most common of all translators, such that it can be purchased in any civilized station. This device translates Sol Common speech into Galactic Common. +loadout-name-LoadoutItemPapers = papers (x4) +loadout-description-LoadoutItemPapers = four pieces of paper, good for filling out tedious paperwork and silent communication. +loadout-description-LoadoutItemBoxFolderGrey = A folder to store papers and top secret documents. +loadout-description-LoadoutBookRandom = A notebook with a random cover. Can be used as a diary, or for writing fanfiction drafts for SpacePad. +loadout-description-LoadoutPen = An extra pen, just in case your pen from your PDA gets robbed by skeletal space pirates. +loadout-description-LoadoutItemLunchboxGenericFilledRandom = Packed with love. + This is only useful when the chefs are either a.) nonexistent or b.) not doing their job. + In conclusion, this lunchbox is useful most of the time. +loadout-description-LoadoutHandLabeler = A hand labeler, used to label items and objects. + It's not really recommended to use this to label a fuel tank with "SOLUTION TO CLOWN PROBLEM". +loadout-description-LoadoutEmergencyMedipen = A rapid and safe way to stabilize patients in critical condition for personnel without advanced medical knowledge. + WARNING: injecting two emergency medipens at once will cause an epinephrine overdose. +loadout-description-LoadoutSpaceMedipen = Contains a mix of chemicals that protect you from the deadly effects of space. + Also known as the "poor man's hardsuit". + WARNING: injecting two space medipens at once will cause a barozine overdose. + +loadout-name-LoadoutItemBoxSurvival = survival box (standard) +loadout-name-LoadoutItemBoxSurvivalEngineering = extended-capacity survival box (engineering) +loadout-name-LoadoutItemBoxSurvivalSecurity = survival box (security) +loadout-name-LoadoutItemBoxSurvivalBrigmedic = survival box (corpsman) +loadout-name-LoadoutItemBoxSurvivalMedical = survival box (medical) +loadout-name-LoadoutItemBoxHug = box of hugs (clown) diff --git a/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml index 99021b47e42..8a0a500e6fa 100644 --- a/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/DeltaV/Entities/Clothing/Uniforms/jumpsuits.yml @@ -45,8 +45,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitSuitBlackMob - name: mobster's attire - description: A crisp red shirt and charcoal slacks. Reminds you of your debts. + name: red suit + description: A crisp red shirt and charcoal slacks. Reminds you of law enforcement. components: - type: Sprite sprite: DeltaV/Clothing/Uniforms/Jumpsuit/suitblackmob.rsi @@ -67,7 +67,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitSuitBrownAlt - name: suspicious suit + name: dubious suit description: A crisp grey shirt and chocolate slacks. Reminds you of clandestine operators. components: - type: Sprite @@ -78,8 +78,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitSuitBrownMob - name: gangster's attire - description: A crisp red shirt and chocolate slacks. Reminds you of drivebys. + name: mafioso suit + description: A crisp red shirt and chocolate slacks. Reminds you of family. components: - type: Sprite sprite: DeltaV/Clothing/Uniforms/Jumpsuit/suitbrownmob.rsi @@ -111,8 +111,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitSuitWhiteMob - name: mafioso's attire - description: A crisp red shirt and ivory slacks. Reminds you of family. + name: gangster suit + description: A crisp red shirt and ivory slacks. Reminds you of organized Japanese crime. components: - type: Sprite sprite: DeltaV/Clothing/Uniforms/Jumpsuit/suitwhitemob.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index c78a5f9bdb5..a47a2bbcebc 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -66,8 +66,8 @@ - type: entity parent: ClothingOuterStorageBase id: ClothingOuterCoatInspector - name: inspector's coat - description: A strict inspector's coat for being intimidating during inspections. + name: slim trench coat + description: A slim minimalist trench coat best worn unbuttoned. components: - type: Sprite sprite: Clothing/OuterClothing/Coats/insp_coat.rsi diff --git a/Resources/Prototypes/Loadouts/items.yml b/Resources/Prototypes/Loadouts/items.yml index 75c0461c106..e09d02c463a 100644 --- a/Resources/Prototypes/Loadouts/items.yml +++ b/Resources/Prototypes/Loadouts/items.yml @@ -63,11 +63,18 @@ - CheapLighter - type: loadout - id: LoadoutItemMatches + id: LoadoutItemLighterFlippo category: Items - cost: 1 + cost: 3 + items: + - FlippoLighter + +- type: loadout + id: LoadoutItemSmokingPipeFilledTobacco + category: Items + cost: 2 items: - - Matchbox + - SmokingPipeFilledTobacco # Instruments - type: loadout @@ -176,6 +183,13 @@ items: - DoubleEmergencyOxygenTankFilled +- type: loadout + id: LoadoutItemClothingMaskBreath + category: Items + cost: 1 + items: + - ClothingMaskBreath + - type: loadout id: LoadoutItemsEmergencyCrowbar category: Items @@ -190,6 +204,82 @@ items: - FireExtinguisher +- type: loadout + id: LoadoutItemFlashlightLantern + category: Items + cost: 2 + items: + - FlashlightLantern + +- type: loadout + id: LoadoutItemFlare + category: Items + cost: 1 + items: + - Flare + +- type: loadout + id: LoadoutEmergencyMedipen + category: Items + cost: 1 + items: + - EmergencyMedipen + +- type: loadout + id: LoadoutSpaceMedipen + category: Items + cost: 1 + items: + - SpaceMedipen + +# Paperwork +- type: loadout + id: LoadoutItemPapers + category: Items + cost: 1 + items: + - Paper + - Paper + - Paper + - Paper + +- type: loadout + id: LoadoutItemBoxFolderGrey + category: Items + cost: 1 + items: + - BoxFolderGrey + +- type: loadout + id: LoadoutBookRandom + category: Items + cost: 1 + items: + - BookRandom + +- type: loadout + id: LoadoutPen + category: Items + cost: 1 + items: + - Pen + +# Food and drink +- type: loadout + id: LoadoutDrinkWaterBottleFull + category: Items + cost: 1 + items: + - DrinkWaterBottleFull + +- type: loadout + id: LoadoutItemLunchboxGenericFilledRandom + category: Items + cost: 3 + items: + - LunchboxGenericFilledRandom + +# Survival boxes - type: loadout id: LoadoutItemBoxSurvival category: Items @@ -230,6 +320,10 @@ - !type:CharacterDepartmentRequirement departments: - Security + - !type:CharacterJobRequirement + inverted: true + jobs: + - Brigmedic - type: loadout id: LoadoutItemBoxSurvivalBrigmedic @@ -264,6 +358,116 @@ jobs: - Clown +# Medkits +- type: loadout + id: LoadoutMedkitFilled + category: Items + cost: 4 + items: + - MedkitFilled + +- type: loadout + id: LoadoutMedkitBruteFilled + category: Items + cost: 4 + items: + - MedkitBruteFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitBurnFilled + category: Items + cost: 4 + items: + - MedkitBurnFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitToxinFilled + category: Items + cost: 4 + items: + - MedkitToxinFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitOxygenFilled + category: Items + cost: 4 + items: + - MedkitOxygenFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitRadiationFilled + category: Items + cost: 4 + items: + - MedkitRadiationFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitAdvancedFilled + category: Items + cost: 5 + items: + - MedkitAdvancedFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - MedicalDoctor + - Paramedic + - ChiefMedicalOfficer + - MedicalIntern + - Brigmedic + +- type: loadout + id: LoadoutMedkitCombatFilled + category: Items + cost: 4 # Discounted for the CMO and Corpsman + items: + - MedkitCombatFilled + requirements: + - !type:CharacterJobRequirement + jobs: + - ChiefMedicalOfficer + - Brigmedic + #Misc Items - type: loadout id: LoadoutItemPAI @@ -316,3 +520,10 @@ cost: 3 items: - SolCommonTranslator + +- type: loadout + id: LoadoutHandLabeler + category: Items + cost: 3 + items: + - HandLabeler diff --git a/Resources/Prototypes/Loadouts/outerClothing.yml b/Resources/Prototypes/Loadouts/outerClothing.yml index 38ba17b6a3b..da091412b6c 100644 --- a/Resources/Prototypes/Loadouts/outerClothing.yml +++ b/Resources/Prototypes/Loadouts/outerClothing.yml @@ -225,3 +225,17 @@ cost: 3 items: - ClothingOuterCoatGentle + +- type: loadout + id: LoadoutOuterCoatInspector + category: Outer + cost: 3 + items: + - ClothingOuterCoatInspector + +- type: loadout + id: LoadoutOuterCoatOvercoat + category: Outer + cost: 4 + items: + - ClothingOuterCoatOvercoat diff --git a/Resources/Prototypes/Loadouts/uniform.yml b/Resources/Prototypes/Loadouts/uniform.yml index 090a0957a92..5843cb30ee5 100644 --- a/Resources/Prototypes/Loadouts/uniform.yml +++ b/Resources/Prototypes/Loadouts/uniform.yml @@ -1360,3 +1360,159 @@ inverted: true departments: - Command + +# Suits +- type: loadout + id: LoadoutClothingJumpsuitSuitBlack + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBlack + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitBlackAlt + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBlackAlt + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitBlackMob + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBlackMob + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitBrown + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBrown + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + - Security + +- type: loadout + id: LoadoutClothingJumpsuitSuitBrownAlt + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBrownAlt + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitBrownMob + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitBrownMob + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitWhite + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitWhite + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + - Security + +- type: loadout + id: LoadoutClothingJumpsuitSuitWhiteAlt + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitWhiteAlt + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command + +- type: loadout + id: LoadoutClothingJumpsuitSuitWhiteMob + category: Uniform + cost: 2 + exclusive: true + items: + - ClothingUniformJumpsuitSuitWhiteMob + requirements: + - !type:CharacterSpeciesRequirement + inverted: true + species: + - Harpy + - !type:CharacterDepartmentRequirement + inverted: true + departments: + - Command From adafe4a09b7df1de5ebdc25d72c9e144491b9002 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 22:45:37 +0000 Subject: [PATCH 40/82] Automatic Changelog Update (#633) --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3751e787af1..d2d1007a290 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4783,3 +4783,13 @@ Entries: selections. id: 6199 time: '2024-08-01T22:41:24.0000000+00:00' +- author: Skubman + changes: + - type: Add + message: 'Added new clothes in Loadouts: slim trench coat, and Mafia-style suits.' + - type: Add + message: >- + Added new useful items in Loadouts: lunchbox, more survival gear, + paperwork, and medkits. + id: 6200 + time: '2024-08-01T22:45:13.0000000+00:00' From 1481146f641a2514cf28990dcf8b1576b1042c6a Mon Sep 17 00:00:00 2001 From: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Date: Fri, 2 Aug 2024 01:06:24 +0200 Subject: [PATCH 41/82] Vulpkanin Tail Wagging (#588) # Description Add the ability for Vulpkanins to wag their tails like Lizards and add a far better icon for tail wagging making it not look like only action. ---

Media

![image](https://github.com/user-attachments/assets/6ed28a22-81ac-494c-bc18-92b5f7ae8ecb) ![image](https://github.com/user-attachments/assets/d3f976b1-d680-4181-a645-8e84a071e6cf)

--- # Changelog :cl: - add: Vulpkanins can wag their tails now --------- Signed-off-by: FoxxoTrystan <45297731+FoxxoTrystan@users.noreply.github.com> Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- Content.Server/Wagging/WaggingSystem.cs | 2 + .../en-US/deltav/markings/vulpkanin.ftl | 32 ++------- Resources/Prototypes/Actions/types.yml | 4 +- .../Mobs/Customization/Markings/vulpkanin.yml | 66 +++++++++++------- .../Entities/Mobs/Species/vulpkanin.yml | 1 + .../Vulpkanin/tail_markings.rsi/corgi.png | Bin 0 -> 206 bytes .../Vulpkanin/tail_markings.rsi/dalmatian.png | Bin 0 -> 276 bytes .../Vulpkanin/tail_markings.rsi/meta.json | 8 +++ .../Interface/Actions/wagging.rsi/icon-on.png | Bin 0 -> 1783 bytes .../Interface/Actions/wagging.rsi/icon.png | Bin 0 -> 1283 bytes .../Interface/Actions/wagging.rsi/meta.json | 17 +++++ 11 files changed, 77 insertions(+), 53 deletions(-) create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png create mode 100644 Resources/Textures/DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi/dalmatian.png create mode 100644 Resources/Textures/Interface/Actions/wagging.rsi/icon-on.png create mode 100644 Resources/Textures/Interface/Actions/wagging.rsi/icon.png create mode 100644 Resources/Textures/Interface/Actions/wagging.rsi/meta.json diff --git a/Content.Server/Wagging/WaggingSystem.cs b/Content.Server/Wagging/WaggingSystem.cs index 7ccc19e20c6..ed2747da198 100644 --- a/Content.Server/Wagging/WaggingSystem.cs +++ b/Content.Server/Wagging/WaggingSystem.cs @@ -65,6 +65,8 @@ public bool TryToggleWagging(EntityUid uid, WaggingComponent? wagging = null, Hu wagging.Wagging = !wagging.Wagging; + _actions.SetToggled(wagging.ActionEntity, wagging.Wagging); + for (var idx = 0; idx < markings.Count; idx++) // Animate all possible tails { var currentMarkingId = markings[idx].MarkingId; diff --git a/Resources/Locale/en-US/deltav/markings/vulpkanin.ftl b/Resources/Locale/en-US/deltav/markings/vulpkanin.ftl index 857cc711570..d23dd4d346a 100644 --- a/Resources/Locale/en-US/deltav/markings/vulpkanin.ftl +++ b/Resources/Locale/en-US/deltav/markings/vulpkanin.ftl @@ -102,14 +102,6 @@ marking-VulpTailTip-vulp = Vulpkanin tail (base) marking-VulpTailTip-vulp-tip = Vulpkanin tail (tip) marking-VulpTailTip = Vulpkanin (tip) -marking-VulpTailWag-vulp_wag = Vulpkanin tail (base) -marking-VulpTailWag-vulp_wag-fade = Vulpkanin tail (fade) -marking-VulpTailWag = Vulpkanin (wag) - -marking-VulpTailWagTip-vulp_wag = Vulpkanin tail (base) -marking-VulpTailWagTip-vulp_wag-tip = Vulpkanin tail (tip) -marking-VulpTailWagTip = Vulpkanin (wag, tip) - marking-VulpTailAlt-vulp_alt = Vulpkanin tail (base) marking-VulpTailAlt-vulp_alt-fade = Vulpkanin tail (fade) marking-VulpTailAlt = Vulpkanin (alt) @@ -130,29 +122,12 @@ marking-VulpTailFoxTip-fox = Fox tail (base) marking-VulpTailFoxTip-fox-tip = Fox tail (fade) marking-VulpTailFoxTip = Vulpkanin Fox (tip) -marking-VulpTailFoxWag-fox_wag = Fox tail (base) -marking-VulpTailFoxWag-fox_wag-fade = Fox tail (fade) -marking-VulpTailFoxWag = Vulpkanin Fox (wag) - -marking-VulpTailFoxWagTip-fox_wag = Fox tail (base) -marking-VulpTailFoxWagTip-fox_wag-tip = Fox tail (tip) -marking-VulpTailFoxWagTip = Vulpkanin Fox (wag, tip) - marking-VulpTailBushy-bushfluff = Bush tail marking-VulpTailBushy = Vulpkanin Bush -marking-VulpTailBushyWag-bushfluff_wag = Bush tail -marking-VulpTailBushyWag = Vulpkanin Bush (wag) - marking-VulpTailCoyote-coyote = Coyote tail marking-VulpTailCoyote = Vulpkanin Coyote -marking-VulpTailCoyoteWag-coyote_wag = Coyote tail -marking-VulpTailCoyoteWag = Vulpkanin Coyote (wag) - -marking-VulpTailCorgiWag-corgi_wag = Crogi tail -marking-VulpTailCorgiWag = Vulpkanin Corgi (wag) - marking-VulpTailHusky-husky-inner = Husky tail (inner) marking-VulpTailHusky-husky-outer = Husky tail (outer) marking-VulpTailHusky = Vulpkanin Husky @@ -176,8 +151,11 @@ marking-VulpTailOtie = Vulpkanin Otie marking-VulpTailFluffy-fluffy = Fluffy tail marking-VulpTailFluffy = Vulpkanin Fluffy -marking-VulpTailDalmatianWag-dalmatian_wag = Dalmatian tail -marking-VulpTailDalmatianWag = Vulpkanin Dalmatian (wag) +marking-VulpTailCorgi-corgi = Crogi tail +marking-VulpTailCorgi = Vulpkanin Corgi + +marking-VulpTailDalmatian-dalmatian = Dalmatian tail +marking-VulpTailDalmatian = Vulpkanin Dalmatian marking-VulpBellyCrest-belly_crest = Belly diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index f55f59daaa8..f5dff1f453a 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -345,8 +345,8 @@ noSpawn: true components: - type: InstantAction - icon: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind } - iconOn: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind } + icon: { sprite: Interface/Actions/wagging.rsi, state: icon } + iconOn: { sprite: Interface/Actions/wagging.rsi, state: icon-on } itemIconStyle: NoItem useDelay: 1 # emote spam event: !type:ToggleActionEvent diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/vulpkanin.yml index 502ddf35498..69bbb2bd96d 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Customization/Markings/vulpkanin.yml @@ -280,32 +280,32 @@ state: vulp-fade - type: marking - id: VulpTailTip + id: VulpTailAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp + state: vulp_wag - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp-tip + state: vulp_wag-tip #fade - type: marking - id: VulpTailWag + id: VulpTailTip bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp_wag + state: vulp - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp_wag-tip #fade + state: vulp-tip - type: marking - id: VulpTailWagTip + id: VulpTailTipAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp_wag @@ -357,32 +357,32 @@ state: fox-fade - type: marking - id: VulpTailFoxTip + id: VulpTailFoxAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: fox + state: fox_wag - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: fox-tip + state: fox_wag-fade - type: marking - id: VulpTailFoxWag + id: VulpTailFoxTip bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: fox_wag + state: fox - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi - state: fox_wag-fade + state: fox-tip - type: marking - id: VulpTailFoxWagTip + id: VulpTailFoxTipAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: fox_wag @@ -399,10 +399,10 @@ state: bushfluff - type: marking - id: VulpTailBushyWag + id: VulpTailBushyAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: bushfluff_wag @@ -417,19 +417,28 @@ state: coyote - type: marking - id: VulpTailCoyoteWag + id: VulpTailCoyoteAnimated bodyPart: Tail markingCategory: Tail - speciesRestriction: [Vulpkanin] + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: coyote_wag - type: marking - id: VulpTailCorgiWag + id: VulpTailCorgi bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + sprites: + - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: corgi + +- type: marking + id: VulpTailCorgiAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: corgi_wag @@ -502,10 +511,19 @@ state: fluffy - type: marking - id: VulpTailDalmatianWag + id: VulpTailDalmatian bodyPart: Tail markingCategory: Tail speciesRestriction: [Vulpkanin] + sprites: + - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi + state: dalmatian + +- type: marking + id: VulpTailDalmatianAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] sprites: - sprite: DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi state: dalmatian_wag diff --git a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml index 9e4f80bfb52..0bcd71fbadb 100644 --- a/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml +++ b/Resources/Prototypes/DeltaV/Entities/Mobs/Species/vulpkanin.yml @@ -97,6 +97,7 @@ Female: FemaleVulpkanin Unsexed: MaleVulpkanin - type: DogVision + - type: Wagging - type: LanguageKnowledge speaks: - GalacticCommon diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png b/Resources/Textures/DeltaV/Mobs/Customization/Vulpkanin/tail_markings.rsi/corgi.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9cb1c89179400b4e6faeed4de434731954098e GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!DLSt$B>G+x3?~G9#G(6b$A(b?v2R1t4b*i zZaInt?1~@tpM1XwRL9U@bWGy=s*1dwi>6k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`212l#}ze);kxD=X{%{rmg(?+1!K`JP`0q*zOW{DS`j0mJWYe8E5g&H|6f zVg?4j!ywFfJby(BP_Wk1#W5tp{q1x|z6Jvh7R?X;&83r;`mVTm)kWWWdQpSs9fv=v z^4v?lCNPvK+-hc#UHD{ilM%DlhJR`+7C11nGO~)Why(}(I5+}12jiOpzXdGVS@OQ= zsA8exJzjVAuB}Qtx2DhCTGTVg_^F@#?c8R+aOP`2nYc6x%I`CzmD}&T{Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D28>BWK~z{r?N>`o zQ&|{3wiHp3(pxAmpA-t{!U*^njZVT$9Vj^CLgQix%wFATOmtz?pr9L3qHD*&m|3_H z2tpJc6DQFKYJ7(l-(V>%#RretI^TD=t+y0(bS9b2e96guoO93l{?~WT760SE#x(W% zujAOUW4e)%k>qF3o{6JJk9yVDG5Bf%2M!!iaM6uFMIp3n*Dmkj!-o}v!EhrnF;RzW zNp*F#Q|*t!7ZcdOf4@@AsFE zj*j;3-Mcpn_nmj{-0|GHb*p5{mMu{v{x*Sw2M=b$o$WT8ExVwgK%}Lm33wug0IU~R zuU-}R@85U5diCnt+}vEB)oSg+cexiXTyWjKecO(?A|&Xt&w`7?_1Ow7s2N$Bb6DVsNMUgMM=KtfqC z0hz`u9twrTix)3MTU(p=+_`feHr~H{`7)&SL^wx)l(@J!1D~0w%oBhmtf8v`t%vKI z7cN|AWVUO;#h*WaE;>3ooG7;yj~+d;A;vabzqx$*@*ql29r-at0JS1IMyh^HN&rkP zaHj?C53`lvWV9R^?8oAzAliN8$Pr(CeZ3Dc?n5X-aCsyjXe}E+H%u&f>6#bjm(`iFMZ!uQ@&-?f91AJyb=K%&dB!&P6=&-06 z?LYyY7~rb#dz!D#fwEsN{aMa*jw-3z3cUQ zy#aWrsl2>gp;4$D_q}`f-26U<02ko|6BiGIeXugp3BtPR)2GXP!BxKF9JC&#hG_XK z)~;P^0Kp8-+11tM$M@x@PMwk-j3Jr5sSYgppYp+jEod{?eqaZ!xeu=9!T z?rtaU9gI8lB!jWtZdm#qNDN@%HtdK-?1C(;Fb zl&*E-#*GEgdox@|Qu@h4!3<}tVUY#>Qp>|22?`Uc#EL3ev17-MC)h*caIb?>_Mp$c zdGqF&0|^&nONM)su#dMaS+YbyoZZag@$h~GNl_c9kW@;o7YK%ALZ9o;{o-^5*x-hi@6eMi4g6ovPue?mf_?&e{pefIdXw2MMXyAPoF;3BUch2E|LVpLQfzUq$eOU>q|;Xn)!`7?Pn1ofWyQn1fvC3R$$}E zym;}V17T^re*O9|?tRFUUy%=|L8KH!;y@%Gc>o^cL`VW*G9f=42uCBrF|1DgNyMm4 zU0q#Ha&qzwHP+Vc+qZkvE{T2n_VI@#4QGZwacEIMQXbimxPny!74*RqHvFDNeK$FT Z_zPj&fN=@xoCN>?002ovPDHLkV1hR*VC(<@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Actions/wagging.rsi/icon.png b/Resources/Textures/Interface/Actions/wagging.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6dbb54fe2f2c11ae06b1277aedd7306a29214ca0 GIT binary patch literal 1283 zcmV+e1^oJnP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1ei%gK~z{r?N?b# zD@hnF6Zb77Y6KTtB5`{jbr2QAxn!L2=cp)%ps1iP`WFV~7r5Yps3SPctEi}xsEGTL z822^abJ|L7$4)2Fd*5abG~KD{uJ3&3TdE@d$A2C%^8R7;_xD?HGrau@g0Hi)(=DGP z;==@bdwWd=gTb1Tk}`px8Mt1Qi8mN=oj*N2Ia*s=U2j9-@gV|3LqoQ>xVXvW@h+(aZn$s&TrA^A*2MMZI4U7g6t$Po0N1bFvf{0)UfPEL-v zzrQzMUS75|Ha3pW%*=S?QW``gpf+AxTPqS16XlFPVq;?!64%$)X1CkjjPL%Ko11%( z(?JN8#Q`wplwHp_ z0`aCXB@BMxdvSh#o{0Hh>+9?PoSmJ$lT!icDu9HtVu37r@!q)4=M($;`(k=}+C4ft zdd7>-2L}f}wG#du0a&gfZG{}9_mFLd+ni74j=t?FSd5=aAA1;|>sY4i67|Mn*mR*jGhTh8s6tKqE*Vl#D>pg+Ar*c?9Zf>p>V+M5ys1|btIOk73 zyoZJW7BIkQMtppHP(pEGcqw*vcHAhh=I-upubfh<1-)UiprF9wSB&o;A0IPZULJ3Rmy(hae*y&{J@R=x9(tspudmO7_b2hbt+KLGWM*atIwIA&y}dobcPH|7 z4KxI3gbTbk?g!`KWndD74G9SeO1|K(jByQmzrDTfg<8LLb#(>QdJhc&b<9J7(!#qy zR>K%$OD`3}=zId@C{|Zj#ogWADc;xhp3o2o2U*t!v)RnLRxmg?=tfdH78e(}`6vx( zWo1P;oz5+8%i+8yq9#CP7~jIeLQ7g&+5~%roD%Kr?Jh|E1)Gj@YHI2dJ;901=u0$b z0zCr8P@!OkGuG&kR?G+WcamUZLY3GM_v%j{NZQ)kEa-s$I2?|W{QP`PGCn>&3UoZ~ z_x~aRe~Kh=Bxn?1OtHZ<&(F_$4-XIJ=r^cUKuKoF;ZGxE2oS%Mi;Ig>c*$ou`UZx^ zYPAaP6Kp;_FUYA+A!M<``-i5crU_*C?7peBV`}r>95x zLxLtWjuVm002ovPDHLkV1kgDR_Xu% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Actions/wagging.rsi/meta.json b/Resources/Textures/Interface/Actions/wagging.rsi/meta.json new file mode 100644 index 00000000000..022930052e5 --- /dev/null +++ b/Resources/Textures/Interface/Actions/wagging.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Created by dootythefrooty (Discord 273243513800622090)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-on" + } + ] +} From 8ccbf7e3536b8e31d49313e40ffb67e87c6863fc Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Thu, 1 Aug 2024 23:06:47 +0000 Subject: [PATCH 42/82] Automatic Changelog Update (#588) --- Resources/Changelog/Changelog.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d2d1007a290..7a58aa97679 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4793,3 +4793,9 @@ Entries: paperwork, and medkits. id: 6200 time: '2024-08-01T22:45:13.0000000+00:00' +- author: FoxxoTrystan + changes: + - type: Add + message: Vulpkanins can wag their tails now + id: 6201 + time: '2024-08-01T23:06:24.0000000+00:00' From 172e0362dee9abd33eb9750cde423a998564d92e Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Fri, 2 Aug 2024 15:08:07 +0800 Subject: [PATCH 43/82] Increase Combat Knife Availability (#640) # Description Added combat knives to the SecTech vendor and added the combat knife to the security techfab for a cost of 2.5 steel and 1 plastic. With this change, Harpy and Diona Security players can now get a combat knife from the SecTech as they cannot spawn nor wear combat boots, which contains a combat knife. Prison guards now start with combat boots with a combat knife, and a combat knife has been added to Loadouts for Felinid/Harpy security. Cherry-picked from Space Wizards (https://github.com/space-wizards/space-station-14/pull/27224). An equivalent to "Fix no combat knives in sec techfab" (https://github.com/space-wizards/space-station-14/pull/28086) has been added with 7809b504cc1c2f8f4e9db2e820d94f292e787115, which also adds the combat knife to emagged autolathes. # Changelog :cl: Skubman, Ghagliiarghii - add: Added the combat knife to the SecTech, and the ability to manufacture combat knives in the SecLathe and emagged autolathes. - add: Added a 1-point combat knife to Loadouts for Felinid/Harpy security jobs. - tweak: Made the security belt and security webbing able to hold combat knives. - tweak: Prison Guards now start with combat boots with a combat knife. --------- Co-authored-by: Ghagliiarghii <68826635+Ghagliiarghii@users.noreply.github.com> --- .../Catalog/VendingMachines/Inventories/sec.yml | 1 + .../Prototypes/Entities/Clothing/Belt/belts.yml | 1 + .../Entities/Structures/Machines/lathe.yml | 2 ++ Resources/Prototypes/Loadouts/Jobs/security.yml | 16 ++++++++++++++++ .../Roles/Jobs/Security/prisonguard.yml | 2 +- Resources/Prototypes/Recipes/Lathes/security.yml | 9 +++++++++ 6 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index c071305b77c..7ea927e9b62 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -14,6 +14,7 @@ ClothingEyesHudSecurity: 2 ClothingEyesEyepatchHudSecurity: 2 ClothingBeltSecurityWebbing: 5 + CombatKnife: 3 Zipties: 12 RiotShield: 2 RiotLaserShield: 2 diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index d90945a7eba..359165cfc50 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -472,6 +472,7 @@ - Sidearm - MagazinePistol - MagazineMagnum + - CombatKnife components: - Stunbaton - FlashOnTrigger diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 2f4ecae7645..5d727207fe6 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -169,6 +169,7 @@ - ShellTranquilizer - CartridgeLightRifle - CartridgeRifle + - CombatKnife - MagazineBoxPistol - MagazineBoxMagnum - MagazineBoxRifle @@ -706,6 +707,7 @@ runningState: icon staticRecipes: - ClothingEyesHudSecurity + - CombatKnife - Flash - Handcuffs - Zipties diff --git a/Resources/Prototypes/Loadouts/Jobs/security.yml b/Resources/Prototypes/Loadouts/Jobs/security.yml index c6a78ad5d22..f1c64730378 100644 --- a/Resources/Prototypes/Loadouts/Jobs/security.yml +++ b/Resources/Prototypes/Loadouts/Jobs/security.yml @@ -363,6 +363,22 @@ items: - ClothingBeltSecurityWebbingFilled +# Equipment +- type: loadout + id: LoadoutSecurityCombatKnife + category: Jobs + cost: 1 + requirements: + - !type:CharacterSpeciesRequirement + species: + - Diona + - Harpy + - !type:CharacterDepartmentRequirement + departments: + - Security + items: + - CombatKnife + # TODO: Make this replace the secoff handgun and make it cheaper # # Species # - type: loadout diff --git a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml index 12c859b7d8c..fec6ac685ed 100644 --- a/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml +++ b/Resources/Prototypes/Nyanotrasen/Roles/Jobs/Security/prisonguard.yml @@ -30,7 +30,7 @@ equipment: jumpsuit: ClothingUniformJumpsuitPrisonGuard back: ClothingBackpackSecurityFilled - shoes: ClothingShoesBootsJack + shoes: ClothingShoesBootsCombatFilled eyes: ClothingEyesGlassesSecurity head: ClothingHeadPrisonGuard id: PrisonGuardPDA diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index ffa74d460f9..08e11e4ff82 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -30,6 +30,15 @@ Steel: 300 Plastic: 300 +- type: latheRecipe + id: CombatKnife + result: CombatKnife + category: Weapons + completetime: 2 + materials: + Steel: 250 + Plastic: 100 + - type: latheRecipe id: WeaponLaserCarbine result: WeaponLaserCarbine From 3a27ee82732adf1725b4dda0670f4274b1289271 Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Fri, 2 Aug 2024 07:08:34 +0000 Subject: [PATCH 44/82] Automatic Changelog Update (#640) --- Resources/Changelog/Changelog.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7a58aa97679..6d50113b36a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4799,3 +4799,19 @@ Entries: message: Vulpkanins can wag their tails now id: 6201 time: '2024-08-01T23:06:24.0000000+00:00' +- author: angelofallars + changes: + - type: Add + message: >- + Added the combat knife to the SecTech, and the ability to manufacture + combat knives in the SecLathe and emagged autolathes. + - type: Add + message: >- + Added a 1-point combat knife to Loadouts for Felinid/Harpy security + jobs. + - type: Tweak + message: Made the security belt and security webbing able to hold combat knives. + - type: Tweak + message: 'Prison Guards now start with combat boots with a combat knife. ' + id: 6202 + time: '2024-08-02T07:08:07.0000000+00:00' From 9b3f1f519d426ddd1c66a106948452d95d6baaa1 Mon Sep 17 00:00:00 2001 From: Angelo Fallaria Date: Fri, 2 Aug 2024 15:09:44 +0800 Subject: [PATCH 45/82] Add Breaching Charges (#638) # Description Adds breaching charges for Security, a weaker version of the Salvage seismic charge for breaching through walls. Originally made by @rosieposieeee for Delta-V (https://github.com/DeltaV-Station/Delta-v/pull/1056). --- # Changelog :cl: rosieposieeee - add: Added breaching charges to the SecTech vendor for Security, to break through walls. --------- Co-authored-by: rosieposie <52761126+rosieposieeee@users.noreply.github.com> --- .../VendingMachines/Inventories/sec.yml | 3 +- .../Objects/Weapons/Bombs/plastic.yml | 31 +++++++++++++++++- .../Weapons/Bombs/breaching.rsi/icon.png | Bin 0 -> 3388 bytes .../Bombs/breaching.rsi/inhand-left.png | Bin 0 -> 3499 bytes .../Bombs/breaching.rsi/inhand-right.png | Bin 0 -> 3502 bytes .../Weapons/Bombs/breaching.rsi/meta.json | 31 ++++++++++++++++++ .../Weapons/Bombs/breaching.rsi/primed.png | Bin 0 -> 3520 bytes 7 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/meta.json create mode 100644 Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/primed.png diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml index 7ea927e9b62..01b58ae40fb 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/sec.yml @@ -22,8 +22,9 @@ ClothingHeadHelmetInsulated: 2 # Nyanotrasen - Insulative headgear ClothingHeadCage: 2 # Nyanotrasen - Insulative headgear ClothingOuterArmorPlateCarrier: 2 # DeltaV - moved body armour from SecDrobe to SecTech - ClothingOuterArmorDuraVest: 2 + ClothingOuterArmorDuraVest: 2 ClothingHeadHelmetBasic: 2 # DeltaV - added helmets to the SecTech. Another line of defense between the tide and your grey matter. + BreachingCharge: 8 # security officers need to follow a diet regimen! contrabandInventory: FoodDonutHomer: 12 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml index 62f81fa5466..b39c8af9b25 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: BasePlasticExplosive parent: BaseItem abstract: true @@ -106,3 +106,32 @@ maxIntensity: 30 canCreateVacuum: false - type: ExplodeOnTrigger + +- type: entity + name: breaching charge + description: A breaching explosive for security officers to break through walls. + parent: SeismicCharge + id: BreachingCharge + components: + - type: Sprite + sprite: Objects/Weapons/Bombs/breaching.rsi + state: icon + layers: + - state: icon + map: ["base"] + - type: OnUseTimerTrigger + delay: 10 + delayOptions: [10, 15, 20, 25] + initialBeepDelay: 0 + beepSound: + path: /Audio/Effects/Cargo/buzz_two.ogg + params: + volume: -6 + startOnStick: true + canToggleStartOnStick: true + - type: Explosive + explosionType: DemolitionCharge + totalIntensity: 10 + intensitySlope: 10 + maxIntensity: 10 + canCreateVacuum: false diff --git a/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/icon.png b/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5bd58663b6e6b8ba24c6e652c1a679ed70000b81 GIT binary patch literal 3388 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%0Dy!50Qvv` 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01FZT01FZU(%pXi0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600O#6L_t(|obB1aYZ_r32Jq(v zA;qaujF{$Xqz*wu9E55zgcR-ErK3)DXgdX$ZtB)WI(BFw5ZkH$L6n9J77Id)grh@C z)0!$qg1AV8z_*iD5~Jsj^F7V?8E-fqKfZS;k02u4Ov)m8j1mkkLJkH;yUP744KLeQ|T*8(Jc9?DzoSFY!B zIXu0;hPOX{84@5I4tGD$MzsuKG9mfxXmo&>%Srp~3v6v~LseC{-EOF=ih8YP*l!>B z|Dpzf%6S_A27X!B0tg`}6bfCrp3CLBkA)Evb2$kB-u*o8UK`YR;7ib~!C;U& zeG7%c(5^#&2aGBzJH36ibR7z?_24c&+*rf1Z3U;b3KFmLh6VtD)XpY-`h1MTFMlTo zSoAOe126ys$nGFD48Q;kzyPv4NDTup00S_9><&`H0P_N%*B&`Bz$}K+n9E5kx0X;j zZ%=)Zng~G8V!e6u>Ir$3Wz?HZJbwP(H~;{U|L}rJEObVkpq z-hWbn-ql!-y`XoZ%Vx9214#Njw0qV>@032xI247fHXGb-H}>}Sj0KSNc?bY@&zb=A z8BO|)w9`BZV*zy5mq$w`0Kk6xLbns(_xs6WvA}M(cSqW3o`kUhX0;mYJy&L(xnS*@d|){G4>kE?ON%*~%6y}|$t caKi!q0a)(|p9l-|;s5{u07*qoM6N<$g3VoizyJUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/meta.json b/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/meta.json new file mode 100644 index 00000000000..678ffd9abd5 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/meta.json @@ -0,0 +1,31 @@ + { + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "made by rosieposieeee (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "primed", + "delays": [ + [ + 0.1, + 0.1 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/primed.png b/Resources/Textures/Objects/Weapons/Bombs/breaching.rsi/primed.png new file mode 100644 index 0000000000000000000000000000000000000000..135cc2d3492384253f3ff6c1d7fbbe12203d0823 GIT binary patch literal 3520 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%0Dy!50Qvv` z0D$NK0Cg|`0P0`>06Lfe02gqax=}m;000SaNLh0L01FZT01FZU(%pXi0000RbVXQn zQ*UN;cVTj607GSLb9r+hQ*?D?X>TA@Z*OeDr{R1600PWOL_t(&f$f>UOB-Pvho2V& zt;An}^NdDMsYqHvpmi|lAlA_S1Krw;LVpZh+qFyofzl3kJBK1dr&6$yBZIAibPx-+ zSTuSTx=6vnc6vLMTrZapbC-LsgZXan=PviWc`olaFLy#p$we;F63`ORn1F@xF$u7^ zw=e2ts!A2VApr~HV{)*goht(atR0kC+}jrm<70Au)Btd@pp*EY{Bs4A;opD#24H^F zVC|qptxSak)%>~w-0e~UiT#iH{ z;T$(jvnnfE789wIlNBv1u!Jc14gU>3{rrVoE?04^P$*PoUw3zzNTqmxb_Re^DmC>h z2+Dun)&{`MotsXtECk<*%mG{5U-&f6fi?CBR#UwoR=Z_$z?smq1YdYB~*s zums$b$Y!&|VlgKx6bjVJ+>NQ3CKv_Zw}5iRVlig|-VAW=Oj!E@Rs4pRK&@s|w+V*4 zAyUOx*8~;p2vzXaH9-XeRPcTEfJ`O>Kxbzs02><{)XJLO0!PXBC150(q&FUSfbI#n zGbv^04@Ok+0}BAy-rla5Ksk#-Kv;ZV0)UD&=U#)o@i;$EPB^q}Wdc<2eLWTzLdbh} zt}&opqF*26!IKrdV-;UsCEu5T*{LCUV|o;TetnSFZ$9817dMZU2~ffJ{bFQxYRLIO uar0Ps$G$EWpu*<2-VC(_v; Date: Fri, 2 Aug 2024 07:10:08 +0000 Subject: [PATCH 46/82] Automatic Changelog Update (#638) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6d50113b36a..fa05375853f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4815,3 +4815,11 @@ Entries: message: 'Prison Guards now start with combat boots with a combat knife. ' id: 6202 time: '2024-08-02T07:08:07.0000000+00:00' +- author: rosieposieeee + changes: + - type: Add + message: >- + Added breaching charges to the SecTech vendor for Security, to break + through walls. + id: 6203 + time: '2024-08-02T07:09:44.0000000+00:00' From 6b86a6df5d7979b2fde171e876562fb39231a593 Mon Sep 17 00:00:00 2001 From: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> Date: Fri, 2 Aug 2024 00:14:01 -0700 Subject: [PATCH 47/82] AHelp Sound Improvements (#585) # Description I don't like the bwoink. I also don't like being notified about the thing I'm staring at. If anyone has better quality sounds to suggest, I might use those instead. ---

Media

## Different sounds https://github.com/user-attachments/assets/8003f785-0cd0-44c9-94c2-919c59adac5c ## Ignore sounds when looking https://github.com/user-attachments/assets/2ac99672-a601-41e0-a5cd-25ce9c1a5c49

--- # Changelog :cl: - tweak: The AdminHelp sound has changed to three that play under different circumstances --------- Signed-off-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com> --- .../Administration/Systems/AdminSystem.cs | 21 +++++-------- .../Administration/Systems/BwoinkSystem.cs | 11 +++++-- .../Systems/Bwoink/AHelpUIController.cs | 28 ++++++++---------- Content.Shared/CCVar/CCVars.cs | 2 -- Resources/Audio/Admin/ahelp_error.ogg | Bin 0 -> 5721 bytes Resources/Audio/Admin/ahelp_receive.ogg | Bin 0 -> 13627 bytes Resources/Audio/Admin/ahelp_send.ogg | Bin 0 -> 13748 bytes Resources/Audio/Admin/attributions.yml | 9 ++++++ Resources/Audio/Effects/adminhelp.ogg | Bin 17220 -> 0 bytes 9 files changed, 37 insertions(+), 34 deletions(-) create mode 100755 Resources/Audio/Admin/ahelp_error.ogg create mode 100755 Resources/Audio/Admin/ahelp_receive.ogg create mode 100755 Resources/Audio/Admin/ahelp_send.ogg create mode 100644 Resources/Audio/Admin/attributions.yml delete mode 100644 Resources/Audio/Effects/adminhelp.ogg diff --git a/Content.Client/Administration/Systems/AdminSystem.cs b/Content.Client/Administration/Systems/AdminSystem.cs index f7451d23047..db1b721343e 100644 --- a/Content.Client/Administration/Systems/AdminSystem.cs +++ b/Content.Client/Administration/Systems/AdminSystem.cs @@ -10,16 +10,9 @@ public sealed partial class AdminSystem : EntitySystem { public event Action>? PlayerListChanged; - private Dictionary? _playerList; - public IReadOnlyList PlayerList - { - get - { - if (_playerList != null) return _playerList.Values.ToList(); - - return new List(); - } - } + public Dictionary PlayerInfos = new(); + public IReadOnlyList PlayerList => + PlayerInfos != null ? PlayerInfos.Values.ToList() : new List(); public override void Initialize() { @@ -40,15 +33,15 @@ private void OnPlayerInfoChanged(PlayerInfoChangedEvent ev) { if(ev.PlayerInfo == null) return; - if (_playerList == null) _playerList = new(); + if (PlayerInfos == null) PlayerInfos = new(); - _playerList[ev.PlayerInfo.SessionId] = ev.PlayerInfo; - PlayerListChanged?.Invoke(_playerList.Values.ToList()); + PlayerInfos[ev.PlayerInfo.SessionId] = ev.PlayerInfo; + PlayerListChanged?.Invoke(PlayerInfos.Values.ToList()); } private void OnPlayerListChanged(FullPlayerListEvent msg) { - _playerList = msg.PlayersInfo.ToDictionary(x => x.SessionId, x => x); + PlayerInfos = msg.PlayersInfo.ToDictionary(x => x.SessionId, x => x); PlayerListChanged?.Invoke(msg.PlayersInfo); } } diff --git a/Content.Client/Administration/Systems/BwoinkSystem.cs b/Content.Client/Administration/Systems/BwoinkSystem.cs index 5166dc8416b..a3b295d6b6e 100644 --- a/Content.Client/Administration/Systems/BwoinkSystem.cs +++ b/Content.Client/Administration/Systems/BwoinkSystem.cs @@ -1,7 +1,10 @@ #nullable enable +using Content.Client.UserInterface.Systems.Bwoink; using Content.Shared.Administration; using JetBrains.Annotations; +using Robust.Client.Audio; using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Client.Administration.Systems @@ -10,6 +13,8 @@ namespace Content.Client.Administration.Systems public sealed class BwoinkSystem : SharedBwoinkSystem { [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly AudioSystem _audio = default!; + [Dependency] private readonly AdminSystem _adminSystem = default!; public event EventHandler? OnBwoinkTextMessageRecieved; private (TimeSpan Timestamp, bool Typing) _lastTypingUpdateSent; @@ -21,6 +26,10 @@ protected override void OnBwoinkTextMessage(BwoinkTextMessage message, EntitySes public void Send(NetUserId channelId, string text, bool playSound) { + var info = _adminSystem.PlayerInfos.GetValueOrDefault(channelId)?.Connected ?? true; + _audio.PlayGlobal(info ? AHelpUIController.AHelpSendSound : AHelpUIController.AHelpErrorSound, + Filter.Local(), false); + // Reuse the channel ID as the 'true sender'. // Server will ignore this and if someone makes it not ignore this (which is bad, allows impersonation!!!), that will help. RaiseNetworkEvent(new BwoinkTextMessage(channelId, channelId, text, playSound: playSound)); @@ -31,9 +40,7 @@ public void SendInputTextUpdated(NetUserId channel, bool typing) { if (_lastTypingUpdateSent.Typing == typing && _lastTypingUpdateSent.Timestamp + TimeSpan.FromSeconds(1) > _timing.RealTime) - { return; - } _lastTypingUpdateSent = (_timing.RealTime, typing); RaiseNetworkEvent(new BwoinkClientTypingUpdated(channel, typing)); diff --git a/Content.Client/UserInterface/Systems/Bwoink/AHelpUIController.cs b/Content.Client/UserInterface/Systems/Bwoink/AHelpUIController.cs index 2c913a2d580..2d2be1babca 100644 --- a/Content.Client/UserInterface/Systems/Bwoink/AHelpUIController.cs +++ b/Content.Client/UserInterface/Systems/Bwoink/AHelpUIController.cs @@ -33,7 +33,6 @@ namespace Content.Client.UserInterface.Systems.Bwoink; public sealed class AHelpUIController: UIController, IOnSystemChanged, IOnStateChanged, IOnStateChanged { [Dependency] private readonly IClientAdminManager _adminManager = default!; - [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IClyde _clyde = default!; [Dependency] private readonly IUserInterfaceManager _uiManager = default!; @@ -43,9 +42,14 @@ public sealed class AHelpUIController: UIController, IOnSystemChanged UIManager.GetActiveUIWidgetOrNull()?.AHelpButton; private Button? LobbyAHelpButton => (UIManager.ActiveScreen as LobbyGui)?.AHelpButton; public IAHelpUIHandler? UIHelper; + private bool _discordRelayActive; private bool _hasUnreadAHelp; - private string? _aHelpSound; + + public const string AHelpErrorSound = "/Audio/Admin/ahelp_error.ogg"; + public const string AHelpReceiveSound = "/Audio/Admin/ahelp_receive.ogg"; + public const string AHelpSendSound = "/Audio/Admin/ahelp_send.ogg"; + public override void Initialize() { @@ -55,9 +59,9 @@ public override void Initialize() SubscribeNetworkEvent(PeopleTypingUpdated); _adminManager.AdminStatusUpdated += OnAdminStatusUpdated; - _config.OnValueChanged(CCVars.AHelpSound, v => _aHelpSound = v, true); } + public void UnloadButton() { if (GameAHelpButton != null) @@ -112,14 +116,10 @@ public void OnSystemUnloaded(BwoinkSystem system) private void SetAHelpPressed(bool pressed) { if (GameAHelpButton != null) - { GameAHelpButton.Pressed = pressed; - } if (LobbyAHelpButton != null) - { LobbyAHelpButton.Pressed = pressed; - } UIManager.ClickSound(); UnreadAHelpRead(); @@ -130,22 +130,18 @@ private void ReceivedBwoink(object? sender, SharedBwoinkSystem.BwoinkTextMessage Logger.InfoS("c.s.go.es.bwoink", $"@{message.UserId}: {message.Text}"); var localPlayer = _playerManager.LocalSession; if (localPlayer == null) - { return; - } - if (message.PlaySound && localPlayer.UserId != message.TrueSender) + + EnsureUIHelper(); + + if (message.PlaySound && localPlayer.UserId != message.TrueSender && !UIHelper!.IsOpen) { - if (_aHelpSound != null) - _audio.PlayGlobal(_aHelpSound, Filter.Local(), false); + _audio.PlayGlobal(AHelpReceiveSound, Filter.Local(), false); _clyde.RequestWindowAttention(); } - EnsureUIHelper(); - if (!UIHelper!.IsOpen) - { UnreadAHelpReceived(); - } UIHelper!.Receive(message); } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index df463b27299..0d09dd59f74 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -838,8 +838,6 @@ public static readonly CVarDef CVarDef.Create("audio.admin_chat_sound_path", "/Audio/Items/pop.ogg", CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); public static readonly CVarDef AdminChatSoundVolume = CVarDef.Create("audio.admin_chat_sound_volume", -5f, CVar.ARCHIVE | CVar.CLIENT | CVar.REPLICATED); - public static readonly CVarDef AHelpSound = - CVarDef.Create("audio.ahelp_sound", "/Audio/Effects/adminhelp.ogg", CVar.ARCHIVE | CVar.CLIENTONLY); /* * HUD diff --git a/Resources/Audio/Admin/ahelp_error.ogg b/Resources/Audio/Admin/ahelp_error.ogg new file mode 100755 index 0000000000000000000000000000000000000000..bcdb326790068a884cfeef0e154ed9c8af911bef GIT binary patch literal 5721 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Admin/attributions.yml b/Resources/Audio/Admin/attributions.yml new file mode 100644 index 00000000000..8df7e38c578 --- /dev/null +++ b/Resources/Audio/Admin/attributions.yml @@ -0,0 +1,9 @@ +- files: [ "ahelp_error" ] + license: "CC-BY-NC-SA-3.0" + copyright: "CM-SS13" + source: "https://github.com/cmss13-devs/cmss13/commit/497204fb1660977fb6bf1fe8de153c65c8299d7d" + +- files: [ "ahelp_receive", "ahelp_send" ] + license: "CC-BY-NC-SA-3.0" + copyright: "CM-SS13" + source: "https://github.com/cmss13-devs/cmss13/commit/21e6447cc08aea502f671c819fdbcecbb85e6028" diff --git a/Resources/Audio/Effects/adminhelp.ogg b/Resources/Audio/Effects/adminhelp.ogg deleted file mode 100644 index 704c0fd6d20fa552c750f19f606847e2dff1beaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17220 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 From 49c944d6bdd3a7b731d89b75bad103b552120c9c Mon Sep 17 00:00:00 2001 From: SimpleStation Changelogs Date: Fri, 2 Aug 2024 07:14:25 +0000 Subject: [PATCH 48/82] Automatic Changelog Update (#585) --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fa05375853f..26b1b13d570 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4823,3 +4823,11 @@ Entries: through walls. id: 6203 time: '2024-08-02T07:09:44.0000000+00:00' +- author: DEATHB4DEFEAT + changes: + - type: Tweak + message: >- + The AdminHelp sound has changed to three that play under different + circumstances + id: 6204 + time: '2024-08-02T07:14:01.0000000+00:00' From d25a25c8fea8fbd038b54ac1ba5444c42d412f3b Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Sat, 3 Aug 2024 01:17:27 +0300 Subject: [PATCH 49/82] Fix Stinky Anomaly Announcement (#646) # Description Title.

Media

![image](https://github.com/user-attachments/assets/31a9527d-1481-423f-a561-274d9814ee92)

# Changelog No cl no fun --- Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl b/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl index 543bef949aa..30fe4971eb8 100644 --- a/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl +++ b/Resources/Locale/en-US/station-events/events/anomaly-spawn.ftl @@ -1,4 +1,4 @@ -station-event-anomaly-spawn-announcement = Our readings have detected a dangerous interspacial anomaly. Please inform the research team of { $sighting }. +anomaly-spawn-event-announcement = Our readings have detected a dangerous interspacial anomaly. Please inform the research team of { $sighting }. anomaly-spawn-sighting-1 = low pulsating sounds heard throughout the station anomaly-spawn-sighting-2 = strange sources of light From 58a1f88ded711e5f9581784e3f20d04f75ef6266 Mon Sep 17 00:00:00 2001 From: Mnemotechnican <69920617+Mnemotechnician@users.noreply.github.com> Date: Sat, 3 Aug 2024 01:52:41 +0300 Subject: [PATCH 50/82] Revert "Refactor Ramping Event Scheduler (#592)" (#644) # Description This reverts commit 910b4c3c4e83e07fe2e22687e74c940604e97eb1. The PR was never tested properly, and after it was merged on deep station, a lot of significant issues have been uncovered, including station events appearing every 6-12 seconds regardless of the gamemode, some RampingStationEventScheduler component fields being unused, some CVars having misleading usages, some CVars being unused, and more. The PR needs to be re-done and tested thoroughly before it can be merged. :cl: - fix: Reverted the station event scheduler rework due to it absolutely breaking the game. --- .../RampingStationEventSchedulerComponent.cs | 36 ++++------ .../RampingStationEventSchedulerSystem.cs | 65 +++++++------------ Content.Shared/CCVar/CCVars.cs | 27 ++------ .../game-presets/preset-survival.ftl | 3 - Resources/Prototypes/GameRules/roundstart.yml | 12 +--- Resources/Prototypes/game_presets.yml | 11 ---- 6 files changed, 45 insertions(+), 109 deletions(-) diff --git a/Content.Server/StationEvents/Components/RampingStationEventSchedulerComponent.cs b/Content.Server/StationEvents/Components/RampingStationEventSchedulerComponent.cs index 673c82b20f6..282ee5b612a 100644 --- a/Content.Server/StationEvents/Components/RampingStationEventSchedulerComponent.cs +++ b/Content.Server/StationEvents/Components/RampingStationEventSchedulerComponent.cs @@ -4,50 +4,38 @@ public sealed partial class RampingStationEventSchedulerComponent : Component { /// - /// Multiplies the End Time of the Ramping Event curve. Lower this number for shorter, hectic shifts, increase this number for longer shifts. + /// The maximum number by which the event rate will be multiplied when shift time reaches the end time. /// [DataField] - public float ShiftChaosModifier = 1f; + public float ChaosModifier = 3f; /// - /// The number by which all event delays will be multiplied. Unlike chaos, remains constant throughout the shift. + /// The minimum number by which the event rate will be multiplied when the shift has just begun. /// [DataField] - public float EventDelayModifier = 1f; - + public float StartingChaosRatio = 0.1f; /// - /// Shift Length(in Minutes) is directly reduced by this value. - /// - [DataField] - public float ShiftLengthOffset = 0f; - - /// - /// Minimum time between events is decreased by this value. + /// The number by which all event delays will be multiplied. Unlike chaos, remains constant throughout the shift. /// [DataField] - public float MinimumEventTimeOffset = 0f; + public float EventDelayModifier = 1f; /// - /// Maximum time between events is decreased by this value. + /// The number by which average expected shift length is multiplied. Higher values lead to slower chaos growth. /// - - [DataField] - public float MaximumEventTimeOffset = 0f; - - [DataField] - public bool IgnoreMinimumTimes = false; + public float ShiftLengthModifier = 1f; // Everything below is overridden in the RampingStationEventSchedulerSystem based on CVars - [DataField] + [DataField("endTime"), ViewVariables(VVAccess.ReadWrite)] public float EndTime; - [DataField] + [DataField("maxChaos"), ViewVariables(VVAccess.ReadWrite)] public float MaxChaos; - [DataField] + [DataField("startingChaos"), ViewVariables(VVAccess.ReadWrite)] public float StartingChaos; - [DataField] + [DataField("timeUntilNextEvent"), ViewVariables(VVAccess.ReadWrite)] public float TimeUntilNextEvent; } diff --git a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs index e24578fdac9..aa0c9b214b4 100644 --- a/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/RampingStationEventSchedulerSystem.cs @@ -2,10 +2,10 @@ using Content.Server.GameTicking.Rules; using Content.Server.GameTicking.Rules.Components; using Content.Server.StationEvents.Components; +using Content.Server.StationEvents.Events; using Content.Shared.CCVar; using Robust.Shared.Configuration; using Robust.Shared.Random; -using Robust.Shared.Utility; namespace Content.Server.StationEvents; @@ -16,35 +16,30 @@ public sealed class RampingStationEventSchedulerSystem : GameRuleSystem - /// A logistic curve equation used to smooth out the transition between event times at shift start, vs. shift end. - /// Depending on the settings used, the end time might not necessarily be the point at which timers hit the floor. - /// It is after all, an asymptote. - ///