diff --git a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.xaml b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.xaml
index 63f1583706..7cef7d58b6 100644
--- a/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.xaml
+++ b/Content.Client/ParticleAccelerator/UI/ParticleAcceleratorControlMenu.xaml
@@ -1,50 +1,129 @@
-
-
-
-
-
-
+ xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
+ xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
+ xmlns:ui="clr-namespace:Content.Client.ParticleAccelerator.UI"
+ Title="{Loc 'particle-accelerator-control-menu-device-version-label'}"
+ MinSize="320 120">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
@@ -58,17 +137,47 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Content.Server/Administration/Managers/BanManager.cs b/Content.Server/Administration/Managers/BanManager.cs
index 85cfe1336a..d41c4ea4e7 100644
--- a/Content.Server/Administration/Managers/BanManager.cs
+++ b/Content.Server/Administration/Managers/BanManager.cs
@@ -208,6 +208,8 @@ public sealed partial class BanManager : IBanManager, IPostInjectInit
null);
await _db.AddServerBanAsync(banDef);
+ if (_cfg.GetCVar(CCVars.ServerBanResetLastReadRules) && target != null)
+ await _db.SetLastReadRules(target.Value, null); // Reset their last read rules. They probably need a refresher!
var adminName = banningAdmin == null
? Loc.GetString("system-user")
: (await _db.GetPlayerRecordByUserId(banningAdmin.Value))?.LastSeenUserName ?? Loc.GetString("system-user");
diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs
index af0fcf846d..2d01009d83 100644
--- a/Content.Server/Database/ServerDbBase.cs
+++ b/Content.Server/Database/ServerDbBase.cs
@@ -1120,7 +1120,7 @@ INSERT INTO player_round (players_id, rounds_id) VALUES ({players[player]}, {id}
.SingleOrDefaultAsync());
}
- public async Task SetLastReadRules(NetUserId player, DateTimeOffset date)
+ public async Task SetLastReadRules(NetUserId player, DateTimeOffset? date)
{
await using var db = await GetDb();
@@ -1130,7 +1130,7 @@ INSERT INTO player_round (players_id, rounds_id) VALUES ({players[player]}, {id}
return;
}
- dbPlayer.LastReadRules = date.UtcDateTime;
+ dbPlayer.LastReadRules = date?.UtcDateTime;
await db.DbContext.SaveChangesAsync();
}
diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs
index 5ddb3a590c..e3cfb66c7f 100644
--- a/Content.Server/Database/ServerDbManager.cs
+++ b/Content.Server/Database/ServerDbManager.cs
@@ -282,7 +282,7 @@ namespace Content.Server.Database
#region Rules
Task GetLastReadRules(NetUserId player);
- Task SetLastReadRules(NetUserId player, DateTimeOffset time);
+ Task SetLastReadRules(NetUserId player, DateTimeOffset? time);
#endregion
@@ -830,7 +830,7 @@ namespace Content.Server.Database
return RunDbCommand(() => _db.GetLastReadRules(player));
}
- public Task SetLastReadRules(NetUserId player, DateTimeOffset time)
+ public Task SetLastReadRules(NetUserId player, DateTimeOffset? time)
{
DbWriteOpsMetric.Inc();
return RunDbCommand(() => _db.SetLastReadRules(player, time));
diff --git a/Content.Server/EntityEffects/Effects/ExplosionReactionEffect.cs b/Content.Server/EntityEffects/Effects/ExplosionReactionEffect.cs
index 689757d044..24c58898c6 100644
--- a/Content.Server/EntityEffects/Effects/ExplosionReactionEffect.cs
+++ b/Content.Server/EntityEffects/Effects/ExplosionReactionEffect.cs
@@ -15,7 +15,6 @@ public sealed partial class ExplosionReactionEffect : EntityEffect
/// The type of explosion. Determines damage types and tile break chance scaling.
///
[DataField(required: true, customTypeSerializer: typeof(PrototypeIdSerializer))]
- [JsonIgnore]
public string ExplosionType = default!;
///
@@ -23,14 +22,12 @@ public sealed partial class ExplosionReactionEffect : EntityEffect
/// chance.
///
[DataField]
- [JsonIgnore]
public float MaxIntensity = 5;
///
/// How quickly intensity drops off as you move away from the epicenter
///
[DataField]
- [JsonIgnore]
public float IntensitySlope = 1;
///
@@ -41,15 +38,20 @@ public sealed partial class ExplosionReactionEffect : EntityEffect
/// A slope of 1 and MaxTotalIntensity of 100 corresponds to a radius of around 4.5 tiles.
///
[DataField]
- [JsonIgnore]
public float MaxTotalIntensity = 100;
///
/// The intensity of the explosion per unit reaction.
///
[DataField]
- [JsonIgnore]
public float IntensityPerUnit = 1;
+
+ ///
+ /// Factor used to scale the explosion intensity when calculating tile break chances. Allows for stronger
+ /// explosives that don't space tiles, without having to create a new explosion-type prototype.
+ ///
+ [DataField]
+ public float TileBreakScale = 1f;
public override bool ShouldLog => true;
@@ -72,6 +74,7 @@ public sealed partial class ExplosionReactionEffect : EntityEffect
ExplosionType,
intensity,
IntensitySlope,
- MaxIntensity);
+ MaxIntensity,
+ TileBreakScale);
}
}
diff --git a/Content.Server/Info/RulesManager.cs b/Content.Server/Info/RulesManager.cs
index f4d9e57bd4..224d7f7d9a 100644
--- a/Content.Server/Info/RulesManager.cs
+++ b/Content.Server/Info/RulesManager.cs
@@ -34,7 +34,7 @@ public sealed class RulesManager
{
PopupTime = _cfg.GetCVar(CCVars.RulesWaitTime),
CoreRules = _cfg.GetCVar(CCVars.RulesFile),
- ShouldShowRules = !isLocalhost && !hasCooldown
+ ShouldShowRules = !isLocalhost && !hasCooldown,
};
_netManager.ServerSendMessage(showRulesMessage, e.Channel);
}
diff --git a/Content.Shared/CCVar/CCVars.Admin.cs b/Content.Shared/CCVar/CCVars.Admin.cs
index 67025087ca..f5b29a9b23 100644
--- a/Content.Shared/CCVar/CCVars.Admin.cs
+++ b/Content.Shared/CCVar/CCVars.Admin.cs
@@ -95,6 +95,12 @@ public sealed partial class CCVars
public static readonly CVarDef ServerBanErasePlayer =
CVarDef.Create("admin.server_ban_erase_player", false, CVar.ARCHIVE | CVar.SERVER | CVar.REPLICATED);
+ ///
+ /// If true, will reset the last time the player has read the rules. This will mean on their next login they will be shown the rules again.
+ ///
+ public static readonly CVarDef ServerBanResetLastReadRules =
+ CVarDef.Create("admin.server_ban_reset_last_read_rules", true, CVar.ARCHIVE | CVar.SERVER);
+
///
/// Minimum players sharing a connection required to create an alert. -1 to disable the alert.
///
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 47f486092c..b789909673 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,18 +1,4 @@
Entries:
-- author: lzk228
- changes:
- - message: Command intercom now reinforced the same way as the security one.
- type: Tweak
- id: 7375
- time: '2024-09-14T20:40:38.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/32169
-- author: de0rix
- changes:
- - message: Animals in critical state now all have proper sprites.
- type: Fix
- id: 7376
- time: '2024-09-15T01:53:58.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/32175
- author: notafet
changes:
- message: Pressure and volume pumps now require power to operate.
@@ -3901,3 +3887,17 @@
id: 7874
time: '2025-01-30T04:45:56.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/34721
+- author: Velken
+ changes:
+ - message: Mixing opposite types of lizard juices now has explosive consequences.
+ type: Add
+ id: 7875
+ time: '2025-01-30T11:34:32.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/34730
+- author: SpaceRox1244
+ changes:
+ - message: Massive scrap can now fit in bags of holding.
+ type: Tweak
+ id: 7876
+ time: '2025-01-30T12:06:41.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/33454
diff --git a/Resources/Locale/en-US/_strings/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl b/Resources/Locale/en-US/_strings/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl
index da3221e4f8..9d8d9d839a 100644
--- a/Resources/Locale/en-US/_strings/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl
+++ b/Resources/Locale/en-US/_strings/particle-accelerator/components/ui/particle-accelerator-control-menu.ftl
@@ -8,7 +8,6 @@ particle-accelerator-control-menu-alarm-control-1 = [bold][color=red]PARTICLE ST
particle-accelerator-control-menu-alarm-control-2 = [bold][color=red]LIMITER FAILURE[/bold][/color]
particle-accelerator-control-menu-scan-parts-button = Scan Parts
particle-accelerator-control-menu-check-containment-field-warning = Ensure containment field is active before operation
-particle-accelerator-control-menu-foo-bar-baz = FOO-BAR-BAZ
particle-accelerator-control-menu-status-label = [bold]Status:[/bold]
particle-accelerator-control-menu-status-unknown = [font="Monospace"][color=red]Unknown[/color][/bold]
particle-accelerator-control-menu-status-operational = [font="Monospace"][color=green]Operational[/color][/bold]
@@ -16,6 +15,8 @@ particle-accelerator-control-menu-status-incomplete = [font="Monospace"][color=r
particle-accelerator-control-menu-draw = [bold]Draw:[/bold]
particle-accelerator-control-menu-draw-value = [font="Monospace"]{$watts}/{$lastReceive}[/font]
particle-accelerator-control-menu-draw-not-available = [font="Monospace"][color=gray]N/A[/color][/font]
+particle-accelerator-control-menu-flavor-left = Please keep the clown away from this console!
+particle-accelerator-control-menu-flavor-right = v 1.6
particle-accelerator-radio-message-on = PA power has been switched on.
particle-accelerator-radio-message-off = PA power has been switched off.
diff --git a/Resources/Prototypes/Entities/Objects/Materials/scrap.yml b/Resources/Prototypes/Entities/Objects/Materials/scrap.yml
index 734111af6d..c4ec20465e 100644
--- a/Resources/Prototypes/Entities/Objects/Materials/scrap.yml
+++ b/Resources/Prototypes/Entities/Objects/Materials/scrap.yml
@@ -77,7 +77,9 @@
- state: metal-1
map: [ "base" ]
- type: Item
- size: Ginormous
+ size: Large
+ shape:
+ - 0,0,4,4 # 5x5
heldPrefix: metal
- type: MultiHandedItem
- type: RandomSprite
@@ -135,7 +137,9 @@
junk-airlock-1: ""
junk-airlock-2: ""
- type: Item
- size: Ginormous
+ size: Large
+ shape:
+ - 0,0,4,4 # 5x5
heldPrefix: "airlock"
- type: MultiHandedItem
- type: PhysicalComposition
@@ -273,7 +277,9 @@
layers:
- state: junk-firelock-1
- type: Item
- size: Ginormous
+ size: Large
+ shape:
+ - 0,0,4,4 # 5x5
heldPrefix: firelock-1
- type: MultiHandedItem
- type: PhysicalComposition
@@ -290,7 +296,9 @@
layers:
- state: junk-firelock-2
- type: Item
- size: Ginormous
+ size: Large
+ shape:
+ - 0,0,4,4 # 5x5
heldPrefix: firelock-2
- type: MultiHandedItem
- type: PhysicalComposition
diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml
index 00d31cbd10..2215b6f33d 100644
--- a/Resources/Prototypes/Reagents/fun.yml
+++ b/Resources/Prototypes/Reagents/fun.yml
@@ -381,3 +381,21 @@
conditions:
- !type:ReagentThreshold
min: 50
+
+- type: reaction
+ id: WehHewExplosion
+ impact: High
+ priority: 20
+ reactants:
+ JuiceThatMakesYouWeh:
+ amount: 1
+ JuiceThatMakesYouHew:
+ amount: 1
+ effects:
+ - !type:ExplosionReactionEffect
+ explosionType: Radioactive
+ maxIntensity: 200
+ intensityPerUnit: 2
+ intensitySlope: 1
+ maxTotalIntensity: 250
+ tileBreakScale: 0.00001