Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
9e77b60
1. Convermol
UmbiMax Jun 19, 2026
7e71147
1.1 MedKits
UmbiMax Jun 20, 2026
9d9e68b
2. Healing items
UmbiMax Jun 20, 2026
0d577e1
1 Fix
UmbiMax Jun 20, 2026
d25f538
2.1
UmbiMax Jun 21, 2026
ab019b6
3.1 New sorting for gauze
UmbiMax Jun 21, 2026
f63c5c3
Revert "3.1 New sorting for gauze"
UmbiMax Jun 21, 2026
408f7e8
2.2 Major inhand resprite
UmbiMax Jun 21, 2026
6799530
2 Fix
UmbiMax Jun 21, 2026
dad520b
Reapply "3.1 New sorting for gauze"
UmbiMax Jun 21, 2026
87821ae
2.2
UmbiMax Jun 22, 2026
b784e37
3.2
UmbiMax Jun 22, 2026
de3aeb2
2.4
UmbiMax Jun 22, 2026
ebb3a1f
2.5
UmbiMax Jun 22, 2026
25db9a7
4.1 Sounds
UmbiMax Jun 22, 2026
5fb9955
4.2
UmbiMax Jun 22, 2026
a707a08
3 Fix
UmbiMax Jun 22, 2026
79b7ba1
4.3
UmbiMax Jun 22, 2026
3f3dbff
4.4
UmbiMax Jun 22, 2026
8fae5df
4.5 Fix
UmbiMax Jun 22, 2026
54cbf47
4.6 Fixes/Trixes
UmbiMax Jun 22, 2026
d35fa90
4 Fix
UmbiMax Jun 22, 2026
eb33268
Patch to TG13
UmbiMax Jun 22, 2026
83bce1c
5 Fix: Convermol
UmbiMax Jun 22, 2026
257ccc1
OLD Port
UmbiMax Jun 23, 2026
069804d
6. Cryoxadone
UmbiMax Jun 23, 2026
47974f2
6 Fix
UmbiMax Jun 23, 2026
6a30301
7. Salbutamol
UmbiMax Jun 23, 2026
2af2583
7 Fix
UmbiMax Jun 23, 2026
53618b9
8 Reagents tweak
UmbiMax Jun 23, 2026
46c5492
5.1 Convermol
UmbiMax Jun 23, 2026
b8b6226
5.2
UmbiMax Jun 23, 2026
b9afa7f
8.1 Multiver tweak
UmbiMax Jun 23, 2026
5f52caf
9 UPGRADE Systems
UmbiMax Jun 24, 2026
918ba0a
8.2 Dylometh rework
UmbiMax Jun 24, 2026
c5f5be1
FIx
UmbiMax Jun 24, 2026
f5f3a3c
Fix: Systems and Aloe
UmbiMax Jun 24, 2026
dd98417
8.3 Histamine buff
UmbiMax Jun 24, 2026
b4af49c
8.4 Chemicals Tweak
UmbiMax Jun 24, 2026
aa9eca9
Fix: Chemicals and FTL
UmbiMax Jun 24, 2026
732c995
8.5 Saline tweak
UmbiMax Jun 24, 2026
9b935a7
Fix: Tests
UmbiMax Jun 24, 2026
d82a329
8.6 Freeze Water
UmbiMax Jun 24, 2026
37d9c5e
8.7 Basic chemicals
UmbiMax Jun 24, 2026
8ab682c
8.8 Now you can get ice, if you freeze water.
UmbiMax Jun 24, 2026
16cd00c
8.9 Chemical rework
UmbiMax Jun 24, 2026
8624982
9 CRITICAL CHEMISTRY FIX
UmbiMax Jun 24, 2026
4990051
10 NEW BEAKERS AND JUG
UmbiMax Jun 25, 2026
2c6e13f
11 TG BALANCE FOR BAROTRAUMA AND ASPHYXIATION
UmbiMax Jun 25, 2026
c11fc8d
10.1 Fix
UmbiMax Jun 25, 2026
1ce1ed4
10.2
UmbiMax Jun 25, 2026
c73061a
10.3
UmbiMax Jun 25, 2026
13825d5
10.4
UmbiMax Jun 25, 2026
f45954b
12 NEW COMPONENT FOR GENERIC VISUALISER INHANDS
UmbiMax Jun 26, 2026
a1a808f
10.5
UmbiMax Jun 26, 2026
20468dc
10.6 Raw
UmbiMax Jun 26, 2026
16fffd7
Revert "12 NEW COMPONENT FOR GENERIC VISUALISER INHANDS"
UmbiMax Jun 26, 2026
3cc3e98
11.1
UmbiMax Jun 26, 2026
1c4f8ab
13 TG GRINDER SPRITE
UmbiMax Jun 26, 2026
b1e8e66
11.2 Final barotrauma tweak
UmbiMax Jun 26, 2026
f0c6c32
14 LOCALIZATION
UmbiMax Jun 26, 2026
1fcfde3
14.1 Salbu & conver
UmbiMax Jun 26, 2026
e7f882b
14.2 TileMol fix
UmbiMax Jun 26, 2026
eda55c7
10.7 Jug. Maybe RAW
UmbiMax Jun 26, 2026
8ada341
11.2
UmbiMax Jun 26, 2026
b9698e5
Revert "11.2"
UmbiMax Jun 26, 2026
f49d00f
11.3
UmbiMax Jun 26, 2026
24d2474
14.3
UmbiMax Jun 26, 2026
00af319
13.1 fix
UmbiMax Jun 27, 2026
deb8f3f
15 Compact bluespace bag. RAW
UmbiMax Jun 27, 2026
944fc83
Revert "15 Compact bluespace bag. RAW"
UmbiMax Jun 27, 2026
c79d2a4
16 Chemmaster limit
UmbiMax Jun 27, 2026
7759f96
16.1
UmbiMax Jun 27, 2026
29d867a
16.2
UmbiMax Jun 27, 2026
4d3c72b
16.3
UmbiMax Jun 27, 2026
835ab76
16.4 New sprites for fill
UmbiMax Jun 27, 2026
5e2db3d
16.5 Fix
UmbiMax Jun 27, 2026
e13ba26
16.6
UmbiMax Jun 27, 2026
ae5497d
16.7 sprites
UmbiMax Jun 27, 2026
f097f78
16.7 Systems. Raw
UmbiMax Jun 27, 2026
b72676f
16.8 Raw
UmbiMax Jun 27, 2026
05624a3
16.9 Full Fix
UmbiMax Jun 27, 2026
397c1e2
16.9.1
UmbiMax Jun 27, 2026
d0de218
3.2 Fix
UmbiMax Jun 27, 2026
8c60163
17 X-Large & Metamaterial beakers in RND
UmbiMax Jun 27, 2026
a5ae40a
16.9.2 READY!!!
UmbiMax Jun 28, 2026
9676199
16.9.3
UmbiMax Jun 28, 2026
6211196
16.9.4
UmbiMax Jun 28, 2026
c66f0a4
16.9.5
UmbiMax Jun 28, 2026
2a5cf13
16.9.6
UmbiMax Jun 28, 2026
2020717
16.9.7
UmbiMax Jun 28, 2026
969d062
16.9.8
UmbiMax Jun 28, 2026
03eb1e5
16.9.9
UmbiMax Jun 28, 2026
5d4a0a9
16.9.9.1
UmbiMax Jun 28, 2026
1f5f3ad
16.9.9.2
UmbiMax Jun 28, 2026
82fcf07
16.9.9.3
UmbiMax Jun 28, 2026
0949813
18 NEW SOUNDS FOR BEAKERS
UmbiMax Jun 28, 2026
00bb86e
4.7
UmbiMax Jun 28, 2026
9fee338
19 OPTIMIZATIONS FOR SYSTEMS
UmbiMax Jun 28, 2026
f0fbd95
19.1 Fix inspect wound
UmbiMax Jun 28, 2026
9b7bcef
19.2
UmbiMax Jun 28, 2026
e406ae2
20 FINAL FIXES
UmbiMax Jun 28, 2026
fb21ab2
Revert "19 OPTIMIZATIONS FOR SYSTEMS"
UmbiMax Jun 29, 2026
7dfb946
19.3 fix chemmaster
UmbiMax Jun 29, 2026
bd07662
19.4
UmbiMax Jun 29, 2026
a42daad
19.5
UmbiMax Jun 29, 2026
ee14895
20 DISPENCER TWEAK
UmbiMax Jun 29, 2026
1a4e790
19.6
UmbiMax Jun 29, 2026
1ac9ac7
21 MEDIPENS ADDITION
UmbiMax Jun 30, 2026
d386a5f
22 NEW GAS TANKS WITH HEALIUM & NITRIUM
UmbiMax Jun 30, 2026
f525175
23 NEW MEDKITS
UmbiMax Jun 30, 2026
5d0a424
23.1 Tweak
UmbiMax Jun 30, 2026
bfde2ad
24 Patches tweak
UmbiMax Jun 30, 2026
b1f6d63
25 Basic tweaks
UmbiMax Jun 30, 2026
87fa7ce
26 NEW POUR SOUNDS. Raw
UmbiMax Jun 30, 2026
f6dc79e
115 COMMITS IN ONE
UmbiMax Jul 1, 2026
43d197c
Revert "115 COMMITS IN ONE"
UmbiMax Jul 1, 2026
a76313c
ORION > ARCANE pt.1
UmbiMax Jul 1, 2026
dcfdf1a
Revert "ORION > ARCANE pt.1"
UmbiMax Jul 1, 2026
d1449ab
Merge branch 'NewMed' of https://github.com/OSAS-corp/Local-OldOrio-1…
UmbiMax Jul 1, 2026
7346895
Revert "115 COMMITS IN ONE"
UmbiMax Jul 1, 2026
9147e11
Reapply "ORION > ARCANE pt.1"
UmbiMax Jul 1, 2026
74b9d02
27 Discard liquids for beaker too
UmbiMax Jul 1, 2026
a933300
28 Bunch For Optimization: Chemmaster
UmbiMax Jul 1, 2026
276bb9f
Merge remote-tracking branch 'upstream/master' into NewMed
UmbiMax Jul 2, 2026
199fc37
28.1 Fixes
UmbiMax Jul 2, 2026
cf12b94
28.2 Localization
UmbiMax Jul 2, 2026
ec91b74
28.3 Convermol opt
UmbiMax Jul 2, 2026
0cbf387
28.4 Pressure damage optimization
UmbiMax Jul 2, 2026
707f818
28.5 Groups reagents optimization
UmbiMax Jul 2, 2026
176e390
28.6 Gauze bleeding priority optimization
UmbiMax Jul 2, 2026
9dc6cfd
28.7 Fix group reagents
UmbiMax Jul 2, 2026
3750807
28.7.1 Second tweak
UmbiMax Jul 2, 2026
8441cd5
28.7.2
UmbiMax Jul 2, 2026
73b1e76
28.7.3
UmbiMax Jul 2, 2026
f7ab772
28.2.1 Second localization tweak
UmbiMax Jul 2, 2026
f0bb7fb
28.8 Sorting
UmbiMax Jul 2, 2026
8515b4f
28.9 Sound tweak
UmbiMax Jul 2, 2026
16bb930
30 Aranesp > Dopamine. Aranesp now how in ss13.
UmbiMax Jul 2, 2026
3ae9e58
30.1 Recipes
UmbiMax Jul 2, 2026
8dc527a
30.2 Recipes tweak
UmbiMax Jul 2, 2026
b46e114
29 Fills
UmbiMax Jul 2, 2026
ff75c4c
29.1 In uplink
UmbiMax Jul 2, 2026
8256d75
30.3
UmbiMax Jul 2, 2026
a1b4354
28.9.1 SYSTEMS: SOUNDS
UmbiMax Jul 2, 2026
dd84194
29.2 FIX
UmbiMax Jul 2, 2026
e38afbc
28.2.1 SECOND localization FIX
UmbiMax Jul 2, 2026
759766a
31 Synthflesh, StypticPowder, SilverSulfadiazine REBALANCE
UmbiMax Jul 2, 2026
073819c
31.1
UmbiMax Jul 3, 2026
61c9a3a
32 CRYOPOD TWEAKS
UmbiMax Jul 3, 2026
12d59cc
32.1 Cryo rebalance
UmbiMax Jul 3, 2026
4b96688
32.2 Optimization
UmbiMax Jul 3, 2026
601991f
33 Dispencer dupe fix
UmbiMax Jul 3, 2026
4138619
33.1 Fix: Upgrade this dispencer
UmbiMax Jul 4, 2026
ffee1b7
33.1.1 Optimization
UmbiMax Jul 4, 2026
d556af7
28.1.1 Chemmaster: Fix
UmbiMax Jul 5, 2026
62d972e
ORION > ARCANE pt.2
UmbiMax Jul 5, 2026
ece3dad
Merge branch 'master' into NewMed
UmbiMax Jul 5, 2026
36cbb83
28.2.2 Third yaml localization fix
UmbiMax Jul 5, 2026
be0d249
34 Healing Items BugFix
UmbiMax Jul 5, 2026
bdc8c72
35 Localization
UmbiMax Jul 6, 2026
a4b5fe9
35.1
UmbiMax Jul 7, 2026
a0fb84c
34.1 Fix sound
UmbiMax Jul 7, 2026
ba37058
36 Buff pills how in SS13 NewTG
UmbiMax Jul 7, 2026
4f95fd8
Merge branch 'master' into NewMed
UmbiMax Jul 7, 2026
1a46ee6
28.1.2 Chemmaster MaxBuffer optimization
UmbiMax Jul 7, 2026
0c5434d
Merge branch 'NewMed' of https://github.com/OSAS-corp/Local-OldOrio-1…
UmbiMax Jul 7, 2026
49daed9
FINAL FIXES
UmbiMax Jul 7, 2026
11e2d05
FINAL FIXES №2
UmbiMax Jul 7, 2026
f28a27a
CRITICAL STATE FIX
UmbiMax Jul 7, 2026
cda9f9f
37 Cascade chemicals
UmbiMax Jul 8, 2026
fdf1692
31.2 Silver sulfadizine/Styptic Powder temperature
UmbiMax Jul 8, 2026
51d9738
31.3 FIXES
UmbiMax Jul 8, 2026
8973239
3 FINAL FIXES
UmbiMax Jul 8, 2026
65f7811
FINAL FIX 3.1
UmbiMax Jul 8, 2026
7b8a979
31.4 Final Sulfadiazine/Powder rebalance
UmbiMax Jul 8, 2026
c12df5d
4 FINAL FIXES. ALOE
UmbiMax Jul 9, 2026
445a05d
4.1.1 FINAL FIXES
UmbiMax Jul 9, 2026
04117e7
FIX TESTS
UmbiMax Jul 10, 2026
e1d8dc4
FIX TESTS 2
UmbiMax Jul 11, 2026
61ee257
CRITICAL STATE FIX 2
UmbiMax Jul 11, 2026
5037f7e
Revert "37 Cascade chemicals"
UmbiMax Jul 12, 2026
4b59605
REVERT WATER FREEZING
UmbiMax Jul 12, 2026
5e985a4
Revert "FIX TESTS 2"
UmbiMax Jul 12, 2026
cda48bc
Revert "FIX TESTS"
UmbiMax Jul 12, 2026
60f52ec
FINAL UPDATE MARKINGS
UmbiMax Jul 12, 2026
cbaf0ab
JUG SPRITE UPGRADE
UmbiMax Jul 12, 2026
ddce777
Merge branch 'master' into NewMed
UmbiMax Jul 12, 2026
c8be1a4
Merge branch 'master' into NewMed
UmbiMax Jul 13, 2026
cf6e910
2 FINAL UPDATE MARKINGS
UmbiMax Jul 13, 2026
c035c64
GAUZE TWEAK
UmbiMax Jul 13, 2026
51dc0e0
dispencer rebalance
UmbiMax Jul 13, 2026
ff82e5f
2 GAUZE TWEAK
UmbiMax Jul 13, 2026
b738a51
SYNTHFLESH patch
UmbiMax Jul 13, 2026
5973c21
ADVANCED MEDKIT TWEAK
UmbiMax Jul 13, 2026
e10f58e
bso locker update
UmbiMax Jul 13, 2026
14ccd79
MEDKITS IN CARGO
UmbiMax Jul 13, 2026
786f340
bso locker FIX
UmbiMax Jul 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 16 additions & 2 deletions Content.Client/Chemistry/UI/ChemMasterWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,15 @@ private List<ReagentButton> CreateReagentTransferButtons(ReagentId reagent, bool
return buttons;
}

// Arcane-Start: You can see max volume
Comment thread
UmbiMax marked this conversation as resolved.
private static string FormatVolume(FixedPoint2 current, FixedPoint2? max)
{
return max is { } m && m > FixedPoint2.Zero
? $"{current}/{m}u"
: $"{current}u";
}
// Arcane-End

/// <summary>
/// Update the UI state when new state data is received from the server.
/// </summary>
Expand All @@ -180,7 +189,7 @@ public void UpdateState(BoundUserInterfaceState state)
// Ensure the Panel Info is updated, including UI elements for Buffer Volume, Output Container and so on
UpdatePanelInfo(castState);

BufferCurrentVolume.Text = $" {castState.BufferCurrentVolume?.Int() ?? 0}u";
BufferCurrentVolume.Text = FormatVolume(castState.BufferCurrentVolume ?? 0, castState.BufferMaxVolume); // Arcane-Edit

InputEjectButton.Disabled = castState.InputContainerInfo is null;
OutputEjectButton.Disabled = castState.OutputContainerInfo is null;
Expand Down Expand Up @@ -279,9 +288,14 @@ private void UpdatePanelInfo(ChemMasterBoundUserInterfaceState state)

var bufferLabel = new Label { Text = $"{Loc.GetString("chem-master-window-buffer-label")} " };
bufferHBox.AddChild(bufferLabel);
// Arcane-Start
var bufVolText = state.BufferMaxVolume is { } maxVol && maxVol > FixedPoint2.Zero
? $"{state.BufferCurrentVolume}/{maxVol}u"
: $"{state.BufferCurrentVolume}u";
// Arcane-End
var bufferVol = new Label
{
Text = $"{state.BufferCurrentVolume}u",
Text = bufVolText, // Arcane-Edit
StyleClasses = { StyleNano.StyleClassLabelSecondaryColor }
};
bufferHBox.AddChild(bufferVol);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
using Content.Shared._Orion.Construction.Events;
using Content.Shared.Emag.Systems;
using Content.Shared.Power.Components;
using Content.Shared.Power.EntitySystems;
Comment thread
coderabbitai[bot] marked this conversation as resolved.

namespace Content.Goobstation.Server.Chemistry.EntitySystems
{
Expand All @@ -72,6 +73,7 @@ public sealed class EnergyReagentDispenserSystem : EntitySystem
[Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly BatterySystem _battery = default!;
[Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!; // Arcane

public override void Initialize()
{
Expand Down Expand Up @@ -225,7 +227,7 @@ private void OnClearContainerSolutionMessage(Entity<EnergyReagentDispenserCompon
|| !_solutionContainerSystem.TryGetFitsInDispenser(outputContainer, out var solution, out var soln))
return;

var refundedPower = soln.Sum(reagent => GetPowerCostForReagent(reagent.Reagent.Prototype, (int) reagent.Quantity, reagentDispenser.Comp)) // Orion-Edit
var refundedPower = soln.Sum(reagent => GetRefundCostForReagent(reagent.Reagent.Prototype, (int) reagent.Quantity, reagentDispenser.Comp)) // Orion-Edit // Arcane-Edit
* reagentDispenser.Comp.RefundEnergyEfficiency; // Orion
Comment thread
coderabbitai[bot] marked this conversation as resolved.
if (refundedPower > 0)
_battery.AddCharge(reagentDispenser, refundedPower);
Expand All @@ -239,10 +241,22 @@ private void ClickSound(Entity<EnergyReagentDispenserComponent> reagentDispenser
_audioSystem.PlayPvs(reagentDispenser.Comp.ClickSound, reagentDispenser, AudioParams.Default.WithVolume(-2f));

private static float GetPowerCostForReagent(string reagentId, int amount, EnergyReagentDispenserComponent comp)
// Arcane-Start
{
return GetReagentCost(reagentId, amount, comp, unknownFallback: float.MaxValue);
}

private static float GetRefundCostForReagent(string reagentId, int amount, EnergyReagentDispenserComponent comp)
{
return GetReagentCost(reagentId, amount, comp, unknownFallback: 0f);
}

private static float GetReagentCost(string reagentId, int amount, EnergyReagentDispenserComponent comp, float unknownFallback)
Comment thread
UmbiMax marked this conversation as resolved.
// Arcane-End
{
return comp.Reagents.TryGetValue(reagentId, out var cost)
? cost * amount * comp.FinalEnergyCostMultiplier // Orion-Edit
: float.MaxValue;
: unknownFallback; // Arcane-Edit
}

private void OnMapInit(Entity<EnergyReagentDispenserComponent> entity, ref MapInitEvent args)
Expand All @@ -267,7 +281,9 @@ private void OnPartsRefresh(EntityUid uid, EnergyReagentDispenserComponent compo
var matterBinTier = args.GetPartRating(component.MatterBinPart);

component.FinalRechargeRate = component.BaseRechargeRate * RefreshPartsEvent.GetPositiveTierMultiplier(capacitorTier);
component.FinalEnergyCostMultiplier = RefreshPartsEvent.GetLinearMultiplier(matterBinTier, 0.1f, 0.5f, 1.2f);
component.FinalEnergyCostMultiplier = Math.Clamp(1.1f - matterBinTier * 0.1f, 0.5f, 1.2f); // Arcane-Edit

_powerReceiver.SetBatteryRechargeRate(uid, component.FinalRechargeRate); // Arcane

UpdateUiState((uid, component));
}
Expand Down
6 changes: 5 additions & 1 deletion Content.Goobstation.Shared/EntityEffects/OxygenateNearby.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ public OxygenateNearby(float range, float factor)
public override bool ShouldLog => true;

protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys)
=> Loc.GetString("reagent-effect-guidebook-ignite", ("chance", Probability)); //In due time...
// Arcane-Edit-Start
=> Loc.GetString("reagent-effect-guidebook-oxygenate",
("chance", Probability),
("factor", Factor));
// Arcane-Edit-End

public override LogImpact LogImpact => LogImpact.Medium;

Expand Down
11 changes: 10 additions & 1 deletion Content.Server/Atmos/Components/BarotraumaComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public sealed partial class BarotraumaComponent : Component

[DataField("maxDamage")]
[ViewVariables(VVAccess.ReadWrite)]
public FixedPoint2 MaxDamage = 200;
public FixedPoint2 MaxDamage = 350; // Arcane-Edit: 200 > 350

/// <summary>
/// Used to keep track of when damage starts/stops. Useful for logs.
Expand Down Expand Up @@ -96,6 +96,15 @@ public sealed partial class BarotraumaComponent : Component
[ViewVariables(VVAccess.ReadWrite)]
public bool HasImmunity = false;

// Arcane-Start
/// <summary>
/// Tracks how long the entity has continuously been in hazardous low pressure.
/// Used to ramp low-pressure damage over time.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
public float SecondsInLowPressure = 0f;
// Arcane-End

[DataField]
public ProtoId<AlertPrototype> HighPressureAlert = "HighPressure";

Expand Down
44 changes: 41 additions & 3 deletions Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
using Content.Server.Administration.Logs;
using Content.Server.Atmos.Components;
using Content.Shared._Goobstation.Wizard.Spellblade;
using Content.Shared._Shitmed.Damage;
using Content.Shared._Shitmed.Targeting;
using Content.Shared.Alert;
using Content.Shared.Atmos;
Expand All @@ -66,6 +67,10 @@ public sealed class BarotraumaSystem : EntitySystem
[Dependency] private readonly InventorySystem _inventorySystem = default!;
[Dependency] private readonly SpellbladeSystem _spellblade = default!; // Goobstation
private const float UpdateTimer = 1f;
// Arcane-Start
private const float LowPressureRampTime = 40f;
private const float LowPressureMaxMultiplier = 2.5f;
// Arcane-End
private float _timer;

public override void Initialize()
Expand Down Expand Up @@ -320,11 +325,28 @@ public override void Update(float frameTime)
RaiseLocalEvent(uid, ref resistEv);

if (resistEv.Cancelled)
return;
// Arcane-Edit-Start
{
barotrauma.SecondsInLowPressure = 0f;

if (barotrauma.TakingDamage)
{
barotrauma.TakingDamage = false;
_adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} stopped taking pressure damage");
}

_alertsSystem.ClearAlertCategory(uid, barotrauma.PressureAlertCategory);
continue;
}
// Arcane-Edit-End
// goob end

var lowPressureScale = MathF.Min(1f + (barotrauma.SecondsInLowPressure / LowPressureRampTime), LowPressureMaxMultiplier); // Arcane

// Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear.
_damageableSystem.TryChangeDamage(uid, barotrauma.Damage * Atmospherics.LowPressureDamage, true, false, targetPart: TargetBodyPart.All); // Shitmed Change
_damageableSystem.TryChangeDamage(uid, barotrauma.Damage * Atmospherics.LowPressureDamage * lowPressureScale, true, false, targetPart: TargetBodyPart.All); // Shitmed Change // Arcane-Edit

barotrauma.SecondsInLowPressure += UpdateTimer; // Arcane

if (!barotrauma.TakingDamage)
{
Expand All @@ -342,10 +364,24 @@ public override void Update(float frameTime)
RaiseLocalEvent(uid, ref resistEv);

if (resistEv.Cancelled)
return;
// Arcane-Edit-Start
{
barotrauma.SecondsInLowPressure = 0f;

if (barotrauma.TakingDamage)
{
barotrauma.TakingDamage = false;
_adminLogger.Add(LogType.Barotrauma, $"{ToPrettyString(uid):entity} stopped taking pressure damage");
}

_alertsSystem.ClearAlertCategory(uid, barotrauma.PressureAlertCategory);
continue;
}
// Arcane-Edit-End
// goob end

var damageScale = MathF.Min(((pressure / Atmospherics.HazardHighPressure) - 1) * Atmospherics.PressureDamageCoefficient, Atmospherics.MaxHighPressureDamage);
barotrauma.SecondsInLowPressure = 0f; // Arcane

// Deal damage and ignore resistances. Resistance to pressure damage should be done via pressure protection gear.
_damageableSystem.TryChangeDamage(uid, barotrauma.Damage * damageScale, true, false, targetPart: TargetBodyPart.All); // Shitmed Change
Expand All @@ -365,6 +401,8 @@ public override void Update(float frameTime)
RaiseLocalEvent(uid, ref pressureEv);
// goob end

barotrauma.SecondsInLowPressure = 0f; // Arcane

// Within safe pressure limits
if (barotrauma.TakingDamage)
{
Expand Down
12 changes: 11 additions & 1 deletion Content.Server/Body/Systems/RespiratorSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ public sealed class RespiratorSystem : EntitySystem

private static readonly ProtoId<MetabolismGroupPrototype> GasId = new("Gas");

private const float VacuumSuffocationMultiplier = 2f; // Arcane

public override void Initialize()
{
base.Initialize();
Expand Down Expand Up @@ -531,7 +533,15 @@ private void TakeSuffocationDamage(Entity<RespiratorComponent> ent)
}

// Shitmed Change End
_damageableSys.TryChangeDamage(ent, HasComp<DebrainedComponent>(ent) ? ent.Comp.Damage * 4.5f : ent.Comp.Damage, targetPart: TargetBodyPart.All, interruptsDoAfters: false); // Shitmed Change
// Arcane-Start
var suffocationDamage = HasComp<DebrainedComponent>(ent) ? ent.Comp.Damage * 4.5f : ent.Comp.Damage;

var pressure = _atmosSys.GetContainingMixture(ent.Owner)?.Pressure ?? 0f;
if (pressure <= Atmospherics.HazardLowPressure)
suffocationDamage *= VacuumSuffocationMultiplier;
// Arcane-End

_damageableSys.TryChangeDamage(ent, suffocationDamage, targetPart: TargetBodyPart.All, interruptsDoAfters: false); // Shitmed Change // Arcane-Edit

if (ent.Comp.SuffocationCycles < ent.Comp.SuffocationCycleThreshold)
return;
Expand Down
Loading
Loading