Skip to content
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

March '25 upstream merge #3020

Open
wants to merge 396 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
396 commits
Select commit Hold shift + click to select a range
eefed62
loop latejoin hotfix (#35260)
TytosB Feb 19, 2025
60306dd
centcomm update (#35293)
Emisse Feb 19, 2025
2a124ad
Fix some emotes not respecting pronounces (#35289)
lzk228 Feb 19, 2025
5642d7c
Saxophone fix (#35257)
SpaceLizard24 Feb 19, 2025
c62ed86
Automatic changelog update
PJBot Feb 19, 2025
2beac02
Make CharacterPickerButton the same height for dwarves as for non-dwa…
Absotively Feb 19, 2025
5f41726
Returns Explosive Technology recipes to Protolathes (#35303)
K-Dynamic Feb 19, 2025
5148e2f
Automatic changelog update
PJBot Feb 19, 2025
9b7339e
Make OuterClothing hide PDA and belt sprites under it. (#33448)
Winkarst-cpu Feb 19, 2025
353e988
Automatic changelog update
PJBot Feb 19, 2025
9bde78a
Fixing intercom encryption key dropping (#34582)
Booblesnoot42 Feb 19, 2025
bc1c82a
Automatic changelog update
PJBot Feb 19, 2025
cc18ba7
Fix ExaminableHunger spelling (#35309)
MilenVolf Feb 19, 2025
22254a1
ports two barsigns from frontier (#35296)
robinthedragon Feb 19, 2025
201ec61
Automatic changelog update
PJBot Feb 19, 2025
33b9149
Space Lizard Plushie In-hands (#35295)
SeamLesss Feb 19, 2025
f189bdc
Removed Contraband Status from Flares (#34705)
FungiFellow Feb 20, 2025
8b50ac7
Automatic changelog update
PJBot Feb 20, 2025
3e449f7
Fix: Toys sounds (#33449)
Winkarst-cpu Feb 20, 2025
112d7c3
Automatic changelog update
PJBot Feb 20, 2025
1079da4
Update engine to v247.1.0 (#35324)
ElectroJr Feb 20, 2025
3ce81d3
Added a component that lets ranged weapons make melee attacks. (#29484)
Siigiil Feb 20, 2025
5e0a1d8
Fix missing errorOnMissing arg being passed thru (#35328)
metalgearsloth Feb 20, 2025
c8dce26
Replace obsolete FromMap calls with ToCoordinates (#35304)
VerinSenpai Feb 20, 2025
a4001fb
Purge uses of TransformComponent.Anchored.set. Also adds parentheses.…
TemporalOroboros Feb 20, 2025
fa35c96
Revert "Purge uses of TransformComponent.Anchored.set. Also adds pare…
metalgearsloth Feb 20, 2025
580f908
Fix to make all corpses butcher able and better disposable (#33727)
Zokkie Feb 20, 2025
5e9e151
Automatic changelog update
PJBot Feb 20, 2025
abb20c0
Remove storage hotbar GUI bandaid (#35054)
metalgearsloth Feb 20, 2025
93021c4
Automatic changelog update
PJBot Feb 20, 2025
09f7539
Require hwid (#35331)
nikthechampiongr Feb 20, 2025
53c82eb
2 lines yaml cleanup (#35338)
lzk228 Feb 20, 2025
ddeda2e
fix migration.yml (#35339)
lzk228 Feb 20, 2025
cb822fd
Merge branch 'stable' into master-merge
Errant-4 Feb 20, 2025
f3c6811
Merge stable into master (#35340)
Errant-4 Feb 20, 2025
a9054c5
Mjollnir and Singularity Hammer for Wizard (#34446)
keronshb Feb 20, 2025
d6cc167
Fixed Veggie pizza slice having 40u of reagent space (#35343)
spderman3333 Feb 21, 2025
b41a348
fix rubber hammer attack rotation (#35357)
lzk228 Feb 21, 2025
54bb2a3
Adds Colored Light Bulbs (#35333)
Boaz1111 Feb 21, 2025
17f3db1
Automatic changelog update
PJBot Feb 21, 2025
f5eafc7
make the detailed examine verb predicted (#35362)
MilonPL Feb 21, 2025
732d9dc
Fix prying shut unpowered doors (#35380)
PJB3005 Feb 22, 2025
30f6737
Fix sink draining sound (#34173)
themias Feb 22, 2025
5b1a527
Merge stable into master (#35387)
metalgearsloth Feb 22, 2025
879234c
Automatic changelog update
PJBot Feb 22, 2025
f32ca4e
Minor SpriteFade stuff (#35385)
metalgearsloth Feb 22, 2025
ee31a1f
Wizard: Repulse Spell (#35377)
keronshb Feb 22, 2025
1ef2820
Comment out broken guidebook test speech code (#35398)
PJB3005 Feb 22, 2025
b912ded
New Feature: Admin Only messages in AHelp (#35283)
Winkarst-cpu Feb 22, 2025
a33189f
Automatic changelog update
PJBot Feb 22, 2025
e631fa8
Give dogs speech noises (#35383)
Sparlight Feb 22, 2025
1bd3887
Automatic changelog update
PJBot Feb 22, 2025
c922b4f
Wizard: Smoke Spell (#35403)
keronshb Feb 22, 2025
a6d2948
Update Credits (#35410)
github-actions[bot] Feb 23, 2025
a6861b0
[HOTFIX] Borg emag notification and sound fix (#35394)
ScarKy0 Feb 23, 2025
1d655f6
[HOTFIX] Altered Silicon removal fails to trigger role update (#35399)
Errant-4 Feb 23, 2025
91678f7
Fixed Guidebook Sorting / Ordering (#34960)
GrownSamoyedDog Feb 23, 2025
54e0931
Automatic changelog update
PJBot Feb 23, 2025
f5c7809
Stable merge for hotfix backport (#35412)
PJB3005 Feb 23, 2025
e6d4596
Update nuget packages (#34595)
PJB3005 Feb 23, 2025
b880675
make opening storage on verb or on interact not silent (#35413)
lzk228 Feb 23, 2025
cb0d2b3
Automatic changelog update
PJBot Feb 23, 2025
a457551
Roof data rework (#35388)
metalgearsloth Feb 23, 2025
f9c9ffa
Amber Station Improvements (#35384)
southbridge-fur Feb 23, 2025
f65183e
Elkridge Science 2.0 + misc fixes (#35392)
Deerstop Feb 23, 2025
c956f26
Update submodule (#35411)
PJB3005 Feb 23, 2025
17218b7
Lattice tiles footsteps now sound like catwalks (#35421)
K-Dynamic Feb 23, 2025
1d210b5
Automatic changelog update
PJBot Feb 23, 2025
fabfdd0
Refactor audio system to send collection IDs over the network (#33610)
sowelipililimute Feb 23, 2025
634c4a7
Fix window positions not saving (#35055)
metalgearsloth Feb 23, 2025
fd4988e
Automatic changelog update
PJBot Feb 23, 2025
fad0b6a
Swap price of EMAG and AD. (#35354)
ScarKy0 Feb 23, 2025
b742afb
Automatic changelog update
PJBot Feb 23, 2025
066c773
Sentry turrets - Part 2: Basic prototype (#35031)
chromiumboy Feb 23, 2025
9cb6503
Add interaction tests for prying airlocks (#35409)
Tayrtahn Feb 23, 2025
1d004f4
Sentry review (#35424)
metalgearsloth Feb 23, 2025
55e22b6
Remove disablers from emagged lathe (#35423)
slarticodefast Feb 23, 2025
b7414d8
Add microwave recipes to the guidebook (#34105)
sowelipililimute Feb 23, 2025
326bd7f
Automatic changelog update
PJBot Feb 23, 2025
3192914
Fix/Addition - Wizard Survivor Antag Status (#35226)
keronshb Feb 23, 2025
cbecc4c
Use new engine APIs for setting the scroll target of views (#35401)
sowelipililimute Feb 23, 2025
fdf19c6
Add a tertiary header parser to the guidebook document parser (#35315)
sowelipililimute Feb 23, 2025
40fbbe3
Automatic changelog update
PJBot Feb 23, 2025
cc74880
version watermark (#35284)
Errant-4 Feb 23, 2025
9f4d6ab
Automatic changelog update
PJBot Feb 23, 2025
3e74508
fix chameleon projector ripley bug (#35070)
deltanedas Feb 23, 2025
408c6ab
Automatic changelog update
PJBot Feb 23, 2025
9fb5517
Make holoparasite's damage transfer ignore the host's armor (#35418)
NoElkaTheGod Feb 23, 2025
1404095
Automatic changelog update
PJBot Feb 23, 2025
91f2c46
Fix: Admin-only messages still show "(S)" on Discord (#35431)
Winkarst-cpu Feb 23, 2025
fa73217
Cleanup: Use ``SoundSpecifier`` instead of string literals in ``Vomit…
Winkarst-cpu Feb 23, 2025
b7c86ca
Put Neckwear above Backpacks (#35322)
TiniestShark Feb 23, 2025
0d84d25
Automatic changelog update
PJBot Feb 23, 2025
6f925dd
Fix prototypes so they pass analyzer checks (#35435)
Tayrtahn Feb 24, 2025
05de5bd
Fix bogus AdminNameOverlay Rider error (#35432)
PJB3005 Feb 24, 2025
5385683
Fix admin test arena (#35444)
metalgearsloth Feb 24, 2025
ac9c8b8
Fix arrivals (#35439)
metalgearsloth Feb 24, 2025
6fa4767
Automatic changelog update
PJBot Feb 24, 2025
f4fab85
Cleanup: Use ``SoundSpecifier`` instead of string literals in ``EyeCl…
Winkarst-cpu Feb 24, 2025
c3784a3
GettingUsedAttemptEvent (#35450)
ScarKy0 Feb 24, 2025
8830835
Move FingerprintComponent and FingerprintMaskComponent to shared (#35…
ScarKy0 Feb 24, 2025
c71e6e6
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
969e7bd
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
615d548
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
0148c44
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
22398ea
Cleanup: Fix field naming rule violation in ``GhostComponent`` (#35454)
Winkarst-cpu Feb 24, 2025
45e7891
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
02f0190
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
bb110b3
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
51104a7
TryGetRandomRecord in StationRecordsSystem (#35452)
ScarKy0 Feb 24, 2025
670791a
Cleanup: Remove redundant checks from ``SharedWieldableSystem`` (#35466)
Winkarst-cpu Feb 24, 2025
7fc8dcb
Cleanup: Pass in ``IComponentFactory`` in ``EntityPrototype.TryGetCom…
Winkarst-cpu Feb 24, 2025
d1415d9
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
363eec1
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
059c64a
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
5fbe217
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
e22c3b1
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
16787a0
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
4d72a2d
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
08bc843
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
c899ae7
Cleanup: Use ``MapSystem.DeleteMap`` instead of ``IMapManager.DeleteM…
Winkarst-cpu Feb 24, 2025
ebc1bff
Cleanup: Use ``SoundCollectionSpecifier`` instead of string literals …
Winkarst-cpu Feb 24, 2025
004e54a
Cleanup: Use ``SoundCollectionSpecifier`` instead of string literals …
Winkarst-cpu Feb 24, 2025
2958706
[ADMIN minor update] Add Autocompletion for Player Usernames in SetMi…
Schrodinger71 Feb 24, 2025
1a76e4f
Automatic changelog update
PJBot Feb 24, 2025
52df2db
Custom arrivals shuttle for Relic (#35194)
Vortebo Feb 24, 2025
02f5015
Automatic changelog update
PJBot Feb 24, 2025
237df1c
fix ion storm code readability (#35337)
lzk228 Feb 24, 2025
5eeba30
Cleanup: Make ``EyeCursorOffsetSystem`` sealed (#35481)
Winkarst-cpu Feb 24, 2025
285decd
Make the version watermark less annoying (#35484)
Errant-4 Feb 24, 2025
309d21b
Automatic changelog update
PJBot Feb 24, 2025
1e43582
Cleanup: Fix formatting in ``CCVars.Game`` (#35483)
Winkarst-cpu Feb 24, 2025
920df98
fix mousetraps (#35486)
slarticodefast Feb 25, 2025
e761ab5
Automatic changelog update
PJBot Feb 25, 2025
7f67ff4
borgs don't scream (#33038)
pheenty Feb 25, 2025
8265fb2
Automatic changelog update
PJBot Feb 25, 2025
afe83e1
[ADMIN] Admin IDs now have Agent ID properties (#35345)
ScarKy0 Feb 25, 2025
594811a
Automatic changelog update
PJBot Feb 25, 2025
7ddad07
Unbreakable bar sign fix. (#35490)
spderman3333 Feb 25, 2025
183ea10
Automatic changelog update
PJBot Feb 25, 2025
263f915
Adds new speech bubble opacity sliders to the accessibility menu. (#3…
noirogen Feb 25, 2025
92006de
Automatic changelog update
PJBot Feb 25, 2025
ab9c78b
Make escape key work as expected with multiple open inventories (#35040)
sowelipililimute Feb 25, 2025
f165223
Automatic changelog update
PJBot Feb 25, 2025
9f4a4b8
Add species-specific code for ToggleableLightVisuals (#35482)
Sparlight Feb 25, 2025
9615bc6
Engineers can now choose to wear no head piece (#35508)
Pumkin69 Feb 26, 2025
d949fee
Automatic changelog update
PJBot Feb 26, 2025
f65ff0b
Lizard Plushie Slippers (#35381)
momochitters Feb 26, 2025
6e269c6
Automatic changelog update
PJBot Feb 26, 2025
11dd26e
Made forensic scanner classified as contraband. (#35512)
ToastEnjoyer Feb 26, 2025
6ea742d
Convex update (#35513)
Spessmann Feb 26, 2025
68de58e
THE WIZARD (#35406)
keronshb Feb 26, 2025
08a274d
Automatic changelog update
PJBot Feb 26, 2025
e86770f
Mime can no longer write on paper without breaking their vow (#35043)
SpeltIncorrectyl Feb 26, 2025
7283f9b
fix delta state in SharedGunSystem (#35510)
slarticodefast Feb 26, 2025
7c6028b
Wizard ID (#35530)
ScarKy0 Feb 26, 2025
058d9fe
Wizard robes allow you to wear gas tanks (#35537)
ScarKy0 Feb 26, 2025
8f164cf
Add libicu to shell.nix (#35540)
Toby222 Feb 26, 2025
c698b16
Admin Options tab (#35543)
Errant-4 Feb 26, 2025
6c3dbbc
Automatic changelog update
PJBot Feb 26, 2025
7bd98b9
Old Rollie Name Integration (#35544)
DieselMohawk Feb 26, 2025
3557be1
Automatic changelog update
PJBot Feb 26, 2025
9d62e8c
centcomm update (#35549)
Emisse Feb 27, 2025
16c377a
bagel update (#35550)
Emisse Feb 27, 2025
f850b69
Wizard Stamp (#35552)
Pumkin69 Feb 27, 2025
7351a9d
Automatic changelog update
PJBot Feb 27, 2025
1c62e33
Add breakdown recipes for Insect and Ammonia blood (#33614)
MilenVolf Feb 27, 2025
9a12bfd
Automatic changelog update
PJBot Feb 27, 2025
7b0b401
t-ray reveal for entities and draw depth fix (#33012)
qwerltaz Feb 27, 2025
c20fb21
Automatic changelog update
PJBot Feb 27, 2025
53dc27c
Adding sorting to chem master (#34763)
catdotjs Feb 27, 2025
3127f73
Multiple categories for lathe recipes (#34315)
iaada Feb 27, 2025
0c6081f
Fix egg cooking and make microwave code a little less bad (#35459)
slarticodefast Feb 27, 2025
a5aab8b
Fire resist now can be examined. (#35183)
kosticia Feb 27, 2025
e705d04
Automatic changelog update
PJBot Feb 27, 2025
f80f305
Add filters to uniform printer (#34316)
iaada Feb 27, 2025
4d0e63c
Automatic changelog update
PJBot Feb 27, 2025
7520d8a
add button to print logprobe logs (#32255)
deltanedas Feb 27, 2025
3f014d2
Automatic changelog update
PJBot Feb 27, 2025
2db57f1
Sap-Syrup balance (#32996)
Aisu9 Feb 27, 2025
19c2368
Automatic changelog update
PJBot Feb 27, 2025
c7b9a76
Prevent crates, pet carriers and other things from going into disposa…
SlamBamActionman Feb 27, 2025
5fdf702
Automatic changelog update
PJBot Feb 27, 2025
41c51e2
Implanter draw rework (#32136)
SlamBamActionman Feb 27, 2025
439e1c6
Automatic changelog update
PJBot Feb 27, 2025
3c20f63
fix subwizard gamerule (#35562)
slarticodefast Feb 27, 2025
cec05d6
Staff of Animation Fixes (#35491)
ActiveMammmoth Feb 27, 2025
98cca7b
Change Phalanximine to be more complex, increase Arithrazine damage (…
VasilisThePikachu Mar 2, 2025
08cb26d
Hotfix: Fix uplinks allowing buying conditionally restricted items (#…
SlamBamActionman Mar 2, 2025
7bf09bf
add altered silicon to rules (#35455)
Errant-4 Mar 2, 2025
4dfd3e5
[HOTFIX] - Players with unknown playtimes now are tagged as new playe…
beck-thompson Mar 2, 2025
4032e0f
Merge branch 'stable' of https://github.com/space-wizards/space-stati…
whatston3 Mar 3, 2025
3d9ce10
Revert "[HOTFIX] - Players with unknown playtimes now are tagged as n…
Errant-4 Mar 3, 2025
eeca76f
Merge branch 'stable' of https://github.com/space-wizards/space-stati…
whatston3 Mar 3, 2025
a453b3d
map system changes, throw on hit resolution
whatston3 Mar 3, 2025
f5ff8d9
Merge branch 'master' into 2025-03-02-march-25-upstream-merge
whatston3 Mar 3, 2025
d97f08b
Remove NF maltroach sign
whatston3 Mar 3, 2025
2a6b3a2
Remove NF crystal lights (except black)
whatston3 Mar 3, 2025
9d71172
black crystal tube inheritance
whatston3 Mar 3, 2025
ca9b4c4
Remove redundant whiskey echoes bar sign & imgs
whatston3 Mar 3, 2025
85d4358
contraband and biogenerator fixes
whatston3 Mar 3, 2025
978e788
fix lathe recipe category->categories
whatston3 Mar 3, 2025
b854654
upstream lathe category fix, no wizard guide page
whatston3 Mar 3, 2025
f745789
No wizard prefs
whatston3 Mar 3, 2025
6724911
restore mothroach, use upstream food guide
whatston3 Mar 3, 2025
52a32eb
integration test fixes (cult turret, turbolaser)
whatston3 Mar 3, 2025
e39133f
test fixes (cap gun, tinnia's ignore)
whatston3 Mar 3, 2025
3325d56
Post-map init
whatston3 Mar 3, 2025
fcd1136
caseless rifle mag state, vox mask
whatston3 Mar 3, 2025
edbe26c
PostMapInitTest: skip fishbowl ship
whatston3 Mar 3, 2025
4766883
dumpable rped
whatston3 Mar 4, 2025
05bfcfe
PostMapInitTest: check all the maps at once
whatston3 Mar 4, 2025
500fb1d
ItemBorgModuleComponent comment
whatston3 Mar 4, 2025
d1adb91
SharedProjectileSystem: fix nullability checks
whatston3 Mar 4, 2025
508d38c
Frontier: extra map exclusions
whatston3 Mar 4, 2025
f785eee
stabby snipers, bwoink loc, ion storm plurals
whatston3 Mar 5, 2025
6d1c3fe
swap to DoNotMap category
whatston3 Mar 5, 2025
d536d18
minor mapchecker cleanup
whatston3 Mar 5, 2025
1132000
no value for seccy C2 items
whatston3 Mar 5, 2025
2d73f80
throwing knife comment accuracy
whatston3 Mar 5, 2025
431f3d5
BaseC2ContrabandNoValue to BaseC2Contraband
whatston3 Mar 5, 2025
c4d00d7
dungeon-only entities
whatston3 Mar 5, 2025
793858c
restore DO NOT MAP suffix, fix grammar
whatston3 Mar 5, 2025
55ad6ac
mosin stab 'n' snipe, rifle box
whatston3 Mar 5, 2025
f5092e1
fix a rotation bug for diagonally smoothed walls
whatston3 Mar 5, 2025
fcae225
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Mar 5, 2025
78abcc4
cherry-pick delta-v#3120
whatston3 Mar 5, 2025
77cef51
cherry-pick upstream#35041, upstream#35075
whatston3 Mar 5, 2025
7047d8c
tests run with a single storage window
whatston3 Mar 5, 2025
ee4bbb3
Enforce mime illiteracy
whatston3 Mar 5, 2025
da35049
blood pylon: cap of 3 (roughly 6 shots until slow)
whatston3 Mar 5, 2025
b70a7a5
Hide SpaceLaw guidebook entry
whatston3 Mar 5, 2025
309f68d
brass knuckle comments
whatston3 Mar 5, 2025
6a6d7b0
guidebook rework (starting eq. to new player), sec
whatston3 Mar 5, 2025
a9062b3
bedsheets to NF folder, slightly better NFSD sheet
whatston3 Mar 5, 2025
de9c8f4
move lathe recipes to Recipes/Lathes/
whatston3 Mar 5, 2025
395e8a0
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Mar 5, 2025
fbff8e0
fix medical bag categories
whatston3 Mar 5, 2025
2836b10
Revert Milon's EntityWhitelist changes
whatston3 Mar 6, 2025
319a6a4
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Mar 6, 2025
2fa9b25
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Mar 7, 2025
1758ecc
Fix fish recipe, dragon omelette to breakfast
whatston3 Mar 7, 2025
065501a
hide super secret recipes
whatston3 Mar 7, 2025
08581e1
cherry-pick #35650
whatston3 Mar 7, 2025
2e7355a
beacon/dispatch/trade mall faxes
whatston3 Mar 7, 2025
0accab5
fix light rifle ammo box
whatston3 Mar 7, 2025
572758b
medical dispatch: NF fax, STC: undupe grey headset
whatston3 Mar 7, 2025
020ceed
Merge branch 'master' into 2025-03-02-march-25-upstream-merge
dvir001 Mar 8, 2025
90dac19
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Mar 8, 2025
0d6c7a6
Merge branch '2025-03-02-march-25-upstream-merge' of https://github.c…
whatston3 Mar 8, 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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/mapchecker/config.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# List of matchers that are always illegal to use. These always supercede CONDITIONALLY_ILLEGAL_MATCHES.
ILLEGAL_MATCHES = [
"DO NOT MAP",
"DoNotMap",
"DEBUG",
"Admeme",
"CaptainSabre",
Expand Down
3 changes: 2 additions & 1 deletion .github/mapchecker/mapchecker.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,9 @@
proto_id = item["id"]
proto_name = item["name"] if "name" in item.keys() else ""
proto_suffixes = str(item["suffix"]).split(", ") if "suffix" in item.keys() else list()
proto_categories = item["categories"] if "categories" in item.keys() else list()

check_result = check_prototype(proto_id, proto_name, proto_suffixes)
check_result = check_prototype(proto_id, proto_name, proto_suffixes, proto_categories)
if check_result is False:
illegal_prototypes.append(proto_id)
elif check_result is not True:
Expand Down
12 changes: 11 additions & 1 deletion .github/mapchecker/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,14 @@ def ignore_unknown(self, node):
# End of snippet


def check_prototype(proto_id: str, proto_name: str, proto_suffixes: List[str]) -> Union[bool, List[str]]:
def check_prototype(proto_id: str, proto_name: str, proto_suffixes: List[str], proto_categories: List[str]) -> Union[bool, List[str]]:
"""
Checks prototype information against the ILLEGAL_MATCHES and CONDITIONALLY_ILLEGAL_MATCHES constants.

:param proto_id: The prototype's ID.
:param proto_name: The prototype's name.
:param proto_suffixes: The prototype's suffixes.
:param proto_categories: The prototype's categories.
:return:
- True if the prototype is legal
- False if the prototype is globally illegal (matched by ILLEGAL_MATCHES)
Expand All @@ -69,6 +70,10 @@ def check_prototype(proto_id: str, proto_name: str, proto_suffixes: List[str]) -
if illegal_match.lower() == suffix.lower():
return False

for category in proto_categories:
if illegal_match.lower() == category.lower():
return False

# Check against CONDITIONALLY_ILLEGAL_MATCHES.
conditionally_illegal_keys = list()
for key in CONDITIONALLY_ILLEGAL_MATCHES.keys():
Expand All @@ -89,6 +94,11 @@ def check_prototype(proto_id: str, proto_name: str, proto_suffixes: List[str]) -
conditionally_illegal_keys.append(key)
break

for category in proto_categories:
if cond_illegal_match.lower() == category.lower():
conditionally_illegal_keys.append(key)
break

if len(conditionally_illegal_keys) > 0:
return conditionally_illegal_keys

Expand Down
12 changes: 6 additions & 6 deletions Content.Benchmarks/ComponentQueryBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,14 @@
using Content.Shared.Clothing.Components;
using Content.Shared.Doors.Components;
using Content.Shared.Item;
using Robust.Server.GameObjects;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.EntitySerialization;
using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Random;
using Robust.Shared.Utility;

namespace Content.Benchmarks;

Expand All @@ -32,7 +33,6 @@ public class ComponentQueryBenchmark

private TestPair _pair = default!;
private IEntityManager _entMan = default!;
private MapId _mapId = new(10);
private EntityQuery<ItemComponent> _itemQuery;
private EntityQuery<ClothingComponent> _clothingQuery;
private EntityQuery<MapComponent> _mapQuery;
Expand All @@ -54,10 +54,10 @@ public void Setup()
_pair.Server.ResolveDependency<IRobustRandom>().SetSeed(42);
_pair.Server.WaitPost(() =>
{
var success = _entMan.System<MapLoaderSystem>().TryLoad(_mapId, Map, out _);
if (!success)
var map = new ResPath(Map);
var opts = DeserializationOptions.Default with {InitializeMaps = true};
if (!_entMan.System<MapLoaderSystem>().TryLoadMap(map, out _, out _, opts))
throw new Exception("Map load failed");
_pair.Server.MapMan.DoMapInitialize(_mapId);
}).GetAwaiter().GetResult();

_items = new EntityUid[_entMan.Count<ItemComponent>()];
Expand Down
19 changes: 10 additions & 9 deletions Content.Benchmarks/MapLoadBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
using Content.IntegrationTests;
using Content.IntegrationTests.Pair;
using Content.Server.Maps;
using Robust.Server.GameObjects;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;

namespace Content.Benchmarks;

Expand All @@ -20,7 +21,7 @@ public class MapLoadBenchmark
{
private TestPair _pair = default!;
private MapLoaderSystem _mapLoader = default!;
private IMapManager _mapManager = default!;
private SharedMapSystem _mapSys = default!;

[GlobalSetup]
public void Setup()
Expand All @@ -36,7 +37,7 @@ public void Setup()
.ToDictionary(x => x.ID, x => x.MapPath.ToString());

_mapLoader = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<MapLoaderSystem>();
_mapManager = server.ResolveDependency<IMapManager>();
_mapSys = server.ResolveDependency<IEntitySystemManager>().GetEntitySystem<SharedMapSystem>();
}

[GlobalCleanup]
Expand All @@ -52,27 +53,27 @@ public async Task Cleanup()
public string Map;

public Dictionary<string, string> Paths;
private MapId _mapId;

[Benchmark]
public async Task LoadMap()
{
var mapPath = Paths[Map];
var mapPath = new ResPath(Paths[Map]);
var server = _pair.Server;
await server.WaitPost(() =>
{
var success = _mapLoader.TryLoad(new MapId(10), mapPath, out _);
var success = _mapLoader.TryLoadMap(mapPath, out var map, out _);
if (!success)
throw new Exception("Map load failed");
_mapId = map.Value.Comp.MapId;
});
}

[IterationCleanup]
public void IterationCleanup()
{
var server = _pair.Server;
server.WaitPost(() =>
{
_mapManager.DeleteMap(new MapId(10));
}).Wait();
server.WaitPost(() => _mapSys.DeleteMap(_mapId))
.Wait();
}
}
11 changes: 6 additions & 5 deletions Content.Benchmarks/PvsBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@
using Content.IntegrationTests.Pair;
using Content.Server.Mind;
using Content.Server.Warps;
using Robust.Server.GameObjects;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.EntitySerialization;
using Robust.Shared.EntitySerialization.Systems;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Player;
using Robust.Shared.Random;
using Robust.Shared.Utility;

namespace Content.Benchmarks;

Expand All @@ -34,7 +36,6 @@ public class PvsBenchmark

private TestPair _pair = default!;
private IEntityManager _entMan = default!;
private MapId _mapId = new(10);
private ICommonSession[] _players = default!;
private EntityCoordinates[] _spawns = default!;
public int _cycleOffset = 0;
Expand Down Expand Up @@ -65,10 +66,10 @@ private async Task SetupAsync()
_pair.Server.ResolveDependency<IRobustRandom>().SetSeed(42);
await _pair.Server.WaitPost(() =>
{
var success = _entMan.System<MapLoaderSystem>().TryLoad(_mapId, Map, out _);
if (!success)
var path = new ResPath(Map);
var opts = DeserializationOptions.Default with {InitializeMaps = true};
if (!_entMan.System<MapLoaderSystem>().TryLoadMap(path, out _, out _, opts))
throw new Exception("Map load failed");
_pair.Server.MapMan.DoMapInitialize(_mapId);
});

// Get list of ghost warp positions
Expand Down
2 changes: 1 addition & 1 deletion Content.Client/Administration/AdminNameOverlay.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ protected override void Draw(in OverlayDrawArgs args)
{
args.ScreenHandle.DrawString(_font, screenCoordinates + (lineoffset * 3), _antagLabelClassic, uiScale, _antagColorClassic); // Frontier: 2<3
}
else if (!classic && _filter.Contains(playerInfo.RoleProto.ID))
else if (!classic && _filter.Contains(playerInfo.RoleProto))
{
var label = Loc.GetString(playerInfo.RoleProto.Name).ToUpper();
var color = playerInfo.RoleProto.Color;
Expand Down
4 changes: 2 additions & 2 deletions Content.Client/Administration/Systems/BwoinkSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ 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)
{
// 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: 3 additions & 1 deletion Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
<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" />
<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" />
Expand Down
2 changes: 2 additions & 0 deletions Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ public BwoinkControl()
_adminManager.AdminStatusUpdated += UpdateButtons;
UpdateButtons();

AdminOnly.OnToggled += args => PlaySound.Disabled = args.Pressed;

ChannelSelector.OnSelectionChanged += sel =>
{
_currentPlayer = sel;
Expand Down
28 changes: 2 additions & 26 deletions Content.Client/Atmos/Consoles/AtmosAlertsComputerWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -615,39 +615,15 @@ private void AutoScrollToFocus()
if (scroll == null)
return;

if (!TryGetVerticalScrollbar(scroll, out var vScrollbar))
return;

if (!TryGetNextScrollPosition(out float? nextScrollPosition))
return;

vScrollbar.ValueTarget = nextScrollPosition.Value;
scroll.VScrollTarget = nextScrollPosition.Value;

if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
if (MathHelper.CloseToPercent(scroll.VScroll, scroll.VScrollTarget))
_autoScrollActive = false;
}

private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
{
vScrollBar = null;

foreach (var child in scroll.Children)
{
if (child is not VScrollBar)
continue;

var castChild = child as VScrollBar;

if (castChild != null)
{
vScrollBar = castChild;
return true;
}
}

return false;
}

private bool TryGetNextScrollPosition([NotNullWhen(true)] out float? nextScrollPosition)
{
nextScrollPosition = null;
Expand Down
24 changes: 2 additions & 22 deletions Content.Client/Atmos/Consoles/AtmosMonitoringConsoleWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -350,35 +350,15 @@ private void AutoScrollToFocus()
if (scroll == null)
return;

if (!TryGetVerticalScrollbar(scroll, out var vScrollbar))
return;

if (!TryGetNextScrollPosition(out float? nextScrollPosition))
return;

vScrollbar.ValueTarget = nextScrollPosition.Value;
scroll.VScrollTarget = nextScrollPosition.Value;

if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
if (MathHelper.CloseToPercent(scroll.VScroll, scroll.VScrollTarget))
_autoScrollActive = false;
}

private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
{
vScrollBar = null;

foreach (var control in scroll.Children)
{
if (control is not VScrollBar)
continue;

vScrollBar = (VScrollBar)control;

return true;
}

return false;
}

private bool TryGetNextScrollPosition([NotNullWhen(true)] out float? nextScrollPosition)
{
nextScrollPosition = null;
Expand Down
5 changes: 2 additions & 3 deletions Content.Client/Atmos/UI/GasAnalyzerBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Robust.Client.GameObjects;
using Robust.Client.UserInterface;
using static Content.Shared.Atmos.Components.GasAnalyzerComponent;

namespace Content.Client.Atmos.UI
Expand All @@ -16,9 +17,7 @@ protected override void Open()
{
base.Open();

_window = new GasAnalyzerWindow();
_window.OnClose += OnClose;
_window.OpenCenteredLeft();
_window = this.CreateWindowCenteredLeft<GasAnalyzerWindow>();
}

protected override void ReceiveMessage(BoundUserInterfaceMessage message)
Expand Down
6 changes: 3 additions & 3 deletions Content.Client/Audio/ClientGlobalSoundSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ private void PlayAdminSound(AdminSoundEvent soundEvent)
{
if(!_adminAudioEnabled) return;

var stream = _audio.PlayGlobal(soundEvent.Filename, Filter.Local(), false, soundEvent.AudioParams);
var stream = _audio.PlayGlobal(soundEvent.Specifier, Filter.Local(), false, soundEvent.AudioParams);
_adminAudio.Add(stream?.Entity);
}

Expand All @@ -75,13 +75,13 @@ private void PlayStationEventMusic(StationEventMusicEvent soundEvent)
// Either the cvar is disabled or it's already playing
if(!_eventAudioEnabled || _eventAudio.ContainsKey(soundEvent.Type)) return;

var stream = _audio.PlayGlobal(soundEvent.Filename, Filter.Local(), false, soundEvent.AudioParams);
var stream = _audio.PlayGlobal(soundEvent.Specifier, Filter.Local(), false, soundEvent.AudioParams);
_eventAudio.Add(soundEvent.Type, stream?.Entity);
}

private void PlayGameSound(GameGlobalSoundEvent soundEvent)
{
_audio.PlayGlobal(soundEvent.Filename, Filter.Local(), false, soundEvent.AudioParams);
_audio.PlayGlobal(soundEvent.Specifier, Filter.Local(), false, soundEvent.AudioParams);
}

private void StopStationEventMusic(StopStationEventMusic soundEvent)
Expand Down
2 changes: 1 addition & 1 deletion Content.Client/Audio/ContentAudioSystem.LobbyMusic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ private void PlayRestartSound(RoundRestartCleanupEvent ev)
return;

var file = _gameTicker.RestartSound;
if (string.IsNullOrEmpty(file))
if (ResolvedSoundSpecifier.IsNullOrEmpty(file))
{
return;
}
Expand Down
Loading
Loading