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

Upstream Sync #44

Merged
merged 1,083 commits into from
Jan 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1083 commits
Select commit Hold shift + click to select a range
831427e
Rework wheelchairbound (#24173)
metalgearsloth Jan 19, 2024
c3e95f0
Make super bite burger easier to craft (#24231)
UbaserB Jan 19, 2024
2cd501f
Change the station map dot color to cyan (#24082)
iacore Jan 19, 2024
13d7948
Restart votes check player count and ghost levels (#23453)
Titian3 Jan 19, 2024
f9919cd
Automatic changelog update
PJBot Jan 19, 2024
b51b6f6
Add ability to put spesos into cargo console (#24263)
metalgearsloth Jan 19, 2024
bc7f8c9
Automatic changelog update
PJBot Jan 19, 2024
e9bb444
Fix gun bolt crash (#24283)
metalgearsloth Jan 19, 2024
36a3584
Automatic changelog update
PJBot Jan 19, 2024
bfb7aa6
Improve light tube sprites (#24270)
UbaserB Jan 19, 2024
3d7d4ee
Actually fix carrot oculine this time (#24290)
UbaserB Jan 19, 2024
6ca85e7
Destruction & impact sound rework pass 1 (#24282)
mirrorcult Jan 19, 2024
2609c7c
Automatic changelog update
PJBot Jan 19, 2024
46b8eaa
Can emag artifact crusher (#23957)
SpeltIncorrectyl Jan 19, 2024
b6126e7
Automatic changelog update
PJBot Jan 19, 2024
b89a6d7
Adds more grindables (#24267)
Flareguy Jan 19, 2024
4e1d2e2
Fix reagents obtained from grinding iron ore. (#24215)
UbaserB Jan 19, 2024
d511f31
Mustard, ketchup and mayonnaise now tastes distinct (#24297)
UbaserB Jan 19, 2024
40f7e0b
Lathe Categories (#24247)
EmoGarbage404 Jan 20, 2024
8177b3f
Automatic changelog update
PJBot Jan 20, 2024
830ae55
Unrevivable trait (#24226)
Scribbles0 Jan 20, 2024
920009e
Automatic changelog update
PJBot Jan 20, 2024
f7561b4
Toolboxes (#24305)
Drayff Jan 20, 2024
3cf9083
Automatic changelog update
PJBot Jan 20, 2024
997ee75
Revert "Adds more grindables (#24267)" (#24311)
metalgearsloth Jan 20, 2024
cee8ded
Rebalance of Lobbying bundle (#24303)
Agoichi Jan 20, 2024
fc7c882
Automatic changelog update
PJBot Jan 20, 2024
46fe227
Prevent EntityStorages from being opened while inside another contain…
Arendian Jan 20, 2024
05a158e
Automatic changelog update
PJBot Jan 20, 2024
419a28a
Add netserializable to test doafter (#24313)
metalgearsloth Jan 20, 2024
0ce2cb5
Fixes round restart audio clipping (#24044)
FairlySadPanda Jan 20, 2024
7cc1094
Automatic changelog update
PJBot Jan 20, 2024
47d24fc
Fix cargo product groups (#24212)
EmoGarbage404 Jan 20, 2024
d14497f
Cargo fixes (#24318)
metalgearsloth Jan 20, 2024
734d7fd
Change what items can be fultoned while stopping anchored items from …
casperr04 Jan 20, 2024
be253a0
Automatic changelog update
PJBot Jan 20, 2024
fae6917
Make crushers not craftable/researchable (#24319)
Blackern5000 Jan 20, 2024
e441bbc
Automatic changelog update
PJBot Jan 20, 2024
3254acd
Fix some test warnings (#24324)
metalgearsloth Jan 20, 2024
3ae0909
Fix drag-drop buckle sound playing twice (#24321)
metalgearsloth Jan 20, 2024
ba12266
Automatic changelog update
PJBot Jan 20, 2024
41eef79
Beacon localization (#24138)
Errant-4 Jan 20, 2024
0c55bdd
fix scram implant uplink desc (#24336)
Ilya246 Jan 20, 2024
122e993
Fix Delta stuff
DebugOk Jan 26, 2024
13831ea
Revert "Re-add Lean (#361)"
DebugOk Jan 26, 2024
aea2326
Revert "Unrevivable trait (#24226)"
DebugOk Jan 26, 2024
b466fc8
More fixes
DebugOk Jan 26, 2024
8287495
Final fixes
DebugOk Jan 26, 2024
7d657e7
Remove wizden evac shuttles
DebugOk Jan 27, 2024
0ba741e
Make girders not be noRot
DebugOk Jan 27, 2024
91edeab
Add admin log messages for gamerule addition and end (#24092)
tday93 Jan 20, 2024
9fc4158
Automatic changelog update
PJBot Jan 20, 2024
f82d17a
Fix issue where round could reset all job priorities to high (#24340)
koteq Jan 20, 2024
cd2f967
Add snake kebab (#24341)
Nimfar11 Jan 20, 2024
55a79f4
Cerberus Wideswing (#24328)
Alekshhh Jan 20, 2024
dbc89a5
Buff potassium availability from bananas (#24257)
UbaserB Jan 20, 2024
802360e
Automatic changelog update
PJBot Jan 20, 2024
d41e3c8
Remove ability to start pulling while inside a container (#24235)
GreyMario Jan 20, 2024
c8a82af
Allow chemical-fueled generators to use multiple reagents (#24258)
EmoGarbage404 Jan 21, 2024
378b119
The glowing forest anomaly (#24351)
TheShuEd Jan 21, 2024
8e99c42
Automatic changelog update
PJBot Jan 21, 2024
5f2c241
Cancel CanBuckle before popup for foldable items (#24358)
Krunklehorn Jan 21, 2024
ff8e47f
Content grid merging (#22448)
metalgearsloth Jan 21, 2024
2c40401
Make radarcontrol use approx grids (#24360)
metalgearsloth Jan 21, 2024
4b938fd
Fix keyboard sounds not playing when opening a computer UI (#24348)
EmoGarbage404 Jan 21, 2024
a6f5c81
Update submodule to 207.1.0 (#24361)
metalgearsloth Jan 21, 2024
145c215
Star Wars 14: Shuttle weapon update (#23644)
TheShuEd Jan 21, 2024
937989c
Add chat.max_announcement_length cvar (#23571)
koteq Jan 21, 2024
7ff780d
PA control box part detection fix (#24356)
Menshin Jan 21, 2024
13209e9
Automatic changelog update
PJBot Jan 21, 2024
6cee923
Flora anom hotfix (#24364)
TheShuEd Jan 21, 2024
7bc6d37
Fix security camera sprite when viewed at an angle (#24357)
Nopey Jan 21, 2024
69d6935
Bunch of revolver fixes (#19649)
metalgearsloth Jan 21, 2024
19e1475
Automatic changelog update
PJBot Jan 21, 2024
95f72fd
Fix dock highlighting (#24369)
metalgearsloth Jan 21, 2024
8d91ec4
Automatic changelog update
PJBot Jan 21, 2024
57c51bd
Reduce flatpack size (#24367)
icekot8 Jan 21, 2024
cde026e
Automatic changelog update
PJBot Jan 21, 2024
c83c46e
Change Tmax for fixed floating point epsilon limit (#24370)
BasedUser Jan 21, 2024
2fb7db8
Vent Critter Alert (#24383)
Nairodian Jan 22, 2024
aa22c3a
Automatic changelog update
PJBot Jan 22, 2024
78651f4
Revert "RD suit recolor" (#24377)
Flareguy Jan 22, 2024
0640874
Automatic changelog update
PJBot Jan 22, 2024
3dfd479
DamageSpecifier Total => GetTotal (#24160)
LordCarve Jan 22, 2024
4bdacf6
Mothroach movement state (#24385)
MilenVolf Jan 22, 2024
4d323c5
Zombie round shuttle autocall waits until more crew are zombied. (#24…
IProduceWidgets Jan 22, 2024
9a291d5
Reinforced diagonal (#24393)
SonicHDC Jan 22, 2024
49b613b
Automatic changelog update
PJBot Jan 22, 2024
b30a624
Hud Eyepatches (#24132)
Alekshhh Jan 22, 2024
669fe97
Automatic changelog update
PJBot Jan 22, 2024
9c021f1
coloured lights for mapping (#24402)
Boaz1111 Jan 22, 2024
eb2deac
Lowered seismic charge beeping volume (#24411)
emmafornash Jan 22, 2024
de13b34
fix storage tanks names (#24415)
lzk228 Jan 22, 2024
a345a5a
Fix bolt lights on open airlock (#24414)
themias Jan 22, 2024
a91ce64
Fix battery trick debug assert (#24408)
Errant-4 Jan 22, 2024
48a00bc
Remove more shitty prototypes locale (#24416)
lzk228 Jan 22, 2024
3a213f5
flare ghetto chem chemicals (#24407)
deltanedas Jan 22, 2024
7573dba
Rip out remaining machine upgrades (#24413)
EmoGarbage404 Jan 22, 2024
ad35a2f
Obsolete refactor - ConnectedClient to Channel (#24409)
LordCarve Jan 22, 2024
cb6a5b9
Removes fireaxe plating prying (#24388)
Flareguy Jan 22, 2024
d9c823f
Fix casa sprite (#24421)
lzk228 Jan 22, 2024
148bc96
Fix guideentryprototypetests (#24427)
metalgearsloth Jan 23, 2024
e207569
disable revolutionaries (#24420)
CrigCrag Jan 23, 2024
25af068
Automatic changelog update
PJBot Jan 23, 2024
1afa84e
Use can attach check on shot attempt (#24396)
dakamakat Jan 23, 2024
571cd60
Minor tweaks to job descriptions (#24398)
Hmeister-real Jan 23, 2024
87108e5
Add reagent specific footstep sounds (#24406)
themias Jan 23, 2024
b6e9e39
Automatic changelog update
PJBot Jan 23, 2024
9bb0579
Generalize tile prying to any tool quality (#24432)
EmoGarbage404 Jan 23, 2024
01beb22
PowerCage cannot be inserted in Power Cell Recharger (#24443)
TheShuEd Jan 23, 2024
7c72be3
Start rebalancing anomalies - Rock and Flesh anomaly reworked (#24381)
TheShuEd Jan 23, 2024
88dda13
Automatic changelog update
PJBot Jan 23, 2024
746db65
Revert "Start rebalancing anomalies - Rock and Flesh anomaly reworked…
TheShuEd Jan 23, 2024
d727534
Fix thrusters (#24446)
metalgearsloth Jan 23, 2024
bac0731
Automatic changelog update
PJBot Jan 23, 2024
7c6a085
Fix hotplates (#24450)
0x6273 Jan 23, 2024
0d6f291
Automatic changelog update
PJBot Jan 23, 2024
375aaff
lizzer (#24457)
Boaz1111 Jan 23, 2024
3ea8742
Automatic changelog update
PJBot Jan 23, 2024
afb27f7
remove the bounty on briefcases (#24392)
icekot8 Jan 23, 2024
e86d1bc
Automatic changelog update
PJBot Jan 23, 2024
42ac528
Suffocation alerts for nitrogen breathers (#24373)
Errant-4 Jan 23, 2024
0e3c61a
Fix cyborgs spawning with wheelchairbound trait (#24459)
themias Jan 23, 2024
dbda727
Automatic changelog update
PJBot Jan 23, 2024
7141b1f
Fix sloshing electricity & enable SpeechVerb masking (#24238)
Tayrtahn Jan 23, 2024
b57f842
Solo bench (#24203)
Nimfar11 Jan 23, 2024
3f2344a
Automatic changelog update
PJBot Jan 23, 2024
de5dc55
TriggerOnSpawn + Admin toys (#23999)
TheShuEd Jan 23, 2024
9878278
Add broken sprites for Vim (#24458)
Tayrtahn Jan 23, 2024
6bb2957
Adds explosion when attempting to microwave metal / bugfix (#23887)
vero5123 Jan 23, 2024
9efed71
Automatic changelog update
PJBot Jan 23, 2024
54dc5ed
fix starting gear without PDAs (#24463)
EmoGarbage404 Jan 24, 2024
b5d7112
Fix bug with ActivelyMicrowavedComponent being stuck in powercuts (#2…
DrMelon Jan 24, 2024
2a6cefe
Automatic changelog update
PJBot Jan 24, 2024
4d5b3ba
Holding the walk button no longer activates sprite movement state (#2…
Tayrtahn Jan 24, 2024
5476d09
Fix Admin Antag ctrl headrev icon to use RSI instead of texture (#24474)
crazybrain23 Jan 24, 2024
3d4cc0f
Disabled quick equip on buckets (#24472)
Krunklehorn Jan 24, 2024
f81b0cb
Automatic changelog update
PJBot Jan 24, 2024
a50170c
Maybe fix dead bug (#24445)
metalgearsloth Jan 24, 2024
dc369f4
Mantles in dressers (#24485)
Hanzdegloker Jan 24, 2024
311dcab
Fix escaping from locked artifact crate (#24442)
lzk228 Jan 25, 2024
110d6ce
Automatic changelog update
PJBot Jan 25, 2024
e666d3a
Changed spawn priority to arrivals -> containers -> points. (#24476)
Krunklehorn Jan 25, 2024
eabd20a
Automatic changelog update
PJBot Jan 25, 2024
61f93fa
Added beacon prototype for cryosleepers, relabeled medical's "Cryo" a…
Krunklehorn Jan 25, 2024
e49f2ad
Paper cups as party hats (#24334)
Krunklehorn Jan 25, 2024
beed42c
Automatic changelog update
PJBot Jan 25, 2024
467b398
double bun long hair (#24493)
Emisse Jan 25, 2024
c1b8405
Slight organ loss change (#24475)
metalgearsloth Jan 25, 2024
52d5e05
Tiny anomaly cores (#24483)
TheShuEd Jan 25, 2024
855ddbb
Better rusty wall sprites (#24471)
Flareguy Jan 25, 2024
1cee2f2
Botany no longer gets meta weapons (#24481)
Blackern5000 Jan 25, 2024
151eb8a
Automatic changelog update
PJBot Jan 25, 2024
8ecae45
Update submodule to 208.0.0 (#24544)
metalgearsloth Jan 25, 2024
4eddacc
Resave dungeon templates (#24520)
metalgearsloth Jan 25, 2024
cc3fe9c
Resave meteor arena (#24522)
metalgearsloth Jan 25, 2024
c53d338
Resave arrivals shuttle (#24523)
metalgearsloth Jan 25, 2024
f0bad29
Resave dungeons (#24521)
metalgearsloth Jan 25, 2024
4771eae
Resave cargo shuttle (#24525)
metalgearsloth Jan 25, 2024
15f7b78
Resave infiltrator (#24529)
metalgearsloth Jan 25, 2024
fb55e8b
Resave emergency shuttles (#24526)
metalgearsloth Jan 25, 2024
a13ebf3
Resave event shuttles (#24528)
metalgearsloth Jan 25, 2024
afd160c
Resave mining shuttle (#24534)
metalgearsloth Jan 25, 2024
bdeaa13
Resave test maps (#24535)
metalgearsloth Jan 25, 2024
20a3a85
Resave salvage maps (#24519)
metalgearsloth Jan 25, 2024
df8dacb
Resave admin test arena (#24537)
metalgearsloth Jan 25, 2024
d193c22
Resave centcomm (#24539)
metalgearsloth Jan 25, 2024
b4222b8
Resave dev map (#24538)
metalgearsloth Jan 25, 2024
ba59d03
Resave ruins (#24543)
metalgearsloth Jan 25, 2024
6bcaf0c
Resave escape pod (#24527)
metalgearsloth Jan 25, 2024
2a20a97
Meatball Salvage (#23127)
Blackern5000 Dec 28, 2023
acfbdc2
Resave Delta maps
DebugOk Jan 27, 2024
777b074
Fix missing import and damage change
DebugOk Jan 27, 2024
01e1b0b
Make nukieplanet tileable (#24500)
metalgearsloth Jan 25, 2024
db16f44
Adding Industrial Ore Processor premium recipe (#24345)
Minty642 Jan 25, 2024
c3ed41f
Automatic changelog update
PJBot Jan 25, 2024
ee89573
Ports colored chat names (#24478)
ike709 Jan 25, 2024
59e6156
Cigarettes now do very minor cellular damage (#24546)
Blackern5000 Jan 25, 2024
e89fb90
Automatic changelog update
PJBot Jan 25, 2024
fea6405
make newchat box more opaque (#24555)
EmoGarbage404 Jan 25, 2024
624257a
Removed TilePryingDoAfterEvent (#24552)
Blazeror Jan 25, 2024
ef57beb
Space ambient tweak (#24501)
metalgearsloth Jan 25, 2024
46e9d9e
Automatic changelog update
PJBot Jan 25, 2024
deb0362
Make EscapeInventorySystem respect Unremovable (fix glued hamster del…
Tayrtahn Jan 25, 2024
01b9e7a
Automatic changelog update
PJBot Jan 25, 2024
1e63a6f
Automatic changelog update
PJBot Jan 25, 2024
e99fe9c
remove compact power tech (#24558)
EmoGarbage404 Jan 25, 2024
fa80cfa
Add price multiplier for armor component (#24561)
MilenVolf Jan 25, 2024
ec6080e
Disabled quick equip on paper cups (#24560)
Dutch-VanDerLinde Jan 25, 2024
7863320
Automatic changelog update
PJBot Jan 25, 2024
df0b8b1
Bio hood are real bio hoods now (#24570)
Agoichi Jan 26, 2024
2419e10
Automatic changelog update
PJBot Jan 26, 2024
f5d6c67
Fix notice board storage fill visuals (#24569)
themias Jan 26, 2024
693924b
Fix winter coats prices (#24557)
MilenVolf Jan 26, 2024
b1cb164
Bump nixpkgs input (#24572)
yathxyz Jan 26, 2024
f1adb08
Automatic changelog update
PJBot Jan 26, 2024
6748ab1
Automatic changelog update
PJBot Jan 26, 2024
47d5240
Revert "Cigarettes now do very minor cellular damage" (#24568)
EmoGarbage404 Jan 26, 2024
7e39164
Automatic changelog update
PJBot Jan 26, 2024
a0265a7
Mime hardsuit (#24198)
ERORR404V1 Jan 26, 2024
bc370fb
Mime hardsuit 1984
DebugOk Jan 27, 2024
018abca
Automatic changelog update
PJBot Jan 26, 2024
632f025
Reset LastProduce after plant removal (#24590)
deltanedas Jan 26, 2024
bfb40d5
Grammar fix (#24599)
Psychpsyo Jan 26, 2024
0f59a8a
Remove EShield from Traitor uplink, Nerf EShield price in Nukie uplin…
LordEclipse Jan 27, 2024
f8ae103
Add an inhand sprite to the syndicate jaws of life (#24583)
icekot8 Jan 27, 2024
fd4e1ea
Automatic changelog update
PJBot Jan 27, 2024
909299a
Holoprojectors are cool for officers and Dec (#24582)
Agoichi Jan 27, 2024
b337cf5
Automatic changelog update
PJBot Jan 27, 2024
af42b9a
Fix color tags in admin logs (#24606)
Tayrtahn Jan 27, 2024
9f8b6d7
Rock and Meat anom rework (try 2) (#24449)
TheShuEd Jan 27, 2024
ea14948
Automatic changelog update
PJBot Jan 27, 2024
942563e
Make PACMANs a little better (#24604)
PJB3005 Jan 27, 2024
b4b39b6
Automatic changelog update
PJBot Jan 27, 2024
bb24353
ERT, DeathSquad and Central Command Officer Inital Infected immunity …
Simyon264 Jan 27, 2024
3dd7e7a
Make shotgun slug ammo not useless (#24196)
Blackern5000 Jan 27, 2024
64b5b86
Automatic changelog update
PJBot Jan 27, 2024
082fce4
fix singulo combining debug assert (#24602)
deltanedas Jan 27, 2024
8f4299e
Add the minimumPlayers parameter to the ZombieOutbreak event (#24577)
I-JustUser-I Jan 27, 2024
15d8fbc
Automatic changelog update
PJBot Jan 27, 2024
7f37d09
Add more advertising messages (#24219)
UbaserB Jan 27, 2024
831762e
Biodome satellite ruin (#24608)
UbaserB Jan 27, 2024
1e51983
Keep reagent dispenser inventory ordered (#24304)
quatre Jan 27, 2024
fca53c4
Default navmap to show departments (#24613)
mirrorcult Jan 27, 2024
bf1b2f4
Automatic changelog update
PJBot Jan 27, 2024
0625d42
Repairable vending machines (#24603)
Tayrtahn Jan 27, 2024
82c4812
Automatic changelog update
PJBot Jan 27, 2024
bee2b77
Gravity anomaly rework (#24452)
TheShuEd Jan 27, 2024
1075c2e
Hallway textscreens (#24189)
graevy Jan 27, 2024
a05ca85
Automatic changelog update
PJBot Jan 27, 2024
57816c8
Admin Observers get a hat slot and a pda (#20183)
VasilisThePikachu Jan 27, 2024
169a7ca
Powered light sprite glows with color of their pointlight (#24612)
mirrorcult Jan 27, 2024
0e2c6dd
Automatic changelog update
PJBot Jan 27, 2024
8bf47c9
Pka shuttle projectiles now actually break rocks in one hit (#24627)
Boaz1111 Jan 27, 2024
d502391
Automatic changelog update
PJBot Jan 27, 2024
be60ec7
Bartender limited reagents fixup (#24598)
Hanzdegloker Jan 27, 2024
f0d52c4
Align sprite rear view (#24584)
africalimedrop Jan 27, 2024
60ff465
Ion Storm Weight Increase (#24633)
FungiFellow Jan 27, 2024
191ab43
Automatic changelog update
PJBot Jan 27, 2024
62009ac
Fix linter error
DebugOk Jan 28, 2024
e1de8b3
Reset Hammurabi
DebugOk Jan 28, 2024
2fe4447
Fix Hammurabi
DebugOk Jan 28, 2024
fd28a48
Merge remote-tracking branch 'upstream/master' into Wizmerge-22/01
DebugOk Jan 28, 2024
5355d42
Merge pull request #723 from DebugOk/WizMerge-22/01
DebugOk Jan 28, 2024
11b0c35
Merge branch 'master' of https://github.com/DeltaV-Station/Delta-v in…
DEATHB4DEFEAT Jan 28, 2024
30d09df
disable Captain fax theft objective
DEATHB4DEFEAT Jan 28, 2024
7450cc1
replace wizden tailwag sprites with good ones
DEATHB4DEFEAT Jan 28, 2024
dee633b
spines wag with tails
DEATHB4DEFEAT Jan 28, 2024
b2bce59
fix tests
DEATHB4DEFEAT Jan 28, 2024
7459706
fix longmeme sprite
DEATHB4DEFEAT Jan 28, 2024
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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
5 changes: 4 additions & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,10 @@ dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter
resharper_braces_for_ifelse = required_for_multiline
resharper_keep_existing_attribute_arrangement = true

[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets}]
[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets,props}]
indent_size = 2

[nuget.config]
indent_size = 2

[{*.yaml,*.yml}]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Install dependencies
run: sudo apt-get install -y python3-paramiko
run: sudo apt-get install -y python3-paramiko python3-lxml

- uses: actions/[email protected]
with:
Expand Down
9 changes: 9 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,15 @@
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Client (Compatibility renderer)",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/bin/Content.Client/Content.Client.dll",
"args": "--cvar display.compat=true",
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Server",
"type": "coreclr",
Expand Down
2 changes: 1 addition & 1 deletion Content.Benchmarks/Content.Benchmarks.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<LangVersion>12</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="BenchmarkDotNet" Version="0.13.1" />
<PackageReference Include="BenchmarkDotNet" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Content.Client\Content.Client.csproj" />
Expand Down
1 change: 1 addition & 0 deletions Content.Benchmarks/EntityManagerGetAllComponents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public void Setup()
var componentFactory = new Mock<IComponentFactory>();
componentFactory.Setup(p => p.GetComponent<DummyComponent>()).Returns(new DummyComponent());
componentFactory.Setup(p => p.GetRegistration(It.IsAny<DummyComponent>())).Returns(dummyReg);
componentFactory.Setup(p => p.GetAllRegistrations()).Returns(new[] { dummyReg });
componentFactory.Setup(p => p.GetAllRefTypes()).Returns(new[] { CompIdx.Index<DummyComponent>() });

IoCManager.RegisterInstance<IComponentFactory>(componentFactory.Object);
Expand Down
2 changes: 1 addition & 1 deletion Content.Benchmarks/MapLoadBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public async Task Cleanup()
PoolManager.Shutdown();
}

public static IEnumerable<string> MapsSource { get; set; }
public static readonly string[] MapsSource = { "Empty", "Box", "Aspid", "Bagel", "Dev", "CentComm", "Atlas", "Core", "TestTeg", "Saltern", "Packed", "Omega", "Cluster", "Gemini", "Reach", "Origin", "Meta", "Marathon", "Europa", "MeteorArena", "Fland", "Barratry" };

[ParamsSource(nameof(MapsSource))]
public string Map;
Expand Down
7 changes: 0 additions & 7 deletions Content.Benchmarks/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,6 @@ public static void Main(string[] args)

public static async Task MainAsync(string[] args)
{
PoolManager.Startup(typeof(Program).Assembly);
var pair = await PoolManager.GetServerClient();
var gameMaps = pair.Server.ResolveDependency<IPrototypeManager>().EnumeratePrototypes<GameMapPrototype>().ToList();
MapLoadBenchmark.MapsSource = gameMaps.Select(x => x.ID);
await pair.CleanReturnAsync();
PoolManager.Shutdown();

#if DEBUG
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nWARNING: YOU ARE RUNNING A DEBUG BUILD, USE A RELEASE BUILD FOR AN ACCURATE BENCHMARK");
Expand Down
187 changes: 187 additions & 0 deletions Content.Benchmarks/PvsBenchmark.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
#nullable enable
using System;
using System.Collections.Generic;
using System.Linq;
using BenchmarkDotNet.Attributes;
using Content.IntegrationTests;
using Content.IntegrationTests.Pair;
using Content.Server.Warps;
using Robust.Server.GameObjects;
using Robust.Shared;
using Robust.Shared.Analyzers;
using Robust.Shared.Enums;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using Robust.Shared.Map;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Random;

namespace Content.Benchmarks;

// This benchmark probably benefits from some accidental cache locality. I,e. the order in which entities in a pvs
// chunk are sent to players matches the order in which the entities were spawned.
//
// in a real mid-late game round, this is probably no longer the case.
// One way to somewhat offset this is to update the NetEntity assignment to assign random (but still unique) NetEntity uids to entities.
// This makes the benchmark run noticeably slower.

[Virtual]
public class PvsBenchmark
{
public const string Map = "Maps/box.yml";

[Params(1, 8, 80)]
public int PlayerCount { get; set; }

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;
private SharedTransformSystem _sys = default!;
private EntityCoordinates[] _locations = default!;

[GlobalSetup]
public void Setup()
{
#if !DEBUG
ProgramShared.PathOffset = "../../../../";
#endif
PoolManager.Startup(null);

_pair = PoolManager.GetServerClient().GetAwaiter().GetResult();
_entMan = _pair.Server.ResolveDependency<IEntityManager>();
_pair.Server.CfgMan.SetCVar(CVars.NetPVS, true);
_pair.Server.CfgMan.SetCVar(CVars.ThreadParallelCount, 0);
_pair.Server.CfgMan.SetCVar(CVars.NetPvsAsync, false);
_sys = _entMan.System<SharedTransformSystem>();

// Spawn the map
_pair.Server.ResolveDependency<IRobustRandom>().SetSeed(42);
_pair.Server.WaitPost(() =>
{
var success = _entMan.System<MapLoaderSystem>().TryLoad(_mapId, Map, out _);
if (!success)
throw new Exception("Map load failed");
_pair.Server.MapMan.DoMapInitialize(_mapId);
}).Wait();

// Get list of ghost warp positions
_spawns = _entMan.AllComponentsList<WarpPointComponent>()
.OrderBy(x => x.Component.Location)
.Select(x => _entMan.GetComponent<TransformComponent>(x.Uid).Coordinates)
.ToArray();

Array.Resize(ref _players, PlayerCount);

// Spawn "Players".
_pair.Server.WaitPost(() =>
{
for (var i = 0; i < PlayerCount; i++)
{
var pos = _spawns[i % _spawns.Length];
var uid =_entMan.SpawnEntity("MobHuman", pos);
_pair.Server.ConsoleHost.ExecuteCommand($"setoutfit {_entMan.GetNetEntity(uid)} CaptainGear");
_players[i] = new DummySession{AttachedEntity = uid};
}
}).Wait();

// Repeatedly move players around so that they "explore" the map and see lots of entities.
// This will populate their PVS data with out-of-view entities.
var rng = new Random(42);
ShufflePlayers(rng, 100);

_pair.Server.PvsTick(_players);
_pair.Server.PvsTick(_players);

var ents = _players.Select(x => x.AttachedEntity!.Value).ToArray();
_locations = ents.Select(x => _entMan.GetComponent<TransformComponent>(x).Coordinates).ToArray();
}

private void ShufflePlayers(Random rng, int count)
{
while (count > 0)
{
ShufflePlayers(rng);
count--;
}
}

private void ShufflePlayers(Random rng)
{
_pair.Server.PvsTick(_players);

var ents = _players.Select(x => x.AttachedEntity!.Value).ToArray();
var locations = ents.Select(x => _entMan.GetComponent<TransformComponent>(x).Coordinates).ToArray();

// Shuffle locations
var n = locations.Length;
while (n > 1)
{
n -= 1;
var k = rng.Next(n + 1);
(locations[k], locations[n]) = (locations[n], locations[k]);
}

_pair.Server.WaitPost(() =>
{
for (var i = 0; i < PlayerCount; i++)
{
_sys.SetCoordinates(ents[i], locations[i]);
}
}).Wait();

_pair.Server.PvsTick(_players);
}

/// <summary>
/// Basic benchmark for PVS in a static situation where nothing moves or gets dirtied..
/// This effectively provides a lower bound on "real" pvs tick time, as it is missing:
/// - PVS chunks getting dirtied and needing to be rebuilt
/// - Fetching component states for dirty components
/// - Compressing & sending network messages
/// - Sending PVS leave messages
/// </summary>
[Benchmark]
public void StaticTick()
{
_pair.Server.PvsTick(_players);
}

/// <summary>
/// Basic benchmark for PVS in a situation where players are teleporting all over the place. This isn't very
/// realistic, but unlike <see cref="StaticTick"/> this will actually also measure the speed of processing dirty
/// chunks and sending PVS leave messages.
/// </summary>
[Benchmark]
public void CycleTick()
{
_cycleOffset = (_cycleOffset + 1) % _players.Length;
_pair.Server.WaitPost(() =>
{
for (var i = 0; i < PlayerCount; i++)
{
_sys.SetCoordinates(_players[i].AttachedEntity!.Value, _locations[(i + _cycleOffset) % _players.Length]);
}
}).Wait();
_pair.Server.PvsTick(_players);
}

private sealed class DummySession : ICommonSession
{
public SessionStatus Status => SessionStatus.InGame;
public EntityUid? AttachedEntity {get; set; }
public NetUserId UserId => default;
public string Name => string.Empty;
public short Ping => default;
public INetChannel Channel { get; set; } = default!;
public LoginType AuthType => default;
public HashSet<EntityUid> ViewSubscriptions { get; } = new();
public DateTime ConnectedTime { get; set; }
public SessionState State => default!;
public SessionData Data => default!;
public bool ClientSide { get; set; }
}
}
47 changes: 31 additions & 16 deletions Content.Client/Administration/QuickDialogSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

namespace Content.Client.Administration;

// mfw they ported input() from BYOND

/// <summary>
/// This handles the client portion of quick dialogs.
/// </summary>
Expand All @@ -32,39 +34,48 @@ private void OpenDialog(QuickDialogOpenEvent ev)

var promptsDict = new Dictionary<string, LineEdit>();

foreach (var entry in ev.Prompts)
for (var index = 0; index < ev.Prompts.Count; index++)
{
var entry = ev.Prompts[index];
var entryBox = new BoxContainer()
{
Orientation = BoxContainer.LayoutOrientation.Horizontal
};

entryBox.AddChild(new Label { Text = entry.Prompt, HorizontalExpand = true, SizeFlagsStretchRatio = 0.5f });
var edit = new LineEdit() { HorizontalExpand = true};
var edit = new LineEdit() { HorizontalExpand = true };
entryBox.AddChild(edit);
switch (entry.Type)
{
case QuickDialogEntryType.Integer:
edit.IsValid += VerifyInt;
edit.PlaceHolder = "Integer..";
edit.PlaceHolder = Loc.GetString("quick-dialog-ui-integer");
break;
case QuickDialogEntryType.Float:
edit.IsValid += VerifyFloat;
edit.PlaceHolder = "Float..";
edit.PlaceHolder = Loc.GetString("quick-dialog-ui-float");
break;
case QuickDialogEntryType.ShortText:
edit.IsValid += VerifyShortText;
edit.PlaceHolder = "Short text..";
edit.PlaceHolder = Loc.GetString("quick-dialog-ui-short-text");
break;
case QuickDialogEntryType.LongText:
edit.IsValid += VerifyLongText;
edit.PlaceHolder = "Long text..";
edit.PlaceHolder = Loc.GetString("quick-dialog-ui-long-text");
break;
default:
throw new ArgumentOutOfRangeException();
}

promptsDict.Add(entry.FieldId, edit);
entryContainer.AddChild(entryBox);

if (index == ev.Prompts.Count - 1)
{
// Last text box gets enter confirmation.
// Only the last so you don't accidentally confirm early.
edit.OnTextEntered += _ => Confirm();
}
}

var buttonsBox = new BoxContainer()
Expand All @@ -79,17 +90,10 @@ private void OpenDialog(QuickDialogOpenEvent ev)
{
var okButton = new Button()
{
Text = "Ok",
Text = Loc.GetString("quick-dialog-ui-ok"),
};

okButton.OnPressed += _ =>
{
RaiseNetworkEvent(new QuickDialogResponseEvent(ev.DialogId,
promptsDict.Select(x => (x.Key, x.Value.Text)).ToDictionary(x => x.Key, x => x.Text),
QuickDialogButtonFlag.OkButton));
alreadyReplied = true;
window.Close();
};
okButton.OnPressed += _ => Confirm();

buttonsBox.AddChild(okButton);
}
Expand All @@ -98,7 +102,7 @@ private void OpenDialog(QuickDialogOpenEvent ev)
{
var cancelButton = new Button()
{
Text = "Cancel",
Text = Loc.GetString("quick-dialog-ui-cancel"),
};

cancelButton.OnPressed += _ =>
Expand Down Expand Up @@ -130,6 +134,17 @@ private void OpenDialog(QuickDialogOpenEvent ev)
window.MinWidth *= 2; // Just double it.

window.OpenCentered();

return;

void Confirm()
{
RaiseNetworkEvent(new QuickDialogResponseEvent(ev.DialogId,
promptsDict.Select(x => (x.Key, x.Value.Text)).ToDictionary(x => x.Key, x => x.Text),
QuickDialogButtonFlag.OkButton));
alreadyReplied = true;
window.Close();
}
}

private bool VerifyInt(string input)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<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="Teleport" Text="{Loc 'admin-player-actions-teleport'}" StyleClasses="OpenLeft" />
<Button Visible="False" Name="Follow" Text="{Loc 'admin-player-actions-follow'}" StyleClasses="OpenLeft" />
</BoxContainer>
</BoxContainer>
</SplitContainer>
Expand Down
Loading
Loading