Skip to content
This repository has been archived by the owner on Nov 1, 2024. It is now read-only.

Upstream july #366

Merged
merged 1,094 commits into from
Jul 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1094 commits
Select commit Hold shift + click to select a range
6bea6b2
machine parts, salvage techfab
whatston3 Jun 21, 2024
321716a
NF Devices/production.yml - stackRequirements
whatston3 Jun 21, 2024
f23890e
Trait
dvir001 Jun 21, 2024
9509453
Merge branch 'master' of https://github.com/dvir001/frontier-station-…
dvir001 Jun 21, 2024
45d84ab
Update pen.yml
dvir001 Jun 21, 2024
9a22e4e
Merge branch 'master' into june24-upstream-merge
dvir001 Jun 21, 2024
da8c045
Update speech.yml
dvir001 Jun 21, 2024
eab3775
FIxup
dvir001 Jun 21, 2024
cc6399f
Unmangle vox metadata
whatston3 Jun 21, 2024
35a3289
RPED under _NF folder, PartExchanger stuff
whatston3 Jun 21, 2024
98da099
Restore upgradeable parts, v1 - broken
whatston3 Jun 21, 2024
c746851
Fix lathe
dvir001 Jun 21, 2024
efabfa8
Fix Hardsuits/security.rsi
whatston3 Jun 21, 2024
ab0d52f
security.rsi: restore on-equipped-HELMET
whatston3 Jun 21, 2024
039cc10
Hidden loadout groups (#29170)
Errant-4 Jun 19, 2024
cd08dd2
Bags
dvir001 Jun 21, 2024
1a34203
Cleanup
dvir001 Jun 21, 2024
cdced97
Update Upstream.yml
dvir001 Jun 21, 2024
e3c3080
Update dungeon_items_general.yml
dvir001 Jun 21, 2024
cec37e0
FireaxeCabinetCommand: add openable
whatston3 Jun 22, 2024
3d438b1
YAMLLinter fixes (backpack fills, machine parts)
whatston3 Jun 22, 2024
cb0241e
fireaxe_cabinet: yaml linter fixes
whatston3 Jun 22, 2024
b11a08b
pen: remove stampedBorderless, stampedPersonal
whatston3 Jun 22, 2024
730ebf0
fix syndicate, mob_hostile_base, production.yml
whatston3 Jun 22, 2024
b0cabf4
syndicate.yml: parent - Uplink to LightUplink
whatston3 Jun 22, 2024
a115135
Fix stack itemSize
whatston3 Jun 22, 2024
e9a730a
Remove overflowJobs from stations & shuttles
whatston3 Jun 22, 2024
70240b0
NFSD, Pirate, Syndie light uplink store defns
whatston3 Jun 22, 2024
671aa4a
trade station overflowJobs, pirate/sec uplinks
whatston3 Jun 22, 2024
b8dfa56
fix pirate uplink id
whatston3 Jun 22, 2024
01ec90f
bluespace event delays, uplink storeName->name
whatston3 Jun 22, 2024
9d06464
event startDelay, tranq lathe recipe, floor stacks
whatston3 Jun 22, 2024
575bc37
tall/short localized names, missing nyano janitor
whatston3 Jun 22, 2024
c592115
NFSD, SR bag inheritance
whatston3 Jun 22, 2024
b32351b
bags: parents to parent
whatston3 Jun 22, 2024
1d4b3e0
bag fixes (NOTE: nyano/ERT fills were removed)
whatston3 Jun 22, 2024
147a9e6
Cleanp Lathes, again
dvir001 Jun 22, 2024
61eef49
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jun 22, 2024
8240906
Backpack
dvir001 Jun 22, 2024
e2253aa
CableHV not real
dvir001 Jun 22, 2024
d21c3ae
MachinePartPrototype->_NF, machinepart spawning
whatston3 Jun 22, 2024
66e2001
Emotes
dvir001 Jun 22, 2024
39e4dd7
Fix Basic Mobs
dvir001 Jun 22, 2024
eef489f
Unmask the Syndicate
dvir001 Jun 22, 2024
bf27020
Update emergencyresponseteam.yml
dvir001 Jun 22, 2024
f624ea8
First attempt, remove MsgWhitelist
whatston3 Jun 22, 2024
1fbdafa
Xeno
dvir001 Jun 22, 2024
75b9cbd
Update equipped-FEET.png
dvir001 Jun 22, 2024
24f2650
Spawner Fixup
dvir001 Jun 22, 2024
ac88b99
Update wrecks.yml
dvir001 Jun 22, 2024
6cc956b
IdCardConsoleWindow: Passenger->Contractor
whatston3 Jun 22, 2024
a920b77
Revert "Apc & Substation resprite (#28998)"
whatston3 Jun 22, 2024
a2c45da
HumanoidProfileEditor: do not import bank balance
whatston3 Jun 23, 2024
e9dc19a
ghost role & job whitelists: rough version (pain)
whatston3 Jun 23, 2024
5ed388e
FIXME: HumanoidCharacterProfile.WithBankBalance
whatston3 Jun 23, 2024
db778e8
GhostRolePrototype for whitelisted role lookup
whatston3 Jun 24, 2024
5162d07
Ghost role whitelist consistency
whatston3 Jun 24, 2024
aefed7e
Default char to 25k spesos, SharedGameTicker job
whatston3 Jun 24, 2024
1b6c174
Set Charlie Charlieson's bank balance
whatston3 Jun 24, 2024
8a2417d
Fix revolver whitelist check
whatston3 Jun 24, 2024
e496851
ConstructionSystem: machine upgrades to _NF
whatston3 Jun 24, 2024
aa1e84a
better stack upgrades pt1, better donk co oven
whatston3 Jun 24, 2024
58cc66b
MachinePartComponent syntax error
whatston3 Jun 25, 2024
dc2fe7d
breaking rpeds to get compilation working
whatston3 Jun 25, 2024
c962876
MachinePartPrototype: add stack type
whatston3 Jun 25, 2024
2dbbbbe
Returning to "requirements" for upgradeable comps
whatston3 Jun 25, 2024
b7f1ae1
yaml fixup, machine frame progress
whatston3 Jun 25, 2024
4b4ecf5
Remove stack from machinePart prototypes
whatston3 Jun 25, 2024
2057367
rped fix v2
whatston3 Jun 25, 2024
dcf1573
rped fix 2.1 - comments, fix syntax, progress
whatston3 Jun 25, 2024
576579b
Add PowerCell tiers to power cells
whatston3 Jun 25, 2024
847969f
don't split stacks when they need exactly as much
whatston3 Jun 25, 2024
1779659
Hide unused departments
whatston3 Jun 25, 2024
6763332
MicrowaveSystem: respect init cook time reduction
whatston3 Jun 26, 2024
ce49049
upg machine parts to _NF, different stack types
whatston3 Jun 26, 2024
4641271
add base component ratings, upg components to _NF
whatston3 Jun 26, 2024
9bc2186
ghost role ban & whitelist checks
whatston3 Jun 26, 2024
094fa36
revert ghost role ban, UI checks whitelist status
whatston3 Jun 26, 2024
b8e7ab2
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Jun 27, 2024
2f33541
undupe loadout spawn, add job-specific gear
whatston3 Jun 27, 2024
c97cd5b
Global whitelist commands & checks
whatston3 Jun 27, 2024
6ffafae
WhitelistCommands: remove await
whatston3 Jun 27, 2024
3f79594
NFSD department playtime printouts
whatston3 Jun 27, 2024
a054b9d
Missing localized loadout species descriptor
whatston3 Jun 27, 2024
48bd4b1
Fix Kilderkin guidebook entry
whatston3 Jun 27, 2024
9b9350a
Frontier guidebook rules
whatston3 Jun 27, 2024
f090de9
Frontier Guidebook rules: headers
whatston3 Jun 27, 2024
59f1598
Frontier Guidebook rules rework
whatston3 Jun 27, 2024
d9a0fe7
Add individual rule pages as children, rewrites
whatston3 Jun 27, 2024
598a70e
guide text localizations (unused?)
whatston3 Jun 27, 2024
65bbb60
HumanoidProfileEditor: "spawn-as-overflow" text
whatston3 Jun 27, 2024
d1b9ddf
Reordering & naming Frontier guidebook entries
whatston3 Jun 27, 2024
4235dd1
MachineUpgrading parse fix, remove antags, cargo
whatston3 Jun 27, 2024
ac4cbdc
Remove references to cargo, antags, glossary pages
whatston3 Jun 27, 2024
46eb0ea
Guidebook rewrites
whatston3 Jun 27, 2024
6820d53
Reorder NF guidebook sections
whatston3 Jun 27, 2024
b2d69c9
Remove placing items on tabletop boards. (#29513)
PJB3005 Jun 27, 2024
ec050a7
Remove antag guidebook refs
whatston3 Jun 27, 2024
4196b94
Remove placing items on tabletop boards. (#29513) (#1570)
whatston3 Jun 27, 2024
b611714
Remove more guidebook entries
whatston3 Jun 27, 2024
ae88b15
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Jun 27, 2024
71407b5
Remove books & cargo guidebook entry refs
whatston3 Jun 27, 2024
1c05085
Added uplinks to pirate spawn loadout (#1572)
Salvantrix Jun 27, 2024
d38f65b
Automatic Changelog (#1572)
FrontierATC Jun 27, 2024
8f15809
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Jun 27, 2024
4734494
Pirates: uplink to pocket 1, captain back storage
whatston3 Jun 27, 2024
7658ef0
Remove commented out client prefs UI files
whatston3 Jun 27, 2024
41627a6
Speech: Streetpunk, Scottish accents costs to 1
whatston3 Jun 28, 2024
aada9d0
events.yml: restore FalseAlarm for consistency
whatston3 Jun 28, 2024
619dd3c
Restore LoneNukeOps, uncomment FalseAlarm event
whatston3 Jun 28, 2024
99feade
Update GasMixerComponent.cs
dvir001 Jun 28, 2024
dd0b1ba
Filters
dvir001 Jun 28, 2024
9b8af83
NFSD
dvir001 Jun 28, 2024
e8c4543
Update security_uplink_catalog.yml
dvir001 Jun 28, 2024
dc1370d
Mail: Cleanup, Fixes, More SR Mail (#1535)
whatston3 Jun 28, 2024
c96ef24
Automatic Changelog (#1535)
FrontierATC Jun 28, 2024
994e872
Update VendingMachineSystem.cs
dvir001 Jun 28, 2024
2e5c16a
Shipyard
dvir001 Jun 28, 2024
714d258
Shipyard
dvir001 Jun 28, 2024
c175ff4
Update ShipyardSystem.Consoles.cs
dvir001 Jun 28, 2024
4adb892
POI + Frontier
dvir001 Jun 28, 2024
bf634d8
Buffs data carrier duration (#1566)
Myzumi Jun 28, 2024
f32701d
Automatic Changelog (#1566)
FrontierATC Jun 28, 2024
9a3f241
NFSD
dvir001 Jun 28, 2024
d5e182a
MagnetPickupSystem timing (#1575)
whatston3 Jun 29, 2024
83f8a33
THE SR BERET (#1573)
VividPups Jun 29, 2024
43c79d9
Automatic Changelog (#1573)
FrontierATC Jun 29, 2024
f7f6a80
ATM, shipyard console insert/remove events, string
whatston3 Jun 29, 2024
d34b9c4
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Jun 29, 2024
581dd7a
Pilot belt as a belt, not outerclothing
whatston3 Jun 29, 2024
9d52b93
Update mob_hostile_expeditions_dinosaurs.yml
dvir001 Jun 29, 2024
2b5d5b8
Update mercenary.yml
dvir001 Jun 29, 2024
fe98fa5
Update access_configurator.yml
dvir001 Jun 29, 2024
bc82102
Shredder
dvir001 Jun 29, 2024
b741789
Update SharedPuddleSystem.Evaporation.cs
dvir001 Jun 29, 2024
ff4a106
Fix/remove FRONTIER MERGE comments
whatston3 Jun 29, 2024
b9319e1
Resolving FRONTIER MERGE pt 2
whatston3 Jun 29, 2024
f9998aa
GeneralRecordsUI: accept jobList, comment it
whatston3 Jun 29, 2024
83c7b8b
MachineFrameSystem: dict type fix
whatston3 Jun 29, 2024
62683ec
MachineFrameComponent: Progress, Requirements type
whatston3 Jun 29, 2024
250a800
departments.yml: show antag, remove enabled
whatston3 Jun 29, 2024
fb6d6bd
Pain
dvir001 Jun 29, 2024
61359ad
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jun 29, 2024
150379b
Events + Trash
dvir001 Jun 29, 2024
7afed9f
Update trash.yml
dvir001 Jun 29, 2024
e3b086c
Maps
dvir001 Jun 29, 2024
852569b
Update events.yml
dvir001 Jun 29, 2024
52cf8b8
Laser Pistol (#1527)
ErhardSteinhauer Jun 30, 2024
fb73c9b
Automatic Changelog (#1527)
FrontierATC Jun 30, 2024
10983f0
Unhardcode a bunch of shipyard console stuff (#1581)
arimah Jun 30, 2024
e70d673
Automatic Changelog (#1581)
FrontierATC Jun 30, 2024
7d66f95
Merge branch 'master' of https://github.com/new-frontiers-14/frontier…
whatston3 Jun 30, 2024
4f42327
Remove food vendors from ships & POIs.
whatston3 Jun 30, 2024
55979f4
Remove extraneous using declaration
arimah Jun 30, 2024
077dd46
Frontier birthday gift & holiday
whatston3 Jun 30, 2024
76b6f7b
Fix Frontier's birthday start day
whatston3 Jun 30, 2024
a52f539
Frontier birthday: July 1-3, "recently", not today
whatston3 Jun 30, 2024
5be37d1
initial commit (#1584)
ErhardSteinhauer Jul 1, 2024
2fca06e
Automatic Changelog (#1584)
FrontierATC Jul 1, 2024
d36b828
Update tools.yml
dvir001 Jul 1, 2024
e540a41
Frontier birthday ends July 3, birthday paper name
whatston3 Jul 1, 2024
36e4aa7
Update chefvend.yml
dvir001 Jul 1, 2024
6e5c678
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jul 1, 2024
c59ac05
AGPL v3 (#1585)
Cheackraze Jul 1, 2024
e6299dd
Update base.yml
dvir001 Jul 1, 2024
8723807
No longer needed
dvir001 Jul 1, 2024
39f3c09
Update computers_shipyard_mothership.yml
dvir001 Jul 1, 2024
aab2f2f
Revert "Refinement process follow-up (#1144)" (#1586)
dvir001 Jul 1, 2024
42846fe
Automatic Changelog (#1586)
FrontierATC Jul 1, 2024
3fe5e9d
Update tools.yml
dvir001 Jul 1, 2024
5fd88fb
Update pets.yml
dvir001 Jul 1, 2024
50975f9
Update hud.yml
dvir001 Jul 1, 2024
c5afb3b
Nfsd
dvir001 Jul 1, 2024
b096c2b
WorldGen
dvir001 Jul 1, 2024
30e4371
Update mailDeliveries.yml
dvir001 Jul 1, 2024
9dbd742
Update speech.yml
dvir001 Jul 1, 2024
20b0d92
Update speech.yml
dvir001 Jul 1, 2024
2ce4ff0
Fixes the Admeme Teleporter Despawns (#1576)
Myzumi Jul 1, 2024
136c29f
Automatic Changelog (#1576)
FrontierATC Jul 1, 2024
3ffcfd1
RSI fixes
whatston3 Jul 1, 2024
84a0708
Salvage
dvir001 Jul 1, 2024
a13c589
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jul 1, 2024
6b180e0
fix rogue
Cheackraze Jul 1, 2024
93857af
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
Cheackraze Jul 1, 2024
9070817
Update dungeon_items_kitchen.yml
dvir001 Jul 1, 2024
676598e
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jul 1, 2024
2c6fa14
Salvage & wrecks cleanup
whatston3 Jul 1, 2024
5b82072
Update salvage.yml
dvir001 Jul 1, 2024
9501714
Merge branch 'june24-upstream-merge' of https://github.com/whatston3/…
dvir001 Jul 1, 2024
20ce75f
Update salvage.yml
dvir001 Jul 1, 2024
2ffd279
Merge pull request #1536 from whatston3/june24-upstream-merge
whatston3 Jul 1, 2024
4601c41
Missing camera server (#1587)
dvir001 Jul 1, 2024
e8094f1
More descriptive ship sale & cryo pod messages (#1550)
whatston3 Jul 2, 2024
56977ce
Remove LoneOpsSpawn rule, nukie admin verb, and unused preloaded shut…
whatston3 Jul 2, 2024
0c26d8d
Automatic Changelog (#1589)
FrontierATC Jul 2, 2024
1f1f3d6
Fix railing (#1591)
ErhardSteinhauer Jul 2, 2024
8d3652c
Automatic Changelog (#1591)
FrontierATC Jul 2, 2024
77dcdda
Machine Part Bugfixes (#1592)
whatston3 Jul 2, 2024
6d4760e
Automatic Changelog (#1592)
FrontierATC Jul 2, 2024
c18fbbd
GhostRolesEui: require prototype ID to disable btn (#1593)
whatston3 Jul 2, 2024
527262b
Automatic Changelog (#1593)
FrontierATC Jul 2, 2024
5c34084
Suit storage slot for outer clothing (#1590)
ErhardSteinhauer Jul 2, 2024
26c3b4e
Automatic Changelog (#1590)
FrontierATC Jul 2, 2024
5ba5969
Add bank balance to lobby, character setup, and loadout screens. (#1588)
whatston3 Jul 2, 2024
40dc48e
Automatic Changelog (#1588)
FrontierATC Jul 2, 2024
df41e8e
Guidebook shuttle maps and additional entries (#1571)
ErhardSteinhauer Jul 2, 2024
b8d2460
Automatic Changelog (#1571)
FrontierATC Jul 2, 2024
6288781
Selective dropper for Service Roles (#1475)
blueDev2 Jul 2, 2024
15f0ed5
Automatic Changelog (#1475)
FrontierATC Jul 2, 2024
113ea92
Gestio burst-fire 20 rifle (#1277)
Qulibly Jul 2, 2024
6ad2e24
Automatic Changelog (#1277)
FrontierATC Jul 2, 2024
715d192
Restore NFSD Nonlethal Armory (#1595)
dvir001 Jul 2, 2024
8c52b97
ContrabandClothing faction (#1594)
ErhardSteinhauer Jul 2, 2024
e508192
Automatic Changelog (#1594)
FrontierATC Jul 2, 2024
9d7515c
Machine Parts Resprite (#1597)
dvir001 Jul 3, 2024
7b97f99
Fix pews (#1606)
whatston3 Jul 4, 2024
f64899f
IFF strobes to loadouts (#1604)
ErhardSteinhauer Jul 4, 2024
73f2a61
Automatic Changelog (#1604)
FrontierATC Jul 4, 2024
9500d8a
Belching (#1549)
BorisTakerman Jul 4, 2024
6c5701a
NoSpawn for shuttle maps (#1608)
ErhardSteinhauer Jul 4, 2024
1b22f0f
Stylish loadout items (#1607)
ErhardSteinhauer Jul 4, 2024
0cad229
Automatic Changelog (#1607)
FrontierATC Jul 4, 2024
1135b18
Goblin throat singing (#1599)
ErhardSteinhauer Jul 4, 2024
5d338c6
Automatic Changelog (#1599)
FrontierATC Jul 4, 2024
9df8fa7
Better Harpy Mimicry (#1602)
whatston3 Jul 4, 2024
a912db9
Automatic Changelog (#1602)
FrontierATC Jul 4, 2024
fd922a3
Marauder Revamp (#1244)
Kesiath Jul 5, 2024
e0031fe
Automatic Changelog (#1244)
FrontierATC Jul 5, 2024
26f64d2
Bookworm QoL update (#1605)
arimah Jul 5, 2024
4174f17
Automatic Changelog (#1605)
FrontierATC Jul 5, 2024
5fc2719
NSF Broadhead v1.1 (#1539)
Tych0theSynth Jul 5, 2024
7bc3622
Automatic Changelog (#1539)
FrontierATC Jul 5, 2024
ae3d26b
SBB Lyrae v1.1 (#1537)
Tych0theSynth Jul 5, 2024
31e9829
Automatic Changelog (#1537)
FrontierATC Jul 5, 2024
0440d38
schedule (#1609)
ErhardSteinhauer Jul 5, 2024
e3ef523
Automatic Changelog (#1609)
FrontierATC Jul 5, 2024
fcef697
апстрём
Sh1ntra Jul 6, 2024
825d0a6
Немного фиксов ftl'ок
Sh1ntra Jul 6, 2024
63c4867
начинаем воркать
Sh1ntra Jul 7, 2024
650dbda
продолжаю воркать
Sh1ntra Jul 7, 2024
bd8ebac
воркинг
Sh1ntra Jul 9, 2024
5466d01
допукал, занимаюсь прототипами
Sh1ntra Jul 9, 2024
fa0425d
ну сборка запускается, кайфы
Sh1ntra Jul 9, 2024
fa49c11
мерсен, помяукай об этом
Sh1ntra Jul 12, 2024
c2c6d75
немножка фиксов
Sh1ntra Jul 12, 2024
d30d9fb
со спрайтами всё гут
Sh1ntra Jul 12, 2024
ae6ff5a
изменил мету, вырезал вульпу
Sh1ntra Jul 12, 2024
b5d8b5d
Переводы
Vonsant Jul 13, 2024
0a91920
Ошибки линтера
Vonsant Jul 13, 2024
c9b1328
Фиксы линтера 2
Vonsant Jul 13, 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.
19 changes: 13 additions & 6 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
root = true

[*]

charset = utf-8
Expand All @@ -12,6 +13,7 @@ tab_width = 4
#end_of_line = crlf
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 120

#### .NET Coding Conventions ####

Expand Down Expand Up @@ -277,7 +279,7 @@ dotnet_naming_style.t_upper_camel_case_style.capitalization = pascal_case
dotnet_naming_style.t_upper_camel_case_style.required_prefix = T
dotnet_naming_style.upper_camel_case_style.capitalization = pascal_case

dotnet_naming_symbols.constants_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
dotnet_naming_symbols.constants_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
dotnet_naming_symbols.constants_symbols.applicable_kinds = field
dotnet_naming_symbols.constants_symbols.required_modifiers = const

Expand Down Expand Up @@ -316,27 +318,32 @@ dotnet_naming_symbols.private_static_fields_symbols.required_modifiers = static

dotnet_naming_symbols.private_static_readonly_symbols.applicable_accessibilities = private
dotnet_naming_symbols.private_static_readonly_symbols.applicable_kinds = field
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static,readonly
dotnet_naming_symbols.private_static_readonly_symbols.required_modifiers = static, readonly

dotnet_naming_symbols.property_symbols.applicable_accessibilities = *
dotnet_naming_symbols.property_symbols.applicable_kinds = property

dotnet_naming_symbols.public_fields_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
dotnet_naming_symbols.public_fields_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
dotnet_naming_symbols.public_fields_symbols.applicable_kinds = field

dotnet_naming_symbols.static_readonly_symbols.applicable_accessibilities = public,internal,protected,protected_internal,private_protected
dotnet_naming_symbols.static_readonly_symbols.applicable_accessibilities = public, internal, protected, protected_internal, private_protected
dotnet_naming_symbols.static_readonly_symbols.applicable_kinds = field
dotnet_naming_symbols.static_readonly_symbols.required_modifiers = static,readonly
dotnet_naming_symbols.static_readonly_symbols.required_modifiers = static, readonly

dotnet_naming_symbols.types_and_namespaces_symbols.applicable_accessibilities = *
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = namespace,class,struct,enum,delegate
dotnet_naming_symbols.types_and_namespaces_symbols.applicable_kinds = namespace, class, struct, enum, delegate

dotnet_naming_symbols.type_parameters_symbols.applicable_accessibilities = *
dotnet_naming_symbols.type_parameters_symbols.applicable_kinds = type_parameter

# ReSharper properties
resharper_braces_for_ifelse = required_for_multiline
resharper_csharp_wrap_arguments_style = chop_if_long
resharper_csharp_wrap_parameters_style = chop_if_long
resharper_keep_existing_attribute_arrangement = true
resharper_wrap_chained_binary_patterns = chop_if_long
resharper_wrap_chained_method_calls = chop_if_long
resharper_csharp_trailing_comma_in_multiline_lists = true

[*.{csproj,xml,yml,yaml,dll.config,msbuildproj,targets,props}]
indent_size = 2
Expand Down
6 changes: 4 additions & 2 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#/Content.*/GameTicking/ @moonheart08 @EmoGarbage404
#/Resources/ServerInfo/ @moonheart08 @Chief-Engineer
#/Resources/ServerInfo/Guidebook/ @moonheart08 @EmoGarbage404
#/Resources/ServerInfo/Guidebook/ServerRules/ @Chief-Engineer
#/Resources/engineCommandPerms.yml @moonheart08 @Chief-Engineer
#/Resources/clientCommandPerms.yml @moonheart08 @Chief-Engineer

Expand All @@ -23,19 +24,20 @@
#/Resources/Prototypes/Body/ @DrSmugleaf # suffering
#/Resources/Prototypes/Entities/Mobs/Player/ @DrSmugleaf
#/Resources/Prototypes/Entities/Mobs/Species/ @DrSmugleaf
#/Resources/Prototypes/Guidebook/rules.yml @Chief-Engineer
#/Content.*/Body/ @DrSmugleaf
#/Content.YAMLLinter @DrSmugleaf
#/Content.Shared/Damage/ @DrSmugleaf

#/Content.*/Anomaly/ @EmoGarbage404
#/Content.*/Anomaly/ @EmoGarbage404 @TheShuEd
#/Content.*/Lathe/ @EmoGarbage404
#/Content.*/Materials/ @EmoGarbage404
#/Content.*/Mech/ @EmoGarbage404
#/Content.*/Research/ @EmoGarbage404
#/Content.*/Stack/ @EmoGarbage404
#/Content.*/Xenoarchaeology/ @EmoGarbage404
#/Content.*/Zombies/ @EmoGarbage404
#/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @EmoGarbage404
#/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @EmoGarbage404 @TheShuEd
#/Resources/Prototypes/Research/ @EmoGarbage404

#/Content.*/Forensics/ @ficcialfaint
Expand Down
273 changes: 273 additions & 0 deletions Content.Benchmarks/ComponentQueryBenchmark.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,273 @@
#nullable enable
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
using Content.IntegrationTests;
using Content.IntegrationTests.Pair;
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.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Map.Components;
using Robust.Shared.Random;

namespace Content.Benchmarks;

/// <summary>
/// Benchmarks for comparing the speed of various component fetching/lookup related methods, including directed event
/// subscriptions
/// </summary>
[Virtual]
[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]
[CategoriesColumn]
public class ComponentQueryBenchmark
{
public const string Map = "Maps/atlas.yml";

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;
private EntityUid[] _items = default!;

[GlobalSetup]
public void Setup()
{
ProgramShared.PathOffset = "../../../../";
PoolManager.Startup(typeof(QueryBenchSystem).Assembly);

_pair = PoolManager.GetServerClient().GetAwaiter().GetResult();
_entMan = _pair.Server.ResolveDependency<IEntityManager>();

_itemQuery = _entMan.GetEntityQuery<ItemComponent>();
_clothingQuery = _entMan.GetEntityQuery<ClothingComponent>();
_mapQuery = _entMan.GetEntityQuery<MapComponent>();

_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);
}).GetAwaiter().GetResult();

_items = new EntityUid[_entMan.Count<ItemComponent>()];
var i = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<ItemComponent>();
while (enumerator.MoveNext(out var uid, out _))
{
_items[i++] = uid;
}
}

[GlobalCleanup]
public async Task Cleanup()
{
await _pair.DisposeAsync();
PoolManager.Shutdown();
}

#region TryComp

/// <summary>
/// Baseline TryComp benchmark. When the benchmark was created, around 40% of the items were clothing.
/// </summary>
[Benchmark(Baseline = true)]
[BenchmarkCategory("TryComp")]
public int TryComp()
{
var hashCode = 0;
foreach (var uid in _items)
{
if (_clothingQuery.TryGetComponent(uid, out var clothing))
hashCode = HashCode.Combine(hashCode, clothing.GetHashCode());
}
return hashCode;
}

/// <summary>
/// Variant of <see cref="TryComp"/> that is meant to always fail to get a component.
/// </summary>
[Benchmark]
[BenchmarkCategory("TryComp")]
public int TryCompFail()
{
var hashCode = 0;
foreach (var uid in _items)
{
if (_mapQuery.TryGetComponent(uid, out var map))
hashCode = HashCode.Combine(hashCode, map.GetHashCode());
}
return hashCode;
}

/// <summary>
/// Variant of <see cref="TryComp"/> that is meant to always succeed getting a component.
/// </summary>
[Benchmark]
[BenchmarkCategory("TryComp")]
public int TryCompSucceed()
{
var hashCode = 0;
foreach (var uid in _items)
{
if (_itemQuery.TryGetComponent(uid, out var item))
hashCode = HashCode.Combine(hashCode, item.GetHashCode());
}
return hashCode;
}

/// <summary>
/// Variant of <see cref="TryComp"/> that uses `Resolve()` to try get the component.
/// </summary>
[Benchmark]
[BenchmarkCategory("TryComp")]
public int Resolve()
{
var hashCode = 0;
foreach (var uid in _items)
{
DoResolve(uid, ref hashCode);
}
return hashCode;
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void DoResolve(EntityUid uid, ref int hash, ClothingComponent? clothing = null)
{
if (_clothingQuery.Resolve(uid, ref clothing, false))
hash = HashCode.Combine(hash, clothing.GetHashCode());
}

#endregion

#region Enumeration

[Benchmark]
[BenchmarkCategory("Item Enumerator")]
public int SingleItemEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<ItemComponent>();
while (enumerator.MoveNext(out var item))
{
hashCode = HashCode.Combine(hashCode, item.GetHashCode());
}

return hashCode;
}

[Benchmark]
[BenchmarkCategory("Item Enumerator")]
public int DoubleItemEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<ClothingComponent, ItemComponent>();
while (enumerator.MoveNext(out _, out var item))
{
hashCode = HashCode.Combine(hashCode, item.GetHashCode());
}

return hashCode;
}

[Benchmark]
[BenchmarkCategory("Item Enumerator")]
public int TripleItemEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<ClothingComponent, ItemComponent, TransformComponent>();
while (enumerator.MoveNext(out _, out _, out var xform))
{
hashCode = HashCode.Combine(hashCode, xform.GetHashCode());
}

return hashCode;
}

[Benchmark]
[BenchmarkCategory("Airlock Enumerator")]
public int SingleAirlockEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<AirlockComponent>();
while (enumerator.MoveNext(out var airlock))
{
hashCode = HashCode.Combine(hashCode, airlock.GetHashCode());
}

return hashCode;
}

[Benchmark]
[BenchmarkCategory("Airlock Enumerator")]
public int DoubleAirlockEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<AirlockComponent, DoorComponent>();
while (enumerator.MoveNext(out _, out var door))
{
hashCode = HashCode.Combine(hashCode, door.GetHashCode());
}

return hashCode;
}

[Benchmark]
[BenchmarkCategory("Airlock Enumerator")]
public int TripleAirlockEnumerator()
{
var hashCode = 0;
var enumerator = _entMan.AllEntityQueryEnumerator<AirlockComponent, DoorComponent, TransformComponent>();
while (enumerator.MoveNext(out _, out _, out var xform))
{
hashCode = HashCode.Combine(hashCode, xform.GetHashCode());
}

return hashCode;
}

#endregion

[Benchmark(Baseline = true)]
[BenchmarkCategory("Events")]
public int StructEvents()
{
var ev = new QueryBenchEvent();
foreach (var uid in _items)
{
_entMan.EventBus.RaiseLocalEvent(uid, ref ev);
}

return ev.HashCode;
}
}

[ByRefEvent]
public struct QueryBenchEvent
{
public int HashCode;
}

public sealed class QueryBenchSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ClothingComponent, QueryBenchEvent>(OnEvent);
}

private void OnEvent(EntityUid uid, ClothingComponent component, ref QueryBenchEvent args)
{
args.HashCode = HashCode.Combine(args.HashCode, component.GetHashCode());
}
}
1 change: 1 addition & 0 deletions Content.Benchmarks/EntityManagerGetAllComponents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public void Setup()

var componentFactory = new Mock<IComponentFactory>();
componentFactory.Setup(p => p.GetComponent<DummyComponent>()).Returns(new DummyComponent());
componentFactory.Setup(m => m.GetIndex(typeof(DummyComponent))).Returns(CompIdx.Index<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>() });
Expand Down
Loading
Loading