diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index defe08ef23..14f591ec87 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -28,7 +28,6 @@
/Content.*/Stunnable/ @Princess-Cheeseballs
/Content.*/Nutrition/ @Princess-Cheeseballs
-/Content.*/EntityEffects @Princess-Cheeseballs @sowelipililimute
# SKREEEE
/Content.*.Database/ @PJB3005 @DrSmugleaf
diff --git a/BuildChecker/git_helper.py b/BuildChecker/git_helper.py
index bd6603bd34..66d2463669 100644
--- a/BuildChecker/git_helper.py
+++ b/BuildChecker/git_helper.py
@@ -13,7 +13,7 @@ from typing import List
SOLUTION_PATH = Path("..") / "SpaceStation14.sln"
# If this doesn't match the saved version we overwrite them all.
-CURRENT_HOOKS_VERSION = "4"
+CURRENT_HOOKS_VERSION = "3"
QUIET = len(sys.argv) == 2 and sys.argv[1] == "--quiet"
diff --git a/BuildChecker/hooks/post-checkout b/BuildChecker/hooks/post-checkout
index 1b91112ff0..ee4309de1d 100755
--- a/BuildChecker/hooks/post-checkout
+++ b/BuildChecker/hooks/post-checkout
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
gitroot=$(git rev-parse --show-toplevel)
diff --git a/BuildChecker/hooks/post-merge b/BuildChecker/hooks/post-merge
index 864a9cff50..5cf3d91120 100755
--- a/BuildChecker/hooks/post-merge
+++ b/BuildChecker/hooks/post-merge
@@ -1,4 +1,4 @@
-#!/usr/bin/env bash
+#!/bin/bash
# Just call post-checkout since it does the same thing.
gitroot=$(git rev-parse --git-path hooks)
diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml b/Content.Client/Access/UI/IdCardConsoleWindow.xaml
index 0a695a3dce..a2f5f3382b 100644
--- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml
+++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml
@@ -1,7 +1,6 @@
-
@@ -17,7 +16,6 @@
-
@@ -28,19 +26,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs
index 30a7d969b6..202653f700 100644
--- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs
+++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs
@@ -79,18 +79,6 @@ namespace Content.Client.Access.UI
JobPresetOptionButton.AddItem(Loc.GetString(job.Name), _jobPrototypeIds.Count - 1);
}
- SelectAllButton.OnPressed += _ =>
- {
- SetAllAccess(true);
- SubmitData();
- };
-
- DeselectAllButton.OnPressed += _ =>
- {
- SetAllAccess(false);
- SubmitData();
- };
-
JobPresetOptionButton.OnItemSelected += SelectJobPreset;
_accessButtons.Populate(accessLevels, prototypeManager);
AccessLevelControlContainer.AddChild(_accessButtons);
@@ -101,13 +89,14 @@ namespace Content.Client.Access.UI
}
}
- /// If true, every individual access button will be pressed. If false, each will be depressed.
- private void SetAllAccess(bool enabled)
+ private void ClearAllAccess()
{
foreach (var button in _accessButtons.ButtonsList.Values)
{
- if (!button.Disabled && button.Pressed != enabled)
- button.Pressed = enabled;
+ if (button.Pressed)
+ {
+ button.Pressed = false;
+ }
}
}
@@ -121,7 +110,7 @@ namespace Content.Client.Access.UI
JobTitleLineEdit.Text = Loc.GetString(job.Name);
args.Button.SelectId(args.Id);
- SetAllAccess(false);
+ ClearAllAccess();
// this is a sussy way to do this
foreach (var access in job.Access)
diff --git a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs
index 7566942506..d20c741673 100644
--- a/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs
+++ b/Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs
@@ -226,7 +226,7 @@ public sealed partial class BanPanel : DefaultWindow
var roleGroupCheckbox = new Button
{
Name = $"{groupName}GroupCheckbox",
- Text = Loc.GetString("role-bans-ban-group"),
+ Text = "Ban all",
Margin = new Thickness(0, 0, 5, 0),
ToggleMode = true,
};
@@ -391,7 +391,7 @@ public sealed partial class BanPanel : DefaultWindow
TimeLine.Text = args.Text;
if (!double.TryParse(args.Text, out var result))
{
- ExpiresLabel.Text = Loc.GetString("ban-panel-expiry-error");
+ ExpiresLabel.Text = "err";
ErrorLevel |= ErrorLevelEnum.Minutes;
TimeLine.ModulateSelfOverride = Color.Red;
UpdateSubmitEnabled();
diff --git a/Content.Client/Administration/UI/Logs/AdminLogsEui.cs b/Content.Client/Administration/UI/Logs/AdminLogsEui.cs
index 28aca23f75..1544b827ae 100644
--- a/Content.Client/Administration/UI/Logs/AdminLogsEui.cs
+++ b/Content.Client/Administration/UI/Logs/AdminLogsEui.cs
@@ -166,7 +166,7 @@ public sealed class AdminLogsEui : BaseEui
ClydeWindow = _clyde.CreateWindow(new WindowCreateParameters
{
Maximized = false,
- Title = Loc.GetString("admin-logs-title"),
+ Title = "Admin Logs",
Monitor = monitor,
Width = 1100,
Height = 400
diff --git a/Content.Client/Crayon/CrayonComponent.cs b/Content.Client/Crayon/CrayonComponent.cs
new file mode 100644
index 0000000000..5729c616c2
--- /dev/null
+++ b/Content.Client/Crayon/CrayonComponent.cs
@@ -0,0 +1,14 @@
+using Content.Shared.Crayon;
+using Robust.Shared.GameObjects;
+using Robust.Shared.ViewVariables;
+
+namespace Content.Client.Crayon
+{
+ [RegisterComponent]
+ public sealed partial class CrayonComponent : SharedCrayonComponent
+ {
+ [ViewVariables(VVAccess.ReadWrite)] public bool UIUpdateNeeded;
+ [ViewVariables] public int Charges { get; set; }
+ [ViewVariables] public int Capacity { get; set; }
+ }
+}
diff --git a/Content.Client/Crayon/CrayonSystem.cs b/Content.Client/Crayon/CrayonSystem.cs
index e990263bf3..dc03979481 100644
--- a/Content.Client/Crayon/CrayonSystem.cs
+++ b/Content.Client/Crayon/CrayonSystem.cs
@@ -1,52 +1,67 @@
using Content.Client.Items;
using Content.Client.Message;
using Content.Client.Stylesheets;
-using Content.Shared.Charges.Components;
-using Content.Shared.Charges.Systems;
using Content.Shared.Crayon;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
+using Robust.Shared.GameObjects;
+using Robust.Shared.GameStates;
+using Robust.Shared.Localization;
using Robust.Shared.Timing;
namespace Content.Client.Crayon;
public sealed class CrayonSystem : SharedCrayonSystem
{
- [Dependency] private readonly SharedChargesSystem _charges = default!;
- [Dependency] private readonly EntityManager _entityManager = default!;
-
+ // Didn't do in shared because I don't think most of the server stuff can be predicted.
public override void Initialize()
{
base.Initialize();
+ SubscribeLocalEvent(OnCrayonHandleState);
+ Subs.ItemStatus(ent => new StatusControl(ent));
+ }
- Subs.ItemStatus(ent => new StatusControl(ent, _charges, _entityManager));
+ private static void OnCrayonHandleState(EntityUid uid, CrayonComponent component, ref ComponentHandleState args)
+ {
+ if (args.Current is not CrayonComponentState state) return;
+
+ component.Color = state.Color;
+ component.SelectedState = state.State;
+ component.Charges = state.Charges;
+ component.Capacity = state.Capacity;
+
+ component.UIUpdateNeeded = true;
}
private sealed class StatusControl : Control
{
- private readonly Entity _crayon;
- private readonly SharedChargesSystem _charges;
+ private readonly CrayonComponent _parent;
private readonly RichTextLabel _label;
- private readonly int _capacity;
- public StatusControl(Entity crayon, SharedChargesSystem charges, EntityManager entityManage)
+ public StatusControl(CrayonComponent parent)
{
- _crayon = crayon;
- _charges = charges;
- _capacity = entityManage.GetComponent(_crayon.Owner).MaxCharges;
+ _parent = parent;
_label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } };
AddChild(_label);
+
+ parent.UIUpdateNeeded = true;
}
protected override void FrameUpdate(FrameEventArgs args)
{
base.FrameUpdate(args);
+ if (!_parent.UIUpdateNeeded)
+ {
+ return;
+ }
+
+ _parent.UIUpdateNeeded = false;
_label.SetMarkup(Robust.Shared.Localization.Loc.GetString("crayon-drawing-label",
- ("color",_crayon.Comp.Color),
- ("state",_crayon.Comp.SelectedState),
- ("charges", _charges.GetCurrentCharges(_crayon.Owner)),
- ("capacity", _capacity)));
+ ("color",_parent.Color),
+ ("state",_parent.SelectedState),
+ ("charges", _parent.Charges),
+ ("capacity",_parent.Capacity)));
}
}
}
diff --git a/Content.Client/Credits/CreditsWindow.xaml.cs b/Content.Client/Credits/CreditsWindow.xaml.cs
index 6035bcc2bd..050d801170 100644
--- a/Content.Client/Credits/CreditsWindow.xaml.cs
+++ b/Content.Client/Credits/CreditsWindow.xaml.cs
@@ -100,11 +100,11 @@ public sealed partial class CreditsWindow : DefaultWindow
var container = new BoxContainer { Orientation = LayoutOrientation.Horizontal };
- var previousPageButton = new Button { Text = Loc.GetString("credits-window-previous-page-button") };
+ var previousPageButton = new Button { Text = "Previous Page" };
previousPageButton.OnPressed +=
_ => PopulateAttributions(attributionsContainer, count - AttributionsSourcesPerPage);
- var nextPageButton = new Button { Text = Loc.GetString("credits-window-next-page-button") };
+ var nextPageButton = new Button { Text = "Next Page" };
nextPageButton.OnPressed +=
_ => PopulateAttributions(attributionsContainer, count + AttributionsSourcesPerPage);
diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml
index f88fa07f5a..179304a978 100644
--- a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml
+++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml
@@ -58,7 +58,7 @@
StyleClasses="LabelBig" />
-
-
-
+
+
-
+
diff --git a/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs b/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs
index 4d9d6a90ba..4cde587c58 100644
--- a/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs
+++ b/Content.Client/Humanoid/HumanoidMarkingModifierWindow.xaml.cs
@@ -118,7 +118,7 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow
});
_enable = new CheckBox
{
- Text = Loc.GetString("humanoid-marking-modifier-enable"),
+ Text = "Enable",
HorizontalAlignment = HAlignment.Right
};
@@ -134,8 +134,8 @@ public sealed partial class HumanoidMarkingModifierWindow : DefaultWindow
OnStateChanged!();
};
- var lineEditBox = new BoxContainer { SeparationOverride = 4 };
- lineEditBox.AddChild(new Label { Text = Loc.GetString("humanoid-marking-modifier-prototype-id") });
+ var lineEditBox = new BoxContainer();
+ lineEditBox.AddChild(new Label { Text = "Prototype id: "});
// TODO: This line edit should really be an options / dropdown selector, not text.
_lineEdit = new() { MinWidth = 200 };
diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
index b568491b67..821722ec35 100644
--- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
+++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
@@ -607,7 +607,6 @@ namespace Content.Client.Lobby.UI
_species.Clear();
_species.AddRange(_prototypeManager.EnumeratePrototypes().Where(o => o.RoundStart));
- _species.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.CurrentCultureIgnoreCase));
var speciesIds = _species.Select(o => o.ID).ToList();
for (var i = 0; i < _species.Count; i++)
diff --git a/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs b/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs
index 1a68099de0..651c76e61f 100644
--- a/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs
+++ b/Content.Client/Medical/CrewMonitoring/CrewMonitoringNavMapControl.cs
@@ -62,7 +62,7 @@ public sealed partial class CrewMonitoringNavMapControl : NavMapControl
continue;
if (!LocalizedNames.TryGetValue(netEntity, out var name))
- name = Loc.GetString("navmap-unknown-entity");
+ name = "Unknown";
var message = name + "\n" + Loc.GetString("navmap-location",
("x", MathF.Round(blip.Coordinates.X)),
diff --git a/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml b/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml
index 86e1ce689a..dd40749d33 100644
--- a/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml
+++ b/Content.Client/Medical/CrewMonitoring/CrewMonitoringWindow.xaml
@@ -1,7 +1,7 @@
@@ -11,12 +11,12 @@
-
+
+ PlaceHolder="{Loc crew-monitor-filter-line-placeholder}" />