From c0c7b55499ec975f9014b11f1dbe2a6bd30488f8 Mon Sep 17 00:00:00 2001 From: harryhulse12-alt Date: Mon, 3 Aug 2026 20:44:55 +0100 Subject: [PATCH 1/5] Well that was easy --- .../Supermatter/Systems/SupermatterSystem.cs | 38 +++++++++- .../Components/SupermatterComponent.cs | 8 +++ .../_DV/Recipes/Lathes/diodediscs.yml | 10 +++ .../Entities/Objects/Tools/diodediscs.yml | 70 +++++++++++++++++++ 4 files changed, 125 insertions(+), 1 deletion(-) diff --git a/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs b/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs index 409077594eb..4aa378e6ef7 100644 --- a/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs +++ b/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs @@ -185,6 +185,17 @@ public void Cycle(EntityUid uid, SupermatterComponent sm) HandleAnnouncements(uid, sm); } + if (sm.HazardGas == true) //Omu - increment the time since hazard gas + { + sm.TimesinceHazardGas += 0.1f; + if (sm.TimesinceHazardGas >= 1f) //Should last roughly like... 10 seconds without constant zaps + { + sm.HazardGas = false; + sm.TimesinceHazardGas = 0f; + _achat.SendAdminAlert($"Hazardardous gas production turned off at time {_gameTiming.CurTime.TotalMinutes}"); + } + } + if (sm.SMAngerValue < 0f) //Omu - Sm events start { sm.SMAngerValue = 0f; //no negative numbers plz @@ -364,7 +375,11 @@ private void ProcessAtmos(EntityUid uid, SupermatterComponent sm) // Assmos - /tg/ gases end // Release the waste - absorbedGas.AdjustMoles(Gas.Plasma, Math.Max(energy * heatModifier * sm.PlasmaReleaseModifier, 0f)); + if (!sm.HazardGas) //Omu hazardous gas emission + absorbedGas.AdjustMoles(Gas.Plasma, Math.Max(energy * heatModifier * sm.PlasmaReleaseModifier, 0f)); + else + absorbedGas.AdjustMoles(Gas.Tritium, Math.Max(energy * heatModifier * sm.PlasmaReleaseModifier * 2f, 0f)); //Omu emit out trit for fun + absorbedGas.AdjustMoles(Gas.Oxygen, Math.Max((energy + absorbedGas.Temperature * heatModifier - Atmospherics.T0C) * sm.OxygenReleaseEfficiencyModifier, 0f)); _atmosphere.Merge(mix, absorbedGas); @@ -727,6 +742,27 @@ private void OnCollideEvent(EntityUid uid, SupermatterComponent sm, ref StartCol QueueDel(target); return; } + if (_tag.HasTag(target, "EmitterBoltExcitatory")) + { + sm.Damage += 1f; + sm.SMAngerValue += 20f; + _adminLog.Add(LogType.AdminMessage, LogImpact.Extreme, + $"SUPERMATTER hit by angering bolt AT {Transform(uid).Coordinates}"); + QueueDel(target); + return; + } + if (_tag.HasTag(target, "EmitterBoltEmissive")) + { + sm.Damage += 1f; + sm.RadiationOutputFactor += 0.05f; + sm.HazardGas = true; + sm.TimesinceHazardGas = 0f; + sm.RadiationOutputFactorChanged = true; + _adminLog.Add(LogType.AdminMessage, LogImpact.Extreme, + $"SUPERMATTER hit by emissive bolt AT {Transform(uid).Coordinates}"); + QueueDel(target); + return; + } } //omu end if (TryComp(target, out var food)) diff --git a/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs b/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs index 0a9b5c70d56..606a1dd79e5 100644 --- a/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs +++ b/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs @@ -498,6 +498,14 @@ public sealed partial class SupermatterComponent : Component [ViewVariables(VVAccess.ReadWrite)] public bool GasEfficiencyFactorChanged = false; + [DataField("HazardGas")] + [ViewVariables(VVAccess.ReadWrite)] + public bool HazardGas = false; + + [DataField("GasEfficiencySetpoint")] + [ViewVariables(VVAccess.ReadWrite)] + public float TimesinceHazardGas = 0f; + } [Prototype] public sealed partial class SupermatterEventPrototype : IPrototype diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml b/Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml index 0eb451be24e..e95619d15e0 100644 --- a/Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml +++ b/Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml @@ -7,3 +7,13 @@ parent: BaseUpgradeKit id: DiodeDiscElectroBehavioural result: DiodeDiscElectroBehavioural + +- type: latheRecipe + parent: BaseUpgradeKit + id: DiodeDiscExcitatory + result: DiodeDiscExcitatory + +- type: latheRecipe + parent: BaseUpgradeKit + id: DiodeDiscEmissive + result: DiodeDiscEmissive diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml b/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml index d0041eb97ae..a9feb2a269d 100644 --- a/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml +++ b/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml @@ -32,6 +32,31 @@ - type: UpgradedMachine upgrade: Emitter-Electro-Behavioural +- type: entity + parent: BaseDiodeDisc + id: DiodeDiscExcitatory + name: Excitatory Diode disc + description: A diode disc for use within an emitter, this one will trigger a supermatter to become more active. + components: + - type: DiodeDisc + newBolt: EmitterBoltExcitatory + componentsToAdd: + - type: UpgradedMachine + upgrade: Emitter-Electro-Excitatory + +- type: entity + parent: BaseDiodeDisc + id: DiodeDiscEmissive + name: Emissive Diode disc + description: A diode disc for use within an emitter, this one will trigger a supermatter to emit more radiation + components: + - type: DiodeDisc + newBolt: EmitterBoltEmissive + componentsToAdd: + - type: UpgradedMachine + upgrade: Emitter-Electro-Excitatory + + - type: entity name: emitter bolt id: EmitterBoltElectroDisruptive @@ -64,9 +89,54 @@ Heat: -5 Blunt: -2 +- type: entity + name: emitter bolt + id: EmitterBoltExcitatory + parent: EmitterBolt + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - EmitterBoltExcitatory + - EmitterBolt + - type: Projectile + damage: + types: + Heat: 10 + - type: TriggerOnCollide + fixtureID: projectile + maxTriggers: 1 + - type: ExplodeOnTrigger + - type: Explosive + explosionType: Default + totalIntensity: 10.0 + intensitySlope: 5 + maxIntensity: 4 + +- type: entity + name: emitter bolt + id: EmitterBoltEmissive + parent: EmitterBolt + categories: [ HideSpawnMenu ] + components: + - type: Tag + tags: + - EmitterBoltEmissive + - EmitterBolt + - type: Projectile + damage: + types: + Radiation: 10 + - type: Tag id: EmitterBoltElectroDisruptive - type: Tag id: EmitterBoltElectroBehavioural + +- type: Tag + id: EmitterBoltElectroExcitatory + +- type: Tag + id: EmitterBoltEmissive From 612e417d8ce69c0cb4d5484ca8a1a047eed33872 Mon Sep 17 00:00:00 2001 From: harryhulse12-alt Date: Mon, 3 Aug 2026 20:53:01 +0100 Subject: [PATCH 2/5] oops --- .../Supermatter/Components/SupermatterComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs b/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs index 606a1dd79e5..42bd4a231f9 100644 --- a/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs +++ b/Content.Goobstation.Shared/Supermatter/Components/SupermatterComponent.cs @@ -502,7 +502,7 @@ public sealed partial class SupermatterComponent : Component [ViewVariables(VVAccess.ReadWrite)] public bool HazardGas = false; - [DataField("GasEfficiencySetpoint")] + [DataField("TimeSinceHazardousGasEnabled")] [ViewVariables(VVAccess.ReadWrite)] public float TimesinceHazardGas = 0f; From 236fcd807600d043c4d15e5668b1b8f7a801d21b Mon Sep 17 00:00:00 2001 From: harryhulse12-alt Date: Mon, 3 Aug 2026 21:09:31 +0100 Subject: [PATCH 3/5] FTL --- Resources/Locale/en-US/_Omu/Emitters/Emitters.ftl | 3 +++ .../Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Resources/Locale/en-US/_Omu/Emitters/Emitters.ftl b/Resources/Locale/en-US/_Omu/Emitters/Emitters.ftl index 3075dc02aef..250eea284da 100644 --- a/Resources/Locale/en-US/_Omu/Emitters/Emitters.ftl +++ b/Resources/Locale/en-US/_Omu/Emitters/Emitters.ftl @@ -1,3 +1,6 @@ Emitter-Electro-Disrutpive = [color=cyan]Electro-Disruptive[/color]: [color=green]increases integrity[/color] in exchange for [color=red]reducing internal energy[/color]. Emitter-Electro-Behavioural = [color=cyan]Electro-Behavioural[/color]: [color=green]increases internal energy[/color] in exchange for [color=red]reducing integrity drasticly![/color]. +Emitter-Excitatory = [color=cyan]Excitatory[/color]: [color=green]increases supermatter activity[/color] in exchange for [color=red]reducing integrity and causing explosions[/color]. +Emitter-Emissive = [color=cyan]Emissive[/color]: [color=green]increases radiation emission[/color] in exchange for [color=red]causing hazardous gas emission[/color]. + research-technology-advanced-emitters = Diode-Disc Emitter Technology diff --git a/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml b/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml index a9feb2a269d..a9568499ad0 100644 --- a/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml +++ b/Resources/Prototypes/_Omu/Entities/Objects/Tools/diodediscs.yml @@ -42,7 +42,7 @@ newBolt: EmitterBoltExcitatory componentsToAdd: - type: UpgradedMachine - upgrade: Emitter-Electro-Excitatory + upgrade: Emitter-Excitatory - type: entity parent: BaseDiodeDisc @@ -54,7 +54,7 @@ newBolt: EmitterBoltEmissive componentsToAdd: - type: UpgradedMachine - upgrade: Emitter-Electro-Excitatory + upgrade: Emitter-Emissive - type: entity @@ -136,7 +136,7 @@ id: EmitterBoltElectroBehavioural - type: Tag - id: EmitterBoltElectroExcitatory + id: EmitterBoltExcitatory - type: Tag id: EmitterBoltEmissive From 84a88e549cccd71345bcdb5ee4ec92d8257674bc Mon Sep 17 00:00:00 2001 From: harryhulse12-alt Date: Wed, 5 Aug 2026 00:24:23 +0100 Subject: [PATCH 4/5] Add check for var locked --- .../Supermatter/Systems/SupermatterSystem.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs b/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs index 4aa378e6ef7..92862cc5dfa 100644 --- a/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs +++ b/Content.Goobstation.Server/Supermatter/Systems/SupermatterSystem.cs @@ -754,7 +754,8 @@ private void OnCollideEvent(EntityUid uid, SupermatterComponent sm, ref StartCol if (_tag.HasTag(target, "EmitterBoltEmissive")) { sm.Damage += 1f; - sm.RadiationOutputFactor += 0.05f; + if (!sm.Varlocked) + sm.RadiationOutputFactor += 0.05f; sm.HazardGas = true; sm.TimesinceHazardGas = 0f; sm.RadiationOutputFactorChanged = true; From f67affdb3db584f3532598e2e3924b7254b5ef95 Mon Sep 17 00:00:00 2001 From: harryhulse12-alt Date: Wed, 5 Aug 2026 13:22:59 +0100 Subject: [PATCH 5/5] Move namespace --- Resources/Prototypes/{_DV => _Omu}/Recipes/Lathes/diodediscs.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Resources/Prototypes/{_DV => _Omu}/Recipes/Lathes/diodediscs.yml (100%) diff --git a/Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml b/Resources/Prototypes/_Omu/Recipes/Lathes/diodediscs.yml similarity index 100% rename from Resources/Prototypes/_DV/Recipes/Lathes/diodediscs.yml rename to Resources/Prototypes/_Omu/Recipes/Lathes/diodediscs.yml