From aa8dc511daaab75181b614fc536aae3b57bc6cc0 Mon Sep 17 00:00:00 2001 From: RedBurningPhoenix <147742474+RedBurningPhoenix@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:15:46 +0500 Subject: [PATCH 01/13] fix cryopod volume (#27148) (#621) Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Server/Medical/Components/CryoPodAirComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Medical/Components/CryoPodAirComponent.cs b/Content.Server/Medical/Components/CryoPodAirComponent.cs index baaa3bcda0..72a10b391e 100644 --- a/Content.Server/Medical/Components/CryoPodAirComponent.cs +++ b/Content.Server/Medical/Components/CryoPodAirComponent.cs @@ -11,5 +11,5 @@ public sealed partial class CryoPodAirComponent : Component /// [ViewVariables(VVAccess.ReadWrite)] [DataField("gasMixture")] - public GasMixture Air { get; set; } = new(Atmospherics.OneAtmosphere); + public GasMixture Air { get; set; } = new GasMixture(1000f); } From c9b7cfd868ee1ef464ccae8de80cab8975f86e8a Mon Sep 17 00:00:00 2001 From: RedBurningPhoenix <147742474+RedBurningPhoenix@users.noreply.github.com> Date: Thu, 15 Aug 2024 17:16:00 +0500 Subject: [PATCH 02/13] Botany produce fix (#622) https://github.com/space-wizards/space-station-14/pull/27210 --- .../Botany/Systems/MutationSystem.cs | 28 +++++++++++++++---- .../Botany/Systems/PlantHolderSystem.cs | 4 +-- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Content.Server/Botany/Systems/MutationSystem.cs b/Content.Server/Botany/Systems/MutationSystem.cs index c7ce5d47ef..946ab2579b 100644 --- a/Content.Server/Botany/Systems/MutationSystem.cs +++ b/Content.Server/Botany/Systems/MutationSystem.cs @@ -40,7 +40,7 @@ public sealed class MutationSystem : EntitySystem } // Add up everything in the bits column and put the number here. - const int totalbits = 275; + const int totalbits = 270; // Tolerances (55) MutateFloat(ref seed.NutrientConsumption , 0.05f, 1.2f, 5, totalbits, severity); @@ -66,7 +66,7 @@ public sealed class MutationSystem : EntitySystem // Kill the plant (30) MutateBool(ref seed.Viable , false, 30, totalbits, severity); - // Fun (90) + // Fun (80) MutateBool(ref seed.Seedless , true , 10, totalbits, severity); MutateBool(ref seed.Slip , true , 10, totalbits, severity); MutateBool(ref seed.Sentient , true , 10, totalbits, severity); @@ -153,6 +153,12 @@ public sealed class MutationSystem : EntitySystem if (!Random(probBitflip)) return; + if (min == max) + { + val = min; + return; + } + // Starting number of bits that are high, between 0 and bits. // In other words, it's val mapped linearly from range [min, max] to range [0, bits], and then rounded. int valInt = (int)MathF.Round((val - min) / (max - min) * bits); @@ -186,10 +192,22 @@ public sealed class MutationSystem : EntitySystem if (!Random(probBitflip)) return; + if (min == max) + { + val = min; + return; + } + + // Starting number of bits that are high, between 0 and bits. + // In other words, it's val mapped linearly from range [min, max] to range [0, bits], and then rounded. + int valInt = (int)MathF.Round((val - min) / (max - min) * bits); + // val may be outside the range of min/max due to starting prototype values, so clamp. + valInt = Math.Clamp(valInt, 0, bits); + // Probability that the bit flip increases n. - // The higher the current value is, the lower the probability of increasing value is, and the higher the probability of decreasive it it. + // The higher the current value is, the lower the probability of increasing value is, and the higher the probability of decreasing it. // In other words, it tends to go to the middle. - float probIncrease = 1 - (float)val / bits; + float probIncrease = 1 - (float)valInt / bits; int valMutated; if (Random(probIncrease)) { @@ -274,7 +292,7 @@ public sealed class MutationSystem : EntitySystem seedChemQuantity.Max = 1 + amount; seedChemQuantity.Inherent = false; } - int potencyDivisor = (int) Math.Ceiling(100.0f / seedChemQuantity.Max); + int potencyDivisor = (int)Math.Ceiling(100.0f / seedChemQuantity.Max); seedChemQuantity.PotencyDivisor = potencyDivisor; chemicals[chemicalId] = seedChemQuantity; } diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 7b7c7c85d4..855c70971c 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -518,10 +518,10 @@ public sealed class PlantHolderSystem : EntitySystem var environment = _atmosphere.GetContainingMixture(uid, true, true) ?? GasMixture.SpaceGas; + component.MissingGas = 0; + if (component.Seed.ConsumeGasses.Count > 0) { - component.MissingGas = 0; - foreach (var (gas, amount) in component.Seed.ConsumeGasses) { if (environment.GetMoles(gas) < amount) From bbfdf6a573e799d3610b8fe3e8b9cfb5dd64ef49 Mon Sep 17 00:00:00 2001 From: RavmorganButOnCocaine Date: Thu, 15 Aug 2024 12:17:05 +0000 Subject: [PATCH 03/13] Automatic changelog update --- Resources/Changelog/ChangelogWhite.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index a0ebbb272a..7add63c0e2 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -8207,3 +8207,27 @@ id: 491 time: '2024-08-14T19:24:31.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/619 +- author: Warete + changes: + - message: "\u041A\u0440\u0438\u043E\u043F\u043E\u0434 \u0442\u0435\u043F\u0435\u0440\ + \u044C \u043E\u0445\u043B\u0430\u0436\u0434\u0430\u0435\u0442 \u043D\u0430\u043C\ + \u043D\u043E\u0433\u043E \u0431\u044B\u0441\u0442\u0440\u0435\u0435, \u0432\ + \ \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u043E\u0442\ + \ \u0434\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u0433\u0430\u0437\u0430\ + \ \u0432\u043D\u0443\u0442\u0440\u0438." + type: Fix + id: 492 + time: '2024-08-15T12:15:46.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/621 +- author: Warete + changes: + - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D \u0431\u0430\u0433\ + \ \u0441 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\ + \u044C\u044E \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0431\u043E\ + \u043B\u0435\u0435 5-\u0442\u0438 \u043F\u0440\u043E\u0434\u0443\u043A\u0446\ + \u0438\u0438 \u0437\u0430 \u0440\u0430\u0437 \u0441 \u0440\u0430\u0441\u0442\ + \u0435\u043D\u0438\u0439." + type: Fix + id: 493 + time: '2024-08-15T12:16:00.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/622 From 750ceb2b79e3ea8edfb04ce1336e84644d187abd Mon Sep 17 00:00:00 2001 From: uaNoName <131008018+uaNoName@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:42:05 +0300 Subject: [PATCH 04/13] Brigmedic fixes (#624) * fixes ver. 1-3 * fixes * another fixes * oops --- .../Catalog/Fills/Lockers/security.yml | 9 +-------- .../Catalog/Fills/Lockers/suit_storage.yml | 17 ++++++++++++++++- Resources/Prototypes/StatusEffects/job.yml | 7 ------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index 1541958ab5..fc548a484e 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -92,18 +92,11 @@ - id: ClothingUniformJumpsuitBrigmedic - id: ClothingUniformJumpskirtBrigmedic - id: ClothingUniformJumpskirtOfLife + prob: 0.1 - id: ClothingEyesHudMedSec - id: ClothingHandsGlovesNitrile - id: ClothingBeltMedicalRig - id: MedkitFilled - - id: MedkitOxygenFilled - prob: 0.3 - - id: MedkitBruteFilled - prob: 0.3 - - id: MedkitToxinFilled - prob: 0.3 - - id: MedkitBurnFilled - prob: 0.7 - id: ClothingNeckCloakMoth #bзззз, молепокалипсис prob: 0.15 diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index 573ea28337..3961591488 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -44,7 +44,7 @@ suffix: Prisoner EVA components: - type: StorageFill - contents: + contents: - id: OxygenTankFilled - id: ClothingOuterHardsuitEVAPrisoner - id: ClothingHeadHelmetEVALarge @@ -144,6 +144,21 @@ - type: AccessReader access: [["Security"]] +#Brigmedic's hardsuit +- type: entity + id: SuitStorageBrigmedic + parent: SuitStorageBase + suffix: Brigmedic + components: + - type: StorageFill + contents: + - id: OxygenTankFilled + - id: NitrogenTankFilled + - id: ClothingOuterHardsuitBrigmedic + - id: ClothingMaskBreathMedicalSecurity + - type: AccessReader + access: [["Medical"]] + #CE's hardsuit - type: entity id: SuitStorageCE diff --git a/Resources/Prototypes/StatusEffects/job.yml b/Resources/Prototypes/StatusEffects/job.yml index 786e5d3a72..a97743e233 100644 --- a/Resources/Prototypes/StatusEffects/job.yml +++ b/Resources/Prototypes/StatusEffects/job.yml @@ -236,13 +236,6 @@ sprite: /Textures/Interface/Misc/job_icons.rsi state: HeadOfSecurity -- type: statusIcon - parent: JobIcon - id: JobIconBrigmedic - icon: - sprite: /Textures/Interface/Misc/job_icons.rsi - state: Brigmedic - - type: statusIcon parent: JobIcon id: JobIconMedicalDoctor From ee1a2daa923b561a12ef8598be3969180b5528b3 Mon Sep 17 00:00:00 2001 From: RavmorganButOnCocaine Date: Thu, 15 Aug 2024 13:43:09 +0000 Subject: [PATCH 05/13] Automatic changelog update --- Resources/Changelog/ChangelogWhite.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 7add63c0e2..2633404b78 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -8231,3 +8231,19 @@ id: 493 time: '2024-08-15T12:16:00.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/622 +- author: ua_No_Name48237 + changes: + - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0430 \u043E\u0448\ + \u0438\u0431\u043A\u0430 \u0441 \u0432\u0442\u043E\u0440\u044B\u043C ID \u0438\ + \u043A\u043E\u043D\u043A\u0438 \u0431\u0440\u0438\u0433\u043C\u0435\u0434\u0438\ + \u043A\u0430, \u0447\u0442\u043E \u0431\u044B\u043B\u0430 \u0432 \u043A\u043E\ + \u0434\u0435." + type: Fix + - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u0445\u0440\u0430\ + \u043D\u0438\u043B\u0438\u0449\u0435 \u0434\u043B\u044F \u0441\u043A\u0430\u0444\ + \u0430\u043D\u0434\u0440\u0430 \u0431\u0440\u0438\u0433\u043C\u0435\u0434\u0438\ + \u043A\u0430." + type: Add + id: 494 + time: '2024-08-15T13:42:06.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/624 From 888acee21ce16424f1184f306bba83cb056e4e30 Mon Sep 17 00:00:00 2001 From: Aviu00 <93730715+Aviu00@users.noreply.github.com> Date: Thu, 15 Aug 2024 16:00:07 +0000 Subject: [PATCH 06/13] Gasp update (#625) * Gasp update. * "Death gasp" for a moth (#28409) * No mob gasping. * Better chat triggers. --------- Co-authored-by: RenQ <164364533+ImRenQ@users.noreply.github.com> --- Resources/Audio/Effects/Gasp/attributions.yml | 6 + .../Audio/Effects/Gasp/moth_DeathGasp.ogg | Bin 0 -> 18078 bytes .../Prototypes/Entities/Mobs/NPCs/animals.yml | 18 +-- .../Prototypes/Entities/Mobs/NPCs/space.yml | 6 +- .../Entities/Mobs/Species/arachnid.yml | 2 +- .../Entities/Mobs/Species/diona.yml | 2 +- .../Prototypes/Entities/Mobs/Species/moth.yml | 2 +- .../Entities/Mobs/Species/reptilian.yml | 2 +- .../Prototypes/SoundCollections/deathgasp.yml | 19 +++ .../Prototypes/SoundCollections/gasp.yml | 9 ++ .../Prototypes/Voice/speech_emote_sounds.yml | 146 +++++++++++++++++- Resources/Prototypes/Voice/speech_emotes.yml | 8 +- 12 files changed, 195 insertions(+), 25 deletions(-) create mode 100644 Resources/Audio/Effects/Gasp/moth_DeathGasp.ogg diff --git a/Resources/Audio/Effects/Gasp/attributions.yml b/Resources/Audio/Effects/Gasp/attributions.yml index fe8f817c5a..8d84b770f3 100644 --- a/Resources/Audio/Effects/Gasp/attributions.yml +++ b/Resources/Audio/Effects/Gasp/attributions.yml @@ -24,3 +24,9 @@ license: "CC-BY-SA-3.0" copyright: "Taken from tgstation at https://github.com/tgstation/tgstation/commit/f7a49c4068f1277e6857baf0892d355f1c055974" source: "https://github.com/tgstation/tgstation/tree/f7a49c4068f1277e6857baf0892d355f1c055974/sound/voice/human" + +- files: + - moth_DeathGasp.ogg + license: "CC-BY-SA-3.0" + copyright: "Taken from tgstation at https://github.com/tgstation/tgstation/commit/948ad3dd5b22803a01cd74c27f37e509dc61395b" + source: "https://github.com/tgstation/tgstation/blob/948ad3dd5b22803a01cd74c27f37e509dc61395b/sound/voice/moth/moth_death.ogg" diff --git a/Resources/Audio/Effects/Gasp/moth_DeathGasp.ogg b/Resources/Audio/Effects/Gasp/moth_DeathGasp.ogg new file mode 100644 index 0000000000000000000000000000000000000000..df23cfa472ac1043b1fc1eacde71a493402f9133 GIT binary patch literal 18078 zcmagG1z1(V*Dt&e-5^~DX*j^4Bt=qDQo2F9yH#33>F$=2?oR1OS_J7vKtQ^_jsD;J zzTf@6=idEn=9xWfX04gEerxSDbG9m&o2vi_z<(}gw11VSG1~DEDu|oClaZzKLlfjh z$$z@IL;hA8APNs7|JU^}@_~ZcTWWy!;{N}24Iutw!~@bbEgdY_6`aheZ7hw{|FWl+ zrsn44=H%q(){MeiVN-`H4fwI{jY+W$Aky~kN{t1^oX2I zX{%8|b5f=Vrz}Cs*8&C9s3A(rg6N&6jK+5PHTl+dqc8?EY%OE}RFIeyO(3E2Lt*rZ zCWsU)K2kdM(-fpRVX%D3`hdaRPwg+qy^|aJ`svP>oQS8p%r)O6FyS>5GICtg>c(ZQ zD0-gGqk>y$|0&S_u7et!iv$Xp37!Pn1N%>~{3Iuk)xTv?1HRxgfmhLl(v^fmm6Rjn z^a{spN(8*)Pb5`T<<-E;RZqjsbk@yv*3C;RDNv`uORFJJ=X;>ud7vR_(0}d=uch;c z`|r}JAwU+LV8R;gGcEb&Rl(1Q0YN1QfXRbOsL^9+VKF(<`DRvSmZ^0X#dWqrRcu35 zSbw{K#zlIV4UlD-lK=m?&9o9s|L?b$ML!E52I{iUk+RQ`UQ(I9&xsB7uZH^p(57O_ zY&}jqubg@MoS%XBE0-4oadIPn;M2#zooVNI3v%Lm58l#H-;fJnJk!3##Hl zBmd{i?=N1!h0vs%C0O~QJ&7{>s}^5yVWin;&$0eV0y})lUZ+m^mU1#8h?BCBRY;gR z`88NIm8r2XDfO=fZAQt~KwH8FlY6p~zoj^jN@Jzu{j0shPem;)oB-R%w$gBV$qd1M zmJ=zcg>#zVSgmgOX$}fkok)w9&7EE8vLWAF0-j=z3u7(j@I* z1pT4ye}|74Xg9;}q`m1MsJ$Xkj0kD+X=15dB5`7~xcXtaRN)aXWeWWjmC2a$Tt56= zIW+(T;QdAMe-(eB{13&sF(E92%+DG5UV)P7<4{@aawRnog>j zPP>`T)tTzldui4E$6@}t&C;yv|L~j#7oio5Sd)rD`ftz4Vvbl9h@g{>q1TFGe3xJz zoKl#au~YaNlM&WT#p)Qgn|I+{f&=G|t`!|j#DZ{6gd8d`(YO2EjXO97? z(>(H%JfLFZ0e}nu=s+U};DtCvN!ST%qH%4~BWDYuWOtJW6yQC<62zu;i4tcLZio@= z!a7-2W+r+e=O50%A3=@XnXfCoA%F&kJtRO00DQUnxw=W6Mx_U`UW{^~r^odRGUdfi zNWq)%WB`S`|bX*mV4U(O zY%@xEkZXfdSw^rRO=VON4H_`Wg_7=%2g{>W8HM#x1`LaDr1^gnX9fW34hZ-s!OUYK z3E(jS%MSEou{^Sb46+20V}z!&1oE@-JR>~3N~&r@1ZvZ&YV*YMYIO|q1oHBKRMiM1 z)riz46XexuZO3>_=Ty~x601$una&e?Yb3ZXJ(1S}A7?uiFT{*0|&(tlXV6aHnz zr#4&1tK_1lq-Lt6s;1>;s&%fWG2BwyjDmbIL}VIf>gs9Q^R`KC1%SMORLXcic*-1iVBPBY>UcDbv|zweJ&cTGA}AC z8LTQVF0b?{;l@3-_q?Q%$)g5AXvF$ZE6qS_~SN(dR zHkI!6I_@=bdgjB1@{4zy3Y(hj_L>}r>uf1=igw#rhB_+-s}A>?IBHyJl+;{*#_6qT zfa|c;chAr{53I5kYA?MW1Q|?R2#(oPHiE;d?I^&u-V;_)LxG4q^AvEVMWv}l#d}qD ztX(C05=v@bdhw=9{CZj>c1!#bIhT1?uTnoMSl+B!!dh>iBA-$>;)62O3 z9DU4szSr^k>DrlVPB|8OUnGbP$OASA2F0>zSP^^$AOH%@7NH6rOAoaRp7Jhrt|}J_ zjq_`n9?CdH87rE&DVAPp)d=bSv{-x@3s~HQGHQ07qKtKR+>EkyW&V`WK6Ng!j3qp7 zLffjacS<|#kue_kR<6mYGU04gU z%F88|mEo!*)Uo55p#(?d;_FDmdI?o*;k_wzz0@G9fd}D#Wo#tHfvl4KV`OAX<71SE z(_$Z3`A5h|!|GyW>84hIRw zwyo1C9*6(6aw98v?~GCDgK(D0_!v<5<`3;K!MF({kX4Lw7&t=5rZGRk3M8Z`ht_WX zaJJz+o6;_MkRc1cA)F%{Pu0PwA=JN~*YihOVn1OrDWVQ~dfyQp%rJPMGLVJh?kHCpNlLLskbSlg#trupMYpb>%70N+)^ zf?$Cs0TRG`FWVn1^5P~Q2+A@$)LCVv;V(?Kv8(Ckf1P z@<|_35AY@Xkbi`M1n{vJBnWO%J``!r5&xZ-{C5rg|7Q_}V4n3z9ei8&l2V}k%gSHk z|9v#J`A?Fb^zZS1aPS~(S-8Sv34j5kOb?9%hysDvwbLK*Z=QsWZPfwZl`sawNg zwKGOxwV?jN2r*+6$~&Wt2`t+=0KQTcjzRIc)t%$Ze{D?zCfgE!wf(R$PzG(0^?(+d z7cwBK9xy@^0Gi=nTR_zRYQuZF^$%JgptkN3oW#4unh(ULB{;I#sJpP|0QsL z!5DxKrgCv0=YMT+_@Iox>0O-i10q4yJP`gu^=}QG=0RP5JJb9d`;ZHQ5Jh~5!gSm8 zIfJw|JS&}uiWdDcfG-vRIDWUNvT2i9{oOm=({KO!Hr2U|v03;ZYRnhT{ zOBV@g9iJNm3!^WGDYh7L@jk!6CbsdAami!xH#z=tqJXOyC3w&@Gw;e5(-_YfvijRSE1?B3J0TQ zmpgmbw{zu@xNjCH%4Q9VoH9O|4#=jbsOZFsOH4c4U(Ok4DhCSo1hrwFFUab*Z#<6Y z;cDfOKmBfDy;gM}Px2#WPTAI>zV2Gza5v=VyMtTy+z96!_wI%$WiRETLuvE;sEPZu zmqmQky+R7&`N2|&da9*rh~D$STh`3;+HzDMsWds8ClG`4wp}&~PN79!)rvm|gFa#d zhZAkLHyr~WR<({P4Y$X%XTB(#0t4NLJgfE4%Fru-;QUNmJ!wDfx_!@Nni11 zpzs<4t3v`;Z?g(Ik+r;2lO?kcQ=Yr$PDJySV`Zy@V`W1FpNIskGB9XJ(c$`wV32Y? zuf7fF_JOm)l=uO4M)OA`1VF?m6jtnn>l17dH`U5IME-jyUcq$8TaT`H_oQsjl?+KT zqa#2!N|p)dCqjx>DhIf5kD%{2GG1;6^9Q<>b~ia^Vcc&m$UJTj%)&EP^URz{=nu!Q zbn1(33m z+XDD`u=RFp_v4^h-QZZa!~s;(F`|TzwR`WAw-D{M(nlUDiuJ9~VOca+-%zcz={oP5 zt*X?s;XTVgH0tWlvfiqP@pJrU5co5-`4kXQAEsVGD7uHN*69atVQt;wIFHVeTRgdV zwWPWT#3>L#qCbyvjLAcBSas8HLW)feLD}I zpA#znm|)Cg+`21yaY4cnplZtcB2=*Fv*lc<3?G9LOkwOp>L?bK^w`;A1YJ1LADZIP z*K!@3S!0>8X*r{UqL^xg#;6e75+F92Jjq(zQdr!sEFHt{O0SW)B_U>xa6@B- zf*!g>cF4ixiCS{%MHBFiyaJL;+9I&l7fQnXbNgU{%I%j0@J4+&rs)m84?>LI8=a$( zd0%`s+X0`4qlfRE(bcRTr@Dgf%x_<1Nrl*Q-YIU z25nv*m7@Hk8bj}+6)u0dEmr1~ut`@c8;!fD&Ijn_#X0=Bx)$E(EiYUDz=Y*yo9fhV z(7YrPc>TWi${U3!Zxxo&xRs$p6>mw;GKh-cZSB$XCK}>jy|s2oS|V+Y^BTeU^!aw{ zp70agaITC>Rxg*d*X`HN@lPS8qUMI9u;5Q%AQ=wc-k-$)qWZrQ+{Ag*t&Y?|fW?&U>jf%5dbpq%!v5rGXlzg8pq=BZ5l$C@!pFi-eZL{<0YO~%HX;lcpY~pL5DfgR zt)=OFkFev;E*s!k-~3gF%5ji28W+GW>H4@!Qq6U{%qNc6vD?9dMYoxy_X3y6e@05! zr4*ogg~e5kxP}^2;L30-aH|)Tx-?H|!x=OQYeaBJ3PS6gplM6;Y4aN9eaF~XkC>>O zAJKmK?k?3VNhtG-GC2}%nMk`o3$cA0c_^5dp>uHl=#go(pJVzvcY2z&X00|SW{5plBy@W&okWQ?7 zC>xt>Fr~?_ezOTXMpQdxR6+)*m_VZ;Td|`Z)s^;7{`i?Qrtj*exMK1rUxr&p0*jW? zxFTrs&tk?M>%ggBs{7%+uuDq1x3qh{;9HTc_d?zU&N@Fm&IoOAOgr~g^kOxW*EBVt zzngw%@zv+Rj4l-qsm~&qzns}ShZdum$~0GdO489B`Y*i#&guNWWWHE{(p@h5u_t!? zT-W1*$|b30V+`d9SfB9QIpU-n?5xf$XsPT4%g2gk`)Udoij^KbM<1E6CQ;l8S)TyJ zQr(`_6Y!z^2B>SFj86#ZTDp9j``~n#qTP?zp>-mu2M4J5haonojE~V)tZVV97)2AA z3~Q&W6}|<<5{W6;;9)-s$U_vuIoa&kaTV4@eDWE-SsNyP*2hNjr?jh4$FiZ%3`D|BH;-g!sNN>Si#x)aYuYPXQtd1R3>ujW!}7r2y5K z&mz%!kB}&wvx@%kp_WRH!o}X`@e|gh9rxSzva}@#G$+UF*5Mfm#qH`xRPeg8jGl9k zj!l!n_ggJQNsqkRE&Txs)XNk1EJRyUPiB`TRo`IV%g+_O(twHRZ9eXvI+hXab4&Nr zuHETldxS+ZO5g7|F^_UDjP-(X%S9e%o7DDgXk8*2H@plc>X69~5pyEW7Gd(xxSDQY zRCNjwA?s6_Bqv#YH$R!CIi-%D&l{c0FVqZYwEPlL_s)tUnWu6NndM7i_DD+V8VU|I zNkPBc^lQ8Uy3Dm#*T&AoVja*Xb~*~?0X^|oc)u>bz|+Pi%zvzudb<^D#n##6E~iu8 zr0=3hZR&XJqL%ynZ=gr8>L~Q?Wz(Pngo+Wzr#I7*jF0H>&uHS=zBP&adNSo(&Eo>x z&##7zHj4TMq(2@;HXqFqZ*#Ara|pji0q#Cxan>TPSXu1s4akU?&%Y;;UMjy4{*oa| z^P14`8LAiq#N<))$mOBUvHXaL&!)d+q-}G?)8^7%4yWqpW_j=H zo~Wg%G)`ARj3j^d1_c3*h0umeDQ;NR-NKVXHQVB9Yn88W{S?n67cXk>xy#iDX)tK` ziw^gNEma-#HmD+Y)GX4qd3!&0iZA$epq13`C~efEXYt(WqPPHWWBdv9nH>0UF=PB8phtb za9yvCGM%?bij?2>S0V3E##R+JoGp^3kP?8eNgVkPov%zJvEKS=dF^}8OWOP_i5S~3 zLcmj@N8~{o_^8IsE%t4--t&-#H7=`Iz07i`o8C(Tq7A{AnN-i9e8wy^`&o!YgY^LD zh^6&}dR~n8^owrt31yYs7x6aavK+vd0B`qU$L}~VJgI}qr$d%^$MDM(T6q*#ZeElF zGThjXnony;3s4y+m8eweUbi2&w)3BuoMg8Q^~xvBw#bAL@b-qQSd9pZm0JH{FkHS3 zJxZ}Tt8Z4fB*&b*wku$pwgN7?gL8eH##3Fprn6^9{mlE7%yFgmq^qO$Kv zJEPvj&ue1~7oP+_+l{zEW8@jl%s8ceJ33S&H{0CN14p*gL4K0Kiznv-GykqJuQE5a zbQyW9!o@^{uKi}mS%Z5ZU!4{PT-o&a9+H;~G?{23#=gwB%gYQ%;h%_2C!HPz7R?{R z4IUlyifudo(&F;1$W2-)Nml3Gls=@ygq#))B}yc~-}ykxGMVy|4*M|q)-N4lZ`1qF z_a%SGn@k%p3X5-Re|DSME6WcVlkf)-=xO@G9+&% zaqj%4cQ>>C(X-vBZrLVtdp_ecHmZGWJ-0Krlt( zrHy?s9d5ISd=bpUn!R%7If2z&Pvcr(;e|(`B>_A?dF45Re|Tr;_C3_<5(DvK((lSPQmn^2>wJ|Xo#l$49N%ORWW>v-^?C{Cs(5Qrt3dfxJt11Qfr{!N;xr;!C`!LOT`3?l$ z29N*qwr;bUFpo{|Dbtq#Mk)%<@Tu zpQokiYL5F5%I~7TaLQ+Wt9zgQevb*8L3lxnA}Ra*AG>t}ob1|n!`mp-)3Y8YwC`!W zL!coc)qE^Z=U0o^EM|h&OL(aL_Q|nbQ3_Q}cEZ68VY)+YS(&d%%g zZu?aM)vU$#f%G6f(Dtf^%MB9$7;Q(I;o0c7pIyE4=UN6>{3@#$Ss&0O*peN7k?nB! z$fKd=qeh<_+R1sxH{K+js$`HSgyfLv$=gR3f6ehK;%XQ8`ed2`Rd$H5Cx_S)Ro+SK z-9gY=y?}HXp9LGLu&iy7`48!?c%?etiIqt6>6HNVH{;PEs<$~AAq~yj&MNldgXV5F zYHEC*PBRp~M^bQ4mvwLVI+`hF<+pAMCdh!78~E?~@!fIRIXYIZhpS zfno;vc1~OFLGUE3{_FSC_XYMt>}wz7FZF-CKmjtCYGAGaFG0X@t!ih^%hLm9r-3mX z##VtV3V`6HGm>}!-JA4kQ*)I&_^cC2TVy?h{GH+1O6t=|%Yp76i3|rrjLwQeHO3p2 z-QDoo+Hm&o6G2oO(5#oAJI4o`GZPv=PWh3VELa%!P3j>naCZZi{@rFhCMT&1BqMg3Gv2dk49}B zAR7J|Yv+OzPZ5S-GeCT{>~CJncbOtZXrL1^=zlhg+`*hGy|R@`m7LbvW1EQp{O4Ew zg#SLPKm@CUG~*iFQ$L1=E4vD+8cT~ybITan80guUm^t9g^lY4P1|~KRI1`MUi=GY6 z1!rVoXJg=ibBnyfimpINQ4kM}m3gb;e@>xf6#Ub_ErUOX6(EU^V37Stg$hmoL0YFL zpf4<77j+(WyRz=_xF$D4qbf+Q2Y$GlaVj$sDPzN2R=L3N*z zVK+r3uChNJkx(cKaf&7}lj=ybisRKv2`j(RmFvaj5n%vydM%I2FKR5ikASw9SdcmdB2jc$ODXG7cF=*)`b3_47WS+v)pPMFd?}?gEvka+ zwvPf^ms8ejfhr+X;e|fVg{FEg88+W~n#U&#V2Gt-@mNm^arVhF>sN1+Ch?yBuc7M=3 z$uq7!Ptk#eg-nxxD=!z?(D(Cn-RZUi5t5;f*J;?I_IEtF?^rE&DCSZ=tfdTtT>PL-N$;B288=rzxxz-P+8y990=^d5-h_{Gb)NK zb8)TqE2?T^U&@~-7`wLqI5ZgP?*9m^mVdWJ326E*gU$@psVm`(avE$6UZ;gW@m-X0 zJ(ZgUe4Cm&k$^4jNpstm%Wxkoz}rnVsRl9jK0Qd)+|pLGWwOIvsGqbgHLKH1CPF4Z zKqbbgiucfYST>2I-t)b~e6?$X^RFL$N3nKRj-rjj6qN}2ucqCS;E@h1vg*7W3Wxe| zlc!Jl6KpPRLtPtUipN9x0+WBPxIMRlOU|c4dWS;bowa4}2FjTOW$!d6(Zr>=lT`=D z2jFI7lqd@eKNy2{XP6WRH7lG^dov1dhlK#H>$nFTf&=WIhW-{pQR@5Y`uy53j^T53g zGyh!r$|UlA%7SIGWCp(PQBR}CbXl_nP+`uiL$192%E2sJKnR?0$<|dHmE~ubR2fCO zRYZ1vVMRkxxjJnNY=F?bhSEG%)SdmFeA9z^tz+@yP`!=+X-xSCnDFXPrFi8}^^Nki z%Aa1;CijVz*XkN_PgPDweHhz}{Mzg5QaYhqr-Z;3-t&;c8_^RXZI_nDBmH+to7T6F=3`zpovrwsse zz(g^LG~hc?tO2&aKi!@FSCIyQHdDgGa`!t@=Eu=kyN@)Pca?8+x-lb9)A;}y>=^2e`PAW zG;UiS8#?Cfr^N$!w5?La452ZS5@@5kAMhC04PvC^8>C{G4SW+9lLe1He1plDuBGDERvFCxRHa6uR|=|Bj;qHd}+dr-cX)|BoqWi|2c2;d%}bN|FW# zQg~UzF)udzmb$N3sG6c$jSE$ZM$%E-b zaPhNeld}D+txC}X9ZX}G*}AWta4=K+JowJl;j(-CL`oXcD-dR$>d6x70)HKKsen!J zSK18IxUq7NJLY|rOROnQQZL`R+zw45Vn4h>0zg2)&_eVQ!mlh{NEv0L@f!=P#b+7~ zb%%F{8P7aN_3T5O7hm=^vmeB~*d&S)@zG@A1*~JPvX=?C@og%i`9i zEYrYwkr|HmvrWLyd7r~EvhP`X|MX_RCyup9EPr@wUeg<0@jg-HlVGhZ0B_KM8?hO3 zl@*dFtn*&6JHvSo^_f?jB)NANyKLnf^zoW~TAr*}w*u*)?ADdnCTV5eJ%y*J8N7rK zT86Fp>nDd*MMu()Rw3G|6)`+hCk7%4*Xh5XjYyC$U~tNv8w!05I-Gmc{qbbQ5A%&w zdk025XEt=ctnHG7*}e~NXCK8PN}7g^icO7sQbTiK2;+4t+^=DP0ma4Do~FEMERgw| z5_vGS8BGbtR08q$WyAxS=$D`J(40F%UkV;bjk1xL3GuFIbCGZB%0l8)h)mpm%(z_| zpIn<nc{trHq(iIu%)d?T~c2s=<(B^OmyHkMT&EW<@iSQ0%>t(UxfIL`AiOtRMSl zj90S9<-dcMn@*^l9NNU_-%QJ@9EAkMqn|Kae=2(GKjp4y%X@yXy+RZoD>3nAnq*bg zuVe64&>8JHN7@+eyAEv<#Qi@&l0$ThfR{@;(lGzKPTI@f<23kt3zo+00>es4C2}C< zHwL#z|G|J-8-t#3_36d(0@4zlpkPCDpdqdc2!g4xL-#ZCeU-b+0cLV9`sXfL(lHSX z&o+^OvX2%+rgU%2G}<^ij7MRi6H!ZF;V4SSRL3~{>M%VERg-a-N8M@o*hdYwDZ(O- z`nbTFbV*lDgqf?N_R<@-ap~D7H?P}|plf*eeS=g_nuzKql1yuj*meU$u;o&457U`4 zKC^YFzU3bd=%M@+-QT0$ggV%?OaCi*jX{dg7B4aqJ-h+}B$yJ8jd`4ruRXtk$3*j7 zp;iCFO`+d;#DEowhwQ-c+GfLlhAJb|0@yaYUnK+*Tii}?g@*Q!P#3hauZUa^%%$Vs zNeqxU$)6}%+O>1s%s5Up7`#x?kg+E>O>i>U!DSM^-ZCpBs4#L}OuK zzMOAklJfxke+4k;pKhryx@LL=EB2HBY<%-R@t3=i{W7)?3b1KCDbpG#)aC1@zg>h3 zOrk6hMsG2j`iBP@;hH-`xH0w)r%IUKFRUm!o!GEOdA`C(!Yn02yuk_;EirFYH^6t0 z?dhVWeb2kxr_tWB`Lktd%6>mo4K2x2nJGo45It&JkDrbd;{GPy zjW{JLlg&IfL<+;_BZ};aDrAauXUl=WC@~vtw;SE}=FUuBZ}7d#&)fUcA8HJOSFS^E zxFI)$m`iC}ZwO+2F?$w=Q*ks9?e5>YJAO~)$Wk+wto(qrr>BnYF#Z12kscJfwnJZX zDC5igp@QryvfMPLG0|ssDGDu%A5YEmekU^To-HpW0ymU~)qDv?_;?}H-$rDX5n@i9 z$M|dHob~HdM)u4Tezw5G^`)mK03@ia#QyKg%frW9rEj_ShsZxcI(p|U+63mMX2!QjgIN5ri!PO6VzHqR`w?^d@N{TR7H=6cUBVHmU(p+8voigBe$~U-4CHh=8fl;PH|D){P9=X=zl0f zX`3%4?ieJZ=SDvvG0EjphXlPK?D_6^4iL|gF0Dnx0)Hr5ha2Wcug1_{aCOaVv_B#M zbmz{-HAY&PH;;O}@~X*~0v73h9Frj|LFCAWdb%@Kx9%Uis%7yKADYTqSZYG3ueNji z917wX+s>RdjCluy%3V!dDvP%}k!+yIL@l8>d-h7b7yOA`AxL|7@^pGQsiS6ndv0Il+R)t;i;HyU}Mvc+wc_4cY;R}HD z!uDFVZ)eB!)V-HbYhd^Oia)f>MoqsFT$9q)CG}#uXbumv+0c0*isakycaL$@TE!cK ze|wV|U7s4euKBw`?|%2vf*=@@&8f}2dECRTjr23r(2pP>HgDF8HZ$g&5&>e}@RH?A z{u&v;105>vV2`*eH$Lk+a|DnbS}x~GczSl8y=QMCt*TX9jYUH`Lz9d^@?;p2V9%H~ z+s^#fB(^tv&w`j`?Pmy~7QH#l;f+pT>T&zFm@6!p0WEs#bb1?}(Ngj#tiiJ>P%Z!GGzMv}KoKh~5%%IfBB77w6@4k34C$=+*FNN(C^ zkVyf;=O<#8`0XZEuc^I`HUmA$(I8mRA+qN2lB>rtFMFt(yu=_=)XProJWs`xg^b(?|hi?mxQEFAJ7%^TZJUykW$v#siAl?XhqkAIF_P$8<2 zKEyP3yBkgr2fL*i7dgMUHfa-+#niDzBe3wZ#R4eG?UE6rqMf1)39P@+9<0%@ zFWu67*9qtTK9X)11#GTf3n@zpMKYnTC*r(QR;=*gMDTC8>9mo3xwHWwr zu?oZbO4iDg=Zs}j`qtlNg zKH8Qhce2~Yvbs>rybtUbBT);ZHawVq8PxCUC(C$eYEz-ORgMJi?+zeqIS4k;V7#|= zq9a1B&tg12^rna*#A!ERG>OKbFX`wOT%;|Bv><;-b;l)^ge`$zYvyvfCv~5nY#r*q zMJ6w~%N)-F+-64K8s;li3movxjd^}FcC{k+JU{o2r=-Ybh>x-!%k<`J=VoZ^Bre;1 z>X(mPgxBvhLtpwSljy_Z(3V%sm56x>=j{ROCPRZB^1nj|-|qiDba?o1f{>9_Opk?y z9nQi4=ip@Gfb(#$!?`(`*}2%5*f`lAP8?wDoSZCd>|E@OoLrpr+}s>YZ0vAG4mLOo z3mYdJ6FWN#<3lf2HaH_I2OErygM)L9Y%E^)jJ)IEq`6TMMZq#28oki$i zWs{2?{$rPd>dyZ0&xK0RHtr-V4AO{_i&fDO_5eeSC(zV&BH((gZq5I*vb59IV^9k;+hQG2ynQ*NF*4Gn;g=2&dIddd3kS? zO%kvc-P-#cF-=g`l)dDx;l7g)jlx@B-2(j=(C^W98+S@(Td?)gSR`zcV19+C+d4%d z60-!_in6Y9^CVl$f8f9#ko>+S$G@jyqKrYNt6pSlJiU>|C~&nUmx&M2g${9bY4-Ub z4)oaYbY-Kyy>d?CvK02dz%73@g&Jv-`pmxz{TZ~J3q7-Y<0g=y5y5%^f{}%wXs!LK zRC%L+SAPnY+p*fa1GJ!S>DI@=YW5Q@n=MyMSDjMmeuY zC5@^NxJR5;;UaDKyKEm(fm|pI|4+%yFRx<>Ctl6u5@}vvQoL2cc7LbA!J%;*A3n8M z0Uy?#Q`QREfOc3B#02WjjCXRKP1h*VJFrv;(dZb$yU*+#$U!IVn_~<{=p7LXIi+zudVBHhu2I zTiwe$_&Uq75Q4FN;E6L{`9`?T3fJW2pU&Cd0E?H-XI~ow3(D0O{;@`w6VcjddapxA0KkIE7V5sUQ`i)VTsKPEr3fN@ z1DX4|wC80kc*0_xah%E<2pIlb1Nq-;KaW_#K5tn=rY z)hHzl?ktgg^Ia!HRsFxNSn#N+TfE;px~{FhByGRA%I1O4PWtz}pn7)TgR)BuEJ(`g z8R^{ox}Vs3=SLh>T6;xjp>03{R4pCW&seDp4cDE)!W{lYmZ)=bjMdvgfEK8$i(+N{ zo@fPiqpxXLc};iCdkB8w_#y`1pGgVasXitbOw&Q25Vi9j_?vqHE4f$v_U)sv@6r%kQ~ zIDeWN^=(Rqr)5JARM5ku^#{;1^q^&r?flGs&qK5gD1oA4@zOj&ZoW7GFE8~;GlMX{4`VHJ$RBT_(GiV&(}^jK zTP7F41&Wz$+c$qj^eK4VZ0+JDIvZfb`zxD0zF@SLdc*0fJBfkX^m}wqD5jwzSHX$U zYnn#VKKqjob_l;GwMO37?d^DFm0VimL<}LfN0$Bikx`7;E$RNT+wHXAoXL(2kGmzY z5*=Pa={s;+M7<5=O1l-MG3;s3zl%&|)1iLs$b#6-h1s}O+P)zQqp#=Rn1);UAujhf z941Ap!mv3l*c@T8RzTI1ns`-W){cpfMnG7L3m%TA$GVn=*bhIT-+0CQ7tTY5 zg&Z$ufB(DKgp1>8`i(6~Q5^T0&&&ZNjSRCv zxM@A~xs%^9KPxo~(%or;7G?PS8T?(5`X#?>h$(Yp;^Dq;D9$tJP?9YZ)n4LDC%;`& zgghYUoCupjt?Eo;!|ln{#PoN&lW}y1dSRh69w2~MpKhr0{q}tpQS5+SxEc77-?G!G zvobD${OZnLes$#|Tr6Vf;j^0A_{YEShNVN*Ru!)7?iirvxnlmcZtX4-v(%pUtt7cM z;wr`Eo7jgzuZq-9l0~JK9utl60wqw%m}MoOn}La9 zr@_jrYd^kQZyyki@u*5Fv4Y6u`EDH?dRD$Ex7P$Sr|jdKYKjj(#)WuOiT#j)Zplzp z_OoO2Lj_N4%o?ldHV)3ugi-f18Lf{as=O&@jnwJ|+smbJ&8b=oIX0}wA12N6Re*i3 zJTdh{?}Z5kp7R%EzebLkpnXK9qx2AI_U(N9>X`VS44vG^KG+X2#@*3_R7A|F(uGme z0R8rqQb(iC;;Ag;8abupx_AMF5IWWA6(Q`vl9*1P zI6XG=Wmr6cbR_zuICOAjMwBWry&&b*YFM`%%DbzW_$XqBCshP(SY$g3{-?$3Bw zU*v3(V0TMe;+J+Ge(>K^k%ea88f2VmAjQm6^tI#zOjyH}sf)$yi$#ZlIEO#9IKF=^ zP(uxXhE^K(HQqDEE_8987Dad9j}m{pTAQ>z+E?LRlE3(UeOo`upVCRMmIEvZ4^<*v z-%K8II2!wLHY8S3=QH`5+SwV#J0z#1=<%8VPKk5Wucf1W96h0oI1E=xu$c95@$SSJ zm|p0NWZT97Vnhwfc2(7G_Oh)J-SdkHhh8iH3H` zqsR(BL7FnF|EG^VowJfaSQ%z68 zInw}P_D#O;(@t_Qu^Y4d?m_$XzGja=-^s$~tQe^U=AMdleYbW!Ss~WH>W$D1EMMOH zM7tr>9eTyLrpYR9J%_fC>3K(!Ga-}+hB~bd+~nGC`S>xi*0p7af7e5}xG&}~o0(fT zY%{<23JokbzMmeB-@7Lofr7h=)9!{u`y<)1s091+|uZ0Xe7Y~9G~jhjC$A<3Q7YI4SphGtA+m8|{2F}E1?O#RoT&;q0u!Q1>t&#zSO zE5KC!hc+hmHbwyE{b+05V9~p5Ngr?de)e{=DPF<(k;kSB_$5%`VH~|nqE))aq}~Du z;R@5lx6cwIecyEO&{NCir4v8R+SQqO`yhea=W^|}Wz2ibz;!D1G%E%NUz#<+H6z%7 z_f56ln}{C9iyN*QNEozSDdWfW-8t@Dj4n;r+eR_SMW+vWr1_P0^B>gr;^{ww-F7+U z>rNLR0Rh70(v1r@eW#)NS%E#R%Jen#b?6EQB8F&Q14z z&z&bmH%x^?LIMj-bk8uShHa#fIc0cRVNytF)Fju~r0-@N{ zlYqW&xVz^RHrY;by%hS?QmDZzW9%~&%z*=uQbo!#4NAofrtgf&6oKAwE|gZD$wbY~ zpN~9ttJPR7q4zG|-g!ocL0z96jfjL8(>H#+oMNhiK+$54dJCO}zg?Jeug=_lZHhbM zVn2C);-NWZKqy6r*C9B8ECaO0* z;cEkcyyz2oT5EOJz3jjiw#MldR{tN&(Wj=(g-Q4|(AH-SrBuTTPfY{YGe&w}`3E3K zEqS2YNE+!PT`FMpO4eRuKbqICVe>-Kg?e=x$2R-)Baf`bN^b+diPn=i)7;VwZQS6g zb2E<-qXQY=>i@% zcjGoj>Hxh+BRUIUtVeFK!QTvkm-S~rep@%TGRiSL4zFbaUO+>WY_}q}x`?0cT)_N@ z0pByTkEDfO3s3fE(@l3x*n--1`W0GTspJFT;3-k_&D}L>yO@9S?GUmNpt#gB^@Jf& zy2O6OuzW``E#JEo7LPjx<3%iiVXCrI%wGj_zj7K2stNj*WofC2`1|6pz*bAtgOO{f zR6cuP7ZS{CGkIk;`4a=2uqohEAxbK3$30U(j0AM(RF?NXDqS2>wROwxiXTY}%?pb| z0grx?UZvWfL$(8PnvRG@v)Qr zJBr|SjIK*Eu}5K}J|tZ)RDP9(xIKlI@n>9}R4mW=t$9lV0Wevc&y{VdqLuXYpf#+m z9VEsl03cOg#a-aZad*u6c^Kc1*5UZ`9j;_uTWeNC7wBp4VukS5S`_H=7ee%ehN#QqK?a;@*G6yYT|Fif4nYq=z#Jn1P70?MeByGsbGhEqiz2ff4EQO6#iRDR{w1Du`z+tCt|w0`G4O-ARSNs_t6CS z-vI#nSn`*T+1NN(8CW=A3~=yUIXDNLfgSt=0?y4u$HBtP#38@~qK--66!*CkSC|Np zM_ktC_4L^-Tg0yXJ6bU38`6oOUXH!U9We&)c0HU2rjUp=5DI1HBYjb;sI_iGHn2(|Ni`$-ZXmU8YF#UUrEAX0)-LB_2w}}>B_|_)MWuY_VpyR6RtQp zs6P*ryl$NHjeg>De{)htpoF@U&gav$u?=7cwQ&0(yj`tLqjRkpcs&3^*0mj&Zs-rq z#s_y&6}QfpId`Pe2Xj0-n2|_QTDT%h4Qcbxt%8Fo?5D4{^yVW3*ZRDarvVol_quK> z`;Xoe&Id8N@(I)021wl{5CNC1+blj&A6V63n-;^{_IIV7Nb^(y)h6gRPzbK~4|XoX znEB_i3MhOiKze;Fv66;H*HNqX&}+G!KaZv~v%^?Y?Xf_eUc0mxxATWEVP2b2@K7#q zubk`5dRhKd+ui57?=mWqmdZnZ0WA;D$S9S)l^u>*uu|8MVg?L-DjBf$!t36C%hdT8 zsBX9K@{}g>mA4={xJwjfOZ4BlxbF3!*NBz8LZH*mLg_d-`$m2~vMk#x=Td%&so&^&^`0_w#D>crc$?Jf8BQfY9k@Tyd|sqx=Rz0Y`odz0CsE&=!6Sct$Q zgbwkd5U)Z8gi8hplRJnw@leE>tBevhEF-nrv0C{LuToXx z8OgOwiQn=0K|9VwUY_hIS9am_PB{x1JkYjGbm)_`XLeJ!u~x=J%JZEbe~D%Jttohf zT7Q!u-y~5_B)DLswU#m%30S9e=k0P^+`z3Th5wol(ah55=vhY5f#IfJ3CnOd=QcX_ zo4&L__(O^LMfY7@d#ewoY)|ahHl~=0ow55w4<0^|cF&zACDcETX_=&vDnjN|L;#pa z&b+w3tG;GxVg6>(;~nk{k(BKs212-WT3J$u?5svO`YKHN>g9+O^1P0EILW{_^XZJ; zFX&aKlZr``0t%t;jV>CZ)Bh7g0lfYgAEf242{B%y7QC6c@>#Se^c)K!)5@#;g;r!X zQw~4^yj}PyUD|jr#&FH(mBr46Is88K9Cz5@!F-9Ih!$WgR-=8dOkw~Kp8flp?-FwH z-|HJ2>(c(kouc9BokKq$sT1@ZuTi;t%%9J%k>qy9@lt>SkRSj3O7-@K8JD`n<+r|P zI%|(DyyYAM{2U7tIf|wKDQ}BR`$+)>z&}0JOr)kmOIk`y%A!6Z^>cxo@52#c^c)Ku z)8t627)mkI#%95tBWY4`B|GXa_68QxwR zg&<))fA@MWW`@P|Kpkif5~02ZlUYF7wbPe*HURVxcZ>wP?& Date: Thu, 15 Aug 2024 16:01:11 +0000 Subject: [PATCH 07/13] Automatic changelog update --- Resources/Changelog/ChangelogWhite.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 2633404b78..710bc32bf9 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -8247,3 +8247,17 @@ id: 494 time: '2024-08-15T13:42:06.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/624 +- author: Aviu + changes: + - message: "\u041F\u0440\u0435\u0434\u0441\u043C\u0435\u0440\u0442\u043D\u044B\u0435\ + \ \u0445\u0440\u0438\u043F\u044B \u0434\u043B\u044F \u043C\u043E\u043B\u0435\ + \u0439." + type: Add + - message: "\u0416\u0438\u0432\u043E\u0442\u043D\u044B\u0435 \u0431\u043E\u043B\u044C\ + \u0448\u0435 \u043D\u0435 \u0437\u0430\u0434\u044B\u0445\u0430\u044E\u0442\u0441\ + \u044F \u0447\u0435\u043B\u043E\u0432\u0435\u0447\u0435\u0441\u043A\u0438\u043C\ + \ \u0433\u043E\u043B\u043E\u0441\u043E\u043C." + type: Fix + id: 495 + time: '2024-08-15T16:00:07.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/625 From a1e3a722cd8d6707220b9865308240e669a82bb8 Mon Sep 17 00:00:00 2001 From: keslik <114428094+keslik1313@users.noreply.github.com> Date: Fri, 16 Aug 2024 19:15:36 +0300 Subject: [PATCH 08/13] Tweak: Radio in sec survival box (#627) --- Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml b/Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml index 9272551589..ebf81776b2 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/emergency.yml @@ -48,6 +48,7 @@ - id: SpaceMedipen - id: EmergencyMedipen - id: Flare + - id: RadioHandheld # WD - type: Sprite layers: - state: internals From b6ae7369ca411716eb2be99705ee485327b3fa27 Mon Sep 17 00:00:00 2001 From: uaNoName <131008018+uaNoName@users.noreply.github.com> Date: Fri, 16 Aug 2024 19:15:55 +0300 Subject: [PATCH 09/13] oh fuck (#628) --- Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml b/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml index 2c60e6a243..fb5fa76655 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/brigmedic.yml @@ -21,6 +21,7 @@ access: - Security - Brig + - Maintenance - Medical - External special: From 1fb1455159f028ad666aec6a52f8be1626114c97 Mon Sep 17 00:00:00 2001 From: RavmorganButOnCocaine Date: Fri, 16 Aug 2024 16:17:00 +0000 Subject: [PATCH 10/13] Automatic changelog update --- Resources/Changelog/ChangelogWhite.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 710bc32bf9..9a8f7c6f77 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -8261,3 +8261,23 @@ id: 495 time: '2024-08-15T16:00:07.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/625 +- author: keslik + changes: + - message: "\u0412 \u0430\u0432\u0430\u0440\u0438\u0439\u043D\u044B\u0435 \u043D\ + \u0430\u0431\u043E\u0440\u044B \u043E\u0445\u0440\u0430\u043D\u044B \u0434\u043E\ + \u0431\u0430\u0432\u043B\u0435\u043D\u0430 \u043F\u043E\u0440\u0442\u0430\u0442\ + \u0438\u0432\u043D\u0430\u044F \u0440\u0430\u0446\u0438\u044F" + type: Tweak + id: 496 + time: '2024-08-16T16:15:36.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/627 +- author: ua_No_Name48237 + changes: + - message: "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043E \u043E\u0442\ + \u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u043E\u0441\u0442\u0443\ + \u043F\u0430 \u0432 \u0442\u0435\u0445\u0438 \u0443 \u0431\u0440\u0438\u0433\ + \u043C\u0435\u0434\u0438\u043A\u0430" + type: Fix + id: 497 + time: '2024-08-16T16:15:56.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/628 From df3931fbb1e0686d10a97229db0a6f12633c7e05 Mon Sep 17 00:00:00 2001 From: Spatison <137375981+Spatison@users.noreply.github.com> Date: Fri, 16 Aug 2024 23:34:05 +0300 Subject: [PATCH 11/13] add: 6mirage6-ghost --- .../_White/Ghosts/custom_ghosts.yml | 9 ++++++ .../Ghosts/6mirage6-ghost.rsi/animated.png | Bin 0 -> 5465 bytes .../White/Ghosts/6mirage6-ghost.rsi/meta.json | 28 ++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 Resources/Textures/White/Ghosts/6mirage6-ghost.rsi/animated.png create mode 100644 Resources/Textures/White/Ghosts/6mirage6-ghost.rsi/meta.json diff --git a/Resources/Prototypes/_White/Ghosts/custom_ghosts.yml b/Resources/Prototypes/_White/Ghosts/custom_ghosts.yml index 5c66ddb7b0..61d5a57bfe 100644 --- a/Resources/Prototypes/_White/Ghosts/custom_ghosts.yml +++ b/Resources/Prototypes/_White/Ghosts/custom_ghosts.yml @@ -420,3 +420,12 @@ alpha: 0.9 ghostName: Никотиноед ghostDescription: Поедает никотин в любом виде + +#6mirage6 +- type: customGhost + id: 6mirage6-ghost + ckey: 6mirage6 + sprite: White/Ghosts/6mirage6-ghost.rsi + alpha: 0.9 + ghostName: M̷a̴r̶i̷ + ghostDescription: Бежит от настоящего, возвращаясь в прошлое... diff --git a/Resources/Textures/White/Ghosts/6mirage6-ghost.rsi/animated.png b/Resources/Textures/White/Ghosts/6mirage6-ghost.rsi/animated.png new file mode 100644 index 0000000000000000000000000000000000000000..8a4c58b2b42a2376b14d5f6fc54d5f369365a3bc GIT binary patch literal 5465 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 Date: Fri, 16 Aug 2024 23:46:26 +0300 Subject: [PATCH 12/13] [Tweak] Security statuses micro update (#629) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Tweak: Sec statuses update WIP * fix: Для новых статусов требуется указать причину * Fix: for review --- .../CriminalRecordsConsoleWindow.xaml.cs | 12 ++++- .../_White/SecurityHud/SecurityHudBUI.cs | 18 +++++-- .../Systems/CriminalRecordsConsoleSystem.cs | 26 ++++++++-- .../_White/SecurityHud/SecurityHudSystem.cs | 6 ++- .../SharedCriminalRecordsConsoleSystem.cs | 6 ++- Content.Shared/Security/SecurityStatus.cs | 10 ++-- .../criminal-records/criminal-records.ftl | 24 ++++++--- .../Locale/ru-RU/white/criminal-console.ftl | 11 ++-- .../Prototypes/StatusEffects/security.yml | 48 ++++++++++++++---- Resources/Prototypes/_White/sechud.yml | 6 ++- .../Interface/records.rsi/hud_demote.png | Bin 0 -> 129 bytes .../Interface/records.rsi/hud_execute.png | Bin 0 -> 183 bytes .../records.rsi/hud_incarcerated.png | Bin 0 -> 139 bytes .../Interface/records.rsi/hud_monitoring.png | Bin 0 -> 149 bytes .../Interface/records.rsi/hud_paroled.png | Bin 0 -> 157 bytes .../Interface/records.rsi/hud_released.png | Bin 0 -> 130 bytes .../Interface/records.rsi/hud_search.png | Bin 0 -> 139 bytes .../Interface/records.rsi/hud_suspected.png | Bin 0 -> 141 bytes .../Interface/records.rsi/hud_wanted.png | Bin 0 -> 158 bytes .../White/Interface/records.rsi/meta.json | 26 +++++++--- .../Interface/securityhud.rsi/demote.png | Bin 0 -> 192 bytes .../Interface/securityhud.rsi/discharged.png | Bin 225 -> 0 bytes .../Interface/securityhud.rsi/execute.png | Bin 0 -> 290 bytes .../White/Interface/securityhud.rsi/meta.json | 25 +++++++-- .../Interface/securityhud.rsi/monitoring.png | Bin 0 -> 204 bytes .../Interface/securityhud.rsi/released.png | Bin 202 -> 191 bytes .../Interface/securityhud.rsi/search.png | Bin 0 -> 289 bytes 27 files changed, 172 insertions(+), 46 deletions(-) create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_demote.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_execute.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_incarcerated.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_monitoring.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_paroled.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_released.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_search.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_suspected.png create mode 100644 Resources/Textures/White/Interface/records.rsi/hud_wanted.png create mode 100644 Resources/Textures/White/Interface/securityhud.rsi/demote.png delete mode 100644 Resources/Textures/White/Interface/securityhud.rsi/discharged.png create mode 100644 Resources/Textures/White/Interface/securityhud.rsi/execute.png create mode 100644 Resources/Textures/White/Interface/securityhud.rsi/monitoring.png create mode 100644 Resources/Textures/White/Interface/securityhud.rsi/search.png diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs index b259e08e72..a2345c2370 100644 --- a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs +++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs @@ -217,9 +217,19 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow } } + private HashSet AllowedStatusList = new HashSet() + { + SecurityStatus.Wanted, + SecurityStatus.Suspected, + SecurityStatus.Demote, + SecurityStatus.Monitoring, + SecurityStatus.Paroled, + SecurityStatus.Execute + }; + private void SetStatus(SecurityStatus status) { - if (status == SecurityStatus.Wanted || status == SecurityStatus.Suspected) + if (AllowedStatusList.Contains(status)) // WD end { GetReason(status); return; diff --git a/Content.Client/_White/SecurityHud/SecurityHudBUI.cs b/Content.Client/_White/SecurityHud/SecurityHudBUI.cs index 9e6e1de437..f154850682 100644 --- a/Content.Client/_White/SecurityHud/SecurityHudBUI.cs +++ b/Content.Client/_White/SecurityHud/SecurityHudBUI.cs @@ -15,31 +15,43 @@ public sealed class SecurityHudBUI : BoundUserInterface private readonly Dictionary _names = new() { - { "SecurityIconDischarged", Loc.GetString("criminal-records-status-discharged")}, + { "SecurityIconDemote", Loc.GetString("criminal-records-status-demote")}, // WD start { "SecurityIconParoled", Loc.GetString("criminal-records-status-paroled")}, { "SecurityIconSuspected", Loc.GetString("criminal-records-status-suspected")}, { "SecurityIconWanted", Loc.GetString("criminal-records-status-wanted")}, { "SecurityIconIncarcerated", Loc.GetString("criminal-records-status-detained")}, + { "SecurityIconExecute", Loc.GetString("criminal-records-status-execute")}, + { "SecurityIconMonitoring", Loc.GetString("criminal-records-status-monitoring")}, + { "SecurityIconReleased", Loc.GetString("criminal-records-status-released")}, + { "SecurityIconSearch", Loc.GetString("criminal-records-status-search")}, { "CriminalRecordIconRemove", Loc.GetString("security-hud-remove-status") } }; private readonly Dictionary _icons = new() { - { "SecurityIconDischarged", "/Textures/White/Interface/securityhud.rsi/discharged.png" }, + { "SecurityIconDemote", "/Textures/White/Interface/securityhud.rsi/demote.png" }, { "SecurityIconParoled", "/Textures/White/Interface/securityhud.rsi/paroled.png" }, { "SecurityIconSuspected", "/Textures/White/Interface/securityhud.rsi/suspected.png" }, { "SecurityIconWanted", "/Textures/White/Interface/securityhud.rsi/wanted.png" }, { "SecurityIconIncarcerated", "/Textures/White/Interface/securityhud.rsi/incarcerated.png" }, + { "SecurityIconExecute", "/Textures/White/Interface/securityhud.rsi/execute.png" }, + { "SecurityIconMonitoring", "/Textures/White/Interface/securityhud.rsi/monitoring.png" }, + { "SecurityIconReleased", "/Textures/White/Interface/securityhud.rsi/released.png" }, + { "SecurityIconSearch", "/Textures/White/Interface/securityhud.rsi/search.png" }, { "CriminalRecordIconRemove", "/Textures/White/Interface/securityhud.rsi/remove.png" } }; private readonly Dictionary _status = new() { - { "SecurityIconDischarged", SecurityStatus.Discharged }, + { "SecurityIconDemote", SecurityStatus.Demote }, { "SecurityIconParoled", SecurityStatus.Paroled }, { "SecurityIconSuspected", SecurityStatus.Suspected }, { "SecurityIconWanted", SecurityStatus.Wanted }, { "SecurityIconIncarcerated", SecurityStatus.Detained }, + { "SecurityIconExecute", SecurityStatus.Execute }, + { "SecurityIconMonitoring", SecurityStatus.Monitoring }, + { "SecurityIconReleased", SecurityStatus.Released }, + { "SecurityIconSearch", SecurityStatus.Search }, // WD end { "CriminalRecordIconRemove", SecurityStatus.None } }; diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index 63838ac0f2..549a3440c1 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -75,7 +75,11 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS { // prevent malf client violating wanted/reason nullability if (msg.Status == SecurityStatus.Wanted != (msg.Reason != null) && - msg.Status == SecurityStatus.Suspected != (msg.Reason != null)) + msg.Status == SecurityStatus.Suspected != (msg.Reason != null) && + msg.Status == SecurityStatus.Demote != (msg.Reason != null) && // WD start + msg.Status == SecurityStatus.Monitoring != (msg.Reason != null) && + msg.Status == SecurityStatus.Paroled != (msg.Reason != null) && + msg.Status == SecurityStatus.Execute != (msg.Reason != null)) // WD end return; if (!CheckSelected(ent, msg.Session, out var mob, out var key)) @@ -127,10 +131,18 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS (_, SecurityStatus.Suspected) => "suspected", // released on parole (_, SecurityStatus.Paroled) => "paroled", - // prisoner did their time - (_, SecurityStatus.Discharged) => "released", + // person was demoted + (_, SecurityStatus.Demote) => "demoted", // WD start // going from any other state to wanted, AOS or prisonbreak / lazy secoff never set them to released and they reoffended (_, SecurityStatus.Wanted) => "wanted", + // Person is xenos + (_, SecurityStatus.Execute) => "execute", + // Person requires supervision + (_, SecurityStatus.Monitoring) => "monitoring", + // Person works in cargo + (_, SecurityStatus.Search) => "search", + // Released + (_, SecurityStatus.Released) => "released", // person is no longer sus (SecurityStatus.Suspected, SecurityStatus.None) => "not-suspected", // going from wanted to none, must have been a mistake @@ -139,6 +151,14 @@ public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleS (SecurityStatus.Detained, SecurityStatus.None) => "released", // criminal is no longer on parole (SecurityStatus.Paroled, SecurityStatus.None) => "not-parole", + // person dont require supervision + (SecurityStatus.Monitoring, SecurityStatus.None) => "not-monitoring", + // person was searched + (SecurityStatus.Search, SecurityStatus.None) => "not-search", + // person was demoted + (SecurityStatus.Demote, SecurityStatus.None) => "not-demoted", + // person is not xenos + (SecurityStatus.Execute, SecurityStatus.None) => "not-execute", // WD end // this is impossible _ => "not-wanted" }; diff --git a/Content.Server/_White/SecurityHud/SecurityHudSystem.cs b/Content.Server/_White/SecurityHud/SecurityHudSystem.cs index b05f5cdebc..96d4831ddd 100644 --- a/Content.Server/_White/SecurityHud/SecurityHudSystem.cs +++ b/Content.Server/_White/SecurityHud/SecurityHudSystem.cs @@ -136,8 +136,12 @@ public sealed class SecurityHudSystem : EntitySystem (_, SecurityStatus.Detained) => "detained", (_, SecurityStatus.Suspected) => "suspected", (_, SecurityStatus.Paroled) => "paroled", - (_, SecurityStatus.Discharged) => "released", + (_, SecurityStatus.Demote) => "demoted", // WD start (_, SecurityStatus.Wanted) => "wanted", + (_, SecurityStatus.Monitoring) => "monitoring", + (_, SecurityStatus.Released) => "released", + (_, SecurityStatus.Search) => "search", + (_, SecurityStatus.Execute) => "execute", (SecurityStatus.Suspected, SecurityStatus.None) => "not-suspected", (SecurityStatus.Wanted, SecurityStatus.None) => "not-wanted", (SecurityStatus.Detained, SecurityStatus.None) => "released", diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs index b9b3177a30..ec6ac5445c 100644 --- a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs @@ -41,8 +41,12 @@ public abstract class SharedCriminalRecordsConsoleSystem : EntitySystem SecurityStatus.Paroled => "SecurityIconParoled", SecurityStatus.Wanted => "SecurityIconWanted", SecurityStatus.Detained => "SecurityIconIncarcerated", - SecurityStatus.Discharged => "SecurityIconDischarged", + SecurityStatus.Demote => "SecurityIconDemote", SecurityStatus.Suspected => "SecurityIconSuspected", + SecurityStatus.Execute => "SecurityIconExecute", // WD start + SecurityStatus.Released => "SecurityIconReleased", + SecurityStatus.Monitoring => "SecurityIconMonitoring", + SecurityStatus.Search => "SecurityIconSearch", // WD end _ => record.StatusIcon }; diff --git a/Content.Shared/Security/SecurityStatus.cs b/Content.Shared/Security/SecurityStatus.cs index c7fe3766f1..895d1d37e2 100644 --- a/Content.Shared/Security/SecurityStatus.cs +++ b/Content.Shared/Security/SecurityStatus.cs @@ -12,10 +12,14 @@ /// public enum SecurityStatus : byte { - None, - Suspected, + None, // WD start Wanted, + Suspected, + Demote, + Search, + Monitoring, Detained, Paroled, - Discharged + Released, + Execute // WD end } diff --git a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl index 698d9ba4d8..f9b99bdb2f 100644 --- a/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl +++ b/Resources/Locale/ru-RU/criminal-records/criminal-records.ftl @@ -9,13 +9,21 @@ criminal-records-console-no-record-found = Не найдены записи дл criminal-records-console-status = Статус criminal-records-status-none = Нет criminal-records-status-wanted = В розыске -criminal-records-status-detained = В заключении criminal-records-status-suspected = Подозреваемый -criminal-records-status-discharged = Освобождён -criminal-records-status-paroled = Досрочно освобождён +criminal-records-status-demote = Подлежит понижению +criminal-records-status-search = Обыскать +criminal-records-status-monitoring = Установить слежку +criminal-records-status-detained = Под стражей +criminal-records-status-paroled = Условно-досрочно освобождён +criminal-records-status-released = Освобождён +criminal-records-status-execute = Ликвидировать criminal-records-console-wanted-reason = [color=gray]Причина розыска[/color] criminal-records-console-suspected-reason = [color=gray]Причина подозрения[/color] +criminal-records-console-demote-reason = [color=gray]Причина понижения[/color] +criminal-records-console-monitoring-reason = [color=gray]Причина слежки[/color] +criminal-records-console-paroled-reason = [color=gray]Основание УДО[/color] +criminal-records-console-execute-reason = [color=gray]Причина устранения[/color] criminal-records-console-reason = Причина criminal-records-console-reason-placeholder = Например: {$placeholder} @@ -37,9 +45,13 @@ criminal-records-console-not-suspected = {$name} больше не под под criminal-records-console-detained = {$name} был задержан {$officer}. criminal-records-console-released = {$name} был освобожден {$officer}. criminal-records-console-not-wanted = {$name} больше не в розыске. -criminal-records-console-paroled = {$name} был отпущен условно-досрочно {$officer}. -criminal-records-console-not-parole = {$name} больше не условно-досрочно освобождённый. -criminal-records-console-unknown-officer = <неизвестный офицер> +criminal-records-console-paroled = {$name} был условно-досрочно освобождён {$officer} на основании {$reason}. +criminal-records-console-not-parole = {$name} нарушил условия условно-досрочного освобождения. +criminal-records-console-search = {$name} требуется обыскать по указу {$officer}. +criminal-records-console-monitoring = За {$name} требуется вести наблюдание по причине {$reason}. +criminal-records-console-execute = {$name} требуется ликвидировать по приказу {$officer} по причине {$reason}. +criminal-records-console-demoted = {$name} должен быть понижен в должности по указу {$officer} по причине {$reason}. +criminal-records-console-unknown-officer = <неопознанный офицер> ## Filters diff --git a/Resources/Locale/ru-RU/white/criminal-console.ftl b/Resources/Locale/ru-RU/white/criminal-console.ftl index 229d0eed5b..cf0d51977e 100644 --- a/Resources/Locale/ru-RU/white/criminal-console.ftl +++ b/Resources/Locale/ru-RU/white/criminal-console.ftl @@ -9,16 +9,17 @@ criminal-login-in-desc = Войти criminal-login-info = ID: { $user } criminal-login-hint = Вставьте ID карту в консоль, нажав на "{ $name }" (нужно держать ID карту в руке) criminal-login-warn = WARNING: Доступ к системе осуществляется уровнем доступа "службы безопасности" -criminal-status-released = Освобожден -criminal-status-discharged = Выписан -criminal-status-parolled = Закодирован +criminal-status-released = Освобождён +criminal-status-demote = Понизить +criminal-status-parolled = Условно-досрочно освобождён criminal-status-suspected = Подозреваемый criminal-status-wanted = В розыске criminal-status-incarcerated = Заключенный +criminal-status-execute = Ликвидировать +criminal-status-monitoring = Наблюдать +criminal-status-search = Обыскать criminal-targetchannel-set-released = { $target } освобожден(а). criminal-targetchannel-set-released-reason = { $target } освобожден(а). Заметка: { $reason }. -criminal-targetchannel-set-discharged = { $target } выписан(а). -criminal-targetchannel-set-discharged-reason = { $target } выписан(а). Заметка: { $reason }. criminal-targetchannel-set-parolled = { $target } закодирован(а). criminal-targetchannel-set-parolled-reason = { $target } закодирован(а). Заметка: { $reason }. criminal-targetchannel-set-suspected = { $target } под подозрением. diff --git a/Resources/Prototypes/StatusEffects/security.yml b/Resources/Prototypes/StatusEffects/security.yml index dcf08fbb09..e4c5a15fc9 100644 --- a/Resources/Prototypes/StatusEffects/security.yml +++ b/Resources/Prototypes/StatusEffects/security.yml @@ -6,44 +6,72 @@ locationPreference: Right isShaded: true -- type: statusIcon +- type: statusIcon # WD start parent: SecurityIcon - id: SecurityIconDischarged + id: SecurityIconDemote icon: - sprite: /Textures/Interface/Misc/security_icons.rsi - state: hud_discharged + sprite: /Textures/White/Interface/records.rsi + state: hud_demote - type: statusIcon parent: SecurityIcon id: SecurityIconIncarcerated icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_incarcerated - type: statusIcon parent: SecurityIcon id: SecurityIconParoled icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_paroled - type: statusIcon parent: SecurityIcon id: SecurityIconSuspected icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_suspected - type: statusIcon parent: SecurityIcon id: SecurityIconWanted icon: - sprite: /Textures/Interface/Misc/security_icons.rsi + sprite: /Textures/White/Interface/records.rsi state: hud_wanted +- type: statusIcon + parent: SecurityIcon + id: SecurityIconExecute + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_execute + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconMonitoring + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_monitoring + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconReleased + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_released + +- type: statusIcon + parent: SecurityIcon + id: SecurityIconSearch + icon: + sprite: /Textures/White/Interface/records.rsi + state: hud_search + - type: statusIcon parent: SecurityIcon id: CriminalRecordIconRemove icon: - sprite: /Textures/Interface/Misc/security_icons.rsi - state: hud_discharged + sprite: /Textures/White/Interface/records.rsi + state: hud_demote # WD end diff --git a/Resources/Prototypes/_White/sechud.yml b/Resources/Prototypes/_White/sechud.yml index e994e94662..3564fd68c8 100644 --- a/Resources/Prototypes/_White/sechud.yml +++ b/Resources/Prototypes/_White/sechud.yml @@ -8,11 +8,15 @@ access: [["Security"]] - type: SecurityHud criminalrecords: - - SecurityIconDischarged + - SecurityIconDemote - SecurityIconParoled - SecurityIconSuspected - SecurityIconWanted - SecurityIconIncarcerated + - SecurityIconExecute + - SecurityIconMonitoring + - SecurityIconSearch + - SecurityIconReleased - CriminalRecordIconRemove - type: UserInterface interfaces: diff --git a/Resources/Textures/White/Interface/records.rsi/hud_demote.png b/Resources/Textures/White/Interface/records.rsi/hud_demote.png new file mode 100644 index 0000000000000000000000000000000000000000..aebef2fb75de81c8d7d342f9016be0a487b440d3 GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFq9-c0aArj%qIcW($;!htqaH4^= z;faK!3zu2sf*UdlY}zY+{+D+?$?fLm!>ZsYF@Yf~i}6#S&w?1nP0kPU7&x0`y3Q&q byk}-e-lI8PWM=<*pqUJwu6{1-oD!M<&1)w^ literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Interface/records.rsi/hud_execute.png b/Resources/Textures/White/Interface/records.rsi/hud_execute.png new file mode 100644 index 0000000000000000000000000000000000000000..42b6c1005352a08f31753394eeeb7abe3d03fd79 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0vp^5|Ns1kmR45R`ZM$Gd3t(!coMjG&6v6I*Mc|i z<2P7%$fYQr5i~IKsWS|aOHnu@Bw;PKVtxkqhMf#InI_nrNDydVJLnNjq zujsn?|9k^;$k7-7(~}Ys5^mgh_US(eT+Czx0=1Z3fjtLVAB5#(m8TwX6HaAyWbH91 hPnet&T{KaUVS%~zgZnc-y8#Vk@O1TaS?83{1OUuqF_!=U literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Interface/records.rsi/hud_monitoring.png b/Resources/Textures/White/Interface/records.rsi/hud_monitoring.png new file mode 100644 index 0000000000000000000000000000000000000000..a60e07f34844824535550c4a9bca02b84b1a4136 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqF`h1tArj%qDLsF_|Nmd4=EkPO zpmLl;>58x7r|aB`t4w|?emQ&jzvKfhhe0w045@xw!q0*qLJ(eVkVR*JkeV-P3e{gO6>3pTq$J#w84r2i7!3H?Ct?BC%ve n=%ksAf=3QMy*f+$zXapisb(RUzD_jgTe~DWM4f(X}qh literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Interface/records.rsi/hud_suspected.png b/Resources/Textures/White/Interface/records.rsi/hud_suspected.png new file mode 100644 index 0000000000000000000000000000000000000000..8e04eb21f43459330ca7109ee238472ef61f0f7a GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|+&x_!LnNjq z=S)oab-sapg8>k*xD_N!joJT*omqHOL)iatwzdD(Yjg#OBrvmxZcr#*CtCE_oN>0a lgrtOoL_y`&XGiVb7>?Z+*i}}{^d4v=gQu&X%Q~loCICj$D&hbD literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Interface/records.rsi/hud_wanted.png b/Resources/Textures/White/Interface/records.rsi/hud_wanted.png new file mode 100644 index 0000000000000000000000000000000000000000..2df379d112042b9e741caf354210cd87f3c72031 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqjKx9jP7LeL$-D$|B0OCjLnNlA z_8sIsV8Fw~zuNi9ZP86h;V*4s7v9ftl=oFS>gcphP~kOGctGmW&zBhk4yu&(GH93` zjgvYiyRy#-{_2`Mls0nvsz4paW_S^wXmjw!}C pFXY}e8>{nsmuI`EKFDX{?b@*{GT_bZbwDREc)I$ztaD0e0szMoMj!wH literal 0 HcmV?d00001 diff --git a/Resources/Textures/White/Interface/securityhud.rsi/discharged.png b/Resources/Textures/White/Interface/securityhud.rsi/discharged.png deleted file mode 100644 index 3206bf0693fadc99bcd295be284cdc3ed130fa9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}vproLLn2y} zQ+obR|p00i_>zopr0MgJCm-5@QU!S7`EP23=w)!JkE;bSJia1(er*EJCz zYZLt}1H%ApN4gxlG1O#A{qO{?0^S{kkb0W{5QsbTxUU&Nf+(4*0DKc77=nS;!V_SG zQFE_J1JouVt;StwRR9`@(#EI(7zk-yn*b1q+F9}608-lHFm`zbsCfW+G=!|V1VLv2 zIb@KU07U^X!e}iFfC|RpLwcG4YJ1-Gb6hi*K476&Jpt6b1VIB(7eJyIo&cdqm1Y3f o?%qEtZ|9Qhb#~XD0Npw`|-;UcnFL-03!_$0)*leJq@ArnWE76 zq&k4wVAKI5rvXySiP3Uk&^utX92j)~BYMAJv`skT9KgaW$R~gj={HaRr)ggi-M#@2 cfl&tl0OAH3A#b3vi2wiq07*qoM6N<$f?AJd&K7RM-WKL~aVUTsc%@`l{igfJBrcgV)ZI^KA8z$e zhpfP!JjR8e8Zy`$c+}KYI9k~}`4pC|I{eflM$yrn{Q(!}D(i-TkcI6mzA_G7${EiX zl4Ko&*##bR%(8Bnpd6(-vol**Xfo@^l?SKVzI?_2)D_O2P|VWCe4%;bHQA}N#Q#f7 leCzVCLB&nh;k^I@LwnFo-;MT57Xtmv;OXk;vd$@?2>|-AYSjP$ literal 0 HcmV?d00001 From d2665d18b5ae0ea117a7641e3793cee8020a56c3 Mon Sep 17 00:00:00 2001 From: RavmorganButOnCocaine Date: Fri, 16 Aug 2024 20:47:29 +0000 Subject: [PATCH 13/13] Automatic changelog update --- Resources/Changelog/ChangelogWhite.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/ChangelogWhite.yml b/Resources/Changelog/ChangelogWhite.yml index 9a8f7c6f77..59bf4c297a 100644 --- a/Resources/Changelog/ChangelogWhite.yml +++ b/Resources/Changelog/ChangelogWhite.yml @@ -8281,3 +8281,12 @@ id: 497 time: '2024-08-16T16:15:56.0000000+00:00' url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/628 +- author: keslik + changes: + - message: "\u041F\u0435\u0440\u0435\u0440\u0430\u0431\u043E\u0442\u0430\u043D\u044B\ + \ \u043A\u0440\u0438\u043C\u0438\u043D\u0430\u043B\u044C\u043D\u044B\u0435 \u0441\ + \u0442\u0430\u0442\u0443\u0441\u044B" + type: Tweak + id: 498 + time: '2024-08-16T20:46:26.0000000+00:00' + url: https://api.github.com/repos/frosty-dev/ss14-core/pulls/629