Skip to content

Try2 #161

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 423 commits into from
Dec 17, 2024
Merged

Try2 #161

Show file tree
Hide file tree
Changes from 166 commits
Commits
Show all changes
423 commits
Select commit Hold shift + click to select a range
cfd6106
Automatic changelog update
PJBot Nov 23, 2024
8c33e1e
babyproof arrivals shuttle (#33284)
IProduceWidgets Nov 23, 2024
8073c5d
Automatic changelog update
PJBot Nov 23, 2024
2b8a773
Add delay to AutoOrient (#33479)
metalgearsloth Nov 23, 2024
10f0874
Automatic changelog update
PJBot Nov 23, 2024
357f8a7
Draw muzzle flash below mobs (#33465)
Winkarst-cpu Nov 24, 2024
ae3e026
Automatic changelog update
PJBot Nov 24, 2024
5e8009c
Allow shuttles on planets to make FTL jump (#33507)
MilenVolf Nov 24, 2024
60122e3
Automatic changelog update
PJBot Nov 24, 2024
d9a5073
fix exped caves generation (#32890)
deltanedas Nov 24, 2024
4941a55
Automatic changelog update
PJBot Nov 24, 2024
5f0c684
various material & ore inhands (#33342)
muburu Nov 24, 2024
76a72bf
Delete HOS headset from warden's locker (#33234)
kosticia Nov 25, 2024
872da7d
fix airlocks inconsistently auto-closing after unbolting (#33524)
slarticodefast Nov 25, 2024
d43d2a5
Automatic changelog update
PJBot Nov 25, 2024
97fe9b1
[BUGFIX] "Ghost" in the lobby lets you see the whole chat (#33529)
Schrodinger71 Nov 25, 2024
dc3712f
removed obsolete netmessage creator (#33542)
benev0 Nov 25, 2024
c129540
Fix RA0003 warning for ChatBox (#33531)
CrafterKolyan Nov 25, 2024
b246bc7
Shark plushies now goes rawr on hit. (#33540)
Minemoder5000 Nov 25, 2024
7870b59
Automatic changelog update
PJBot Nov 25, 2024
810880d
Turn off PointLights on VendingMachines when broken or off. (#33513)
red15 Nov 25, 2024
2be2c15
Automatic changelog update
PJBot Nov 25, 2024
80a07fe
Adds more diona names (#33066)
Flareguy Nov 25, 2024
a7d4d98
minor AI cleanup (#33555)
slarticodefast Nov 25, 2024
33fa47e
Simplify separated screen top menu (#33047)
metalgearsloth Nov 26, 2024
91ee381
Automatic changelog update
PJBot Nov 26, 2024
db85e1c
Ghost role drop-down alignment (#33397)
Intoxicating-Innocence Nov 26, 2024
f193b67
Greytide Virus station event (#33547)
slarticodefast Nov 26, 2024
f0fe85d
Make shuttle airlocks not snapcardinals (#33557)
Winkarst-cpu Nov 26, 2024
9b55284
Automatic changelog update
PJBot Nov 26, 2024
9985152
Fix space ambient music (#33594)
slarticodefast Nov 27, 2024
4a98501
Automatic changelog update
PJBot Nov 27, 2024
86d3dcb
Fix windoor and high security door not showing electrocution HUD (#33…
slarticodefast Nov 27, 2024
6995acd
Automatic changelog update
PJBot Nov 27, 2024
8980440
Removes burnt tiles (#33422)
Flareguy Nov 28, 2024
581a51e
Added Oppenhopper poster to the game. (#33588)
ScarKy0 Nov 28, 2024
a106137
Fix version for electril_grill meta.json (#33611)
AlexUm418 Nov 28, 2024
7560ae6
Fix gauze eyepatch flying pixel (#33564)
fqqf Nov 28, 2024
08e1a15
Fix swapped uniform printer east/west sprites (#33442)
SpaceManiac Nov 28, 2024
ce9a535
Makes knives fly straight when thrown (#33615)
SpaceRox1244 Nov 28, 2024
df595e1
Light verb is now predicted (#33622)
beck-thompson Nov 28, 2024
894101e
Automatic changelog update
PJBot Nov 28, 2024
cbd3f4d
Update `Content.PatreonParser` to use `net8.0` `TargetFramework` (#33…
CrafterKolyan Nov 28, 2024
df0cc19
Fix gender, maybe (#33631)
Alpha-Two Nov 29, 2024
7f5188f
Display GPS coordinates on their own line (#33625)
arimah Nov 29, 2024
e217653
Automatic changelog update
PJBot Nov 29, 2024
863b965
Add admin log for ghost warping (#33636)
DrSmugleaf Nov 29, 2024
ead4676
Automatic changelog update
PJBot Nov 29, 2024
024b871
Rename nitrogen internals crate (#33545)
MossyGreySlope Nov 29, 2024
2e7c385
Automatic changelog update
PJBot Nov 29, 2024
b345664
Cleanup some Client atmos systems (#33634)
MilenVolf Nov 30, 2024
eb45cad
Fix for arrivals deleting nuke (#33659)
GansuLalan Nov 30, 2024
bb7b22f
Automatic changelog update
PJBot Nov 30, 2024
da047e5
add locale to Shuttle Console Map tab (#33651)
SpyDev14 Nov 30, 2024
99a5b98
Automatic changelog update
PJBot Nov 30, 2024
d1b427b
fix PermanentBlindnessComponent to be not so permanent (#33292)
lunarcomets Nov 30, 2024
32981de
Automatic changelog update
PJBot Nov 30, 2024
4299bcf
Fix for handcuffing someone more than once (#33646)
Plykiya Nov 30, 2024
efa2c69
Automatic changelog update
PJBot Nov 30, 2024
a8e0295
Fix for inspecting entities in hand (#33642)
Plykiya Nov 30, 2024
7225836
Automatic changelog update
PJBot Nov 30, 2024
f8d7995
Fix for inspecting entities in the stripping window (#33644)
Plykiya Nov 30, 2024
84ea983
Automatic changelog update
PJBot Nov 30, 2024
4471e17
Fix borgs not getting names on roundstart (#33578)
Winkarst-cpu Nov 30, 2024
b699ea2
Automatic changelog update
PJBot Nov 30, 2024
5f07969
Require Wield To Activate Double-bladed ESword (#32869)
thetolbean Nov 30, 2024
be0fece
Automatic changelog update
PJBot Nov 30, 2024
0cd0206
Fix makeghostroleraffle command where 4 arguments (#31836)
TokenStyle Nov 30, 2024
98f183b
Automatic changelog update
PJBot Nov 30, 2024
42c4bb0
this isnt needed anymore
Dec 7, 2024
511a3ac
Fix formatting IDE0055 warnings in VS Code (#33669)
CrafterKolyan Dec 1, 2024
9b4b264
Replace obsolete GetTilesIntersecting methods (#32455)
MilenVolf Dec 1, 2024
00d2e32
Automatic changelog update
PJBot Dec 1, 2024
c05a974
Fix wrong system usage (#33679)
MilenVolf Dec 1, 2024
6e02846
Fix BuckleSystem always marking InteractHandEvent as Handled (#33602)
MilenVolf Dec 1, 2024
6c94e2a
Automatic changelog update
PJBot Dec 1, 2024
9f871d3
Fixed ghost role rules for some syndicate familiars (#32457)
JIPDawg Dec 2, 2024
3ac38a4
Automatic changelog update
PJBot Dec 2, 2024
d5e53e9
Fix lobby countdown not showing hours (#33685)
SpaceManiac Dec 2, 2024
1a300a1
Automatic changelog update
PJBot Dec 3, 2024
f5dc4b5
Makes kukri not use combat knife's storage sprite (#33661)
SpaceRox1244 Dec 3, 2024
e42addd
Adds a morgue locked maints airlock (#33693)
IamVelcroboy Dec 3, 2024
6dac602
Juiceable slimeballs (#33660)
luizwritescode Dec 3, 2024
ce7c4b1
Add missing nacho recipes (#33637)
CheddaCheez Dec 3, 2024
16c9dc8
Automatic changelog update
PJBot Dec 3, 2024
5fdfa2a
Fix sinks and toilets not draining (#33691)
Partmedia Dec 4, 2024
f268bc0
Automatic changelog update
PJBot Dec 4, 2024
04862df
Fix layout on wires UI (#33714)
PJB3005 Dec 4, 2024
78e737f
Automatic changelog update
PJBot Dec 4, 2024
95d6819
Fix for towels not having a cooldown for cleaning (#33700)
tapiocaphobe Dec 4, 2024
6a54467
Add cooldown to buttons in borg's laws UI (#31490)
Hreno Dec 4, 2024
ef52ced
Adds Store on Collide and Wand of the Locker (#33710)
keronshb Dec 4, 2024
c00fb53
Automatic changelog update
PJBot Dec 4, 2024
42be836
More device configurator serialization fixes (#33664)
ElectroJr Dec 5, 2024
566e840
Fix meteor's ArithmeticException (#33556)
Winkarst-cpu Dec 5, 2024
b888527
Give vox health regen for poison below 20 damage (#33722)
PJB3005 Dec 5, 2024
f11dbc2
Automatic changelog update
PJBot Dec 5, 2024
e8f57b4
set n2 survival box sprite layers (#33733)
IProduceWidgets Dec 5, 2024
7a24a09
Automatic changelog update
PJBot Dec 5, 2024
e41f317
fix a station event weighting bug (#33584)
IProduceWidgets Dec 6, 2024
668f42a
Automatic changelog update
PJBot Dec 6, 2024
2aa6e82
Adds Station Anchor Beacon (#33711)
IamVelcroboy Dec 6, 2024
365f7be
Fix name duplications (#33740)
MilenVolf Dec 6, 2024
3ae3c4d
Add a maintenance panel to bar signs (#33467)
Winkarst-cpu Dec 6, 2024
68e15f9
Automatic changelog update
PJBot Dec 6, 2024
75918fc
Derelict Borg Revival (#33433)
ScarKy0 Dec 6, 2024
70033fc
Automatic changelog update
PJBot Dec 6, 2024
ac7bd89
vox guidebook update poison regen (#33739)
Errant-4 Dec 6, 2024
94b09d6
Revert "fix debris having nothing (#2280)"
Dec 7, 2024
360db55
Fix debris chunks loot spawning (#33747)
TheShuEd Dec 6, 2024
32437ab
Automatic changelog update
PJBot Dec 6, 2024
d6ba36a
Added several variables to make ClumsyComponent more modular for deve…
widgetbeck Dec 6, 2024
a0ac066
Add Sprite changes to Logic Gates to show the input/output state (#33…
0tito Dec 6, 2024
7bb8140
Samurai dogi is now major contraband (#33699)
K-Dynamic Dec 6, 2024
93eeca4
snake_case to PascalCase for name datasets
MilenVolf Dec 6, 2024
3b57458
clean up random lathe recipes (#31525)
deltanedas Dec 6, 2024
394a1eb
Make unknown shuttle events trigger an announcement (#33450)
Winkarst-cpu Dec 6, 2024
76f8a19
Predicted gas pumps (#33717)
metalgearsloth Dec 7, 2024
adda0e0
Automatic changelog update
PJBot Dec 7, 2024
abc2421
Christmas Nuke Song (#33752)
Piras314 Dec 7, 2024
e1127e1
Automatic changelog update
PJBot Dec 7, 2024
04a126a
infiltrator update (#33759)
Emisse Dec 7, 2024
8851193
Organize the Sandbox Panel window (#33684)
SpaceManiac Dec 7, 2024
203ec26
Grey & Wooden Railings (#2379)
rosieposieeee Dec 7, 2024
24cbd06
Automatic changelog update
DeltaV-Bot Dec 7, 2024
1e1b47f
Add Reinforced Directional Tinted Window (#2376)
rosieposieeee Dec 7, 2024
7add23d
Automatic changelog update
DeltaV-Bot Dec 7, 2024
190030e
Update Credits (#2392)
github-actions[bot] Dec 8, 2024
6098390
change up and add ninja objectives (#2359)
deltanedas Dec 8, 2024
fd429b4
Automatic changelog update
DeltaV-Bot Dec 8, 2024
dabe904
Randomizes the appearance of Fugitives (#2383)
Monotheonist Dec 9, 2024
461549c
Automatic changelog update
DeltaV-Bot Dec 9, 2024
bd23e0f
Build Diona Different (#2204)
Lyndomen Dec 9, 2024
6ced034
Automatic changelog update
DeltaV-Bot Dec 9, 2024
13c1e01
aac tablet refactor (#2401)
MilonPL Dec 9, 2024
88b47d2
Derotates Micro (#2402)
Colin-Tel Dec 9, 2024
746b6c8
Automatic changelog update
DeltaV-Bot Dec 9, 2024
b5ee0f4
Automatic ACO procedure (#2351)
ewokswagger Dec 9, 2024
53ebfe8
Automatic changelog update
DeltaV-Bot Dec 9, 2024
28f16b6
make lathe items worthless (#2406)
MilonPL Dec 10, 2024
16c08f8
Automatic changelog update
DeltaV-Bot Dec 10, 2024
3a1c59e
Update CODEOWNERS (#2403)
MilonPL Dec 10, 2024
3fe460c
fix diona speed (#2413)
MilonPL Dec 10, 2024
5d7e6bd
Automatic changelog update
DeltaV-Bot Dec 10, 2024
8829c54
add lavaland real (#2380)
deltanedas Dec 10, 2024
140fc65
Automatic changelog update
DeltaV-Bot Dec 10, 2024
2c65179
pda messaging real (#2362)
MilonPL Dec 10, 2024
31964b6
Automatic changelog update
DeltaV-Bot Dec 10, 2024
9e510f0
Make the shadow cat a ghost role (#2417)
Radezolid Dec 11, 2024
77f96e7
Automatic changelog update
DeltaV-Bot Dec 11, 2024
dd6675d
fix "teach person a lesson" (#2412)
MilonPL Dec 12, 2024
86e6782
Automatic changelog update
DeltaV-Bot Dec 12, 2024
1227893
Allow jetpacks to fit in the suit storage slot (#2400)
Radezolid Dec 12, 2024
2bf19cf
Automatic changelog update
DeltaV-Bot Dec 12, 2024
e1efe46
Map Edits: Arena, Hive, Hammurabi (#2357)
IamVelcroboy Dec 12, 2024
9c3e4f7
Automatic changelog update
DeltaV-Bot Dec 12, 2024
9db6651
Auto ACO Procedure bug fixes (#2424)
ewokswagger Dec 12, 2024
cb8df8c
Modify clown and mime sexy masks and add them to the autodrobe (#2346)
Radezolid Dec 12, 2024
34f47cb
Automatic changelog update
DeltaV-Bot Dec 12, 2024
21dd83c
Make LO know at least the basics of cargo tech. (#2399)
Radezolid Dec 12, 2024
dacfbb7
Automatic changelog update
DeltaV-Bot Dec 12, 2024
fbbb2ad
CentCom Map HotFix (#2396)
Lyndomen Dec 12, 2024
019cc24
fix mining shuttle not docking on small stations (#2430)
deltanedas Dec 12, 2024
45ab87a
Automatic changelog update
DeltaV-Bot Dec 12, 2024
3b9fa30
fix auto aco timing (#2431)
ewokswagger Dec 12, 2024
6879e50
add mining points (#2419)
deltanedas Dec 13, 2024
9ba78c5
Reduce RE time (#2394)
Stop-Signs Dec 13, 2024
d7e3c04
Automatic changelog update
DeltaV-Bot Dec 13, 2024
2b0b875
Change Overlord Law so no RDM (#2375)
Lyndomen Dec 13, 2024
485ecc5
Delta-V Specific Posters! (#2303)
IAmNotGray Dec 13, 2024
50f87d4
fix lavaland shuttle for real (#2434)
deltanedas Dec 13, 2024
9bef33b
Automatic changelog update
DeltaV-Bot Dec 13, 2024
17443d6
glacier surface update (#2414)
deltanedas Dec 13, 2024
3279b3f
Automatic changelog update
DeltaV-Bot Dec 13, 2024
f28dfeb
Asterisk and Chibi updates (#2416)
Colin-Tel Dec 13, 2024
a7678e3
lighthouse lavaland update (#2415)
deltanedas Dec 13, 2024
d41c00a
Modified djstation and added random intercom (#2390)
Radezolid Dec 13, 2024
0ffb2c2
Make space ruins dirty! (#2423)
Radezolid Dec 13, 2024
956eb51
Automatic changelog update
DeltaV-Bot Dec 13, 2024
a1a26c3
Map Edits: X-Mas (#2433)
IamVelcroboy Dec 13, 2024
3a7fc17
Automatic changelog update
DeltaV-Bot Dec 13, 2024
40362d2
what
Dec 13, 2024
8484420
Ion storm refactor (#33311)
metalgearsloth Nov 20, 2024
49d6731
Edge Fixes + Minor Updates (#2420)
therealDLondon Dec 13, 2024
3247cae
reenable greytide virus with changed announcement
Dec 13, 2024
79a58be
move gun execution system to deltav folder, fix it
Dec 13, 2024
c18791f
epic fail
Dec 13, 2024
d8c0cfd
Edge Christmas Update, but fixed (#2436)
therealDLondon Dec 13, 2024
296c728
Colin Xmas Map update (#2435)
Colin-Tel Dec 13, 2024
475cc5b
uncurse energy gun laser
Dec 13, 2024
2a677f1
localize AI names
Dec 14, 2024
e0eb768
add automatic panic bunker (#2437)
deltanedas Dec 14, 2024
0f9b47c
Automatic changelog update
DeltaV-Bot Dec 14, 2024
07f57f8
Update Synth Specialist rules (#2391)
Lyndomen Dec 14, 2024
5be1633
Add order access to cargo technicians (#2356)
Radezolid Dec 14, 2024
bdc592d
Automatic changelog update
DeltaV-Bot Dec 14, 2024
6676405
Merge branch 'master' into upstream-ops
deltanedas Dec 14, 2024
404d09f
add cameras to service courtyard area, add scrubbers to justiceroid
Dec 14, 2024
457309c
use cargo access instead of external for surface shuttle
Dec 14, 2024
ad6fe1d
glacier christmas update
Dec 14, 2024
ff47dc4
Clarify Sec/Command/Justice Following IC documents (#2442)
Lyndomen Dec 14, 2024
680fb5c
Automatic changelog update
DeltaV-Bot Dec 14, 2024
c690177
check ban flag for auto panic bunker (#2443)
deltanedas Dec 14, 2024
622ea7d
Automatic changelog update
DeltaV-Bot Dec 14, 2024
6715542
fix vox gladiators not getting nitrogen tanks (#2446)
deltanedas Dec 15, 2024
0205813
Automatic changelog update
DeltaV-Bot Dec 15, 2024
f9efc75
make mining shuttle console ui 1% better (#2447)
deltanedas Dec 15, 2024
dd2813d
Add a new janitor PDA - Hygiene technician (#2448)
Radezolid Dec 15, 2024
e5fd140
Automatic changelog update
DeltaV-Bot Dec 15, 2024
67dbe36
Make Security Jetpacks Not Be Empty (#2449)
Eternally-Confused Dec 15, 2024
5e43fdf
Automatic changelog update
DeltaV-Bot Dec 15, 2024
6306caf
Add service access to mime and clown (#2388)
Radezolid Dec 15, 2024
7d05600
Automatic changelog update
DeltaV-Bot Dec 15, 2024
4d0b9fd
Update Credits (#2444)
github-actions[bot] Dec 15, 2024
7dac6a0
Merge branch 'master' of https://github.com/DeltaV-Station/Delta-v in…
Dec 15, 2024
977ee8c
Change bounty skip access to Orders (#2454)
Radezolid Dec 16, 2024
51e7dc5
Automatic changelog update
DeltaV-Bot Dec 16, 2024
2543166
Remove additional DoafterEvent (#2455)
BarryNorfolk Dec 16, 2024
5851c1d
Adds empty AI core to Centcom (#2428)
Emily9031 Dec 17, 2024
e6d8e2a
Automatic changelog update
DeltaV-Bot Dec 17, 2024
b8520ce
Merge pull request #2438 from deltanedas/glacier-update
IamVelcroboy Dec 17, 2024
3869043
Shoukou Christmas Update (2024) (#2451)
Unkn0wnGh0st333 Dec 17, 2024
7b39c4b
Make stocks trading require LO access. (#2456)
Radezolid Dec 17, 2024
1d9567f
Automatic changelog update
DeltaV-Bot Dec 17, 2024
8f2587e
Revert "Removes burnt tiles (#33422)"
Dec 17, 2024
021eae6
Automatic changelog update
DeltaV-Bot Dec 17, 2024
e809c51
upstream merge 7/12 but merge commit
Dec 17, 2024
c2b9616
lighthouse christmas update (#2439)
deltanedas Dec 17, 2024
222679c
Add Atmos alert computer board to lathe recipes and research (#2452)
BarryNorfolk Dec 17, 2024
703c455
Automatic changelog update
DeltaV-Bot Dec 17, 2024
34bfd8f
Merge branch 'master' of https://github.com/DeltaV-Station/Delta-v in…
Dec 17, 2024
0ba8405
fix
Dec 17, 2024
8fd019c
Revert "Integrate Modern HWID into content"
Dec 17, 2024
2b37908
fix2
Dec 17, 2024
a455602
fixROBO
Dec 17, 2024
eb1f2e6
Add the psychologist's locker (#2372)
Radezolid Dec 17, 2024
ded69af
Add Interdyne clothes + contraband to the chemdrobe (#2355)
Radezolid Dec 17, 2024
886546c
Automatic changelog update
DeltaV-Bot Dec 17, 2024
0ea4923
okay boomer
Dec 17, 2024
e69fe96
Flower Bushes (#2382)
rosieposieeee Dec 17, 2024
364ff75
Automatic changelog update
DeltaV-Bot Dec 17, 2024
deda3b8
Barrels & Kegs (#2378)
rosieposieeee Dec 17, 2024
55ae568
Automatic changelog update
DeltaV-Bot Dec 17, 2024
54b07bc
sex
Dec 17, 2024
f8b2677
dick
Dec 17, 2024
1032258
20cm
Dec 17, 2024
114f236
Update pebble.yml
Dec 17, 2024
233e176
попроьбую
Dec 17, 2024
e3f8bc7
Merge branch 'master' of https://github.com/DeltaV-Station/Delta-v in…
Dec 17, 2024
a08968c
imposter
Dec 17, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions Content.Client/Access/UI/AgentIDCardBoundUserInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ protected override void Open()
_window.OnNameChanged += OnNameChanged;
_window.OnJobChanged += OnJobChanged;
_window.OnJobIconChanged += OnJobIconChanged;
_window.OnNumberChanged += OnNumberChanged; // DeltaV
}

// DeltaV - Add number change handler
private void OnNumberChanged(uint newNumber)
{
SendMessage(new AgentIDCardNumberChangedMessage(newNumber));
}

private void OnNameChanged(string newName)
Expand Down Expand Up @@ -56,6 +63,7 @@ protected override void UpdateState(BoundUserInterfaceState state)
_window.SetCurrentName(cast.CurrentName);
_window.SetCurrentJob(cast.CurrentJob);
_window.SetAllowedIcons(cast.CurrentJobIconId);
_window.SetCurrentNumber(cast.CurrentNumber); // DeltaV
}
}
}
4 changes: 4 additions & 0 deletions Content.Client/Access/UI/AgentIDCardWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
<LineEdit Name="NameLineEdit" />
<Label Name="CurrentJob" Text="{Loc 'agent-id-card-current-job'}" />
<LineEdit Name="JobLineEdit" />
<!-- DeltaV - Add NanoChat number field -->
<Label Name="CurrentNumber" Text="{Loc 'agent-id-card-current-number'}" />
<LineEdit Name="NumberLineEdit" PlaceHolder="#0000" />
<!-- DeltaV end -->
<Label Text="{Loc 'agent-id-card-job-icon-label'}"/>
<GridContainer Name="IconGrid" Columns="10">
<!-- Job icon buttons are generated in the code -->
Expand Down
35 changes: 35 additions & 0 deletions Content.Client/Access/UI/AgentIDCardWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,13 @@ public sealed partial class AgentIDCardWindow : DefaultWindow

private const int JobIconColumnCount = 10;

private const int MaxNumberLength = 4; // DeltaV - Same as NewChatPopup

public event Action<string>? OnNameChanged;
public event Action<string>? OnJobChanged;

public event Action<uint>? OnNumberChanged; // DeltaV - Add event for number changes

public event Action<ProtoId<JobIconPrototype>>? OnJobIconChanged;

public AgentIDCardWindow()
Expand All @@ -37,6 +41,37 @@ public AgentIDCardWindow()

JobLineEdit.OnTextEntered += e => OnJobChanged?.Invoke(e.Text);
JobLineEdit.OnFocusExit += e => OnJobChanged?.Invoke(e.Text);

// DeltaV - Add handlers for number changes
NumberLineEdit.OnTextEntered += OnNumberEntered;
NumberLineEdit.OnFocusExit += OnNumberEntered;

// DeltaV - Filter to only allow digits
NumberLineEdit.OnTextChanged += args =>
{
if (args.Text.Length > MaxNumberLength)
{
NumberLineEdit.Text = args.Text[..MaxNumberLength];
}

// Filter to digits only
var newText = string.Concat(args.Text.Where(char.IsDigit));
if (newText != args.Text)
NumberLineEdit.Text = newText;
};
}

// DeltaV - Add number validation and event
private void OnNumberEntered(LineEdit.LineEditEventArgs args)
{
if (uint.TryParse(args.Text, out var number) && number > 0)
OnNumberChanged?.Invoke(number);
}
Comment on lines +64 to +69
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add null/empty input handling

The number validation should explicitly handle null or empty input cases.

 private void OnNumberEntered(LineEdit.LineEditEventArgs args)
 {
+    if (string.IsNullOrEmpty(args.Text))
+        return;
+
     if (uint.TryParse(args.Text, out var number) && number > 0)
         OnNumberChanged?.Invoke(number);
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// DeltaV - Add number validation and event
private void OnNumberEntered(LineEdit.LineEditEventArgs args)
{
if (uint.TryParse(args.Text, out var number) && number > 0)
OnNumberChanged?.Invoke(number);
}
// DeltaV - Add number validation and event
private void OnNumberEntered(LineEdit.LineEditEventArgs args)
{
if (string.IsNullOrEmpty(args.Text))
return;
if (uint.TryParse(args.Text, out var number) && number > 0)
OnNumberChanged?.Invoke(number);
}


// DeltaV - Add setter for current number
public void SetCurrentNumber(uint? number)
{
NumberLineEdit.Text = number?.ToString("D4") ?? "";
}

public void SetAllowedIcons(string currentJobIconId)
Expand Down
11 changes: 5 additions & 6 deletions Content.Client/Administration/UI/BanPanel/BanPanel.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ namespace Content.Client.Administration.UI.BanPanel;
[GenerateTypedNameReferences]
public sealed partial class BanPanel : DefaultWindow
{
public event Action<string?, (IPAddress, int)?, bool, byte[]?, bool, uint, string, NoteSeverity, string[]?, bool>? BanSubmitted;
public event Action<string?, (IPAddress, int)?, bool, ImmutableTypedHwid?, bool, uint, string, NoteSeverity, string[]?, bool>? BanSubmitted;
public event Action<string>? PlayerChanged;
private string? PlayerUsername { get; set; }
private (IPAddress, int)? IpAddress { get; set; }
private byte[]? Hwid { get; set; }
private ImmutableTypedHwid? Hwid { get; set; }
private double TimeEntered { get; set; }
private uint Multiplier { get; set; }
private bool HasBanFlag { get; set; }
Expand Down Expand Up @@ -371,9 +371,8 @@ private void OnIpChanged()
private void OnHwidChanged()
{
var hwidString = HwidLine.Text;
var length = 3 * (hwidString.Length / 4) - hwidString.TakeLast(2).Count(c => c == '=');
Hwid = new byte[length];
if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !Convert.TryFromBase64String(hwidString, Hwid, out _))
ImmutableTypedHwid? hwid = null;
if (HwidCheckbox.Pressed && !(string.IsNullOrEmpty(hwidString) && LastConnCheckbox.Pressed) && !ImmutableTypedHwid.TryParse(hwidString, out hwid))
{
ErrorLevel |= ErrorLevelEnum.Hwid;
HwidLine.ModulateSelfOverride = Color.Red;
Expand All @@ -390,7 +389,7 @@ private void OnHwidChanged()
Hwid = null;
return;
}
Hwid = Convert.FromHexString(hwidString);
Hwid = hwid;
}

private void OnTypeChanged()
Expand Down
2 changes: 1 addition & 1 deletion Content.Client/CartridgeLoader/Cartridges/LogProbeUi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ public override void UpdateState(BoundUserInterfaceState state)
if (state is not LogProbeUiState logProbeUiState)
return;

_fragment?.UpdateState(logProbeUiState.PulledLogs);
_fragment?.UpdateState(logProbeUiState); // DeltaV - just take the state
}
}
28 changes: 24 additions & 4 deletions Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,30 @@
BorderColor="#5a5a5a"
BorderThickness="0 0 0 1"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Horizontal" Margin="4 8">
<Label Align="Right" SetWidth="26" ClipText="True" Text="{Loc 'log-probe-label-number'}"/>
<Label Align="Center" SetWidth="100" ClipText="True" Text="{Loc 'log-probe-label-time'}"/>
<Label Align="Left" SetWidth="390" ClipText="True" Text="{Loc 'log-probe-label-accessor'}"/>
<BoxContainer Orientation="Vertical" Margin="4 8">
<!-- DeltaV begin - Add title label -->
<Label Name="TitleLabel"
Text="{Loc 'log-probe-header-access'}"
StyleClasses="LabelHeading"
HorizontalAlignment="Center"
Margin="0 0 0 8"/>
<!-- DeltaV end -->

<!-- DeltaV begin - Add card number display -->
<Label Name="CardNumberLabel"
StyleClasses="LabelSubText"
HorizontalAlignment="Center"
Margin="0 0 0 8"
Visible="False"/>
<!-- DeltaV end -->

<!-- DeltaV begin - Adjust column headers -->
<BoxContainer Orientation="Horizontal">
<Label Align="Right" SetWidth="26" ClipText="True" Text="{Loc 'log-probe-label-number'}"/>
<Label Align="Center" SetWidth="100" ClipText="True" Text="{Loc 'log-probe-label-time'}"/>
<Label Name="ContentLabel" Align="Left" SetWidth="390" ClipText="True" Text="{Loc 'log-probe-label-accessor'}"/>
</BoxContainer>
<!-- DeltaV end -->
</BoxContainer>
</PanelContainer>
<ScrollContainer VerticalExpand="True" HScrollEnabled="True">
Expand Down
109 changes: 107 additions & 2 deletions Content.Client/CartridgeLoader/Cartridges/LogProbeUiFragment.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
using Content.Shared.CartridgeLoader.Cartridges;
using System.Linq; // DeltaV
using Content.Client.DeltaV.CartridgeLoader.Cartridges; // DeltaV
using Content.Shared.CartridgeLoader.Cartridges;
using Content.Shared.DeltaV.CartridgeLoader.Cartridges; // DeltaV
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
Expand All @@ -13,10 +16,112 @@ public LogProbeUiFragment()
RobustXamlLoader.Load(this);
}

public void UpdateState(List<PulledAccessLog> logs)
// DeltaV begin - Update to handle both types of data
public void UpdateState(LogProbeUiState state)
{
ProbedDeviceContainer.RemoveAllChildren();

if (state.NanoChatData != null)
{
SetupNanoChatView(state.NanoChatData.Value);
DisplayNanoChatData(state.NanoChatData.Value);
}
else
{
SetupAccessLogView();
if (state.PulledLogs.Count > 0)
DisplayAccessLogs(state.PulledLogs);
}
}

private void SetupNanoChatView(NanoChatData data)
{
TitleLabel.Text = Loc.GetString("log-probe-header-nanochat");
ContentLabel.Text = Loc.GetString("log-probe-label-message");

// Show card info if available
var cardInfo = new List<string>();
if (data.CardNumber != null)
cardInfo.Add(Loc.GetString("log-probe-card-number", ("number", $"#{data.CardNumber:D4}")));

// Add recipient count
cardInfo.Add(Loc.GetString("log-probe-recipients", ("count", data.Recipients.Count)));

CardNumberLabel.Text = string.Join(" | ", cardInfo);
CardNumberLabel.Visible = true;
}

private void SetupAccessLogView()
{
TitleLabel.Text = Loc.GetString("log-probe-header-access");
ContentLabel.Text = Loc.GetString("log-probe-label-accessor");
CardNumberLabel.Visible = false;
}

private void DisplayNanoChatData(NanoChatData data)
{
// First add a recipient list entry
var recipientsList = Loc.GetString("log-probe-recipient-list") + "\n" + string.Join("\n",
data.Recipients.Values
.OrderBy(r => r.Name)
.Select(r => $" {r.Name}" +
(string.IsNullOrEmpty(r.JobTitle) ? "" : $" ({r.JobTitle})") +
$" | #{r.Number:D4}"));

var recipientsEntry = new LogProbeUiEntry(0, "---", recipientsList);
ProbedDeviceContainer.AddChild(recipientsEntry);

var count = 1;
foreach (var (partnerId, messages) in data.Messages)
{
// Show only successfully delivered incoming messages
var incomingMessages = messages
.Where(msg => msg.SenderId == partnerId && !msg.DeliveryFailed)
.OrderByDescending(msg => msg.Timestamp);

foreach (var msg in incomingMessages)
{
var messageText = Loc.GetString("log-probe-message-format",
("sender", $"#{msg.SenderId:D4}"),
("recipient", $"#{data.CardNumber:D4}"),
("content", msg.Content));

var entry = new NanoChatLogEntry(
count,
TimeSpan.FromSeconds(Math.Truncate(msg.Timestamp.TotalSeconds)).ToString(),
messageText);

ProbedDeviceContainer.AddChild(entry);
count++;
}

// Show only successfully delivered outgoing messages
var outgoingMessages = messages
.Where(msg => msg.SenderId == data.CardNumber && !msg.DeliveryFailed)
.OrderByDescending(msg => msg.Timestamp);

foreach (var msg in outgoingMessages)
{
var messageText = Loc.GetString("log-probe-message-format",
("sender", $"#{msg.SenderId:D4}"),
("recipient", $"#{partnerId:D4}"),
("content", msg.Content));

var entry = new NanoChatLogEntry(
count,
TimeSpan.FromSeconds(Math.Truncate(msg.Timestamp.TotalSeconds)).ToString(),
messageText);

ProbedDeviceContainer.AddChild(entry);
count++;
}
}
}
// DeltaV end
Comment on lines +61 to +119
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add null checks for data.CardNumber to prevent exceptions

In DisplayNanoChatData, data.CardNumber is used without null checks, which can cause a NullReferenceException if CardNumber is null. Ensure that data.CardNumber has a value before using it.

Apply this diff to fix the issue:

+       if (data.CardNumber == null)
+           return;

Add this check at the beginning of DisplayNanoChatData to handle cases where CardNumber is null.

Committable suggestion skipped: line range outside the PR's diff.


// DeltaV - Handle this in a separate method
private void DisplayAccessLogs(List<PulledAccessLog> logs)
{
//Reverse the list so the oldest entries appear at the bottom
logs.Reverse();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<BoxContainer
xmlns="https://spacestation14.io"
xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
HorizontalExpand="True">
<Button Name="ChatButton"
StyleClasses="ButtonSquare"
HorizontalExpand="True"
MaxSize="137 64"
Margin="0 1">
<BoxContainer Orientation="Horizontal"
HorizontalExpand="True"
VerticalExpand="True"
MinWidth="132"
Margin="6 4"
VerticalAlignment="Center">
<!-- Unread indicator dot -->
<PanelContainer Name="UnreadIndicator"
MinSize="8 8"
MaxSize="8 8"
VerticalAlignment="Center"
Margin="0 0 6 0">
<PanelContainer.PanelOverride>
<graphics:StyleBoxFlat
BackgroundColor="#17c622"
BorderColor="#0f7a15" />
</PanelContainer.PanelOverride>
</PanelContainer>
Comment on lines +17 to +27
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Use theme-aware colors for better accessibility.

The unread indicator uses hardcoded colors (#17c622, #0f7a15) which might not respect system theme or accessibility settings.

Consider using theme-aware color resources:

-BackgroundColor="#17c622"
-BorderColor="#0f7a15"
+BackgroundColor="{DynamicResource positiveGreenColor}"
+BorderColor="{DynamicResource positiveGreenDarkColor}"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<PanelContainer Name="UnreadIndicator"
MinSize="8 8"
MaxSize="8 8"
VerticalAlignment="Center"
Margin="0 0 6 0">
<PanelContainer.PanelOverride>
<graphics:StyleBoxFlat
BackgroundColor="#17c622"
BorderColor="#0f7a15" />
</PanelContainer.PanelOverride>
</PanelContainer>
<PanelContainer Name="UnreadIndicator"
MinSize="8 8"
MaxSize="8 8"
VerticalAlignment="Center"
Margin="0 0 6 0">
<PanelContainer.PanelOverride>
<graphics:StyleBoxFlat
BackgroundColor="{DynamicResource positiveGreenColor}"
BorderColor="{DynamicResource positiveGreenDarkColor}" />
</PanelContainer.PanelOverride>
</PanelContainer>


<!-- Text container -->
<BoxContainer Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True"
VerticalAlignment="Center">
<RichTextLabel Name="NameLabel"
StyleClasses="LabelHeading"
HorizontalExpand="True"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="0 -2 0 0" />
<Label Name="JobLabel"
StyleClasses="LabelSubText"
HorizontalExpand="True"
ClipText="False"
HorizontalAlignment="Center" />
</BoxContainer>
</BoxContainer>
</Button>
Comment on lines +5 to +47
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Enhance accessibility and user feedback.

The button lacks important accessibility features and visual feedback states:

  • No tooltip for additional context
  • No ARIA labels or roles
  • No visual feedback for hover/pressed states

Consider adding:

 <Button Name="ChatButton"
         StyleClasses="ButtonSquare"
+        ToolTip="{Binding TooltipText}"
+        AccessibleName="{Binding Name}"
+        AccessibleDescription="{Binding JobTitle}"
         HorizontalExpand="True"

Committable suggestion skipped: line range outside the PR's diff.

</BoxContainer>
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using Content.Shared.DeltaV.CartridgeLoader.Cartridges;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;

namespace Content.Client.DeltaV.CartridgeLoader.Cartridges;

[GenerateTypedNameReferences]
public sealed partial class NanoChatEntry : BoxContainer
{
public event Action<uint>? OnPressed;
private uint _number;
private Action<EventArgs>? _pressHandler;

public NanoChatEntry()
{
RobustXamlLoader.Load(this);
}

public void SetRecipient(NanoChatRecipient recipient, uint number, bool isSelected)
{
// Remove old handler if it exists
if (_pressHandler != null)
ChatButton.OnPressed -= _pressHandler;

_number = number;

// Create and store new handler
_pressHandler = _ => OnPressed?.Invoke(_number);
ChatButton.OnPressed += _pressHandler;

Comment on lines +20 to +31
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add input validation for the recipient parameter

The method should validate the input parameter to prevent potential null reference exceptions.

Here's a suggested implementation:

 public void SetRecipient(NanoChatRecipient recipient, uint number, bool isSelected)
 {
+    ArgumentNullException.ThrowIfNull(recipient);
+
     // Remove old handler if it exists
     if (_pressHandler != null)
         ChatButton.OnPressed -= _pressHandler;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public void SetRecipient(NanoChatRecipient recipient, uint number, bool isSelected)
{
// Remove old handler if it exists
if (_pressHandler != null)
ChatButton.OnPressed -= _pressHandler;
_number = number;
// Create and store new handler
_pressHandler = _ => OnPressed?.Invoke(_number);
ChatButton.OnPressed += _pressHandler;
public void SetRecipient(NanoChatRecipient recipient, uint number, bool isSelected)
{
ArgumentNullException.ThrowIfNull(recipient);
// Remove old handler if it exists
if (_pressHandler != null)
ChatButton.OnPressed -= _pressHandler;
_number = number;
// Create and store new handler
_pressHandler = _ => OnPressed?.Invoke(_number);
ChatButton.OnPressed += _pressHandler;

NameLabel.Text = recipient.Name;
JobLabel.Text = recipient.JobTitle ?? "";
JobLabel.Visible = !string.IsNullOrEmpty(recipient.JobTitle);
UnreadIndicator.Visible = recipient.HasUnread;

ChatButton.ModulateSelfOverride = isSelected ? NanoChatMessageBubble.OwnMessageColor : null;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<BoxContainer xmlns="https://spacestation14.io"
xmlns:customControls="clr-namespace:Content.Client.Administration.UI.CustomControls"
Margin="4"
Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
<Label Name="NumberLabel"
Align="Right"
SetWidth="26"
ClipText="True" />
<Label Name="TimeLabel"
Align="Center"
SetWidth="100"
ClipText="True" />
<Label Name="MessageLabel"
Align="Left"
MinWidth="390"
HorizontalExpand="True"
ClipText="False" />
</BoxContainer>
<customControls:HSeparator Margin="0 5 0 5" />
</BoxContainer>
Loading
Loading