Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
220 commits
Select commit Hold shift + click to select a range
c725eba
Tweak: Nerfed Juggernaut Ult (#2542)
RedFoxIV Sep 15, 2025
59ba449
Announcers Fixed (#2543)
Mike32oz Sep 15, 2025
19b7751
Automatic Changelog Update (#2543)
SimpleStation14 Sep 15, 2025
20ac421
Fix formatting IDE0055 warnings in VS Code (#33669)
CrafterKolyan Dec 1, 2024
b1f46ae
A kit to help new botanists discover chemistry (#31738)
drakewill-CRL Sep 5, 2024
308d2ee
Remake bottles and syringes names to use labels (#29956)
lzk228 Sep 7, 2024
1c5b5c1
Syringe gun! (#32112)
ScarKy0 Oct 22, 2024
e69b093
wielding refactor/fixes (#32188)
deltanedas Jan 5, 2025
41afe8e
Fix camera recoil system overriding all other eye offsets (#29146)
DrSmugleaf Jul 3, 2024
f0263aa
Make camera recoil system only refresh offset when its values change …
DrSmugleaf Jul 3, 2024
5e09980
Allow `zoom` command to modify an eye's PVS range (#29245)
ElectroJr Jul 3, 2024
d66ba53
Add conditional camera offset based on cursor - Hristov Rework, Part …
SlamBamActionman Jan 27, 2025
0b6387b
Hristov & .60 changes - Hristov Rework, Part 2 (#31662)
SlamBamActionman Feb 4, 2025
99bb7fc
Wizard Mind Swap Spell (#33416)
ActiveMammmoth Dec 16, 2024
fd7e8cc
Diona chirping & Nymph vocals (#32511)
Pinkbat5 Dec 20, 2024
69b784d
Add bleating accent to goats (#34273)
Tayrtahn Jan 8, 2025
87b3e9c
Void's Applause (#34591)
keronshb Jan 31, 2025
f94d043
Wizard Touch Spells (Smite, Cluwne's Curse, Slippery Slope) (#34531)
keronshb Feb 2, 2025
58ea713
Wizard Item Recall Spell (#34411)
ScarKy0 Feb 8, 2025
ea7c262
Remove bogus C# finalizers (#28315)
PJB3005 May 27, 2024
d21cf9d
Add doc comments to target action components (#29982)
ShadowCommander Jul 13, 2024
a9d70b4
Make it possible to hide full health bars below a total damage thresh…
DrSmugleaf May 25, 2024
4a686ca
Remove obsolete functions from tile commands. (#31112)
Mervill Aug 23, 2024
9931151
Welded secret doors no longer say they are welded shut. (#33365)
ScarKy0 Nov 19, 2024
575bd7e
HOTFIX Tweaked air alarm default settings for nitrogen breathing crew…
Errant-4 Jan 12, 2025
f1025cb
add construction for carp statue (#31261)
deltanedas Aug 28, 2024
b34da8f
make emergency lights (de)constructable (#32945)
Boolean-Buckeye Nov 4, 2024
0e5c79b
Radiation blocker values for directional plasma and uranium windows (…
K-Dynamic Sep 8, 2024
803eea8
Added plastitanium walls and windows (#31178)
Unisol Aug 29, 2024
dd486f2
Half Revert #31978 (#33160)
cohanna Nov 13, 2024
a82c5b9
Ground Light Post Crafting Description Fix (#33920)
TiniestShark Dec 18, 2024
5a702c9
Wood walls from barricades (#33902)
JustinWinningham Dec 21, 2024
c893f9e
Removed Interior Shuttle Walls (#34261)
ps3moira Apr 19, 2025
78c0110
Decrease hp for rusted walls (#34043)
lzk228 Jan 1, 2025
13b0fe8
fixrotations - Modified Targetted Entities (#34638)
southbridge-fur Jan 27, 2025
c9ce1af
Fix the folded chair damage inspection (#31378)
Winkarst-cpu Aug 24, 2024
6bc8370
Reduced atmos canister sell price (#31965)
K-Dynamic Sep 11, 2024
9fc94e1
Replace obsolete code in GasPortableSystem (#31407)
Mervill Aug 25, 2024
630fd53
Made anchor visuals generic (#33810)
TGRCdev Dec 11, 2024
ecedd8e
Increase lockout threshold (#29504)
Partmedia Jun 27, 2024
466e754
Fix air vent and scrubber not requiring power (#29544)
slarticodefast Jun 29, 2024
f27b463
fix(BatterySelfRecharger): Fully charge BatterySelfRechargers (#30627)
Brandon-Huu Sep 24, 2024
2b7ff4a
Fixes HoS's energy shotgun not being marked as restricted contraband …
ArtisticRoomba Sep 29, 2024
40a3c69
Various item contraband fixes (#32614)
ArtisticRoomba Oct 3, 2024
a50521e
CHIMP and APE particle speed increase (#32690)
K-Dynamic Oct 8, 2024
a01731d
Rework the HoS's Energy Shotgun (Varying energy consumption depending…
BramvanZijp Dec 11, 2024
864220a
Fix battery charging stopping just short of being full (#34028)
Errant-4 Jan 10, 2025
eb76f6a
Check air alarm sensors when repowering (#29857)
osjarw Jul 9, 2024
8bae7b4
fix passive vent sprite in construction menu (#29820)
slarticodefast Jul 9, 2024
97e2740
Delete nonsense solar assembly construction through the Construction …
Hreno Sep 4, 2024
21b12f7
Gas pipe sensors (#33128)
chromiumboy Nov 22, 2024
88263cf
Makes it possible to disable the vent pressure lockout temporarily wi…
PotentiallyTom Sep 22, 2024
bdbe65a
Fixed collision for gas and volumetric pumps (#32471)
august-sun Sep 27, 2024
3235774
Predicted gas pumps (#33717)
metalgearsloth Dec 7, 2024
3f56f4f
add default page support for the guidebook (#28772)
EmoGarbage404 Jun 9, 2024
bc3ddfb
Open the guidebook when people with less than an hour playing join th…
AJCM-git Jun 9, 2024
cb988e6
Redo new player & controls guidebooks (#28794)
EmoGarbage404 Jun 9, 2024
59b74e2
Guidebook updates for Antagonist entries (#31075)
UBlueberry Aug 19, 2024
831f445
Amend spacelaw to allow zookeepers to have tranq shotguns. (#30237)
IProduceWidgets Jul 22, 2024
ca3d541
Update space law for contraband upate (#30937)
Chief-Engineer Aug 12, 2024
ac2353e
Implement approved rule changes (#34233)
nikthechampiongr Jan 7, 2025
a193d2e
guide on agrichem and botanicals guidebook update (#31896)
Ian321 Sep 7, 2024
6b229e8
Special reagents now appear in the guidebook (#34265)
Alpaccalypse Jan 7, 2025
2f8fc6f
Fix RSI validator and integration tests compile
Spatison Sep 17, 2025
ab6d685
Crew monitoring crate updated to contain flatpacks, science access in…
Plykiya Nov 20, 2024
73cb802
EntityTables for sec belts and webbing (#30900)
Plykiya Aug 11, 2024
905eb27
Make the security belt contain more useful items by default (#32291)
Blackern5000 Oct 30, 2024
f5a9f00
make ore indestructible (#31182)
EmoGarbage404 Aug 19, 2024
aef7d6c
various material & ore inhands (#33342)
muburu Nov 24, 2024
fb581da
Removed UseDelay component from RCD (#34149)
Booblesnoot42 Jan 1, 2025
b614fc5
Fix ai upload console itemslot whitelist (#31900)
lzk228 Sep 6, 2024
5b2859d
Bended radiator (#34251)
justdie12 Jan 11, 2025
447e14a
Make miners respect AtmosDeviceUpdateEvent.dt (#29522)
quatre Jun 28, 2024
8d11b3e
add atmosia to devmap (#32460)
Ilya246 Oct 26, 2024
3d5c917
Fix portable scrubber appearing powered on spawn (#34274)
Tayrtahn Jan 7, 2025
12b396c
Adds better description to pneumatic valve and build menu description…
ArtisticRoomba Jan 27, 2025
64fc95f
make tesla brighter (#31357)
qwerltaz Sep 4, 2024
0401477
Temporarily make singularity a bit harder to loose as non-antag (#33358)
SaphireLattice Nov 16, 2024
44bace7
Increase (SUPER)PACMAN ramp rate/tolerance (#31403)
PJB3005 Aug 25, 2024
9b38941
Fix: SMES now has wirepanels visuals (#33808)
ArtisticRoomba Dec 10, 2024
329721d
Removed references to pipestacking and changed example setup in Guide…
JIPDawg Jul 20, 2024
718d8f6
Embed a few more Cryogenics chems in Guidebook (#27935)
Ghagliiarghii May 12, 2024
0964524
Guidebook typo fixes (#31159)
iztokbajcar Aug 18, 2024
f30c407
Add DoPopup data field to OnUseTimerTrigger (#28691)
DrSmugleaf Jun 8, 2024
aa00794
Add guidebook protodata tag: embed prototype values in guidebook text…
Tayrtahn Sep 12, 2024
3c0843d
Engineering guidebook megaupdate v2 (#33062)
ArtisticRoomba Jan 27, 2025
b3cfb32
Fix airsensors not having a nitrogen threshold (#34689)
ArtisticRoomba Jan 28, 2025
08daa1e
Fix plant holder double solution transfer (#32813)
slarticodefast Oct 16, 2024
7006e55
Fix contraband never getting added to vend inventory (#32431)
goet Sep 25, 2024
1a8889b
Fully Revert Clown Waddling (#32652)
Golinth Oct 6, 2024
4d0c6df
Remove sentience from clean and medi bot (#32383)
VasilisThePikachu Oct 3, 2024
60bbb62
Firebot Tweaks (#32629)
Golinth Oct 13, 2024
5863a7d
VIM have Passenger Access. (#32302)
Jophire Sep 23, 2024
7842768
Several small SFX tweaks (#28897)
LittleNyanCat Oct 17, 2024
63955a8
Replace AttachToGridOrMap with DropNextTo (#27950)
ShadowCommander May 12, 2024
ea85b3c
Fixes dropping item in container (#29900)
Plykiya Jul 12, 2024
1290a9f
Fix Freezing on throwing jetpack (#30223)
Cojoke-dot Jul 22, 2024
8c42f46
Fix DoDrop to DropNextTo in container cases (#30911)
TokenStyle Aug 12, 2024
f52830f
Fix collidable held entities blocking themselves while being dropped …
DrSmugleaf Aug 18, 2024
9a41638
fix selfunremoveable component being bypassed by hand pickup verb (#3…
EmoGarbage404 Aug 19, 2024
c59c754
Remove inaccurate admin log when moving a held item (#32525)
ElectroJr Oct 14, 2024
a105c62
Add `IsQueuedForDeletion` checks to interaction system (#32526)
ElectroJr Oct 14, 2024
5c3bab2
Fix PlantHolder interactions & InteractionSystem assert (#32874)
ElectroJr Oct 18, 2024
d033f2e
Added Popup for the Ligneous plant mutation when using hands. (#33136)
Tr1bute Nov 4, 2024
9a50b55
allow paper labels on seeds (#34450)
Ian321 Feb 8, 2025
4e129a5
All hostile turret (#33970)
CaptainMaru Dec 20, 2024
17c8ecf
Nanotrasen, Syndicate factions are now hostile to Dragons and Carps (…
AverageNotDoingAnythingEnjoyer Dec 20, 2024
7f8918c
Wizard Staff of Animation (#34649)
ActiveMammmoth Feb 13, 2025
b22fdc9
Add admin log for ghost warping (#33636)
DrSmugleaf Nov 29, 2024
46cee20
Add a popup message when ghost Boo action does nothing (#34369)
Tayrtahn Jan 10, 2025
003b8f8
fix ghost_component.ftl locale grammar (#34372)
ArtisticRoomba Jan 11, 2025
3bbc5b6
Fix recycler eating materials (Salvage mains rejoice) (#32144)
beck-thompson Sep 18, 2024
b464c85
Added distinct ad and bye chatter to Dr. Gibb vending (#34182)
Alpaccalypse Jan 7, 2025
ce73674
Let ghosts sometimes make certain devices say creepy things (#34368)
Tayrtahn Jan 11, 2025
c9259fa
Add admin remarks button to lobby (#31761)
dffdff2423 Nov 16, 2024
221ecd5
Give silicons proper lobby/character editor previews (#33763)
PJB3005 Dec 8, 2024
a83d115
Word wrap for vote titles (#31248)
PJB3005 Aug 21, 2024
eb76877
Add Votekick functionality (#32005)
SlamBamActionman Sep 26, 2024
b477e0d
Lower in-round votekick requirements (#32953)
SlamBamActionman Nov 1, 2024
a3e0adf
Add webhook for votekicks (#32513)
SlamBamActionman Sep 29, 2024
71248f7
Allow votekicks to be initiated in the lobby (#32528)
SlamBamActionman Nov 1, 2024
9903ee7
Zombies keep their anomalies on zombification (#33867)
pcaessayrs Dec 17, 2024
26a7cac
move TriggerExplosion to shared (#30227)
deltanedas Sep 19, 2024
49fb60e
Block gas analyzer updates if the UI doesn't open (#28376)
metalgearsloth May 29, 2024
92c4aee
Replace obsolete EntityCoordiates.InRange() with TransformSystem.InRa…
Plykiya Jul 13, 2024
7872909
Fix arrow pointing animation (#30134)
Plykiya Jul 19, 2024
0bfc09d
Make pointing cooldown a cvar (#30623)
DrSmugleaf Aug 4, 2024
63791ea
Replace obsolete Tile Access methods (#32508)
MilenVolf Sep 28, 2024
5a3be69
Nuke Now Requires the Disk to be Inserted to Toggle Anchor (#29565)
Cojoke-dot Sep 9, 2024
526e60d
fix(SpecialRespawn): Check if prototype exists before attemping to re…
Brandon-Huu Aug 20, 2024
a9bc268
Update SpawnAfterInteractSystem.cs to not use Component.Owner (#29968)
Plykiya Jul 13, 2024
d6c8a60
Use TurfSystem.IsTileBlocked instead of TurfHelpers (#32174)
Winkarst-cpu Sep 18, 2024
4e4f7e3
Replace obsolete GetTilesIntersecting methods (#32455)
MilenVolf Dec 1, 2024
a264c4b
Replace some sound PlayEntity with PlayPvs (#34317)
ElectroJr Jan 10, 2025
0107457
Change forensic pad to use label isntead of name changing (#31842)
lzk228 Sep 12, 2024
7109ebe
Fix bounties(and potentially other things) running out of ids (#32700)
nikthechampiongr Oct 10, 2024
fa31bc7
Fix DisplayVotes doing nothing for a vote (#33170)
DrSmugleaf Nov 5, 2024
8bc2bd1
Fixed doors being blocked with mousetraps, and other Collidable items…
zHonys Jan 13, 2025
63ab43e
add gateway beacon for mapping (#32121)
deltanedas Sep 14, 2024
f9fccbc
Adds beacon to cog station vox box (#33000)
joshepvodka Oct 28, 2024
a77d6f0
changed some radio colors to be more distinguishable (#30133)
Moomoobeef Jul 26, 2024
e0758a5
Change the science radio channel color (#31319)
Winkarst-cpu Aug 26, 2024
7aef9b9
Other colour of the binary channel (#33841)
Nimfar11 Dec 14, 2024
790be33
Turn off PointLights on VendingMachines when broken or off. (#33513)
red15 Nov 25, 2024
ae53d2f
change locking to use ComplexInteraction (#34326)
deltanedas Jan 9, 2025
9c0b100
Sentient medibot now can inject (#32110)
godisdeadLOL Jan 29, 2025
c6d20b2
Syndicate and CentComm Radio Implanters (#33533)
thetolbean Jan 30, 2025
14dafbd
Derelict icon hotfix (#33768)
ScarKy0 Dec 9, 2024
7f88244
Rename Dungeon Master Laws to not run into copyright problems (#33678)
Litraxx Dec 16, 2024
44c5e6a
Fixes borgs not being able to check their laws in crit (#34133)
PopGamer45 Dec 31, 2024
3d403a7
More ItemTogglePointLight fixes (#31655)
slarticodefast Aug 31, 2024
10e778e
Let station AI use long range fax machines (#32929)
NoElkaTheGod Oct 21, 2024
299b287
Rename cryobed yml file (#34134)
Booblesnoot42 Dec 30, 2024
0a8ae38
Revert "Split Emag in half (#1426)"
Spatison Sep 18, 2025
5e545ca
Seperate EMAG into EMAG and Authentication Disruptor (#34337)
ScarKy0 Jan 30, 2025
ff7efc9
Move GameTicker.RoundDuration to Shared (#29425)
DrSmugleaf Jun 29, 2024
ea2e185
cleanup melee (#32486)
notquitehadouken Oct 14, 2024
58f57b5
Fix hitting through directional windows (and more!) (#34793)
SlamBamActionman Feb 2, 2025
f133b85
Purge uses of TransformComponent.GetWorldPositionRotation... variants…
TemporalOroboros Feb 11, 2025
e358190
Prevent virtual item storage and popups (#30020)
themias Jul 14, 2024
de1d15c
Allow a specific hand to be passed into TrySpawnVirtualItemInHand (#3…
DrSmugleaf Aug 19, 2024
139484b
Pulled item interaction fix (#34587)
themias Feb 11, 2025
817a0b2
Fix 38 non-obsolete warnings (#33794)
SpaceManiac Feb 11, 2025
67d0b29
Fix prying shut unpowered doors (#35380)
PJB3005 Feb 22, 2025
5e02c90
Wizard Fix - Summon Ghost Event no longer shows Admin Ghosts or Reven…
keronshb Feb 16, 2025
7f30fbe
Fix/Addition - Wizard Survivor Antag Status (#35226)
keronshb Feb 23, 2025
97630ce
Staff of Animation Fixes (#35491)
ActiveMammmoth Feb 27, 2025
5b38e8c
Adds Test & Integration Test commands to the Visual Studio Code confi…
AndrewMontagne Apr 18, 2025
f79305f
Fixed bug where ID card computer defaulted to the atmos as the job ic…
beck-thompson Jun 1, 2024
f1473e7
Fix wrong system usage (#33679)
MilenVolf Dec 1, 2024
3891330
Update ActionAlertTooltip.cs to use TryFromMarkup (#29975)
Winkarst-cpu Jul 13, 2024
72b36c7
Localization cooldown/remaining string in alerts (#32282)
chavonadelal Sep 18, 2024
20c4761
Set ahelp new player icon to use minutes, not seconds (#29014)
LankLTE Jun 15, 2024
b2850ba
Bwoink fix (#28899)
nikthechampiongr Jun 15, 2024
99addf5
Fix Bwoink Player sorting again.... (#30580)
Titian3 Aug 2, 2024
dd357f4
Adds an introductory message to the user-facing ahelp chat window (#3…
deathride58 Dec 9, 2024
5991190
Remove the network tab (#28231)
VasilisThePikachu May 25, 2024
7d02afa
Rewrite the options menu (#28389)
PJB3005 Jun 22, 2024
1773f5d
Added hotkey and controller to re-open end of round scoreboard (#25884)
wafehling Apr 26, 2024
9b101a0
Change unused OpenScoreboardWindow to ToggleRoundEndSummaryWindow and…
JIPDawg Jul 29, 2024
4a595f2
Add keybinds for rotating and flipping objects (#30540)
slarticodefast Aug 13, 2024
5b8f959
Localization hud layout (#31013)
chavonadelal Aug 17, 2024
f78b4e5
Add option to disable bwoink sound. (#33782)
c4llv07e Jan 17, 2025
44d0056
New Feature: Admin Only messages in AHelp (#35283)
Winkarst-cpu Feb 22, 2025
e2f44b5
Only disable panicbunker for admins with AdminFlags.Admin (#33879)
slarticodefast Dec 18, 2024
879f267
Fix whitelist (#31563)
metalgearsloth Aug 28, 2024
3308306
Makes admins not count towards the playercount cap (#33424)
deathride58 Dec 16, 2024
66ee0d4
Fix unban/editing role bans placed in groups. (#30659)
Titian3 Nov 12, 2024
027b7d2
Add completions to addobjective and localize it (#30456)
nikthechampiongr Sep 8, 2024
ae2c613
Add IPIntel API support. (#33339)
VasilisThePikachu Jan 12, 2025
1bd3cbf
Fix IPIntel causing frequent errors with the cleanup job. (#34428)
VasilisThePikachu Jan 14, 2025
1dc919b
Fix race condition causing disconnected admins to appear in adminwho …
PJB3005 Dec 24, 2024
1cf63fd
Persist deadmin to database, add admin suspension system (#34048)
PJB3005 Jan 14, 2025
a4c1746
Remove baby jail (#34443)
VasilisThePikachu Jan 15, 2025
4aa37aa
HOTFIX Admin playerlist character update fix (#34560)
Errant-4 Jan 21, 2025
feef85e
Fix cauterization spam from space damage (#32080)
themias Sep 11, 2024
c8f8601
Fix reagents with ReagentData being duplicated (#30983)
SlamBamActionman Aug 16, 2024
78bcdb6
Fix for low zombie blood (#32532)
insoPL Oct 19, 2024
6daadff
Prevent pulling when teleporting (#33252)
thetolbean Dec 16, 2024
75f0531
Fix DNA scrambler updating station record (#34091)
themias Jan 15, 2025
7112f95
DNA scrambler examine fixes (#34920)
12rabbits Feb 6, 2025
0bc7a49
Move DnaComponent to shared (#35012)
poklj Feb 10, 2025
c58368c
Players with unknown playtimes now are tagged as new players, take 2 …
Errant-4 Mar 5, 2025
5a37472
Fix Ahelp window playerlist resize (#35747)
Errant-4 Mar 10, 2025
fe7cf1d
lock bwoinkwindow bottom bar height (#35896)
Errant-4 Mar 19, 2025
1278426
Better admin note popups text visibility (#29909)
Winkarst-cpu Jul 11, 2024
fffe47b
Note expiry time is now relative instead of using timestamps (#33262)
beck-thompson Nov 15, 2024
04d2dd6
Disable submit admin note button on switch to note (#33456)
Winkarst-cpu Nov 23, 2024
af86138
Fix permission check for whitelists in player panel (#30948)
nikthechampiongr Aug 12, 2024
8fea1c7
Fix false and true in player-panel.ftl (#31043)
IgorAnt028 Aug 15, 2024
c0db80a
Teleport and delete buttons in objects tab. (#28914)
VigersRay Aug 8, 2024
cbb0767
add confirmation to the delete button in objects tab (#30946)
MilonPL Aug 17, 2024
d383f0a
Fix bogus AdminNameOverlay Rider error (#35432)
PJB3005 Feb 24, 2025
f47d63a
[ADMIN] Minor Refactor AdminNameOverlay (#35520)
Schrodinger71 Feb 28, 2025
d4f5914
Increase line spacing of the admin overlay (#35591)
Errant-4 Mar 1, 2025
078e262
Restore the order of admin overlay elements (#35783)
Errant-4 Mar 11, 2025
1fabbf8
Wizmerge (#2545)
DEATHB4DEFEAT Sep 20, 2025
9b293ae
Automatic Changelog Update (#2545)
SimpleStation14 Sep 20, 2025
a8300ba
Merge remote-tracking branch 'ee/master' into jb-merge-ee-master
jb1361 Sep 24, 2025
0fbbe13
Disable workflow on pr
jb1361 Sep 24, 2025
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
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .github/workflows/prtitlecase.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
name: PR Title Case
on:
pull_request_target:
types: [opened, edited, synchronize]
workflow_dispatch:
#pull_request_target:
# types: [opened, edited, synchronize]

env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
Expand Down
44 changes: 44 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,50 @@
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "test",
"command": "dotnet",
"type": "shell",
"args": [
"test",
"--no-build",
"--configuration",
"DebugOpt",
"Content.Tests/Content.Tests.csproj",
"--",
"NUnit.ConsoleOut=0"
],
"group": {
"kind": "test"
},
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
},
{
"label": "integration-test",
"command": "dotnet",
"type": "shell",
"args": [
"test",
"--no-build",
"--configuration",
"DebugOpt",
"Content.IntegrationTests/Content.IntegrationTests.csproj",
"--",
"NUnit.ConsoleOut=0",
"NUnit.MapWarningTo=Failed.ConsoleOut=0",
"NUnit.MapWarningTo=Failed"
],
"group": {
"kind": "test"
},
"presentation": {
"reveal": "silent"
},
"problemMatcher": "$msCompile"
}
]
}
12 changes: 9 additions & 3 deletions Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ public sealed partial class IdCardConsoleWindow : DefaultWindow
private string? _lastJobTitle;
private string? _lastJobProto;

// The job that will be picked if the ID doesn't have a job on the station.
private static ProtoId<JobPrototype> _defaultJob = "Passenger";

public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeManager prototypeManager,
List<ProtoId<AccessLevelPrototype>> accessLevels)
{
Expand Down Expand Up @@ -67,7 +70,6 @@ public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeMana
}

JobPresetOptionButton.OnItemSelected += SelectJobPreset;

_accessButtons.Populate(accessLevels, prototypeManager);
AccessLevelControlContainer.AddChild(_accessButtons);

Expand Down Expand Up @@ -174,11 +176,15 @@ public void UpdateState(IdCardConsoleBoundUserInterfaceState state)
new List<ProtoId<AccessLevelPrototype>>());

var jobIndex = _jobPrototypeIds.IndexOf(state.TargetIdJobPrototype);
if (jobIndex >= 0)
// If the job index is < 0 that means they don't have a job registered in the station records.
// For example, a new ID from a box would have no job index.
if (jobIndex < 0)
{
JobPresetOptionButton.SelectId(jobIndex);
jobIndex = _jobPrototypeIds.IndexOf(_defaultJob);
}

JobPresetOptionButton.SelectId(jobIndex);

_lastFullName = state.TargetIdFullName;
_lastJobTitle = state.TargetIdJobTitle;
_lastJobProto = state.TargetIdJobPrototype;
Expand Down
13 changes: 7 additions & 6 deletions Content.Client/Actions/ActionsSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ private void BaseHandleState<T>(EntityUid uid, BaseActionComponent component, Ba
component.Priority = state.Priority;
component.AttachedEntity = EnsureEntity<T>(state.AttachedEntity, uid);
component.RaiseOnUser = state.RaiseOnUser;
component.RaiseOnAction = state.RaiseOnAction;
component.AutoPopulate = state.AutoPopulate;
component.Temporary = state.Temporary;
component.ItemIconStyle = state.ItemIconStyle;
Expand Down Expand Up @@ -260,13 +261,13 @@ public void UnlinkAllActions()

public void LinkAllActions(ActionsComponent? actions = null)
{
if (_playerManager.LocalEntity is not { } user ||
!Resolve(user, ref actions, false))
{
return;
}
if (_playerManager.LocalEntity is not { } user ||
!Resolve(user, ref actions, false))
{
return;
}

LinkActions?.Invoke(actions);
LinkActions?.Invoke(actions);
}

public override void Shutdown()
Expand Down
27 changes: 10 additions & 17 deletions Content.Client/Actions/UI/ActionAlertTooltip.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,12 @@ public ActionAlertTooltip(FormattedMessage name, FormattedMessage? desc, string?
MaxWidth = TooltipTextMaxWidth,
StyleClasses = {StyleNano.StyleClassTooltipActionRequirements}
};
try
{
requiresLabel.SetMessage(FormattedMessage.FromMarkupOrThrow("[color=#635c5c]" + requires + "[/color]"));
}
catch(Exception e)
{
requiresLabel.SetMessage(e.Message);
}

if (!FormattedMessage.TryFromMarkup("[color=#635c5c]" + requires + "[/color]", out var markup))
return;

requiresLabel.SetMessage(markup);

vbox.AddChild(requiresLabel);
}
}
Expand All @@ -102,16 +100,11 @@ protected override void FrameUpdate(FrameEventArgs args)
if (timeLeft > TimeSpan.Zero)
{
var duration = Cooldown.Value.End - Cooldown.Value.Start;
try
{
_cooldownLabel.SetMessage(FormattedMessage.FromMarkupOrThrow(
$"[color=#a10505]{(int) duration.TotalSeconds} sec cooldown ({(int) timeLeft.TotalSeconds + 1} sec remaining)[/color]"));

}
catch(Exception e)
{
_cooldownLabel.SetMessage(e.Message);
}
if (!FormattedMessage.TryFromMarkup(Loc.GetString("ui-actionslot-duration", ("duration", (int)duration.TotalSeconds), ("timeLeft", (int)timeLeft.TotalSeconds + 1)), out var markup))
return;

_cooldownLabel.SetMessage(markup);
_cooldownLabel.Visible = true;
}
else
Expand Down
44 changes: 32 additions & 12 deletions Content.Client/Administration/AdminNameOverlay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ namespace Content.Client.Administration;
internal sealed class AdminNameOverlay : Overlay
{
[Dependency] private readonly IConfigurationManager _config = default!;
[Dependency] private ILocalizationManager _localization = default!;

private readonly AdminSystem _system;
private readonly IEntityManager _entityManager;
Expand All @@ -27,13 +26,13 @@ internal sealed class AdminNameOverlay : Overlay
//TODO make this adjustable via GUI
private readonly ProtoId<RoleTypePrototype>[] _filter =
["SoloAntagonist", "TeamAntagonist", "SiliconAntagonist", "FreeAgent"];
private readonly string _antagLabelClassic = "";
private readonly string _antagLabelClassic = Loc.GetString("admin-overlay-antag-classic");
private readonly Color _antagColorClassic = Color.OrangeRed;

public AdminNameOverlay(AdminSystem system, IEntityManager entityManager, IEyeManager eyeManager, IResourceCache resourceCache, EntityLookupSystem entityLookup, IUserInterfaceManager userInterfaceManager)
{
IoCManager.InjectDependencies(this);
_antagLabelClassic = _localization.GetString("admin-overlay-antag-classic");

_system = system;
_entityManager = entityManager;
_eyeManager = eyeManager;
Expand All @@ -51,6 +50,8 @@ protected override void Draw(in OverlayDrawArgs args)

//TODO make this adjustable via GUI
var classic = _config.GetCVar(CCVars.AdminOverlayClassic);
var playTime = _config.GetCVar(CCVars.AdminOverlayPlaytime);
var startingJob = _config.GetCVar(CCVars.AdminOverlayStartingJob);

foreach (var playerInfo in _system.PlayerList)
{
Expand All @@ -77,25 +78,44 @@ protected override void Draw(in OverlayDrawArgs args)
}

var uiScale = _userInterfaceManager.RootControl.UIScale;
var lineoffset = new Vector2(0f, 11f) * uiScale;
var lineoffset = new Vector2(0f, 14f) * uiScale;
var screenCoordinates = _eyeManager.WorldToScreen(aabb.Center +
new Angle(-_eyeManager.CurrentEye.Rotation).RotateVec(
aabb.TopRight - aabb.Center)) + new Vector2(1f, 7f);

if (classic && playerInfo.Antag)
var currentOffset = Vector2.Zero;

args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, playerInfo.CharacterName, uiScale, playerInfo.Connected ? Color.Aquamarine : Color.White);
currentOffset += lineoffset;

args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, playerInfo.Username, uiScale, playerInfo.Connected ? Color.Yellow : Color.White);
currentOffset += lineoffset;

if (!string.IsNullOrEmpty(playerInfo.PlaytimeString) && playTime)
{
args.ScreenHandle.DrawString(_font, screenCoordinates + (lineoffset * 2), _antagLabelClassic, uiScale, _antagColorClassic);
args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, playerInfo.PlaytimeString, uiScale, playerInfo.Connected ? Color.Orange : Color.White);
currentOffset += lineoffset;
}
else if (!classic && _filter.Contains(playerInfo.RoleProto.ID))

if (!string.IsNullOrEmpty(playerInfo.StartingJob) && startingJob)
{
var label = _localization.GetString(playerInfo.RoleProto.Name).ToUpper();
var color = playerInfo.RoleProto.Color;
args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, Loc.GetString(playerInfo.StartingJob), uiScale, playerInfo.Connected ? Color.GreenYellow : Color.White);
currentOffset += lineoffset;
}

args.ScreenHandle.DrawString(_font, screenCoordinates + (lineoffset * 2), label, uiScale, color);
if (classic && playerInfo.Antag)
{
args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, _antagLabelClassic, uiScale, Color.OrangeRed);
currentOffset += lineoffset;
}
else if (!classic && _filter.Contains(playerInfo.RoleProto))
{
var label = Loc.GetString(playerInfo.RoleProto.Name).ToUpper();
var color = playerInfo.RoleProto.Color;

args.ScreenHandle.DrawString(_font, screenCoordinates + lineoffset, playerInfo.Username, uiScale, playerInfo.Connected ? Color.Yellow : Color.White);
args.ScreenHandle.DrawString(_font, screenCoordinates, playerInfo.CharacterName, uiScale, playerInfo.Connected ? Color.Aquamarine : Color.White);
args.ScreenHandle.DrawString(_font, screenCoordinates + currentOffset, label, uiScale, color);
currentOffset += lineoffset;
}
}
}
}
4 changes: 2 additions & 2 deletions Content.Client/Administration/Systems/BwoinkSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@ protected override void OnBwoinkTextMessage(BwoinkTextMessage message, EntitySes
OnBwoinkTextMessageRecieved?.Invoke(this, message);
}

public void Send(NetUserId channelId, string text, bool playSound)
public void Send(NetUserId channelId, string text, bool playSound, bool adminOnly)
{
var info = _adminSystem.PlayerInfos.GetValueOrDefault(channelId)?.Connected ?? true;
_audio.PlayGlobal(info ? AHelpUIController.AHelpSendSound : AHelpUIController.AHelpErrorSound,
Filter.Local(), false);

// Reuse the channel ID as the 'true sender'.
// Server will ignore this and if someone makes it not ignore this (which is bad, allows impersonation!!!), that will help.
RaiseNetworkEvent(new BwoinkTextMessage(channelId, channelId, text, playSound: playSound));
RaiseNetworkEvent(new BwoinkTextMessage(channelId, channelId, text, playSound: playSound, adminOnly: adminOnly));
SendInputTextUpdated(channelId, false);
}

Expand Down
4 changes: 1 addition & 3 deletions Content.Client/Administration/UI/AdminMenuWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,14 @@
xmlns:tabs="clr-namespace:Content.Client.Administration.UI.Tabs"
xmlns:playerTab="clr-namespace:Content.Client.Administration.UI.Tabs.PlayerTab"
xmlns:objectsTab="clr-namespace:Content.Client.Administration.UI.Tabs.ObjectsTab"
xmlns:panic="clr-namespace:Content.Client.Administration.UI.Tabs.PanicBunkerTab"
xmlns:baby="clr-namespace:Content.Client.Administration.UI.Tabs.BabyJailTab">
xmlns:panic="clr-namespace:Content.Client.Administration.UI.Tabs.PanicBunkerTab">
<TabContainer Name="MasterTabContainer">
<adminTab:AdminTab />
<adminbusTab:AdminbusTab />
<atmosTab:AtmosTab />
<tabs:RoundTab />
<tabs:ServerTab />
<panic:PanicBunkerTab Name="PanicBunkerControl" Access="Public" />
<baby:BabyJailTab Name="BabyJailControl" Access="Public" />
<playerTab:PlayerTab Name="PlayerTabControl" Access="Public" />
<objectsTab:ObjectsTab Name="ObjectsTabControl" Access="Public" />
</TabContainer>
Expand Down
25 changes: 10 additions & 15 deletions Content.Client/Administration/UI/AdminMenuWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,25 +9,21 @@ namespace Content.Client.Administration.UI;
public sealed partial class AdminMenuWindow : DefaultWindow
{
public event Action? OnDisposed;
[Dependency] private readonly ILocalizationManager _localization = default!;

public AdminMenuWindow()
{
RobustXamlLoader.Load(this);
IoCManager.InjectDependencies(this);
MinSize = new Vector2(650, 250);
Title = _localization.GetString("admin-menu-title");
MasterTabContainer.SetTabTitle((int) TabIndex.Admin, _localization.GetString("admin-menu-admin-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Adminbus, _localization.GetString("admin-menu-adminbus-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Atmos, _localization.GetString("admin-menu-atmos-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Round, _localization.GetString("admin-menu-round-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Server, _localization.GetString("admin-menu-server-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.PanicBunker, _localization.GetString("admin-menu-panic-bunker-tab"));
/*
* TODO: Remove baby jail code once a more mature gateway process is established. This code is only being issued as a stopgap to help with potential tiding in the immediate future.
*/
MasterTabContainer.SetTabTitle((int) TabIndex.BabyJail, _localization.GetString("admin-menu-baby-jail-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Players, _localization.GetString("admin-menu-players-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Objects, _localization.GetString("admin-menu-objects-tab"));
Title = Loc.GetString("admin-menu-title");
MasterTabContainer.SetTabTitle((int) TabIndex.Admin, Loc.GetString("admin-menu-admin-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Adminbus, Loc.GetString("admin-menu-adminbus-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Atmos, Loc.GetString("admin-menu-atmos-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Round, Loc.GetString("admin-menu-round-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Server, Loc.GetString("admin-menu-server-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.PanicBunker, Loc.GetString("admin-menu-panic-bunker-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Players, Loc.GetString("admin-menu-players-tab"));
MasterTabContainer.SetTabTitle((int) TabIndex.Objects, Loc.GetString("admin-menu-objects-tab"));
MasterTabContainer.OnTabChanged += OnTabChanged;
}

Expand All @@ -53,7 +49,6 @@ private enum TabIndex
Round,
Server,
PanicBunker,
BabyJail,
Players,
Objects,
}
Expand Down
34 changes: 19 additions & 15 deletions Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,26 @@
xmlns="https://spacestation14.io"
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls">
<PanelContainer StyleClasses="BackgroundDark">
<SplitContainer Orientation="Horizontal" VerticalExpand="True">
<cc:PlayerListControl Access="Public" Name="ChannelSelector" HorizontalExpand="True" SizeFlagsStretchRatio="1" />
<BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="2">
<BoxContainer Access="Public" Name="BwoinkArea" VerticalExpand="True" />
<BoxContainer Orientation="Horizontal" HorizontalExpand="True">
<CheckBox Visible="True" Name="PlaySound" Access="Public" Text="{Loc 'admin-bwoink-play-sound'}" Pressed="True" />
<Control HorizontalExpand="True" MinWidth="5" />
<Button Visible="True" Name="PopOut" Access="Public" Text="{Loc 'admin-logs-pop-out'}" StyleClasses="OpenBoth" HorizontalAlignment="Left" />
<Control HorizontalExpand="True" />
<Button Visible="False" Name="Bans" Text="{Loc 'admin-player-actions-bans'}" StyleClasses="OpenRight" />
<Button Visible="False" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Kick" Text="{Loc 'admin-player-actions-kick'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Ban" Text="{Loc 'admin-player-actions-ban'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Respawn" Text="{Loc 'admin-player-actions-respawn'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Follow" Text="{Loc 'admin-player-actions-follow'}" StyleClasses="OpenLeft" />
<SplitContainer Orientation="Vertical" ResizeMode="NotResizable">
<SplitContainer Orientation="Horizontal" VerticalExpand="True">
<cc:PlayerListControl Access="Public" Name="ChannelSelector" HorizontalExpand="True" SizeFlagsStretchRatio="2" />
<BoxContainer Orientation="Vertical" HorizontalExpand="True" SizeFlagsStretchRatio="2">
<BoxContainer Access="Public" Name="BwoinkArea" VerticalExpand="True" />
</BoxContainer>
</SplitContainer>
<BoxContainer Orientation="Horizontal" SetHeight="30" >
<CheckBox Name="AdminOnly" Access="Public" Text="{Loc 'admin-ahelp-admin-only'}" ToolTip="{Loc 'admin-ahelp-admin-only-tooltip'}" />
<Control HorizontalExpand="True" MinWidth="5" />
<CheckBox Name="PlaySound" Access="Public" Text="{Loc 'admin-bwoink-play-sound'}" Pressed="True" />
<Control HorizontalExpand="True" MinWidth="5" />
<Button Visible="True" Name="PopOut" Access="Public" Text="{Loc 'admin-logs-pop-out'}" StyleClasses="OpenBoth" HorizontalAlignment="Left" />
<Control HorizontalExpand="True" />
<Button Visible="False" Name="Bans" Text="{Loc 'admin-player-actions-bans'}" StyleClasses="OpenRight" />
<Button Visible="False" Name="Notes" Text="{Loc 'admin-player-actions-notes'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Kick" Text="{Loc 'admin-player-actions-kick'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Ban" Text="{Loc 'admin-player-actions-ban'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Respawn" Text="{Loc 'admin-player-actions-respawn'}" StyleClasses="OpenBoth" />
<Button Visible="False" Name="Follow" Text="{Loc 'admin-player-actions-follow'}" StyleClasses="OpenLeft" />
</BoxContainer>
</SplitContainer>
</PanelContainer>
Expand Down
Loading
Loading