From fd5a98d1fd113bd167819ffafc4bcb6b96a678c6 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:07:06 -0700 Subject: [PATCH 01/21] dont accumulate parasite self dmg --- .../_ES/Masks/Parasite/ESParasiteDamageObjectiveSystem.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Content.Server/_ES/Masks/Parasite/ESParasiteDamageObjectiveSystem.cs b/Content.Server/_ES/Masks/Parasite/ESParasiteDamageObjectiveSystem.cs index 1f909e168b..1261dcd527 100644 --- a/Content.Server/_ES/Masks/Parasite/ESParasiteDamageObjectiveSystem.cs +++ b/Content.Server/_ES/Masks/Parasite/ESParasiteDamageObjectiveSystem.cs @@ -30,6 +30,10 @@ private void OnCausedDamageChanged(Entity en if (args.DamageDelta is null || !MindSys.TryGetMind(args.Entity, out _)) return; + // dont accumulate selfdmg + if (args.Entity.Owner == args.Origin) + return; + var damageDealt = DamageSpecifier.GetPositive(args.DamageDelta).GetTotal(); ObjectivesSys.AdjustObjectiveCounter(ent.Owner, damageDealt.Float()); From 1fd82d4a4abe75a6df3fbc28a1df25d0d5e17cad Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:17:55 -0700 Subject: [PATCH 02/21] remove dexplus fully --- .../Chemistry/chemical-containers.yml | 15 ------- .../Specific/Chemistry/chemistry-bottles.yml | 16 -------- .../Structures/Specific/Anomaly/anomalies.yml | 1 - Resources/Prototypes/Reagents/medicine.yml | 40 +------------------ .../Prototypes/Recipes/Reactions/medicine.yml | 2 +- .../_ES/Objectives/Crew/guzzler.yml | 3 -- Resources/Prototypes/_Offbrand/reactions.yml | 2 +- .../Prototypes/_Offbrand/status_effects.yml | 10 ++--- .../ServerInfo/_Offbrand/ChemistMedical.xml | 2 +- Resources/ServerInfo/_Offbrand/Doctor.xml | 2 +- Resources/ServerInfo/_Offbrand/Medication.xml | 1 - Resources/ServerInfo/_Offbrand/Paramedic.xml | 2 +- 12 files changed, 11 insertions(+), 85 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml index e74414ca57..e40afd21e4 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemical-containers.yml @@ -513,18 +513,3 @@ reagents: - ReagentId: Saline Quantity: 200 - -- type: entity - parent: Jug - suffix: dexalin plus - id: JugDexalinPlus - categories: [ HideSpawnMenu ] - components: - - type: Label - currentLabel: reagent-name-dexalin-plus - - type: SolutionContainerManager - solutions: - drink: - reagents: - - ReagentId: DexalinPlus - Quantity: 200 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 3e3ad7dfce..41f5e42c65 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -242,21 +242,6 @@ - ReagentId: Dexalin Quantity: 30 -- type: entity - id: ChemistryBottleDexalinPlus - suffix: dex+ - parent: BaseChemistryBottleFilled - components: - - type: Label - currentLabel: reagent-name-dexalin-plus - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: DexalinPlus - Quantity: 30 - - type: entity id: ChemistryBottleDiphenhydramine suffix: diphenhydramine @@ -1001,7 +986,6 @@ - id: ChemistryBottleDylovene - id: ChemistryBottleInaprovaline - id: ChemistryBottleDexalin - - id: ChemistryBottleDexalinPlus - id: ChemistryBottleSaline - id: ChemistryBottleTricordrazine - id: ChemistryBottleParacetamol # Offbrand diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml index 25f6ef3ef9..bffa3e19ad 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomalies.yml @@ -827,7 +827,6 @@ - Cryoxadone - Dermaline - Dexalin - - DexalinPlus - Epinephrine - Leporazine - Tricordrazine diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 3ce1671bc6..70d2a4e5cf 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -290,7 +290,7 @@ # Begin Offbrand metabolismRate: 0.1 statusEffects: - - statusEffect: StatusEffectMajorOxygenationDexalinPlus + - statusEffect: StatusEffectMajorOxygenationDexalin # End Offbrand effects: - !type:HealthChange @@ -308,44 +308,6 @@ Asphyxiation: 3 Cold: 1 -- type: reagent - id: DexalinPlus - name: reagent-name-dexalin-plus - group: Medicine - desc: reagent-desc-dexalin-plus - physicalDesc: reagent-physical-desc-cloudy - flavor: medicine - color: "#4da0bd" - metabolisms: - Medicine: - # Begin Offbrand - metabolismRate: 0.1 - statusEffects: - - statusEffect: StatusEffectMajorOxygenationDexalinPlus - # End Offbrand - effects: - - !type:HealthChange - damage: - types: - Asphyxiation: -1.5 - Bloodloss: -1 - - !type:AdjustReagent - conditions: - - !type:ReagentCondition - reagent: HeartbreakerToxin - min: 1 - reagent: HeartbreakerToxin - amount: -3 - - !type:HealthChange - conditions: - - !type:ReagentCondition - reagent: DexalinPlus - min: 25 - damage: - types: - Asphyxiation: 5 - Cold: 3 - # this ones a doozy - type: reagent id: Epinephrine diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index 4cd0c76d4c..7907c3a96b 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -184,7 +184,7 @@ - type: reaction id: HeartbreakerToxin reactants: - DexalinPlus: + Dexalin: amount: 1 MindbreakerToxin: amount: 1 diff --git a/Resources/Prototypes/_ES/Objectives/Crew/guzzler.yml b/Resources/Prototypes/_ES/Objectives/Crew/guzzler.yml index e4e80a11e7..a1ffd269eb 100644 --- a/Resources/Prototypes/_ES/Objectives/Crew/guzzler.yml +++ b/Resources/Prototypes/_ES/Objectives/Crew/guzzler.yml @@ -33,15 +33,12 @@ - Beer - WeldingFuel # Excuse to really annoy engineering, AND medical. - Epinephrine # Excuses to really annoy medical. - - DexalinPlus - JuiceBanana - JuiceApple - Milk - Bicaridine - Sugar - Blood - - Fiber - - Fat - SoapReagent - SpaceCleaner - SpaceLube diff --git a/Resources/Prototypes/_Offbrand/reactions.yml b/Resources/Prototypes/_Offbrand/reactions.yml index 4db00ad2fa..bf71c9c920 100644 --- a/Resources/Prototypes/_Offbrand/reactions.yml +++ b/Resources/Prototypes/_Offbrand/reactions.yml @@ -52,7 +52,7 @@ reactants: Synthflesh: amount: 1 - DexalinPlus: + Dexalin: amount: 1 Iron: amount: 1 diff --git a/Resources/Prototypes/_Offbrand/status_effects.yml b/Resources/Prototypes/_Offbrand/status_effects.yml index 131dda11c7..66fd2922fc 100644 --- a/Resources/Prototypes/_Offbrand/status_effects.yml +++ b/Resources/Prototypes/_Offbrand/status_effects.yml @@ -218,30 +218,30 @@ - type: entity parent: MobStatusEffectBase - id: StatusEffectMinorOxygenationDexalin + id: StatusEffectMinorOxygenationHalf name: 50% artificial respiration components: - type: LungFunctionModifierStatusEffect function: 0.5 - type: entity - parent: StatusEffectMinorOxygenationDexalin + parent: StatusEffectMinorOxygenationHalf id: StatusEffectMinorOxygenationPolypyryliumOligomers - type: entity - parent: StatusEffectMinorOxygenationDexalin + parent: StatusEffectMinorOxygenationHalf id: StatusEffectMinorOxygenationCryoxadone - type: entity parent: MobStatusEffectBase - id: StatusEffectMajorOxygenationDexalinPlus + id: StatusEffectMajorOxygenationDexalin name: 90% artificial respiration components: - type: LungFunctionModifierStatusEffect function: 0.9 - type: entity - parent: StatusEffectMajorOxygenationDexalinPlus + parent: StatusEffectMajorOxygenationDexalin id: StatusEffectMajorOxygenationCloneoxadone - type: entity diff --git a/Resources/ServerInfo/_Offbrand/ChemistMedical.xml b/Resources/ServerInfo/_Offbrand/ChemistMedical.xml index 7682c48526..8b031a885d 100644 --- a/Resources/ServerInfo/_Offbrand/ChemistMedical.xml +++ b/Resources/ServerInfo/_Offbrand/ChemistMedical.xml @@ -17,7 +17,7 @@ These are the basic set of chemicals any [color=#5b97bc]Medical[/color] ward sho - + ### Other Basic Chemicals diff --git a/Resources/ServerInfo/_Offbrand/Doctor.xml b/Resources/ServerInfo/_Offbrand/Doctor.xml index 4148ec5aa7..05c1c03c1b 100644 --- a/Resources/ServerInfo/_Offbrand/Doctor.xml +++ b/Resources/ServerInfo/_Offbrand/Doctor.xml @@ -28,7 +28,7 @@ Each wound can only be bandaged or salved once; different medicated bandages and - + diff --git a/Resources/ServerInfo/_Offbrand/Medication.xml b/Resources/ServerInfo/_Offbrand/Medication.xml index 2450b8cfe2..554168fd91 100644 --- a/Resources/ServerInfo/_Offbrand/Medication.xml +++ b/Resources/ServerInfo/_Offbrand/Medication.xml @@ -9,7 +9,6 @@ These medicines primarily slow down how fast a patient's condition worsens, with - ## Painkillers diff --git a/Resources/ServerInfo/_Offbrand/Paramedic.xml b/Resources/ServerInfo/_Offbrand/Paramedic.xml index 53b0ff1a00..6f86252250 100644 --- a/Resources/ServerInfo/_Offbrand/Paramedic.xml +++ b/Resources/ServerInfo/_Offbrand/Paramedic.xml @@ -60,7 +60,7 @@ When responding to injuries, the first thing you should do is apply the best typ - + From a40eabf12cab0027e77cd2223f0e09378220bce9 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:29:39 -0700 Subject: [PATCH 03/21] no more toggleable operating table + better sprite --- .../Locale/en-US/_Offbrand/overrides.ftl | 2 -- .../Structures/Machines/stasisbed.yml | 1 - .../Structures/Machines}/operating_table.yml | 25 +++++++++++------- .../Structures/Machines/optable.rsi/base.png | Bin 0 -> 407 bytes .../Machines}/optable.rsi/meta.json | 10 +++++-- .../Machines}/optable.rsi/operating_table.png | Bin .../Machines/optable.rsi/power_off.png | Bin 0 -> 120 bytes .../Machines/optable.rsi/power_on.png | Bin 0 -> 118 bytes 8 files changed, 23 insertions(+), 15 deletions(-) delete mode 100644 Resources/Locale/en-US/_Offbrand/overrides.ftl rename Resources/Prototypes/{Entities/Structures/Furniture/Tables => _ES/Entities/Structures/Machines}/operating_table.yml (56%) create mode 100644 Resources/Textures/_ES/Structures/Machines/optable.rsi/base.png rename Resources/Textures/{Structures/Furniture/Tables => _ES/Structures/Machines}/optable.rsi/meta.json (60%) rename Resources/Textures/{Structures/Furniture/Tables => _ES/Structures/Machines}/optable.rsi/operating_table.png (100%) create mode 100644 Resources/Textures/_ES/Structures/Machines/optable.rsi/power_off.png create mode 100644 Resources/Textures/_ES/Structures/Machines/optable.rsi/power_on.png diff --git a/Resources/Locale/en-US/_Offbrand/overrides.ftl b/Resources/Locale/en-US/_Offbrand/overrides.ftl deleted file mode 100644 index bc1a5a46ee..0000000000 --- a/Resources/Locale/en-US/_Offbrand/overrides.ftl +++ /dev/null @@ -1,2 +0,0 @@ -ent-OperatingTable = operating table - .desc = A sterile surface for advanced medical procedures. Has toggleable neural suppression to anesthetize patients laying on top of it. diff --git a/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml b/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml index 89e6f5d832..dd81340fc6 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/stasisbed.yml @@ -66,4 +66,3 @@ - type: GuideHelp guides: - OffbrandCryostasis # Offbrand - - type: PowerSwitch diff --git a/Resources/Prototypes/Entities/Structures/Furniture/Tables/operating_table.yml b/Resources/Prototypes/_ES/Entities/Structures/Machines/operating_table.yml similarity index 56% rename from Resources/Prototypes/Entities/Structures/Furniture/Tables/operating_table.yml rename to Resources/Prototypes/_ES/Entities/Structures/Machines/operating_table.yml index e91d929dbd..3f25b0360e 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/Tables/operating_table.yml +++ b/Resources/Prototypes/_ES/Entities/Structures/Machines/operating_table.yml @@ -2,15 +2,16 @@ id: OperatingTable parent: Bed name: operating table - description: A special medical table for surgery. Doing surgery on this is a lot more effective then other means. + description: A sterile surface for advanced medical procedures. When powered, has neural suppression to anesthetize patients laying on top of it. components: - type: Sprite - sprite: Structures/Furniture/Tables/optable.rsi - state: operating_table + sprite: _ES/Structures/Machines/optable.rsi noRot: true - - type: Icon - sprite: Structures/Furniture/Tables/optable.rsi - state: operating_table + layers: + - state: base + - map: ["enum.PowerDeviceVisuals.Powered"] + state: power_off + shader: unshaded # Begin Offbrand - type: StatusEffectOnStrap statusEffect: StatusEffectNeuralSuppression @@ -19,7 +20,6 @@ powerLoad: 1000 powerDisabled: true - type: ExtensionCableReceiver - - type: PowerSwitch - type: Construction graph: Machine node: machine @@ -32,9 +32,14 @@ containers: machine_board: !type:Container machine_parts: !type:Container - # End Offbrand -# ES START + # End Offbrand - type: ESAutopsyTable - type: Destructible thresholds: [] # Indestructible -# ES END + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + enum.PowerDeviceVisualLayers.Powered: + True: { state: power_on } + False: { state: power_off } diff --git a/Resources/Textures/_ES/Structures/Machines/optable.rsi/base.png b/Resources/Textures/_ES/Structures/Machines/optable.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..8d16e7f9df0b606aed68e4519a824074ff5c0c57 GIT binary patch literal 407 zcmV;I0cie-P)HT&-1tfNLMhOoJUAwo@efw>$)|fPc&WGYK@JsIf8Kd}ISX+k`w9geBkw$Ou)+mSq`p zzVCa4tExidIC5WxAQplkIPQ6#O9k*a+O{>0Z!ru*;px{j&8O!miY@^vsOuUH!(b@? z3*tE5w{3fLUH1y&=wz^?bzOx?P1C%_5X%$5JcyQMQL<13nLwcc+qTiW16Q3`F~0Bb zPFLrM_?0Yy?EBZ1A14F~>Ps_hpB~MwG+{<(+kcnyL{LIfl OT@0SCelF{r5}E+i Date: Sun, 14 Jun 2026 09:35:06 -0700 Subject: [PATCH 04/21] fix food status --- Content.Client/_ES/Food/ESFoodItemStatusSystem.cs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/Content.Client/_ES/Food/ESFoodItemStatusSystem.cs b/Content.Client/_ES/Food/ESFoodItemStatusSystem.cs index 690eddbdf1..02d0213ce5 100644 --- a/Content.Client/_ES/Food/ESFoodItemStatusSystem.cs +++ b/Content.Client/_ES/Food/ESFoodItemStatusSystem.cs @@ -32,11 +32,6 @@ public sealed class ESFoodStatusControl : Control BackgroundColor = Color.LimeGreen }; - private static readonly StyleBoxFlat StyleBoxUnlit = new() - { - BackgroundColor = Color.Black - }; - private static readonly StyleBoxFlat StyleBoxBad = new() { BackgroundColor = Color.Red @@ -62,8 +57,8 @@ public ESFoodStatusControl(Entity parent) for (var i = 0; i < 5; i++) { var colorBox = parent.Comp.SatietyMultiplier < 0 ? StyleBoxBad : StyleBoxLit; - var style = i <= ((_oldPortionsLeft ?? parent.Comp.StartingPortions) - 1) ? colorBox : StyleBoxUnlit; - var panel = new PanelContainer { MinSize = new Vector2(16, 16), PanelOverride = style }; + var visible = i <= ((_oldPortionsLeft ?? parent.Comp.StartingPortions) - 1); + var panel = new PanelContainer { MinSize = new Vector2(16, 16), PanelOverride = colorBox, Visible = visible}; wrapper.AddChild(panel); _sections.Add(panel); } @@ -81,9 +76,10 @@ protected override void FrameUpdate(FrameEventArgs args) for (var i = 0; i < _sections.Count; i++) { var colorBox = _parent.Comp.SatietyMultiplier < 0 ? StyleBoxBad : StyleBoxLit; - var style = i <= ((_oldPortionsLeft ?? _parent.Comp.StartingPortions) - 1) ? colorBox : StyleBoxUnlit; + var visible = i <= ((_oldPortionsLeft ?? _parent.Comp.StartingPortions) - 1); var panel = _sections[i]; - panel.PanelOverride = style; + panel.PanelOverride = colorBox; + panel.Visible = visible; } } } From 5472d428f96bd8591cc0960ecc979b1f0bceb275 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:35:15 -0700 Subject: [PATCH 05/21] fix bad food not having a popup --- Content.Shared/_ES/Food/ESFoodSystem.cs | 7 +++++++ Resources/Locale/en-US/_ES/food/popup.ftl | 1 + 2 files changed, 8 insertions(+) create mode 100644 Resources/Locale/en-US/_ES/food/popup.ftl diff --git a/Content.Shared/_ES/Food/ESFoodSystem.cs b/Content.Shared/_ES/Food/ESFoodSystem.cs index d4b9e8d372..fb41582039 100644 --- a/Content.Shared/_ES/Food/ESFoodSystem.cs +++ b/Content.Shared/_ES/Food/ESFoodSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Examine; using Content.Shared.Nutrition; using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Popups; namespace Content.Shared._ES.Food; @@ -8,6 +9,7 @@ namespace Content.Shared._ES.Food; public sealed partial class ESFoodSystem : EntitySystem { [Dependency] private HungerSystem _hunger = default!; + [Dependency] private SharedPopupSystem _popup = default!; public override void Initialize() { @@ -45,6 +47,11 @@ private void OnFoodIngested(Entity ent, ref IngestedEvent args) // satiate _hunger.ModifySatiety(args.User, 1 * ent.Comp.SatietyMultiplier); Dirty(ent); + + if (ent.Comp.SatietyMultiplier < 0) + { + _popup.PopupEntity(Loc.GetString("es-food-popup-bad-food"), args.User, args.User); + } } private void OnFoodExamined(Entity ent, ref ExaminedEvent args) diff --git a/Resources/Locale/en-US/_ES/food/popup.ftl b/Resources/Locale/en-US/_ES/food/popup.ftl new file mode 100644 index 0000000000..d599cec324 --- /dev/null +++ b/Resources/Locale/en-US/_ES/food/popup.ftl @@ -0,0 +1 @@ +es-food-popup-bad-food = That tasted awful! From 9e92b4e147ed1f506cd691d78ca2a43b76ca6183 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:35:45 -0700 Subject: [PATCH 06/21] slower hunger --- Content.Shared/Nutrition/Components/HungerComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Nutrition/Components/HungerComponent.cs b/Content.Shared/Nutrition/Components/HungerComponent.cs index cc92b1a702..a4e0ad2e61 100644 --- a/Content.Shared/Nutrition/Components/HungerComponent.cs +++ b/Content.Shared/Nutrition/Components/HungerComponent.cs @@ -23,7 +23,7 @@ public sealed partial class HungerComponent : Component /// The time it takes for the hunger value to decay once /// [DataField, AutoNetworkedField] - public TimeSpan HungerDecayTime = TimeSpan.FromMinutes(8); + public TimeSpan HungerDecayTime = TimeSpan.FromMinutes(14); /// /// The time when the hunger threshold will decay next. From 0bb197beff16fb150c78be73ce1c9078f0080411 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:38:03 -0700 Subject: [PATCH 07/21] nav terminal more charge --- .../Prototypes/_ES/Entities/Structures/Machines/computers.yml | 2 +- Resources/Prototypes/_ES/Objectives/crew.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_ES/Entities/Structures/Machines/computers.yml b/Resources/Prototypes/_ES/Entities/Structures/Machines/computers.yml index 169278757e..6412e4cb38 100644 --- a/Resources/Prototypes/_ES/Entities/Structures/Machines/computers.yml +++ b/Resources/Prototypes/_ES/Entities/Structures/Machines/computers.yml @@ -455,6 +455,6 @@ batteryRechargeRate: 25 - type: Battery netsync: false - maxCharge: 200 + maxCharge: 600 - type: ExaminableBattery - type: ESAmbientMusicMarkerCommand diff --git a/Resources/Prototypes/_ES/Objectives/crew.yml b/Resources/Prototypes/_ES/Objectives/crew.yml index a0366d4a55..221abe7363 100644 --- a/Resources/Prototypes/_ES/Objectives/crew.yml +++ b/Resources/Prototypes/_ES/Objectives/crew.yml @@ -2,7 +2,7 @@ parent: ESBaseMaskObjective id: ESObjectiveWarpDrive name: Outrun the radstorm and charge the warp drive - description: Keep the station functional, ensure the thrusters and navigation console stay powered, and make sure the warp drive charges successfully so you can escape. + description: Keep the station functional, ensure the thrusters and navigation terminal stay powered, and make sure the warp drive charges successfully so you can escape. components: - type: ESObjective icon: From 4b42ab7425c900c2842589d2b071d265688f5394 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:40:06 -0700 Subject: [PATCH 08/21] smartfridge access --- .../Prototypes/_ES/Entities/Structures/Machines/smartfridge.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/_ES/Entities/Structures/Machines/smartfridge.yml b/Resources/Prototypes/_ES/Entities/Structures/Machines/smartfridge.yml index f13c9ec03d..51188c854b 100644 --- a/Resources/Prototypes/_ES/Entities/Structures/Machines/smartfridge.yml +++ b/Resources/Prototypes/_ES/Entities/Structures/Machines/smartfridge.yml @@ -10,6 +10,8 @@ smart_fridge_inventory: tableId: ESSmartFridgeMedicalFill - type: ESAmbientMusicMarkerMedical + - type: AccessReader + access: [[ "Medical" ]] - type: entityTable id: ESSmartFridgeMedicalFill From a5b22e8f5fbc4da58c2451cadc16d3aaada7154b Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:41:33 -0700 Subject: [PATCH 09/21] fix meat not cooking --- Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index c604a3e564..0c288f8c0c 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -288,7 +288,7 @@ - type: entity parent: FoodMeatBase - id: FoodMeatCooked + id: FoodMeatCookedBase name: steak description: A cooked slab of meat. Smells primal. components: From 4fa55fdf00e9b70572a2c0a1ca115e9d886b8c1c Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:42:41 -0700 Subject: [PATCH 10/21] a --- .../Prototypes/Entities/Objects/Consumable/Food/meat.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index 0c288f8c0c..7d487a5179 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -287,8 +287,8 @@ heldPrefix: generic-pink - type: entity - parent: FoodMeatBase - id: FoodMeatCookedBase + parent: FoodMeatCookedBase + id: FoodMeatCooked name: steak description: A cooked slab of meat. Smells primal. components: From c2f9e000e446cd9e28dcf805fcc92e41e81615d2 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:44:36 -0700 Subject: [PATCH 11/21] fix scalpel rotation --- Resources/Prototypes/_ES/Entities/Objects/Tools/scalpel.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/_ES/Entities/Objects/Tools/scalpel.yml b/Resources/Prototypes/_ES/Entities/Objects/Tools/scalpel.yml index d7bfe96436..a6c95c7ade 100644 --- a/Resources/Prototypes/_ES/Entities/Objects/Tools/scalpel.yml +++ b/Resources/Prototypes/_ES/Entities/Objects/Tools/scalpel.yml @@ -10,7 +10,7 @@ - type: Item storedRotation: 90 - type: MeleeWeapon - wideAnimationRotation: 90 + wideAnimationRotation: -90 swingLeft: true attackRate: 1.5 damage: From 6583f574ccc5bb76e8876e844ccb7aa4055a8148 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:46:34 -0700 Subject: [PATCH 12/21] smoke threshold tweaks --- Resources/Prototypes/_ES/Reagents/gases.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/_ES/Reagents/gases.yml b/Resources/Prototypes/_ES/Reagents/gases.yml index 4ec4ace0b1..6d622a34a2 100644 --- a/Resources/Prototypes/_ES/Reagents/gases.yml +++ b/Resources/Prototypes/_ES/Reagents/gases.yml @@ -24,13 +24,16 @@ Asphyxiation: 2 - !type:ESAddWound - minScale: 1.5 + conditions: + - !type:ReagentCondition + reagent: Smoke + min: 0.75 wound: ESWoundSmokeInhalation - probability: 0.2 + probability: 0.33 - !type:Emote conditions: - !type:ReagentCondition reagent: Smoke - min: 0.2 + min: 0.25 emote: Cough - probability: 0.5 + probability: 0.75 From 75ef07d6d966a0b1133025dd3fe7b15ea19e8ac3 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:51:26 -0700 Subject: [PATCH 13/21] move dorms vendor to bar, move cigs vendor to arrivals, snack vendor in dorms --- Resources/Maps/_ES/toast.yml | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/Resources/Maps/_ES/toast.yml b/Resources/Maps/_ES/toast.yml index 8ea9596e97..67bc7be61b 100644 --- a/Resources/Maps/_ES/toast.yml +++ b/Resources/Maps/_ES/toast.yml @@ -4,7 +4,7 @@ meta: engineVersion: 277.0.0 forkId: "" forkVersion: "" - time: 06/10/2026 10:13:00 + time: 06/14/2026 16:50:29 entityCount: 14692 maps: - 3 @@ -39946,10 +39946,10 @@ entities: parent: 2 - proto: ESSpawnerDormsVendor entities: - - uid: 10480 + - uid: 7282 components: - type: Transform - pos: -49.5,6.5 + pos: -3.5,-3.5 parent: 2 - proto: ESSpawnerMarkerDistributedArmory entities: @@ -43849,6 +43849,13 @@ entities: - type: Transform pos: -18.5,-28.5 parent: 2 +- proto: ESSpawnerRandomVendorSnack + entities: + - uid: 136 + components: + - type: Transform + pos: -49.5,6.5 + parent: 2 - proto: ESSpawnerRandomWardrobe entities: - uid: 1679 @@ -44178,15 +44185,15 @@ entities: parent: 2 - proto: ESVendingMachineCigs entities: - - uid: 136 + - uid: 4795 components: - type: Transform - pos: -3.5,-3.5 + pos: -35.5,-1.5 parent: 2 - - uid: 4795 + - uid: 7402 components: - type: Transform - pos: -35.5,-1.5 + pos: -40.5,-42.5 parent: 2 - uid: 9410 components: @@ -66320,6 +66327,11 @@ entities: - type: Transform pos: -13.5,6.5 parent: 2 + - uid: 7350 + components: + - type: Transform + pos: -37.5,-42.5 + parent: 2 - uid: 7436 components: - type: Transform @@ -66330,16 +66342,6 @@ entities: - type: Transform pos: -40.5,-47.5 parent: 2 - - uid: 7514 - components: - - type: Transform - pos: -37.5,-42.5 - parent: 2 - - uid: 7515 - components: - - type: Transform - pos: -40.5,-42.5 - parent: 2 - uid: 7581 components: - type: Transform From ea5734b006588a3612097d8b997a782799f14732 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:52:31 -0700 Subject: [PATCH 14/21] arcade lighting radius --- .../Entities/Structures/Machines/Computers/arcades.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml index 06f421d14f..237529e0a2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml @@ -11,8 +11,8 @@ # ES END - type: ExtensionCableReceiver - type: PointLight - radius: 1.8 - energy: 3.0 + radius: 1.2 + energy: 5 color: "#3db83b" - type: LitOnPowered - type: Sprite From 730bf1cca678b42f69989840aa8379ad84dbc9ce Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 09:57:29 -0700 Subject: [PATCH 15/21] fix pickpocket arms dealer announcing progress --- .../_ES/Stagehand/ESStagehandNotificationsSystem.cs | 3 ++- .../_ES/Objectives/Components/ESObjectiveComponent.cs | 6 ++++++ Content.Shared/_ES/Objectives/ESSharedObjectiveSystem.cs | 7 +++++++ Resources/Prototypes/_ES/Objectives/Crew/arms_dealer.yml | 1 + Resources/Prototypes/_ES/Objectives/Crew/pickpocket.yml | 3 ++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Content.Server/_ES/Stagehand/ESStagehandNotificationsSystem.cs b/Content.Server/_ES/Stagehand/ESStagehandNotificationsSystem.cs index b5f867fb23..c289f1d60e 100644 --- a/Content.Server/_ES/Stagehand/ESStagehandNotificationsSystem.cs +++ b/Content.Server/_ES/Stagehand/ESStagehandNotificationsSystem.cs @@ -65,7 +65,8 @@ private void OnKillReported(ref ESPlayerKilledEvent ev) private void OnObjectiveProgressChanged(ref ESObjectiveProgressChangedEvent ev) { - if (!_objectives.IsObjectiveInitialized(ev.Objective.Owner)) + if (!_objectives.IsObjectiveInitialized(ev.Objective.AsNullable()) + || !_objectives.ShouldAnnounceProgress(ev.Objective.AsNullable())) return; LocId? msgId; diff --git a/Content.Shared/_ES/Objectives/Components/ESObjectiveComponent.cs b/Content.Shared/_ES/Objectives/Components/ESObjectiveComponent.cs index 464a3ba7ea..7eb94ca0e3 100644 --- a/Content.Shared/_ES/Objectives/Components/ESObjectiveComponent.cs +++ b/Content.Shared/_ES/Objectives/Components/ESObjectiveComponent.cs @@ -37,6 +37,12 @@ public sealed partial class ESObjectiveComponent : Component [DataField, AutoNetworkedField] public bool ObjectiveInitialized; + + /// + /// If true, this objective changing progress will announce the new progress to stagehands. + /// + [DataField] + public bool AnnounceProgress = true; } /// diff --git a/Content.Shared/_ES/Objectives/ESSharedObjectiveSystem.cs b/Content.Shared/_ES/Objectives/ESSharedObjectiveSystem.cs index 9659b0676a..1b500b0c85 100644 --- a/Content.Shared/_ES/Objectives/ESSharedObjectiveSystem.cs +++ b/Content.Shared/_ES/Objectives/ESSharedObjectiveSystem.cs @@ -178,6 +178,13 @@ public bool IsObjectiveInitialized(Entity ent) return ent.Comp.ObjectiveInitialized; } + public bool ShouldAnnounceProgress(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + return ent.Comp.AnnounceProgress; + } + /// /// Re-generates the list of objectives an entity should have, adding all new objectives and removing ones that should no longer be there, /// e.g. as a result of troupe or mask changes. diff --git a/Resources/Prototypes/_ES/Objectives/Crew/arms_dealer.yml b/Resources/Prototypes/_ES/Objectives/Crew/arms_dealer.yml index 805febe25e..88233edee0 100644 --- a/Resources/Prototypes/_ES/Objectives/Crew/arms_dealer.yml +++ b/Resources/Prototypes/_ES/Objectives/Crew/arms_dealer.yml @@ -8,6 +8,7 @@ icon: sprite: _ES/Objects/Weapons/Guns/shotgun.rsi state: icon + announceProgress: false - type: ESHoldSummonableObjective - type: ESCounterObjective title: es-arms-dealer-objective-title diff --git a/Resources/Prototypes/_ES/Objectives/Crew/pickpocket.yml b/Resources/Prototypes/_ES/Objectives/Crew/pickpocket.yml index a8af85c083..a75cf20adf 100644 --- a/Resources/Prototypes/_ES/Objectives/Crew/pickpocket.yml +++ b/Resources/Prototypes/_ES/Objectives/Crew/pickpocket.yml @@ -2,12 +2,13 @@ parent: ESBaseMaskObjective id: ESObjectivePickpocketSteal name: Steal from people - description: Variety is the spice of life. Just make sure after you grab their shit, you hold onto it. + description: Variety is the spice of life. Just make sure that after you grab their shit, you hold onto it. components: - type: ESObjective icon: sprite: Clothing/Back/Backpacks/backpack.rsi state: icon + announceProgress: false - type: ESHoldPickpocketedObjective - type: ESCounterObjective title: es-pickpocket-steal-objective-title From 18e0a5d8194f77f689491dbc4765ef85b409616b Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:01:49 -0700 Subject: [PATCH 16/21] fix non-edible things not being sliceable --- .../Nutrition/EntitySystems/SliceableFoodSystem.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index 939f495c24..664fd36d6f 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -73,10 +73,13 @@ private bool TrySliceFood(Entity(usedItem, out var utensil) || (utensil.Types & UtensilType.Knife) == 0) return false; From 2cec273ade3892a8791612ac613c8c3deec4b208 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:03:32 -0700 Subject: [PATCH 17/21] set warp drive appearance in final stage --- Content.Server/_ES/WarpDrive/ESWarpDriveSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Server/_ES/WarpDrive/ESWarpDriveSystem.cs b/Content.Server/_ES/WarpDrive/ESWarpDriveSystem.cs index 9d1271bf61..435be83827 100644 --- a/Content.Server/_ES/WarpDrive/ESWarpDriveSystem.cs +++ b/Content.Server/_ES/WarpDrive/ESWarpDriveSystem.cs @@ -62,6 +62,7 @@ private void OnActivateWarpDrive(EntityUid uid, ESPortalGeneratorConsoleComponen warp.FinalPhaseAt = _timing.CurTime; warp.InFinalPhase = true; + UpdateAppearance(true); _chat.DispatchGlobalAnnouncement( Loc.GetString("es-warp-drive-announcement-final-phase-started"), From 4c348985b1f10ccaa2ee7b2ac7d2605249c7ec35 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:08:19 -0700 Subject: [PATCH 18/21] remove beer and food hud items --- .../Prototypes/Entities/Clothing/Eyes/hud.yml | 88 ------------------- .../_ES/Catalog/Tables/job_lockers.yml | 1 - 2 files changed, 89 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml index 59f25c6d10..445079a81a 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml @@ -77,78 +77,6 @@ tags: - PetWearable -- type: entity - parent: ClothingEyesBase - id: ClothingEyesHudBeer - name: beer goggles - description: A pair of sunHud outfitted with apparatus to scan reagents, as well as providing an innate understanding of liquid viscosity while in motion. - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/beergoggles.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/beergoggles.rsi - - type: ShowThirstIcons - - type: SolutionScanner - - type: Tag - tags: - - PetWearable - -- type: entity - parent: ClothingEyesBase - id: ClothingEyesHudFriedOnion - name: fried onion goggles - description: Filler - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/friedonion.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/friedonion.rsi - - type: ShowHungerIcons - - type: Edible - - type: ESFood - - type: FlavorProfile - flavors: - - onion - - greasey - -- type: entity - parent: ClothingEyesBase - id: ClothingEyesHudOnionBeer - name: thungerst goggles - description: Filler - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/onionbeer.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/onionbeer.rsi - - type: ShowHungerIcons - - type: ShowThirstIcons - -- type: entity - parent: [ClothingEyesBase, ShowMedicalIcons] - id: ClothingEyesHudMedOnion - name: medonion hud - description: Filler - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/medonion.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/medonion.rsi - - type: ShowHungerIcons - -- type: entity - parent: [ClothingEyesBase, ShowMedicalIcons] - id: ClothingEyesHudMedOnionBeer - name: medthungerst hud - description: Filler - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/medonionbeer.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/medonionbeer.rsi - - type: ShowHungerIcons - - type: ShowThirstIcons - - type: entity parent: [ClothingEyesBase, ShowSecurityIcons, ShowMedicalIcons, BaseSecurityCommandContraband] id: ClothingEyesHudMedSec @@ -273,22 +201,6 @@ id: ClothingEyesEyepatchHudSecurityFlipped name: security hud eyepatch -- type: entity - parent: [ClothingEyesHudBeer, ClothingHeadEyeBaseFlippable] - id: ClothingEyesEyepatchHudBeer - name: beer hud eyepatch - description: A pair of sunHud outfitted with apparatus to scan reagents, as well as providing an innate understanding of liquid viscosity while in motion. For true patriots. - components: - - type: Sprite - sprite: Clothing/Eyes/Hud/beerpatch.rsi - - type: Clothing - sprite: Clothing/Eyes/Hud/beerpatch.rsi - -- type: entity - parent: [ClothingEyesEyepatchHudBeer, ClothingHeadEyeBaseFlipped] - id: ClothingEyesEyepatchHudBeerFlipped - name: beer hud eyepatch - - type: entity parent: [ClothingEyesHudDiagnostic, ClothingHeadEyeBaseFlippable] id: ClothingEyesEyepatchHudDiag diff --git a/Resources/Prototypes/_ES/Catalog/Tables/job_lockers.yml b/Resources/Prototypes/_ES/Catalog/Tables/job_lockers.yml index f1cafb3016..f44166b247 100644 --- a/Resources/Prototypes/_ES/Catalog/Tables/job_lockers.yml +++ b/Resources/Prototypes/_ES/Catalog/Tables/job_lockers.yml @@ -72,7 +72,6 @@ - id: ClothingOuterVest - id: ESWeaponDoubleBarrelShotgunNonlethal - id: DrinkShaker - - id: ClothingEyesHudBeer - id: HandLabeler - id: DrinkBeerBottleFull amount: !type:BinomialNumberSelector From 2a84fcc29f8aeee0410c8a846fbaabd8fc0ca0e0 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:12:24 -0700 Subject: [PATCH 19/21] use different accents for various offmed effects --- Resources/Prototypes/_Offbrand/status_effects.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/_Offbrand/status_effects.yml b/Resources/Prototypes/_Offbrand/status_effects.yml index 66fd2922fc..8067338a66 100644 --- a/Resources/Prototypes/_Offbrand/status_effects.yml +++ b/Resources/Prototypes/_Offbrand/status_effects.yml @@ -370,7 +370,7 @@ components: - type: PopupOnAppliedStatusEffect message: severe-brain-damage-applied - - type: StutteringAccent + - type: SlurredAccent - type: MeleeModifiersStatusEffect damageModifier: coefficients: @@ -392,7 +392,7 @@ - type: PopupOnAppliedStatusEffect message: brain-oxygen-depleted visualType: LargeCaution - - type: StutteringAccent + - type: SlowAccent - type: DrunkStatusEffect - type: KnockdownStatusEffect - type: KnockdownOnAppliedStatusEffect From b74290c3c53fdb36f3bb250dd6991a38a0bbdfd6 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:13:57 -0700 Subject: [PATCH 20/21] clamp viewcone min angle --- Content.Shared/_ES/Viewcone/ESViewconeAngleSystem.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Shared/_ES/Viewcone/ESViewconeAngleSystem.cs b/Content.Shared/_ES/Viewcone/ESViewconeAngleSystem.cs index 3299897473..a30ff521ed 100644 --- a/Content.Shared/_ES/Viewcone/ESViewconeAngleSystem.cs +++ b/Content.Shared/_ES/Viewcone/ESViewconeAngleSystem.cs @@ -62,8 +62,8 @@ public float GetModifiedViewconeAngle(Entity ent) var ev = new ESViewconeGetAngleModifierEvent(); RaiseLocalEvent(ent, ref ev, true); - // clamps to 0, 360 since this is additive and could easily go over with stacking equipment items and shit - return Math.Clamp(ent.Comp.BaseConeAngle + ev.GetAngleModifier(), 0f, 360f); + // clamps to 15, 360 since this is additive and could easily go over/too low with stacking equipment items and shit + return Math.Clamp(ent.Comp.BaseConeAngle + ev.GetAngleModifier(), 15f, 360f); } /// From 09b98e83a55f5f6101037bdf59d685b2a25bd7b3 Mon Sep 17 00:00:00 2001 From: mirrorcult Date: Sun, 14 Jun 2026 10:24:18 -0700 Subject: [PATCH 21/21] a --- .../Machines/optable.rsi/operating_table.png | Bin 415 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Resources/Textures/_ES/Structures/Machines/optable.rsi/operating_table.png diff --git a/Resources/Textures/_ES/Structures/Machines/optable.rsi/operating_table.png b/Resources/Textures/_ES/Structures/Machines/optable.rsi/operating_table.png deleted file mode 100644 index 576b82d2467b5909f5a5ca67b8475712c52b7773..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)Zq}6o!8)4$y^ULSnRpdB<*H;j9tv71TMO&(>UB*Q?*p+*MU2U4kb1zBk4R zAyxy^uBZ+?i`xWshGDSgk|a@U%Yo$6#9{<%;y*z@)VC>F6h#mM^VSnWKnO7kyxJI` zbzp1z_d*DnY4?4vy093*t4{eWQrETfPYLzQH@!eE_8Qg4stl}cSQFebwz4dZamEn}r#*A@FDFEPdxvUznX>?r|1OSj_ne+Ag=sG}31PCA@aXOupfi1Lci`(sH ze3Fg9JkO;N;`4gFzGqn`^jW}5C9%? zGVMvzR8CK+@0*U*W#-KkjN=%G!@=SE0i_g_Qey$mxyt`*z5uW)r-lEbpiTe)002ov JPDHLkV1ms3yfXj*