185 Commits

Author SHA1 Message Date
Dmitry
133e2e6228 remote merge upstream 2025-09-23 01:32:33 +07:00
Errant
b692b6e33e Antag Rolebans (#35966)
Co-authored-by: beck-thompson <beck314159@hotmail.com>
Co-authored-by: Hannah Giovanna Dawson <karakkaraz@gmail.com>
2025-09-17 23:59:07 +02:00
Vasilis The Pikachu
5100068a78 Revert "Admin Log Browser Improvements (#39130)"
This reverts commit f67cebf7a4.

Per request of @Kowlin and @southbridge-fur

Check out https://github.com/space-wizards/space-station-14/issues/39960 for further information
2025-08-31 17:50:37 +02:00
Southbridge
f67cebf7a4 Admin Log Browser Improvements (#39130) 2025-08-21 22:12:16 +02:00
Dmitry
a6ecbc3410 Merge remote-tracking branch 'upstream/master' 2025-05-24 22:35:13 +07:00
Dmitry
25c5e59248 Upstream (#3172)
Signed-off-by: Prole <172158352+Prole0@users.noreply.github.com>
Co-authored-by: PJBot <pieterjan.briers+bot@gmail.com>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: Samuka-C <47865393+Samuka-C@users.noreply.github.com>
Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com>
Co-authored-by: Partmedia <kevinz5000@gmail.com>
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Co-authored-by: themias <89101928+themias@users.noreply.github.com>
Co-authored-by: Victor Shen <71985089+Vexerot@users.noreply.github.com>
Co-authored-by: Ed <96445749+TheShuEd@users.noreply.github.com>
Co-authored-by: Milon <milonpl.git@proton.me>
Co-authored-by: Kirus59 <145689588+Kirus59@users.noreply.github.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
Co-authored-by: Stomf <5dorkydorks@gmail.com>
Co-authored-by: drakewill-CRL <46307022+drakewill-CRL@users.noreply.github.com>
Co-authored-by: PraxisMapper <praxismapper@gmail.com>
Co-authored-by: EmoGarbage404 <retron404@gmail.com>
Co-authored-by: lzk <124214523+lzk228@users.noreply.github.com>
Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
Co-authored-by: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com>
Co-authored-by: TytosB <54259736+TytosB@users.noreply.github.com>
Co-authored-by: abadaba695 <spacestation13thingy@gmail.com>
Co-authored-by: kosticia <kosticia46@gmail.com>
Co-authored-by: Thinbug <101073555+Thinbug0@users.noreply.github.com>
Co-authored-by: pathetic meowmeow <uhhadd@gmail.com>
Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com>
Co-authored-by: Boaz1111 <149967078+Boaz1111@users.noreply.github.com>
Co-authored-by: ActiveMammmoth <140334666+ActiveMammmoth@users.noreply.github.com>
Co-authored-by: Myra <vasilis@pikachu.systems>
Co-authored-by: Whatstone <166147148+whatston3@users.noreply.github.com>
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
Co-authored-by: K-Dynamic <20566341+K-Dynamic@users.noreply.github.com>
Co-authored-by: Gentleman-Bird <dcgreen406@gmail.com>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Co-authored-by: BIGZi0348 <svalker0348@gmail.com>
Co-authored-by: LaCumbiaDelCoronavirus <90893484+LaCumbiaDelCoronavirus@users.noreply.github.com>
Co-authored-by: imatsoup <93290208+imatsoup@users.noreply.github.com>
Co-authored-by: Matthew Herber <32679887+happyrobot33@users.noreply.github.com>
Co-authored-by: Ertanic <36124833+Ertanic@users.noreply.github.com>
Co-authored-by: MissKay1994 <15877268+MissKay1994@users.noreply.github.com>
Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com>
Co-authored-by: eoineoineoin <helloworld@eoinrul.es>
Co-authored-by: Tiniest Shark <head.rebel@yahoo.com>
Co-authored-by: nikitosych <boriszyn@gmail.com>
Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
Co-authored-by: Perry Fraser <perryprog@users.noreply.github.com>
Co-authored-by: YoungThug <ramialanbagy@gmail.com>
Co-authored-by: beck-thompson <107373427+beck-thompson@users.noreply.github.com>
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
Co-authored-by: Southbridge <7013162+southbridge-fur@users.noreply.github.com>
Co-authored-by: Vladislav Suchkov <20380250+murolem@users.noreply.github.com>
Co-authored-by: Prole <172158352+Prole0@users.noreply.github.com>
Co-authored-by: Unkn0wn_Gh0st <shadowstalkermll@gmail.com>
Co-authored-by: 3nderall <101940324+3nderall@users.noreply.github.com>
Co-authored-by: Radezolid <snappednexus@gmail.com>
Co-authored-by: J <billsmith116@gmail.com>
Co-authored-by: Ghagliiarghii <68826635+Ghagliiarghii@users.noreply.github.com>
Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com>
Co-authored-by: youtissoum <51883137+youtissoum@users.noreply.github.com>
Co-authored-by: Minemoder5000 <minemoder50000@gmail.com>
Co-authored-by: Spanky <scott@wearejacob.com>
Co-authored-by: Spessmann <156740760+Spessmann@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: brainfood1183 <113240905+brainfood1183@users.noreply.github.com>
Co-authored-by: Deerstop <edainturner@gmail.com>
Co-authored-by: B_Kirill <153602297+B-Kirill@users.noreply.github.com>
Co-authored-by: archee1 <archee3@hotmail.co.uk>
Co-authored-by: Cojoke <83733158+Cojoke-dot@users.noreply.github.com>
Co-authored-by: Quantum-cross <7065792+Quantum-cross@users.noreply.github.com>
Co-authored-by: poklj <compgeek223@gmail.com>
Co-authored-by: Krunklehorn <42424291+Krunklehorn@users.noreply.github.com>
Co-authored-by: OnyxTheBrave <131422822+OnyxTheBrave@users.noreply.github.com>
Co-authored-by: UpAndLeaves <92269094+Alpha-Two@users.noreply.github.com>
Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com>
Co-authored-by: Zalycon <84675130+Zalycon@users.noreply.github.com>
Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com>
Co-authored-by: nikthechampiongr <32041239+nikthechampiongr@users.noreply.github.com>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
Co-authored-by: Dmitry <57028746+dimm00n@users.noreply.github.com>
2025-05-24 11:00:17 +03:00
YotaXP
e404e45ffc Persist construction menu favorites server-side (#35867)
* Persist construction menu favorites to player profile

* Use `ProtoId`s for construction favorites

* Validate construction favorites updates from the client

* Actually await the async database call
2025-05-17 13:37:19 -04:00
Tayrtahn
3313c648fe Fix warnings in ServerDbManager (#36871)
Fix warnings in ServerDbManager
2025-04-24 01:48:27 +02:00
lzk228
0af3e04fd8 Merge commit '3551eb04115854cdbbf1841f5960c3cdbc508583' into 02-19-upstream
# Conflicts:
#	Content.Server/Administration/Systems/AdminSystem.cs
#	Content.Server/Doors/Systems/AirlockSystem.cs
#	Content.Server/Holopad/HolopadSystem.cs
#	Content.Server/Humanoid/Systems/HumanoidAppearanceSystem.cs
#	Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
#	Resources/Prototypes/Catalog/VendingMachines/Inventories/curadrobe.yml
#	Resources/Prototypes/Datasets/Names/borg.yml
#	Resources/Prototypes/Datasets/ion_storm.yml
#	Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml
#	Resources/Prototypes/Entities/Clothing/Neck/mantles.yml
#	Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml
#	Resources/Prototypes/Entities/Stations/base.yml
#	Resources/Prototypes/Entities/Structures/Machines/lathe.yml
#	Resources/Prototypes/Maps/amber.yml
#	Resources/Prototypes/Maps/box.yml
#	Resources/Prototypes/Maps/convex.yml
#	Resources/Prototypes/Maps/fland.yml
#	Resources/Prototypes/Maps/meta.yml
#	Resources/Prototypes/Maps/plasma.yml
#	Resources/ServerInfo/Guidebook/Engineering/AME.xml
#	Resources/ServerInfo/Guidebook/Engineering/AirlockSecurity.xml
#	Resources/ServerInfo/Guidebook/Engineering/Atmospherics.xml
#	Resources/ServerInfo/Guidebook/Engineering/Construction.xml
#	Resources/ServerInfo/Guidebook/Engineering/Engineering.xml
#	Resources/ServerInfo/Guidebook/Engineering/Fires.xml
#	Resources/ServerInfo/Guidebook/Engineering/NetworkConfigurator.xml
#	Resources/ServerInfo/Guidebook/Engineering/Networking.xml
#	Resources/ServerInfo/Guidebook/Engineering/PortableGenerator.xml
#	Resources/ServerInfo/Guidebook/Engineering/Power.xml
#	Resources/ServerInfo/Guidebook/Engineering/RTG.xml
#	Resources/ServerInfo/Guidebook/Engineering/Shuttlecraft.xml
#	Resources/ServerInfo/Guidebook/Engineering/Singularity.xml
#	Resources/ServerInfo/Guidebook/Engineering/TEG.xml
#	Resources/ServerInfo/Guidebook/NewPlayer/Controls/Controls.xml
#	Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/icon.png
#	Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Helmets/paramedhelm.rsi/inhand-right.png
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/equipped-OUTERCLOTHING.png
#	Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/icon.png
#	Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/ancient.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security_trooper.rsi/inhand-right.png
#	Resources/Textures/Interface/Actions/actions_fakemindshield.rsi/icon-on.png
#	Resources/Textures/Objects/Storage/Briefcases/briefcase_brown.rsi/icon.png
#	Resources/Textures/Objects/Storage/Briefcases/briefcase_brown.rsi/meta.json
#	Resources/Textures/Objects/Storage/boxes.rsi/beaker.png
#	Resources/Textures/Objects/Storage/boxes.rsi/bodybags.png
#	Resources/Textures/Objects/Storage/boxes.rsi/bottle.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box_hug.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box_of_doom.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box_of_doom_big.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box_science.png
#	Resources/Textures/Objects/Storage/boxes.rsi/box_security.png
#	Resources/Textures/Objects/Storage/boxes.rsi/boxwide.png
#	Resources/Textures/Objects/Storage/boxes.rsi/boxwidetoy.png
#	Resources/Textures/Objects/Storage/boxes.rsi/candle.png
#	Resources/Textures/Objects/Storage/boxes.rsi/circuit.png
#	Resources/Textures/Objects/Storage/boxes.rsi/clown.png
#	Resources/Textures/Objects/Storage/boxes.rsi/darts.png
#	Resources/Textures/Objects/Storage/boxes.rsi/disk.png
#	Resources/Textures/Objects/Storage/boxes.rsi/emergencytank.png
#	Resources/Textures/Objects/Storage/boxes.rsi/encryptokey.png
#	Resources/Textures/Objects/Storage/boxes.rsi/evidence_markers.png
#	Resources/Textures/Objects/Storage/boxes.rsi/extendedtank.png
#	Resources/Textures/Objects/Storage/boxes.rsi/flare.png
#	Resources/Textures/Objects/Storage/boxes.rsi/flashbang.png
#	Resources/Textures/Objects/Storage/boxes.rsi/forensic.png
#	Resources/Textures/Objects/Storage/boxes.rsi/glasses.png
#	Resources/Textures/Objects/Storage/boxes.rsi/handcuff.png
#	Resources/Textures/Objects/Storage/boxes.rsi/headset.png
#	Resources/Textures/Objects/Storage/boxes.rsi/heart.png
#	Resources/Textures/Objects/Storage/boxes.rsi/holo.png
#	Resources/Textures/Objects/Storage/boxes.rsi/implant.png
#	Resources/Textures/Objects/Storage/boxes.rsi/inflatable.png
#	Resources/Textures/Objects/Storage/boxes.rsi/internals.png
#	Resources/Textures/Objects/Storage/boxes.rsi/latex.png
#	Resources/Textures/Objects/Storage/boxes.rsi/light.png
#	Resources/Textures/Objects/Storage/boxes.rsi/lightmixed.png
#	Resources/Textures/Objects/Storage/boxes.rsi/lighttube.png
#	Resources/Textures/Objects/Storage/boxes.rsi/magazine.png
#	Resources/Textures/Objects/Storage/boxes.rsi/meson.png
#	Resources/Textures/Objects/Storage/boxes.rsi/meta.json
#	Resources/Textures/Objects/Storage/boxes.rsi/mousetraps.png
#	Resources/Textures/Objects/Storage/boxes.rsi/nitrile.png
#	Resources/Textures/Objects/Storage/boxes.rsi/omegacart.png
#	Resources/Textures/Objects/Storage/boxes.rsi/pda.png
#	Resources/Textures/Objects/Storage/boxes.rsi/pillbox.png
#	Resources/Textures/Objects/Storage/boxes.rsi/sechud.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellbeanbag.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellflare.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellflash.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellincendiary.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shelllethal.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellpractice.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shellslug.png
#	Resources/Textures/Objects/Storage/boxes.rsi/shelltoy.png
#	Resources/Textures/Objects/Storage/boxes.rsi/solution_trays.png
#	Resources/Textures/Objects/Storage/boxes.rsi/sterile.png
#	Resources/Textures/Objects/Storage/boxes.rsi/swab.png
#	Resources/Textures/Objects/Storage/boxes.rsi/syringe.png
#	Resources/Textures/Objects/Storage/boxes.rsi/trashbag.png
#	Resources/Textures/Objects/Storage/boxes.rsi/vials.png
#	Resources/Textures/Objects/Storage/boxes.rsi/writing.png
#	Resources/Textures/Objects/Storage/boxes.rsi/writing_of_doom.png
#	Resources/Textures/Objects/Storage/boxes.rsi/ziptie.png
#	Resources/Textures/Objects/Tiles/tile.rsi/meta.json
#	Resources/Textures/Objects/Weapons/Grenades/empgrenade.rsi/icon.png
#	Resources/Textures/Objects/Weapons/Grenades/empgrenade.rsi/meta.json
#	Resources/Textures/Objects/Weapons/Grenades/empgrenade.rsi/primed.png
#	Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/icon.png
#	Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/meta.json
#	Resources/Textures/Objects/Weapons/Grenades/flashbang.rsi/primed.png
#	Resources/Textures/Objects/Weapons/Grenades/stingergrenade.rsi/icon.png
#	Resources/Textures/Objects/Weapons/Grenades/stingergrenade.rsi/meta.json
#	Resources/Textures/Objects/Weapons/Grenades/stingergrenade.rsi/primed.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/base.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/icon.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-1.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-2.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-3.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/mag-unshaded-4.png
#	Resources/Textures/Objects/Weapons/Guns/Battery/antiquelasergun.rsi/meta.json
#	Resources/Textures/Objects/Weapons/Guns/Rifles/lecter.rsi/equipped-BACKPACK.png
#	Resources/Textures/Objects/Weapons/Guns/SMGs/vector.rsi/equipped-BACKPACK.png
#	Resources/Textures/Objects/Weapons/Guns/Shotguns/pump.rsi/equipped-BACKPACK.png
2025-02-19 03:00:13 +01:00
metalgearsloth
15b28936df Add loadout names (#31303)
* Add loadout names

Did it for AI, breaking change for pgsql + migrations in general. Nothing atm uses it.

* the box

* Spawning cherry pick

* Fix nit

* revert

* Final cleanup

* Real

* Name UI fix

* Migrations

* a

* Review

* Re-run migrations

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2025-02-11 18:30:24 +01:00
beck-thompson
bc1d6420af After getting banned, you now have to re-read the rules! (#33270)
* first commit

* opps

* Reset cooldown instead

* Added ccvar

* Not replicated!
2025-01-30 13:09:31 +01:00
Pieter-Jan Briers
71c9dfc9ea Add system to kick people if they connect to multiple servers at once. (#34563) 2025-01-22 00:23:47 +01:00
Morb0
996b761d80 Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	Content.Packaging/ClientPackaging.cs
#	Content.Server/Administration/Systems/AdminSystem.cs
#	Content.Server/GameTicking/GameTicker.StatusShell.cs
#	Content.Shared/Preferences/HumanoidCharacterProfile.cs
#	Resources/Prototypes/Entities/Stations/base.yml
#	Resources/Prototypes/Entities/Structures/Machines/lathe.yml
#	Resources/Textures/Interface/Misc/job_icons.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_1.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_2.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_3.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_4.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_5.rsi/meta.json
#	Resources/Textures/Structures/Power/Generation/Singularity/singularity_6.rsi/meta.json
2025-01-16 13:37:26 +03:00
Pieter-Jan Briers
c2e050ced0 Persist deadmin to database, add admin suspension system (#34048) 2025-01-15 00:46:45 +01:00
Myra
13edd308bf Fix IPIntel causing frequent errors with the cleanup job. (#34428)
Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
2025-01-14 21:38:26 +01:00
Morb0
f8f0dcb59e Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	Content.Server/Connection/ConnectionManager.cs
2025-01-12 23:13:13 +03:00
Myra
96d913b147 Add IPIntel API support. (#33339)
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-01-12 20:41:26 +01:00
Morb0
e76bb1fa57 Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	Resources/Prototypes/Datasets/Names/borer.yml
#	Resources/Prototypes/Datasets/Names/diona.yml
#	Resources/Textures/Structures/Wallmounts/posters.rsi/meta.json
#	Resources/Textures/Tiles/plating_burnt.png
2024-12-05 01:22:35 +03:00
Pieter-Jan Briers
75a096b6bd Merge remote-tracking branch 'upstream/master' into 24-10-29-modern-hwid 2024-11-21 01:26:01 +01:00
Morb0
fa377d8fc6 Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	.github/labeler.yml
#	Content.Client/Lobby/UI/CharacterSetupGui.xaml
#	Content.Client/Lobby/UI/CharacterSetupGui.xaml.cs
#	Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml
#	Resources/Prototypes/Entities/Stations/base.yml
#	Resources/ServerInfo/Guidebook/Science/Cyborgs.xml
#	Resources/Textures/Interface/Misc/job_icons.rsi/meta.json
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm0.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm1.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm2.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b1.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_b2.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarm_bitem.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmp.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/alarmx.png
#	Resources/Textures/Structures/Wallmounts/air_monitors.rsi/meta.json
#	Resources/Textures/Structures/Windows/mining.rsi/full.png
#	Resources/Textures/Structures/Windows/mining.rsi/meta.json
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow0.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow1.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow2.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow3.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow4.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow5.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow6.png
#	Resources/Textures/Structures/Windows/mining.rsi/mwindow7.png
#	Resources/Textures/Structures/Windows/mining_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/mining_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/plasma_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/plasma_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/full.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/meta.json
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow0.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow1.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow2.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow3.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow4.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow5.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow6.png
#	Resources/Textures/Structures/Windows/plasma_window.rsi/pwindow7.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/full.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/meta.json
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow0.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow1.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow2.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow3.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow4.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow5.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow6.png
#	Resources/Textures/Structures/Windows/reinforced_plasma_window.rsi/rpwindow7.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/full.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow0.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow1.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow2.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow3.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow4.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow5.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow6.png
#	Resources/Textures/Structures/Windows/reinforced_uranium_window.rsi/ruwindow7.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/full.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/meta.json
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow0.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow1.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow2.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow3.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow4.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow5.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow6.png
#	Resources/Textures/Structures/Windows/reinforced_window.rsi/rwindow7.png
#	Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/reinforced_window_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/full.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/meta.json
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow0.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow1.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow2.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow3.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow4.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow5.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow6.png
#	Resources/Textures/Structures/Windows/tinted_window.rsi/twindow7.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/full.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow0.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow1.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow2.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow3.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow4.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow5.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow6.png
#	Resources/Textures/Structures/Windows/uranium_window.rsi/uwindow7.png
#	Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/uranium_window_diagonal.rsi/state1.png
#	Resources/Textures/Structures/Windows/window.rsi/full.png
#	Resources/Textures/Structures/Windows/window.rsi/meta.json
#	Resources/Textures/Structures/Windows/window.rsi/window0.png
#	Resources/Textures/Structures/Windows/window.rsi/window1.png
#	Resources/Textures/Structures/Windows/window.rsi/window2.png
#	Resources/Textures/Structures/Windows/window.rsi/window3.png
#	Resources/Textures/Structures/Windows/window.rsi/window4.png
#	Resources/Textures/Structures/Windows/window.rsi/window5.png
#	Resources/Textures/Structures/Windows/window.rsi/window6.png
#	Resources/Textures/Structures/Windows/window.rsi/window7.png
#	Resources/Textures/Structures/Windows/window_diagonal.rsi/meta.json
#	Resources/Textures/Structures/Windows/window_diagonal.rsi/state0.png
#	Resources/Textures/Structures/Windows/window_diagonal.rsi/state1.png
#	Resources/migration.yml
2024-11-19 19:20:31 +03:00
Repo
ef51700094 Fix unban/editing role bans placed in groups. (#30659)
* On editing a roleban, get all the bans with the same time.

* forgoten newline

* Update to check for player ID too.
2024-11-12 22:03:13 +01:00
Pieter-Jan Briers
4f3db43696 Integrate Modern HWID into content
This should be the primary changes for the future-proof "Modern HWID" system implemented into Robust and the auth server.

HWIDs in the database have been given an additional column representing their version, legacy or modern. This is implemented via an EF Core owned entity. By manually setting the column name of the main value column, we can keep DB compatibility and the migration is just adding some type columns.

This new HWID type has to be plumbed through everywhere, resulting in some breaking changes for the DB layer and such.

New bans and player records are placed with the new modern HWID. Old bans are still checked against legacy HWIDs.

Modern HWIDs are presented with a "V2-" prefix to admins, to allow distinguishing them. This is also integrated into the parsing logic for placing new bans.

There's also some code cleanup to reduce copy pasting around the place from my changes.

Requires latest engine to support ImmutableArray<byte> in NetSerializer.
2024-11-12 01:51:54 +01:00
Morb0
be480aced1 Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	Content.Server/Chat/Managers/ChatSanitizationManager.cs
#	Content.Shared/Localizations/ContentLocalizationManager.cs
#	Resources/Audio/Weapons/Guns/Gunshots/attributions.yml
#	Resources/Prototypes/Datasets/Names/last.yml
#	Resources/Prototypes/Loadouts/loadout_groups.yml
#	Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml
2024-10-30 16:38:56 +03:00
MendaxxDev
109e0bcf96 exponential backoff for admin logs db update (#32865)
* exponential backoff for admin logs db update

* Update Content.Server/Database/ServerDbBase.cs

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
2024-10-19 12:28:49 +02:00
Morb0
3ab6d3ef71 Merge remote-tracking branch 'wizards/master' into upstream-sync
# Conflicts:
#	.github/workflows/publish.yml
#	Content.Client/VoiceMask/VoiceMaskNameChangeWindow.xaml.cs
#	Content.Server/GameTicking/GameTicker.Player.cs
#	Content.Server/VoiceMask/VoiceMaskComponent.cs
#	Content.Server/VoiceMask/VoiceMaskSystem.Equip.cs
#	Content.Server/VoiceMask/VoiceMaskSystem.cs
#	Content.Server/VoiceMask/VoiceMaskerComponent.cs
#	Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
#	Resources/Prototypes/Entities/Clothing/Masks/specific.yml
#	Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml
#	Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml
#	Resources/Prototypes/Roles/Jobs/Command/captain.yml
#	Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml
#	Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml
#	Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml
#	Resources/Prototypes/Roles/Jobs/Science/research_director.yml
#	Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
#	Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
#	Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json
#	Resources/Textures/Objects/Misc/bureaucracy.rsi/paper_stamp-psychologist.png
#	Resources/Textures/Structures/Walls/solid.rsi/reinf_over0.png
#	Resources/Textures/Tiles/attributions.yml
#	Resources/Textures/Tiles/blue_circuit.png
#	Resources/Textures/Tiles/green_circuit.png
#	Resources/Textures/Tiles/steel.png
2024-10-04 19:47:54 +03:00
Pieter-Jan Briers
e36d735064 Fix cartesian explosion in pref loading (#32434)
Lol .AsSingleQuery().

Some people's preferences wouldn't load on Lizard. Turns out the entire preferences set is loaded with a morbillion joins in a single query and one person had 240,000 (!!!) rows returned for their preferences query. Yeah.
2024-09-24 22:43:02 +02:00
Morb0
721f7bfecf Merge remote-tracking branch 'refs/remotes/wizards/master' into upstream-sync
# Conflicts:
#	Content.Server/Connection/ConnectionManager.cs
#	Resources/Prototypes/Datasets/Names/ai.yml
#	Resources/Prototypes/Datasets/adjectives.yml
#	Resources/Prototypes/Datasets/verbs.yml
#	Resources/Prototypes/Entities/Clothing/Shoes/specific.yml
#	Resources/Prototypes/Entities/Mobs/NPCs/revenant.yml
#	Resources/Prototypes/Entities/Mobs/base.yml
#	Resources/Prototypes/Maps/bagel.yml
#	Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/icon.png
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json
#	Resources/Textures/Interface/Misc/job_icons.rsi/meta.json
#	Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json
#	Resources/Textures/Structures/Wallmounts/barsign.rsi/officerbeersky.png
#	Resources/Textures/Structures/Wallmounts/signs.rsi/anomaly.png
#	SpaceStation14.sln
2024-08-28 16:40:36 +03:00
metalgearsloth
afd0618a60 Station AI (#30944)
* Station AI overlay

* implement

* Bunch of ports

* Fix a heap of bugs and basic scouting

* helldivers

* Shuffle interactions a bit

* navmap stuff

* Revert "navmap stuff"

This reverts commit d1f89dd4be83233e22cf5dd062b2581f3c6da062.

* AI wires implemented

* Fix examines

* Optimise the overlay significantly

* Back to old static

* BUI radial working

* lots of work

* Saving work

* thanks fork

* alright

* pc

* AI upload console

* AI upload

* stuff

* Fix copy-paste shitcode

* AI actions

* navmap work

* Fixes

* first impressions

* a

* reh

* Revert "navmap work"

This reverts commit 6f63fea6e9245e189f368f97be3e32e9b210580e.

# Conflicts:
#	Content.Client/Silicons/StationAi/StationAiOverlay.cs

* OD

* radar

* weh

* Fix examines

* scoop mine eyes

* fixes

* reh

* Optimise

* Final round of optimisations

* Fixes

* fixes
2024-08-28 10:57:12 +10:00
Simon
f92ef41538 Automated whitelists (#23985)
* Beginnings of making the breadmemes jobs easier

* stuff

* stuff pt. 2

* Stuff pt.3

* Stuff I forgot last time

* Basic whitelist

Only people that are added to the whitelist with the addwhitelist command will be able to join. I call this the "legacy" whitelist

* Remove always deny condition in favor of just breaking if playtime check fails

* Change default whitelist

Default whitelist is now the "legacy" whitelist.

* localization

* Admin check

* minor spelling change

* Fix build

* Whitelist message

* Fix vars not being datafield and spelling mistakes

* Minor spelling mistake

* Change config for salamander

* Reviews and stuff

* Add summaries

* Fix whitelists

* Forgot to add a datafield

* Fixing stuff I guess

* Reuse admin remarks to reduce load when connecting.

* Update log messages to be verbose instead of debug

* Reviews

* whoops

* Explain a bit more how whitelist checking works

* Apply CE's review

* Append Membership to Blacklist and Whitelist conditions

* Fix review comments

* Uncapitalize playerConnectionWhitelist, add to ignored client prototypes

* Make note count field work

* Fix cvar for thingy

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2024-08-27 18:01:17 +02:00
Pieter-Jan Briers
b396996af8 Fix server crash on shutdown due to DB notifications (#31379)
Fixes #31365
2024-08-24 01:45:13 +02:00
Morb0
07a34aaaae Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Resources/Prototypes/Accents/word_replacements.yml
#	Resources/Prototypes/Entities/Clothing/Shoes/boots.yml
#	Resources/Prototypes/Loadouts/loadout_groups.yml
#	Resources/Prototypes/Roles/Jobs/Security/detective.yml
#	Resources/Prototypes/Species/human.yml
#	Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/icon.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/inhand-right.png
#	Resources/Textures/Structures/Wallmounts/signs.rsi/meta.json
2024-08-23 09:38:36 +03:00
Julian Giebel
df95be1ce5 Kick on ban for entire server group (#28649)
* Start work on PostgresNotificationManager
Implement initial version of init and listening code

* Finish implementing PostgresNotificationManager
Implement ban insert trigger

* Implement ignoring notifications if the ban was from the same server

* Address reviews

* Fixes and refactorings

Fix typo in migration SQL

Pull new code in BanManager out into its own partial file.

Unify logic to kick somebody with that when a new ban is placed directly on the server.

New bans are now checked against all parameters (IP, HWID) instead of just user ID.

Extracted SQLite ban matching code into a new class so that it can mostly be re-used by the ban notification code. No copy-paste here.

Database notifications are now not implicitly sent to the main thread, this means basic checks will happen in the thread pool beforehand.

Bans without user ID are now sent to servers. Bans are rate limited to avoid undue work from mass ban imports, beyond the rate limit they are dropped.

Improved error handling and logging for the whole system.

Matching bans against connected players requires knowing their ban exemption flags. These are now cached when the player connects.

ServerBanDef now has exemption flags, again to allow matching full ban details for ban notifications.

Made database notifications a proper struct type to reduce copy pasting a tuple.

Remove copy pasted connection string building code by just... passing the string into the constructor.

Add lock around _notificationHandlers just in case.

Fixed postgres connection wait not being called in a loop and therefore spamming LISTEN commands for every received notification.

Added more error handling and logging to notification listener.

Removed some copy pasting from SQLite database layer too while I was at it because god forbid we expect anybody else to do all the work in this project.

Sorry Julian

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
2024-08-20 23:31:33 +02:00
Morb0
076783b977 Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Resources/Locale/en-US/chemistry/components/mixing-component.ftl
#	Resources/Prototypes/Catalog/Fills/Lockers/heads.yml
#	Resources/Prototypes/Catalog/VendingMachines/Inventories/lawdrobe.yml
#	Resources/Prototypes/Loadouts/role_loadouts.yml
#	Resources/ServerInfo/Guidebook/Mobs/Diona.xml
#	Resources/ServerInfo/Guidebook/Science/Science.xml
#	Resources/ServerInfo/Guidebook/Science/Technologies.xml
#	Resources/Textures/Objects/Weapons/Melee/fireaxeflaming.rsi/icon.png
#	Resources/Textures/Structures/Wallmounts/intercom.rsi/base.png
#	Resources/Textures/Structures/Wallmounts/intercom.rsi/broadcasting.png
#	Resources/Textures/Structures/Wallmounts/intercom.rsi/build.png
#	Resources/Textures/Structures/Wallmounts/intercom.rsi/speaker.png
#	Resources/Textures/Structures/Wallmounts/intercom.rsi/unshaded.png
#	Resources/Textures/Tiles/attributions.yml
2024-07-08 13:41:28 +03:00
nikthechampiongr
8e05e1cfed Move checking code for BlacklistedRange to the right place in sqlite (#29389) 2024-07-04 21:02:53 +02:00
Morb0
bffaecf157 Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Content.Server/Chat/Managers/ChatManager.cs
#	Resources/Prototypes/Catalog/VendingMachines/Inventories/detdrobe.yml
#	Resources/Prototypes/Entities/Mobs/Player/humanoid.yml
#	Resources/Prototypes/Loadouts/role_loadouts.yml
#	Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
#	Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/icon.png
#	Resources/Textures/Clothing/Head/Hats/brownfedora.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/icon.png
#	Resources/Textures/Clothing/Head/Hats/greyfedora.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/equipped-HELMET-hamster.png
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/icon.png
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/inhand-right.png
#	Resources/Textures/Clothing/Head/Hats/hoshat.rsi/meta.json
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/inhand-right.png
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/equipped-OUTERCLOTHING.png
#	Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/icon.png
#	Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/inhand-left.png
#	Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/inhand-right.png
#	Resources/Textures/Clothing/OuterClothing/Coats/detective.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/equipped-OUTERCLOTHING.png
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/icon.png
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/inhand-left.png
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/inhand-right.png
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/equipped-OUTERCLOTHING.png
#	Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/icon.png
#	Resources/Textures/Clothing/OuterClothing/Coats/warden.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/equipped-OUTERCLOTHING.png
#	Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/icon.png
#	Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/hos.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/security.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/warden.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/equipped-INNERCLOTHING-monkey.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/hos.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/equipped-INNERCLOTHING-monkey.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/equipped-INNERCLOTHING-monkey.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/icon.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/warden.rsi/meta.json
#	Resources/Textures/Objects/Storage/boxes.rsi/meta.json
#	Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit-full.png
#	Resources/Textures/Structures/Piping/Atmospherics/Portable/portable_scrubber.rsi/unlit.png
2024-06-21 16:32:00 +03:00
nikthechampiongr
76a65c8e43 Implement BlacklistedRange exempt flag (#29258)
* Implement a new kind of ip range ban that only applies to new players

* Put determining whether a player record exists to its own function

* Make BlacklistedRange bans get bypassed by any ban exemption

* Stop trying to get another DbGuard while already having one

This does break with convention on the functions in that area but
considering the use of this function it's probably fine?
I could alternatively just move the place it's called from.

Also I was suppossed to wait for tests to finish locally just to be
sure, but nah. I am pushing this now
2024-06-21 14:06:07 +02:00
Morb0
9888f8fa57 Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	.github/CODEOWNERS
#	Content.Client/Administration/UI/Tabs/PanicBunkerTab/PanicBunkerTab.xaml.cs
#	Content.Client/Lobby/LobbyUIController.cs
#	Content.Server/Administration/Systems/AdminSystem.cs
#	Content.Server/Connection/ConnectionManager.cs
#	Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs
#	Content.Shared/Administration/Events/PanicBunkerChangedEvent.cs
#	Content.Shared/Preferences/HumanoidCharacterProfile.cs
#	Resources/Prototypes/Accents/word_replacements.yml
#	Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/backpack.yml
#	Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/duffelbag.yml
#	Resources/Prototypes/Catalog/Fills/Backpacks/StarterGear/satchel.yml
#	Resources/Prototypes/Entities/Mobs/base.yml
#	Resources/Prototypes/Roles/Antags/nukeops.yml
#	Resources/Prototypes/Roles/Antags/revolutionary.yml
#	Resources/Prototypes/Roles/Antags/traitor.yml
#	Resources/Prototypes/Roles/Antags/zombie.yml
#	Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
#	Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml
#	Resources/ServerInfo/Guidebook/Cargo/Cargo.xml
#	Resources/ServerInfo/Guidebook/Cargo/CargoBounties.xml
#	Resources/ServerInfo/Guidebook/Cargo/Salvage.xml
#	Resources/ServerInfo/Guidebook/Controls/Controls.xml
#	Resources/ServerInfo/Guidebook/Controls/Radio.xml
#	Resources/ServerInfo/Guidebook/Engineering/Engineering.xml
#	Resources/ServerInfo/Guidebook/Engineering/Fires.xml
#	Resources/ServerInfo/Guidebook/Engineering/Singularity.xml
#	Resources/ServerInfo/Guidebook/Jobs.xml
#	Resources/ServerInfo/Guidebook/Medical/Chemist.xml
#	Resources/ServerInfo/Guidebook/Medical/Medical.xml
#	Resources/ServerInfo/Guidebook/Medical/MedicalDoctor.xml
#	Resources/ServerInfo/Guidebook/Science/Science.xml
#	Resources/ServerInfo/Guidebook/Security/Security.xml
#	Resources/ServerInfo/Guidebook/Service/Bartender.xml
#	Resources/ServerInfo/Guidebook/Service/Chef.xml
#	Resources/ServerInfo/Guidebook/SpaceStation14.xml
#	Resources/ServerInfo/Guidebook/Survival.xml
#	Resources/Textures/Objects/Storage/boxes.rsi/meta.json
2024-06-14 19:48:52 +03:00
AJCM-git
63e0ee08cb Fixes client having authority over rules popup cvars (#28655)
* Fixes client having authority over rules popup cvars

* Delete duplicate migration

* Pre-update

* Post-update
2024-06-07 21:53:20 +02:00
Nemanja
1333b48747 Convert rules to use guidebook parsing (#28647) 2024-06-06 03:11:26 -04:00
Leon Friedrich
adeed705e6 Add Job preference tests (#28625)
* Misc Job related changes

* Add JobTest

* A

* Aa

* Lets not confuse the yaml linter

* fixes

* a
2024-06-06 00:19:24 +10:00
Morb0
28edee0fe2 Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Content.Server/Administration/Commands/AdminWhoCommand.cs
#	Content.Server/Administration/Commands/PlayTimeCommands.cs
#	Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs
#	Content.Server/Preferences/Managers/ServerPreferencesManager.cs
#	Resources/Prototypes/Datasets/tips.yml
#	Resources/Prototypes/Entities/Mobs/Player/humanoid.yml
2024-06-01 23:06:19 +03:00
DrSmugleaf
19be94c9ea Add job whitelist system (#28085)
* Add job whitelist system

* Address reviews

* Fix name

* Apply suggestions from code review

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>

* cancinium

---------

Co-authored-by: Pieter-Jan Briers <pieterjan.briers@gmail.com>
2024-06-01 05:08:31 -07:00
Morb0
d97a09543d Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Content.Client/IoC/ClientContentIoC.cs
#	Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
#	Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs
#	Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs
#	Content.Server/Preferences/Managers/ServerPreferencesManager.cs
#	Content.Shared/Preferences/HumanoidCharacterProfile.cs
#	Content.Shared/Preferences/Loadouts/Effects/GroupLoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/Effects/JobRequirementLoadoutEffect.cs
#	Content.Shared/Preferences/Loadouts/RoleLoadout.cs
#	Resources/ServerInfo/Guidebook/Engineering/TEG.xml
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/equipped-INNERCLOTHING.png
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/security.rsi/meta.json
2024-05-15 18:53:52 +03:00
metalgearsloth
332f54a3ae Lobby refactor + species loadouts support (#27576)
* Vox stuff

* Species loadouts and lobby refactor

The control flow for lobby is all over the shop so I pulled it all up from the individual controls so now they handle the bare minimum required and LobbyUIController handles the rest.

* a

* Bulk changes

* a

* weh

* Character import / export

* finalise

* woops this stuff too

* Also datafield exporting

* comments

* Review
2024-05-12 09:18:21 +10:00
Morb0
b704ef0d5e Merge remote-tracking branch 'refs/remotes/upstream/master' into upstream-sync
# Conflicts:
#	Content.Client/Entry/EntryPoint.cs
#	Content.Server/GameTicking/GameTicker.Spawning.cs
#	Content.Server/Preferences/Managers/ServerPreferencesManager.cs
#	Resources/Prototypes/Entities/Clothing/Hands/gloves.yml
#	Resources/Textures/Clothing/Hands/Gloves/combat.rsi/equipped-HAND.png
#	Resources/Textures/Clothing/Hands/Gloves/combat.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/combat.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertjanitor.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertleader.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertleader.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertleader.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertleader.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertleader.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/on-equipped-HELMET.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertmedical.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertsecurity.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertsecurity.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertsecurity.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertsecurity.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/ERThelmets/ertsecurity.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left-light.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left-unshaded.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right-light.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right-unshaded.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/cburn.rsi/inhand-left-unshaded.png
#	Resources/Textures/Clothing/Head/Hardsuits/cburn.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/cburn.rsi/inhand-right-unshaded.png
#	Resources/Textures/Clothing/Head/Hardsuits/cburn.rsi/inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/cburn.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/clown.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/deathsquad.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/luxury.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/luxury.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/luxury.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/luxury.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/luxury.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/security-red.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/security-warden.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/security.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/inhand-right-light.png
#	Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/syndiemedic.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/meta.json
#	Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-inhand-right.png
#	Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-inhand-left.png
#	Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-inhand-right.png
#	Resources/Textures/Clothing/Head/Helmets/atmos_firehelmet.rsi/meta.json
#	Resources/Textures/Clothing/Head/Helmets/light_riot.rsi/meta.json
#	Resources/Textures/Clothing/Head/Helmets/security.rsi/meta.json
#	Resources/Textures/Clothing/Head/Helmets/spaceninja.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Armor/bulletproof.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Armor/captain_carapace.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Armor/riot.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Armor/security.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/hos_trenchcoat.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat_chem.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat_cmo.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat_gene.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat_sci.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Coats/labcoat_viro.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertjanitor.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertleader.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertmedical.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/ERTSuits/ertsecurity.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/cburn.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/clown.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/deathsquad.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/luxury.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/piratecaptain.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/pirateeva.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/security-red.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/security-warden.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiemedic.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Misc/cardborg.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Suits/bombsuit.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Suits/monkey.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Suits/rad.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Vests/detvest.rsi/meta.json
#	Resources/Textures/Clothing/OuterClothing/Vests/hazard.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/senior_officer.rsi/equipped-INNERCLOTHING.png
2024-05-09 13:28:43 +03:00
Pieter-Jan Briers
9efe4dc701 Fix preferences sent to client not being sanitized (#27789)
Fucking whoops

In #27742 I made it so sanitization of character profiles was moved to be *after* database load. Except that means I moved it to be after the copy of all character profiles got sent to the client.

Move the sending to *also* be in that second load stage, and rename it. Fixes the issue.
2024-05-08 04:24:54 +02:00
Pieter-Jan Briers
7a38b22ddb Fix preference loading bugs (#27742)
First bug: if an error occured during pref loading code, it would fail. If the person then readied up, it would likely cause the round to fail to start.

Why could they ready up? The code only checks that the prefs finished loading, not that they finished loading *successfully*. Whoops.

Anyways, now people get kicked if their prefs fail to load. And I improved the error handling.

Second bug: if a user disconnected while their prefs were loading, it would cause an exception. This exception would go unobserved on lobby servers or raise through gameticker on non-lobby servers.

This happened even on a live server once and then triggered the first bug, but idk how.

Fixed this by properly plumbing through cancellation into the preferences loading code. The stuff is now cancelled properly.

Third bug: if somebody has a loadout item with a playtime requirement active, load-time sanitization of player prefs could run into a race condition because the sanitization can happen *before* play time was loaded.

Fixed by moving pref sanitizations to a later stage in the load process.
2024-05-07 14:21:03 +10:00
Arthur Asimov
0b621a7b7e Merge remote-tracking branch 'refs/remotes/wizards/master' into upstream-sync
# Conflicts:
#	Content.Client/Preferences/ClientPreferencesManager.cs
#	Content.Client/Preferences/UI/CharacterSetupGui.xaml.cs
#	Content.Client/Preferences/UI/HumanoidProfileEditor.xaml.cs
#	Content.Server/Preferences/Managers/ServerPreferencesManager.cs
#	Content.Server/Station/Systems/StationSpawningSystem.cs
#	Content.Shared/Preferences/HumanoidCharacterProfile.cs
#	Content.Shared/Preferences/ICharacterProfile.cs
#	Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml
#	Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml
#	Resources/Prototypes/Roles/Jobs/Security/security_officer.yml
#	Resources/Prototypes/Roles/Jobs/Security/warden.yml
#	Resources/Prototypes/Roles/Jobs/Wildcards/psychologist.yml
#	Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-left.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json
#	Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png
#	Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json
#	Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING-reptilian.png
#	Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json
#	Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json
2024-04-17 11:57:44 +03:00
metalgearsloth
12766fe6e3 Loadouts redux (#25715)
* Loadouts redux

* Loadout window mockup

* More workout

* rent

* validation

* Developments

* bcs

* More cleanup

* Rebuild working

* Fix model and loading

* obsession

* efcore

* We got a stew goin

* Cleanup

* Optional + SeniorEngineering fix

* Fixes

* Update science.yml

* add

add

* Automatic naming

* Update nukeops

* Coming together

* Right now

* stargate

* rejig the UI

* weh

* Loadouts tweaks

* Merge conflicts + ordering fix

* yerba mate

* chocolat

* More updates

* Add multi-selection support

* test

h

* fikss

* a

* add tech assistant and hazard suit

* huh

* Latest changes

* add medical loadouts

* and science

* finish security loadouts

* cargo

* service done

* added wildcards

* add command

* Move restrictions

* Finalising

* Fix existing work

* Localise next batch

* clothing fix

* Fix storage names

* review

* the scooping room

* Test fixes

* Xamlify

* Xamlify this too

* Update Resources/Prototypes/Loadouts/Jobs/Medical/paramedic.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/loadout_groups.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/Jobs/Civilian/clown.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/Jobs/Civilian/clown.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/loadout_groups.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/Jobs/Security/detective.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* Update Resources/Prototypes/Loadouts/loadout_groups.yml

Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>

* ben

* Margins

---------

Co-authored-by: Firewatch <54725557+musicmanvr@users.noreply.github.com>
Co-authored-by: Mr. 27 <koolthunder019@gmail.com>
Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com>
2024-04-16 22:57:43 +10:00
Pieter-Jan Briers
d3ac3d06bb Fix database round start date issues (#26838)
How can ONE DATABASE COLUMN have so many cursed issues I don't know, but it certainly pissed off the devil in its previous life.

The start_date column on round entities in the database was added by https://github.com/space-wizards/space-station-14/pull/21153. For some reason, this PR gave the column a nonsensical default value instead of making it nullable. This default value causes the code from #25280 to break. It actually trips an assert though that's not what the original issue report ran into.

This didn't get noticed on wizden servers because we at some point backfilled the start_date column based on the stored admin logs.

So I change the database model to make this column nullable, updated the C# code to match, and made the existing migration set the invalid values to be NULL instead. Cool.

Wait how's SQLite handle in this scenario anyways? Well actually turns out the column was *completely broken* in the first place!

The code for inserting into the round table was copy pasted between SQLite and PostgreSQL, with the only difference being that the SQLite key manually assigned the primary key instead of letting SQLite AUTOINCREMENT it. And then the code to give a start_date value was only added to the PostgreSQL version (which is actually in the base class already). So for SQLite that column's been filled up with the same invalid default the whole time.

Why was the code manually assigning a PK? I checked the SQLite docs for AUTOINCREMENT[1], and the behavior seems appropriate.

I removed the SQLite-specific code path and it just seems to work regardless. The migration just sets the old values to NULL too.

BUT WAIT, THERE'S MORE!

Turns out just doing the migration on SQLite is a pain in the ass! EF Core has to create a new table to apply the nullability change, because SQLite doesn't support proper ALTER COLUMN. This causes the generated SQL commands to be weird and the UPDATE for the migration goes BEFORE the nullability change... I ended up having to make TWO migrations for SQLite. Yay.

Fixes #26800

[1]: https://www.sqlite.org/autoinc.html
2024-04-14 07:39:43 +02:00