From 684ec72541f6a1b9fe73d9ecd22706c0935ea3c7 Mon Sep 17 00:00:00 2001 From: Ed <96445749+TheShuEd@users.noreply.github.com> Date: Sun, 14 Apr 2024 20:34:16 +0300 Subject: [PATCH] Upstrearm sync (#94) * Fix for the salvage ice labs map. (#26928) * done * more work * Automatic changelog update * Update Credits (#26938) Co-authored-by: PJBot * Fix cryostorage identifying unknown characters as captain (#26927) Fixed cryostorage getting captain's record for unknown jobs. Also localized Unknown job string. * Automatic changelog update * Fixed Honkbot/jonkbot honking like crazy, gave honkbot/jonkbot standard idle ai. (#26939) * Fixed Honkbot/jonkbot honking like crazy, gave honkbot/jonkbot standard idle ai. * Update Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml --------- Co-authored-by: Tayrtahn * Automatic changelog update * Bug fix: Force cancellation of RCD constructions if the construction type is changed (#26935) Force cancellation of RCD constructions if the construction type is changed * Fix standart -> standard and dressfilled test fail (#26942) Fix standart -> standard * Add Ability to stop sound when MobState is Dead (#26905) * Add stopsWhenEntityDead to sound components * Convert component * Review * Fix dupe sub --------- Co-authored-by: metalgearsloth * Automatic changelog update * Fix rockets and lasers looking like they have nothing loaded (#26933) * Automatic changelog update * You can now see paper on crates (with color!) (#26834) * Implement changes on not-cooked branch * Made it work * Fix update appearance calls * Fix extra indents, clean-up code, fix tests hopefully * Fix hammy cagecrate * Fix messing up the yml, add artifact crate specific labels back in * Visual Studio hates yml, sad * Seperate the colors for cargonia * sorry json * make label move with artifact door * Apply suggestion changes Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> * Fix remaining crate offsets, add a few for livestock and graves (why are you labeling graves) and coffin label sprites (why are you labeling coffins??) --------- Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> * Make UtensilSystem and SharpSystem not run AfterInteract if it has already been handled (#25826) * Make UtensilSystem and SharpSystem not run AfterInteract if it has already been handled * merge conflicts --------- Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: metalgearsloth * Automatic changelog update * Add two-message overload to PopupPredicted (#26907) Added two-message overload to PopupPredicted * Update submodule to 218.0.0 (#26945) * Autism pins! (#25597) * hee hee he ha ha * added gold varients, forgive me for my spritework * maints loot, copying from past PRs * Trying to fix RSI * speedran these sprites in break time, pictures will be later * Fixed/Tweaked glows * consensus * gregregation * dam copiryte * oops i forgot to delete 2 fields hope this works * Automatic changelog update * 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 * Fix options menu crashing in replays (#26911) Not having the nullable set properly is annoying but fixing that would probably be a significant amount of work. * Greyscale color clothing (#26943) * greyscales color gloves, color jumpsuits, and shoes * remove popbob * fix test fails * Automatic changelog update * WT550 Buffs + Burst Mode for WT550 & C-20R (#26886) * Slightly increased WT550 Firerate, drastically reduced recoil, and given it the option to fire in 5 round bursts. * Given the C-20 a 5 round burst aswell * Automatic changelog update * make holoparasites actually holographic (#26862) it's over * Automatic changelog update * Add character sheets to board game crate (#26926) add character sheets to board game crate * Automatic changelog update * Game server admin API (#26880) * Reapply "Game server api" (#26871) This reverts commit 3aee19792391cbfb06edb65d6f16f77da0f36f13. * Rewrite 75% of the code it's good now * Wield recoil components (#26915) * WieldRecoilComponents * WieldRecoilComponents * Update Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs Co-authored-by: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> * Update Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs --------- Co-authored-by: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> * Clown shoes make you waddle, as God intended (#26338) * Clown shoes make you waddle, as God intended * OOPS * Toned down, client system name fix * Tidy namespacing for @deltanedas * Refactor to handle prediction better, etc. * Resolve PR comments. * Automatic changelog update * Use round time instead of server time for criminal history (#26949) make criminal records computer use round time for history instead of the server time * Rotate and Offset station CCVar nuke (#26175) * no content * add noRot to Europa * bruh. and this * yay * fix * Update debug.yml --------- Co-authored-by: Boaz1111 <149967078+Boaz1111@users.noreply.github.com> Co-authored-by: PJBot Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Tayrtahn Co-authored-by: superjj18 Co-authored-by: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Co-authored-by: GreaseMonk <1354802+GreaseMonk@users.noreply.github.com> Co-authored-by: metalgearsloth Co-authored-by: DrSmugleaf <10968691+DrSmugleaf@users.noreply.github.com> Co-authored-by: Verm <32827189+Vermidia@users.noreply.github.com> Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Co-authored-by: Terraspark4941 Co-authored-by: Pieter-Jan Briers Co-authored-by: Flareguy <78941145+Flareguy@users.noreply.github.com> Co-authored-by: BramvanZijp <56019239+BramvanZijp@users.noreply.github.com> Co-authored-by: Mr. 27 <45323883+Dutch-VanDerLinde@users.noreply.github.com> Co-authored-by: Tyzemol <85772526+Tyzemol@users.noreply.github.com> Co-authored-by: Froffy025 <78222136+Froffy025@users.noreply.github.com> Co-authored-by: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Co-authored-by: Hannah Giovanna Dawson Co-authored-by: ilya.mikheev.coder --- .../Clothing/Systems/WaddleClothingSystem.cs | 31 + .../Movement/Systems/WaddleAnimationSystem.cs | 135 ++ .../Options/UI/Tabs/MiscTab.xaml.cs | 6 +- Content.Client/Popups/PopupSystem.cs | 6 + .../Systems/GunSystem.MagazineVisuals.cs | 2 +- ...7_FixRoundStartDateNullability.Designer.cs | 1766 +++++++++++++++++ ...0409013837_FixRoundStartDateNullability.cs | 40 + .../PostgresServerDbContextModelSnapshot.cs | 4 +- ...2_FixRoundStartDateNullability.Designer.cs | 1697 ++++++++++++++++ ...0409013832_FixRoundStartDateNullability.cs | 38 + ..._FixRoundStartDateNullability2.Designer.cs | 1697 ++++++++++++++++ ...409014937_FixRoundStartDateNullability2.cs | 25 + .../SqliteServerDbContextModelSnapshot.cs | 4 +- Content.Server.Database/Model.cs | 6 +- .../Administration/ServerApi.Utility.cs | 147 ++ Content.Server/Administration/ServerApi.cs | 711 +++++++ .../Administration/Systems/AdminSystem.cs | 24 +- Content.Server/Audio/AmbientSoundSystem.cs | 1 + .../Bed/Cryostorage/CryostorageSystem.cs | 15 +- .../Systems/CriminalRecordsSystem.cs | 6 +- Content.Server/Database/DatabaseRecords.cs | 2 +- Content.Server/Database/ServerDbBase.cs | 2 +- Content.Server/Database/ServerDbSqlite.cs | 28 - Content.Server/Entry/EntryPoint.cs | 2 + Content.Server/IoC/ServerContentIoC.cs | 1 + .../Kitchen/EntitySystems/SharpSystem.cs | 25 +- Content.Server/Labels/Label/LabelSystem.cs | 17 +- .../Nutrition/EntitySystems/UtensilSystem.cs | 10 +- Content.Server/Popups/PopupSystem.cs | 5 + Content.Server/Sound/EmitSoundSystem.cs | 1 - .../StationRandomTransformComponent.cs | 16 + .../Station/Systems/StationSystem.cs | 62 +- .../Audio/SharedAmbientSoundSystem.cs | 2 + .../Audio/SoundWhileAliveComponent.cs | 10 + Content.Shared/Burial/BurialSystem.cs | 5 +- Content.Shared/CCVar/CCVars.cs | 26 +- Content.Shared/Climbing/Systems/BonkSystem.cs | 6 +- .../Climbing/Systems/ClimbSystem.cs | 3 +- .../Components/WaddleWhenWornComponent.cs | 35 + .../Components/PaperLabelTypeComponent.cs | 16 + Content.Shared/Labels/LabelEvents.cs | 4 +- .../Components/WaddleAnimationComponent.cs | 72 + Content.Shared/Popups/SharedPopupSystem.cs | 6 + Content.Shared/RCD/Systems/RCDSystem.cs | 6 + Content.Shared/Sound/SharedEmitSoundSystem.cs | 20 +- .../Components/GunWieldBonusComponent.cs | 16 + .../Systems/SharedGunSystem.Magazine.cs | 22 +- Content.Shared/Wieldable/WieldableSystem.cs | 14 +- Resources/Changelog/Changelog.yml | 191 +- Resources/Credits/GitHub.txt | 2 +- .../bed/cryostorage/cryogenic-storage.ftl | 1 + .../Prototypes/Catalog/Fills/Crates/fun.yml | 2 + .../Catalog/Fills/Lockers/wardrobe_colors.yml | 2 +- .../Clothing/Hands/base_clothinghands.yml | 10 + .../Entities/Clothing/Hands/colored.yml | 360 +++- .../Entities/Clothing/Neck/pins.yml | 32 + .../Entities/Clothing/Shoes/color.yml | 324 ++- .../Entities/Clothing/Shoes/specific.yml | 24 +- .../Clothing/Uniforms/color_jumpskirts.yml | 491 +++++ .../Clothing/Uniforms/color_jumpsuits.yml | 503 +++++ .../Entities/Clothing/Uniforms/jumpskirts.yml | 205 +- .../Entities/Clothing/Uniforms/jumpsuits.yml | 212 +- .../Clothing/Uniforms/random_suit.yml | 46 +- .../Entities/Clothing/Uniforms/specific.yml | 23 +- .../Markers/Spawners/Random/maintenance.yml | 2 + .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 5 + .../Entities/Mobs/Player/guardian.yml | 6 +- .../Consumable/Smokeables/Vapes/vape.yml | 4 +- .../Entities/Objects/Misc/paper.yml | 36 +- .../Objects/Specific/Medical/morgue.yml | 12 +- .../Xenoarchaeology/artifact_equipment.yml | 21 +- .../Objects/Weapons/Guns/SMGs/smgs.yml | 16 +- .../Prototypes/Entities/Stations/base.yml | 6 + .../Entities/Stations/nanotrasen.yml | 1 + .../Entities/Structures/Furniture/dresser.yml | 12 - .../Storage/Crates/base_structurecrates.yml | 18 + .../Structures/Storage/Crates/crates.yml | 52 + Resources/Prototypes/Maps/debug.yml | 3 + Resources/Prototypes/Maps/europa.yml | 4 + Resources/Prototypes/Maps/train.yml | 2 + Resources/Prototypes/NPCs/honkbot.yml | 6 + .../Prototypes/Procedural/dungeon_configs.yml | 4 +- .../Prototypes/Recipes/Lathes/chemistry.yml | 2 +- .../Gloves/Color/blue.rsi/equipped-HAND.png | Bin 441 -> 0 bytes .../Hands/Gloves/Color/blue.rsi/icon.png | Bin 366 -> 0 bytes .../Gloves/Color/blue.rsi/inhand-left.png | Bin 357 -> 0 bytes .../Gloves/Color/blue.rsi/inhand-right.png | Bin 356 -> 0 bytes .../Gloves/Color/brown.rsi/equipped-HAND.png | Bin 446 -> 0 bytes .../Hands/Gloves/Color/brown.rsi/icon.png | Bin 365 -> 0 bytes .../Gloves/Color/brown.rsi/inhand-left.png | Bin 356 -> 0 bytes .../Gloves/Color/brown.rsi/inhand-right.png | Bin 355 -> 0 bytes .../Hands/Gloves/Color/brown.rsi/meta.json | 26 - .../equipped-HAND.png | Bin .../Hands/Gloves/Color/color.rsi/icon.png | Bin 0 -> 291 bytes .../{white.rsi => color.rsi}/inhand-left.png | Bin .../{white.rsi => color.rsi}/inhand-right.png | Bin .../Color/{blue.rsi => color.rsi}/meta.json | 2 +- .../Gloves/Color/gray.rsi/equipped-HAND.png | Bin 428 -> 0 bytes .../Hands/Gloves/Color/gray.rsi/icon.png | Bin 342 -> 0 bytes .../Gloves/Color/gray.rsi/inhand-left.png | Bin 324 -> 0 bytes .../Gloves/Color/gray.rsi/inhand-right.png | Bin 327 -> 0 bytes .../Hands/Gloves/Color/gray.rsi/meta.json | 26 - .../Gloves/Color/green.rsi/equipped-HAND.png | Bin 471 -> 0 bytes .../Hands/Gloves/Color/green.rsi/icon.png | Bin 374 -> 0 bytes .../Gloves/Color/green.rsi/inhand-left.png | Bin 344 -> 0 bytes .../Gloves/Color/green.rsi/inhand-right.png | Bin 345 -> 0 bytes .../Hands/Gloves/Color/green.rsi/meta.json | 26 - .../Color/lightbrown.rsi/equipped-HAND.png | Bin 462 -> 0 bytes .../Gloves/Color/lightbrown.rsi/icon.png | Bin 369 -> 0 bytes .../Color/lightbrown.rsi/inhand-left.png | Bin 360 -> 0 bytes .../Color/lightbrown.rsi/inhand-right.png | Bin 360 -> 0 bytes .../Gloves/Color/lightbrown.rsi/meta.json | 26 - .../Gloves/Color/orange.rsi/equipped-HAND.png | Bin 456 -> 0 bytes .../Hands/Gloves/Color/orange.rsi/icon.png | Bin 364 -> 0 bytes .../Gloves/Color/orange.rsi/inhand-left.png | Bin 341 -> 0 bytes .../Gloves/Color/orange.rsi/inhand-right.png | Bin 334 -> 0 bytes .../Hands/Gloves/Color/orange.rsi/meta.json | 26 - .../Gloves/Color/purple.rsi/equipped-HAND.png | Bin 456 -> 0 bytes .../Hands/Gloves/Color/purple.rsi/icon.png | Bin 378 -> 0 bytes .../Gloves/Color/purple.rsi/inhand-left.png | Bin 364 -> 0 bytes .../Gloves/Color/purple.rsi/inhand-right.png | Bin 362 -> 0 bytes .../Hands/Gloves/Color/purple.rsi/meta.json | 26 - .../Gloves/Color/red.rsi/equipped-HAND.png | Bin 439 -> 0 bytes .../Hands/Gloves/Color/red.rsi/icon.png | Bin 368 -> 0 bytes .../Gloves/Color/red.rsi/inhand-left.png | Bin 362 -> 0 bytes .../Gloves/Color/red.rsi/inhand-right.png | Bin 362 -> 0 bytes .../Hands/Gloves/Color/red.rsi/meta.json | 26 - .../Hands/Gloves/Color/white.rsi/icon.png | Bin 220 -> 0 bytes .../Hands/Gloves/Color/white.rsi/meta.json | 26 - .../Gloves/ihscombat.rsi/equipped-HAND.png | Bin 524 -> 0 bytes .../Hands/Gloves/ihscombat.rsi/icon.png | Bin 636 -> 0 bytes .../Gloves/ihscombat.rsi/inhand-left.png | Bin 415 -> 0 bytes .../Gloves/ihscombat.rsi/inhand-right.png | Bin 423 -> 0 bytes .../Hands/Gloves/ihscombat.rsi/meta.json | 26 - .../Misc/autismpin.rsi/autism-equipped.png | Bin 0 -> 230 bytes .../Neck/Misc/autismpin.rsi/autism.png | Bin 0 -> 310 bytes .../Neck/Misc/autismpin.rsi/meta.json | 18 + .../goldautismpin.rsi/goldautism-equipped.png | Bin 0 -> 413 bytes .../Misc/goldautismpin.rsi/goldautism.png | Bin 0 -> 258 bytes .../Neck/Misc/goldautismpin.rsi/meta.json | 18 + .../Clothing/Neck/Misc/pins.rsi/meta.json | 131 +- .../Color/black.rsi/equipped-FEET-vox.png | Bin 467 -> 0 bytes .../Shoes/Color/black.rsi/equipped-FEET.png | Bin 501 -> 0 bytes .../Clothing/Shoes/Color/black.rsi/icon.png | Bin 351 -> 0 bytes .../Shoes/Color/black.rsi/inhand-left.png | Bin 281 -> 0 bytes .../Shoes/Color/black.rsi/inhand-right.png | Bin 286 -> 0 bytes .../Clothing/Shoes/Color/black.rsi/meta.json | 1 - .../Shoes/Color/blue.rsi/equipped-FEET.png | Bin 515 -> 0 bytes .../Clothing/Shoes/Color/blue.rsi/icon.png | Bin 335 -> 0 bytes .../Shoes/Color/blue.rsi/inhand-left.png | Bin 250 -> 0 bytes .../Shoes/Color/blue.rsi/inhand-right.png | Bin 256 -> 0 bytes .../Clothing/Shoes/Color/blue.rsi/meta.json | 26 - .../Shoes/Color/brown.rsi/equipped-FEET.png | Bin 519 -> 0 bytes .../Clothing/Shoes/Color/brown.rsi/icon.png | Bin 348 -> 0 bytes .../Shoes/Color/brown.rsi/inhand-left.png | Bin 315 -> 0 bytes .../Shoes/Color/brown.rsi/inhand-right.png | Bin 334 -> 0 bytes .../Clothing/Shoes/Color/brown.rsi/meta.json | 26 - .../Shoes/Color/green.rsi/equipped-FEET.png | Bin 518 -> 0 bytes .../Clothing/Shoes/Color/green.rsi/icon.png | Bin 342 -> 0 bytes .../Shoes/Color/green.rsi/inhand-left.png | Bin 246 -> 0 bytes .../Shoes/Color/green.rsi/inhand-right.png | Bin 252 -> 0 bytes .../Clothing/Shoes/Color/green.rsi/meta.json | 26 - .../Shoes/Color/orange.rsi/equipped-FEET.png | Bin 517 -> 0 bytes .../Clothing/Shoes/Color/orange.rsi/icon.png | Bin 336 -> 0 bytes .../Shoes/Color/orange.rsi/inhand-left.png | Bin 281 -> 0 bytes .../Shoes/Color/orange.rsi/inhand-right.png | Bin 288 -> 0 bytes .../Clothing/Shoes/Color/orange.rsi/meta.json | 26 - .../Shoes/Color/purple.rsi/equipped-FEET.png | Bin 516 -> 0 bytes .../Clothing/Shoes/Color/purple.rsi/icon.png | Bin 339 -> 0 bytes .../Shoes/Color/purple.rsi/inhand-left.png | Bin 249 -> 0 bytes .../Shoes/Color/purple.rsi/inhand-right.png | Bin 255 -> 0 bytes .../Clothing/Shoes/Color/purple.rsi/meta.json | 26 - .../Shoes/Color/red.rsi/equipped-FEET.png | Bin 500 -> 0 bytes .../Clothing/Shoes/Color/red.rsi/icon.png | Bin 360 -> 0 bytes .../Shoes/Color/red.rsi/inhand-left.png | Bin 233 -> 0 bytes .../Shoes/Color/red.rsi/inhand-right.png | Bin 239 -> 0 bytes .../Clothing/Shoes/Color/red.rsi/meta.json | 26 - .../Shoes/Color/white.rsi/equipped-FEET.png | Bin 520 -> 0 bytes .../Clothing/Shoes/Color/white.rsi/icon.png | Bin 289 -> 0 bytes .../Shoes/Color/white.rsi/inhand-left.png | Bin 257 -> 0 bytes .../Shoes/Color/white.rsi/inhand-right.png | Bin 257 -> 0 bytes .../Clothing/Shoes/Color/white.rsi/meta.json | 26 - .../Shoes/Color/yellow.rsi/equipped-FEET.png | Bin 516 -> 0 bytes .../Clothing/Shoes/Color/yellow.rsi/icon.png | Bin 337 -> 0 bytes .../Shoes/Color/yellow.rsi/inhand-left.png | Bin 246 -> 0 bytes .../Shoes/Color/yellow.rsi/inhand-right.png | Bin 252 -> 0 bytes .../Clothing/Shoes/Color/yellow.rsi/meta.json | 26 - .../contrastedsoles-equipped-FEET-vox.png | Bin 0 -> 316 bytes .../contrastedsoles-equipped-FEET.png | Bin 0 -> 327 bytes .../Shoes/color.rsi/equipped-FEET-vox.png | Bin 0 -> 342 bytes .../Shoes/color.rsi/equipped-FEET.png | Bin 0 -> 342 bytes .../Clothing/Shoes/color.rsi/icon.png | Bin 0 -> 256 bytes .../Clothing/Shoes/color.rsi/inhand-left.png | Bin 0 -> 269 bytes .../Clothing/Shoes/color.rsi/inhand-right.png | Bin 0 -> 267 bytes .../Clothing/Shoes/color.rsi/meta.json | 57 + .../color.rsi/soles-equipped-FEET-vox.png | Bin 0 -> 305 bytes .../Shoes/color.rsi/soles-equipped-FEET.png | Bin 0 -> 313 bytes .../Clothing/Shoes/color.rsi/soles-icon.png | Bin 0 -> 237 bytes .../Shoes/color.rsi/soles-inhand-left.png | Bin 0 -> 235 bytes .../Shoes/color.rsi/soles-inhand-right.png | Bin 0 -> 239 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 20288 -> 0 bytes .../black.rsi/equipped-INNERCLOTHING.png | Bin 410 -> 0 bytes .../Jumpskirt/Color/black.rsi/icon.png | Bin 243 -> 0 bytes .../Jumpskirt/Color/black.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Color/black.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpskirt/Color/black.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20452 -> 0 bytes .../Color/blue.rsi/equipped-INNERCLOTHING.png | Bin 440 -> 0 bytes .../Jumpskirt/Color/blue.rsi/icon.png | Bin 257 -> 0 bytes .../Jumpskirt/Color/blue.rsi/inhand-left.png | Bin 497 -> 0 bytes .../Jumpskirt/Color/blue.rsi/inhand-right.png | Bin 504 -> 0 bytes .../Jumpskirt/Color/blue.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20419 -> 0 bytes .../brown.rsi/equipped-INNERCLOTHING.png | Bin 435 -> 0 bytes .../Jumpskirt/Color/brown.rsi/icon.png | Bin 259 -> 0 bytes .../Jumpskirt/Color/brown.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Color/brown.rsi/inhand-right.png | Bin 318 -> 0 bytes .../Jumpskirt/Color/brown.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20427 -> 0 bytes .../darkblue.rsi/equipped-INNERCLOTHING.png | Bin 437 -> 0 bytes .../Jumpskirt/Color/darkblue.rsi/icon.png | Bin 258 -> 0 bytes .../Color/darkblue.rsi/inhand-left.png | Bin 500 -> 0 bytes .../Color/darkblue.rsi/inhand-right.png | Bin 506 -> 0 bytes .../Jumpskirt/Color/darkblue.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20362 -> 0 bytes .../darkgreen.rsi/equipped-INNERCLOTHING.png | Bin 442 -> 0 bytes .../Jumpskirt/Color/darkgreen.rsi/icon.png | Bin 259 -> 0 bytes .../Color/darkgreen.rsi/inhand-left.png | Bin 284 -> 0 bytes .../Color/darkgreen.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpskirt/Color/darkgreen.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20366 -> 0 bytes .../green.rsi/equipped-INNERCLOTHING.png | Bin 418 -> 0 bytes .../Jumpskirt/Color/green.rsi/icon.png | Bin 247 -> 0 bytes .../Jumpskirt/Color/green.rsi/inhand-left.png | Bin 284 -> 0 bytes .../Color/green.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpskirt/Color/green.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 7292 -> 0 bytes .../Color/grey.rsi/equipped-INNERCLOTHING.png | Bin 411 -> 0 bytes .../Jumpskirt/Color/grey.rsi/icon.png | Bin 221 -> 0 bytes .../Jumpskirt/Color/grey.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Jumpskirt/Color/grey.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpskirt/Color/grey.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20464 -> 0 bytes .../lightbrown.rsi/equipped-INNERCLOTHING.png | Bin 439 -> 0 bytes .../Jumpskirt/Color/lightbrown.rsi/icon.png | Bin 257 -> 0 bytes .../Color/lightbrown.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Color/lightbrown.rsi/inhand-right.png | Bin 318 -> 0 bytes .../Jumpskirt/Color/lightbrown.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20688 -> 0 bytes .../equipped-INNERCLOTHING.png | Bin 440 -> 0 bytes .../Jumpskirt/Color/lightpurple.rsi/icon.png | Bin 258 -> 0 bytes .../Color/lightpurple.rsi/inhand-left.png | Bin 497 -> 0 bytes .../Color/lightpurple.rsi/inhand-right.png | Bin 508 -> 0 bytes .../Jumpskirt/Color/lightpurple.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20669 -> 0 bytes .../maroon.rsi/equipped-INNERCLOTHING.png | Bin 437 -> 0 bytes .../Jumpskirt/Color/maroon.rsi/icon.png | Bin 256 -> 0 bytes .../Color/maroon.rsi/inhand-left.png | Bin 498 -> 0 bytes .../Color/maroon.rsi/inhand-right.png | Bin 499 -> 0 bytes .../Jumpskirt/Color/maroon.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20992 -> 0 bytes .../orange.rsi/equipped-INNERCLOTHING.png | Bin 439 -> 0 bytes .../Jumpskirt/Color/orange.rsi/icon.png | Bin 258 -> 0 bytes .../Color/orange.rsi/inhand-left.png | Bin 478 -> 0 bytes .../Color/orange.rsi/inhand-right.png | Bin 484 -> 0 bytes .../Jumpskirt/Color/orange.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20661 -> 0 bytes .../Color/pink.rsi/equipped-INNERCLOTHING.png | Bin 439 -> 0 bytes .../Jumpskirt/Color/pink.rsi/icon.png | Bin 258 -> 0 bytes .../Jumpskirt/Color/pink.rsi/inhand-left.png | Bin 557 -> 0 bytes .../Jumpskirt/Color/pink.rsi/inhand-right.png | Bin 529 -> 0 bytes .../Jumpskirt/Color/pink.rsi/meta.json | 30 - .../red.rsi/equipped-INNERCLOTHING-monkey.png | Bin 20629 -> 0 bytes .../Color/red.rsi/equipped-INNERCLOTHING.png | Bin 434 -> 0 bytes .../Uniforms/Jumpskirt/Color/red.rsi/icon.png | Bin 255 -> 0 bytes .../Jumpskirt/Color/red.rsi/inhand-left.png | Bin 294 -> 0 bytes .../Jumpskirt/Color/red.rsi/inhand-right.png | Bin 329 -> 0 bytes .../Jumpskirt/Color/red.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20755 -> 0 bytes .../Color/teal.rsi/equipped-INNERCLOTHING.png | Bin 435 -> 0 bytes .../Jumpskirt/Color/teal.rsi/icon.png | Bin 255 -> 0 bytes .../Jumpskirt/Color/teal.rsi/inhand-left.png | Bin 587 -> 0 bytes .../Jumpskirt/Color/teal.rsi/inhand-right.png | Bin 595 -> 0 bytes .../Jumpskirt/Color/teal.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20659 -> 0 bytes .../white.rsi/equipped-INNERCLOTHING.png | Bin 428 -> 0 bytes .../Jumpskirt/Color/white.rsi/icon.png | Bin 249 -> 0 bytes .../Jumpskirt/Color/white.rsi/inhand-left.png | Bin 307 -> 0 bytes .../Color/white.rsi/inhand-right.png | Bin 310 -> 0 bytes .../Jumpskirt/Color/white.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20764 -> 0 bytes .../yellow.rsi/equipped-INNERCLOTHING.png | Bin 439 -> 0 bytes .../Jumpskirt/Color/yellow.rsi/icon.png | Bin 258 -> 0 bytes .../Color/yellow.rsi/inhand-left.png | Bin 588 -> 0 bytes .../Color/yellow.rsi/inhand-right.png | Bin 596 -> 0 bytes .../Jumpskirt/Color/yellow.rsi/meta.json | 30 - .../color.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 518 bytes .../Uniforms/Jumpskirt/color.rsi/icon.png | Bin 0 -> 300 bytes .../Jumpskirt/color.rsi/inhand-left.png | Bin 0 -> 391 bytes .../Jumpskirt/color.rsi/inhand-right.png | Bin 0 -> 408 bytes .../color.rsi}/meta.json | 40 +- .../prisoner-equipped-INNERCLOTHING.png | Bin 0 -> 294 bytes .../Jumpskirt/color.rsi/prisoner-icon.png | Bin 0 -> 218 bytes .../color.rsi/prisoner-inhand-left.png | Bin 0 -> 258 bytes .../color.rsi/prisoner-inhand-right.png | Bin 0 -> 259 bytes .../trinkets-equipped-INNERCLOTHING.png | Bin 0 -> 274 bytes .../Jumpskirt/color.rsi/trinkets-icon.png | Bin 0 -> 211 bytes .../color.rsi/trinkets-inhand-left.png | Bin 0 -> 245 bytes .../color.rsi/trinkets-inhand-right.png | Bin 0 -> 251 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 20884 -> 0 bytes .../prisoner.rsi/equipped-INNERCLOTHING.png | Bin 1226 -> 0 bytes .../Uniforms/Jumpskirt/prisoner.rsi/icon.png | Bin 250 -> 0 bytes .../Jumpskirt/prisoner.rsi/inhand-left.png | Bin 525 -> 0 bytes .../Jumpskirt/prisoner.rsi/inhand-right.png | Bin 546 -> 0 bytes .../Uniforms/Jumpskirt/prisoner.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20645 -> 0 bytes .../black.rsi/equipped-INNERCLOTHING.png | Bin 397 -> 0 bytes .../Jumpsuit/Color/black.rsi/icon.png | Bin 215 -> 0 bytes .../Jumpsuit/Color/black.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Jumpsuit/Color/black.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpsuit/Color/black.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 21106 -> 0 bytes .../Color/blue.rsi/equipped-INNERCLOTHING.png | Bin 435 -> 0 bytes .../Uniforms/Jumpsuit/Color/blue.rsi/icon.png | Bin 226 -> 0 bytes .../Jumpsuit/Color/blue.rsi/inhand-left.png | Bin 497 -> 0 bytes .../Jumpsuit/Color/blue.rsi/inhand-right.png | Bin 504 -> 0 bytes .../Jumpsuit/Color/blue.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 21142 -> 0 bytes .../brown.rsi/equipped-INNERCLOTHING.png | Bin 447 -> 0 bytes .../Jumpsuit/Color/brown.rsi/icon.png | Bin 227 -> 0 bytes .../Jumpsuit/Color/brown.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Jumpsuit/Color/brown.rsi/inhand-right.png | Bin 318 -> 0 bytes .../Jumpsuit/Color/brown.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20668 -> 0 bytes .../darkblue.rsi/equipped-INNERCLOTHING.png | Bin 437 -> 0 bytes .../Jumpsuit/Color/darkblue.rsi/icon.png | Bin 224 -> 0 bytes .../Color/darkblue.rsi/inhand-left.png | Bin 500 -> 0 bytes .../Color/darkblue.rsi/inhand-right.png | Bin 506 -> 0 bytes .../Jumpsuit/Color/darkblue.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20690 -> 0 bytes .../darkgreen.rsi/equipped-INNERCLOTHING.png | Bin 427 -> 0 bytes .../Jumpsuit/Color/darkgreen.rsi/icon.png | Bin 227 -> 0 bytes .../Color/darkgreen.rsi/inhand-left.png | Bin 284 -> 0 bytes .../Color/darkgreen.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpsuit/Color/darkgreen.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20637 -> 0 bytes .../green.rsi/equipped-INNERCLOTHING.png | Bin 426 -> 0 bytes .../Jumpsuit/Color/green.rsi/icon.png | Bin 227 -> 0 bytes .../Jumpsuit/Color/green.rsi/inhand-left.png | Bin 284 -> 0 bytes .../Jumpsuit/Color/green.rsi/inhand-right.png | Bin 321 -> 0 bytes .../Jumpsuit/Color/green.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20998 -> 0 bytes .../grey.rsi/equipped-INNERCLOTHING-vox.png | Bin 1049 -> 0 bytes .../Color/grey.rsi/equipped-INNERCLOTHING.png | Bin 434 -> 0 bytes .../Uniforms/Jumpsuit/Color/grey.rsi/icon.png | Bin 232 -> 0 bytes .../Jumpsuit/Color/grey.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Jumpsuit/Color/grey.rsi/inhand-right.png | Bin 321 -> 0 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 21146 -> 0 bytes .../lightbrown.rsi/equipped-INNERCLOTHING.png | Bin 446 -> 0 bytes .../Jumpsuit/Color/lightbrown.rsi/icon.png | Bin 226 -> 0 bytes .../Color/lightbrown.rsi/inhand-left.png | Bin 287 -> 0 bytes .../Color/lightbrown.rsi/inhand-right.png | Bin 318 -> 0 bytes .../Jumpsuit/Color/lightbrown.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20647 -> 0 bytes .../equipped-INNERCLOTHING.png | Bin 438 -> 0 bytes .../Jumpsuit/Color/lightpurple.rsi/icon.png | Bin 226 -> 0 bytes .../Color/lightpurple.rsi/inhand-left.png | Bin 497 -> 0 bytes .../Color/lightpurple.rsi/inhand-right.png | Bin 508 -> 0 bytes .../Jumpsuit/Color/lightpurple.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20574 -> 0 bytes .../maroon.rsi/equipped-INNERCLOTHING.png | Bin 429 -> 0 bytes .../Jumpsuit/Color/maroon.rsi/icon.png | Bin 227 -> 0 bytes .../Jumpsuit/Color/maroon.rsi/inhand-left.png | Bin 498 -> 0 bytes .../Color/maroon.rsi/inhand-right.png | Bin 499 -> 0 bytes .../Jumpsuit/Color/maroon.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20597 -> 0 bytes .../orange.rsi/equipped-INNERCLOTHING.png | Bin 429 -> 0 bytes .../Jumpsuit/Color/orange.rsi/icon.png | Bin 228 -> 0 bytes .../Jumpsuit/Color/orange.rsi/inhand-left.png | Bin 478 -> 0 bytes .../Color/orange.rsi/inhand-right.png | Bin 484 -> 0 bytes .../Jumpsuit/Color/orange.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20659 -> 0 bytes .../Color/pink.rsi/equipped-INNERCLOTHING.png | Bin 429 -> 0 bytes .../Uniforms/Jumpsuit/Color/pink.rsi/icon.png | Bin 228 -> 0 bytes .../Jumpsuit/Color/pink.rsi/inhand-left.png | Bin 557 -> 0 bytes .../Jumpsuit/Color/pink.rsi/inhand-right.png | Bin 529 -> 0 bytes .../Jumpsuit/Color/pink.rsi/meta.json | 30 - .../red.rsi/equipped-INNERCLOTHING-monkey.png | Bin 20519 -> 0 bytes .../Color/red.rsi/equipped-INNERCLOTHING.png | Bin 440 -> 0 bytes .../Uniforms/Jumpsuit/Color/red.rsi/icon.png | Bin 227 -> 0 bytes .../Jumpsuit/Color/red.rsi/inhand-left.png | Bin 294 -> 0 bytes .../Jumpsuit/Color/red.rsi/inhand-right.png | Bin 329 -> 0 bytes .../Uniforms/Jumpsuit/Color/red.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20646 -> 0 bytes .../Color/teal.rsi/equipped-INNERCLOTHING.png | Bin 426 -> 0 bytes .../Uniforms/Jumpsuit/Color/teal.rsi/icon.png | Bin 227 -> 0 bytes .../Jumpsuit/Color/teal.rsi/inhand-left.png | Bin 587 -> 0 bytes .../Jumpsuit/Color/teal.rsi/inhand-right.png | Bin 595 -> 0 bytes .../Jumpsuit/Color/teal.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 8408 -> 0 bytes .../white.rsi/equipped-INNERCLOTHING.png | Bin 432 -> 0 bytes .../Jumpsuit/Color/white.rsi/icon.png | Bin 226 -> 0 bytes .../Jumpsuit/Color/white.rsi/inhand-left.png | Bin 307 -> 0 bytes .../Jumpsuit/Color/white.rsi/inhand-right.png | Bin 310 -> 0 bytes .../Jumpsuit/Color/white.rsi/meta.json | 30 - .../equipped-INNERCLOTHING-monkey.png | Bin 20629 -> 0 bytes .../yellow.rsi/equipped-INNERCLOTHING.png | Bin 429 -> 0 bytes .../Jumpsuit/Color/yellow.rsi/icon.png | Bin 228 -> 0 bytes .../Jumpsuit/Color/yellow.rsi/inhand-left.png | Bin 588 -> 0 bytes .../Color/yellow.rsi/inhand-right.png | Bin 596 -> 0 bytes .../Jumpsuit/Color/yellow.rsi/meta.json | 30 - .../color.rsi/equipped-INNERCLOTHING.png | Bin 0 -> 540 bytes .../Uniforms/Jumpsuit/color.rsi/icon.png | Bin 0 -> 293 bytes .../Jumpsuit/color.rsi/inhand-left.png | Bin 0 -> 391 bytes .../Jumpsuit/color.rsi/inhand-right.png | Bin 0 -> 408 bytes .../Uniforms/Jumpsuit/color.rsi/meta.json | 56 + .../prisoner-equipped-INNERCLOTHING.png | Bin 0 -> 365 bytes .../Jumpsuit/color.rsi/prisoner-icon.png | Bin 0 -> 232 bytes .../color.rsi/prisoner-inhand-left.png | Bin 0 -> 258 bytes .../color.rsi/prisoner-inhand-right.png | Bin 0 -> 259 bytes .../trinkets-equipped-INNERCLOTHING.png | Bin 0 -> 265 bytes .../Jumpsuit/color.rsi/trinkets-icon.png | Bin 0 -> 235 bytes .../color.rsi/trinkets-inhand-left.png | Bin 0 -> 245 bytes .../color.rsi/trinkets-inhand-right.png | Bin 0 -> 251 bytes .../equipped-INNERCLOTHING-monkey.png | Bin 20796 -> 0 bytes .../prisoner.rsi/equipped-INNERCLOTHING.png | Bin 1491 -> 0 bytes .../Uniforms/Jumpsuit/prisoner.rsi/icon.png | Bin 238 -> 0 bytes .../Jumpsuit/prisoner.rsi/inhand-left.png | Bin 525 -> 0 bytes .../Jumpsuit/prisoner.rsi/inhand-right.png | Bin 546 -> 0 bytes .../Uniforms/Jumpsuit/prisoner.rsi/meta.json | 30 - ...leg_standart.png => base_leg_standard.png} | Bin ...o_standart.png => base_torso_standard.png} | Bin ...standart2.png => base_torso_standard2.png} | Bin ...tandart1.png => decor_torso_standard1.png} | Bin ...tandart2.png => decor_torso_standard2.png} | Bin ...tandart3.png => decor_torso_standard3.png} | Bin ...tandart4.png => decor_torso_standard4.png} | Bin ...tandart5.png => decor_torso_standard5.png} | Bin ...tandart6.png => decor_torso_standard6.png} | Bin ...tandart7.png => decor_torso_standard7.png} | Bin ...tandart8.png => decor_torso_standard8.png} | Bin ...tandart9.png => decor_torso_standard9.png} | Bin .../Uniforms/procedural.rsi/meta.json | 24 +- .../icon.png | Bin .../meta.json | 0 .../Medical/Morgue/bodybags.rsi/bounty.png | Bin 0 -> 591 bytes .../Morgue/bodybags.rsi/captains_paper.png | Bin 0 -> 592 bytes .../Medical/Morgue/bodybags.rsi/invoice.png | Bin 0 -> 588 bytes .../Medical/Morgue/bodybags.rsi/meta.json | 15 +- .../{label_overlay.png => paper.png} | Bin .../Storage/Crates/artifact.rsi/bounty.png | Bin 0 -> 611 bytes .../Crates/artifact.rsi/captains_paper.png | Bin 0 -> 611 bytes .../Storage/Crates/artifact.rsi/invoice.png | Bin 0 -> 609 bytes .../Storage/Crates/artifact.rsi/meta.json | 70 +- .../Storage/Crates/artifact.rsi/paper.png | Bin 0 -> 610 bytes .../Storage/Crates/coffin.rsi/bounty.png | Bin 0 -> 628 bytes .../Crates/coffin.rsi/captains_paper.png | Bin 0 -> 628 bytes .../Storage/Crates/coffin.rsi/invoice.png | Bin 0 -> 543 bytes .../Storage/Crates/coffin.rsi/meta.json | 14 +- .../Storage/Crates/coffin.rsi/paper.png | Bin 0 -> 624 bytes .../Storage/Crates/labels.rsi/bounty.png | Bin 0 -> 593 bytes .../Crates/labels.rsi/captains_paper.png | Bin 0 -> 594 bytes .../Storage/Crates/labels.rsi/invoice.png | Bin 0 -> 592 bytes .../Storage/Crates/labels.rsi/meta.json | 23 + .../Storage/Crates/labels.rsi/paper.png | Bin 0 -> 592 bytes .../Storage/Crates/toybox.rsi/bounty.png | Bin 0 -> 602 bytes .../Crates/toybox.rsi/captains_paper.png | Bin 0 -> 601 bytes .../Storage/Crates/toybox.rsi/invoice.png | Bin 0 -> 599 bytes .../Storage/Crates/toybox.rsi/meta.json | 38 +- .../Storage/Crates/toybox.rsi/paper.png | Bin 0 -> 599 bytes RobustToolbox | 2 +- 471 files changed, 8965 insertions(+), 2411 deletions(-) create mode 100644 Content.Client/Clothing/Systems/WaddleClothingSystem.cs create mode 100644 Content.Client/Movement/Systems/WaddleAnimationSystem.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs create mode 100644 Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs create mode 100644 Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs create mode 100644 Content.Server/Administration/ServerApi.Utility.cs create mode 100644 Content.Server/Administration/ServerApi.cs create mode 100644 Content.Server/Station/Components/StationRandomTransformComponent.cs create mode 100644 Content.Shared/Audio/SoundWhileAliveComponent.cs create mode 100644 Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs create mode 100644 Content.Shared/Labels/Components/PaperLabelTypeComponent.cs create mode 100644 Content.Shared/Movement/Components/WaddleAnimationComponent.cs create mode 100644 Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml create mode 100644 Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml create mode 100644 Resources/Prototypes/NPCs/honkbot.yml delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json rename Resources/Textures/Clothing/Hands/Gloves/Color/{white.rsi => color.rsi}/equipped-HAND.png (100%) create mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png rename Resources/Textures/Clothing/Hands/Gloves/Color/{white.rsi => color.rsi}/inhand-left.png (100%) rename Resources/Textures/Clothing/Hands/Gloves/Color/{white.rsi => color.rsi}/inhand-right.png (100%) rename Resources/Textures/Clothing/Hands/Gloves/Color/{blue.rsi => color.rsi}/meta.json (89%) delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png create mode 100644 Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png create mode 100644 Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png create mode 100644 Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png create mode 100644 Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET-vox.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/black.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/red.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-left.png create mode 100644 Resources/Textures/Clothing/Shoes/color.rsi/soles-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-right.png rename Resources/Textures/Clothing/Uniforms/{Jumpsuit/Color/grey.rsi => Jumpskirt/color.rsi}/meta.json (50%) create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-vox.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/meta.json create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-left.png create mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING-monkey.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/equipped-INNERCLOTHING.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png delete mode 100644 Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{base_leg_standart.png => base_leg_standard.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{base_torso_standart.png => base_torso_standard.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{base_torso_standart2.png => base_torso_standard2.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart1.png => decor_torso_standard1.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart2.png => decor_torso_standard2.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart3.png => decor_torso_standard3.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart4.png => decor_torso_standard4.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart5.png => decor_torso_standard5.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart6.png => decor_torso_standard6.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart7.png => decor_torso_standard7.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart8.png => decor_torso_standard8.png} (100%) rename Resources/Textures/Clothing/Uniforms/procedural.rsi/{decor_torso_standart9.png => decor_torso_standard9.png} (100%) rename Resources/Textures/Objects/Consumable/Smokeables/Vapes/{vape-standart.rsi => vape-standard.rsi}/icon.png (100%) rename Resources/Textures/Objects/Consumable/Smokeables/Vapes/{vape-standart.rsi => vape-standard.rsi}/meta.json (100%) create mode 100644 Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png create mode 100644 Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png create mode 100644 Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png rename Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/{label_overlay.png => paper.png} (100%) create mode 100644 Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png create mode 100644 Resources/Textures/Structures/Storage/Crates/artifact.rsi/captains_paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png create mode 100644 Resources/Textures/Structures/Storage/Crates/artifact.rsi/paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png create mode 100644 Resources/Textures/Structures/Storage/Crates/coffin.rsi/captains_paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/coffin.rsi/invoice.png create mode 100644 Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/labels.rsi/bounty.png create mode 100644 Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png create mode 100644 Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json create mode 100644 Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/toybox.rsi/bounty.png create mode 100644 Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png create mode 100644 Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png create mode 100644 Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png diff --git a/Content.Client/Clothing/Systems/WaddleClothingSystem.cs b/Content.Client/Clothing/Systems/WaddleClothingSystem.cs new file mode 100644 index 0000000000..b8ac3c207b --- /dev/null +++ b/Content.Client/Clothing/Systems/WaddleClothingSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Movement.Components; +using Content.Shared.Inventory.Events; + +namespace Content.Client.Clothing.Systems; + +public sealed class WaddleClothingSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGotEquipped); + SubscribeLocalEvent(OnGotUnequipped); + } + + private void OnGotEquipped(EntityUid entity, WaddleWhenWornComponent comp, GotEquippedEvent args) + { + var waddleAnimComp = EnsureComp(args.Equipee); + + waddleAnimComp.AnimationLength = comp.AnimationLength; + waddleAnimComp.HopIntensity = comp.HopIntensity; + waddleAnimComp.RunAnimationLengthMultiplier = comp.RunAnimationLengthMultiplier; + waddleAnimComp.TumbleIntensity = comp.TumbleIntensity; + } + + private void OnGotUnequipped(EntityUid entity, WaddleWhenWornComponent comp, GotUnequippedEvent args) + { + RemComp(args.Equipee); + } +} diff --git a/Content.Client/Movement/Systems/WaddleAnimationSystem.cs b/Content.Client/Movement/Systems/WaddleAnimationSystem.cs new file mode 100644 index 0000000000..83bb697b26 --- /dev/null +++ b/Content.Client/Movement/Systems/WaddleAnimationSystem.cs @@ -0,0 +1,135 @@ +using System.Numerics; +using Content.Client.Gravity; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Events; +using Robust.Client.Animations; +using Robust.Client.GameObjects; +using Robust.Shared.Animations; +using Robust.Shared.Timing; + +namespace Content.Client.Movement.Systems; + +public sealed class WaddleAnimationSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _animation = default!; + [Dependency] private readonly GravitySystem _gravity = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnMovementInput); + SubscribeLocalEvent(OnStartedWalking); + SubscribeLocalEvent(OnStoppedWalking); + SubscribeLocalEvent(OnAnimationCompleted); + } + + private void OnMovementInput(EntityUid entity, WaddleAnimationComponent component, MoveInputEvent args) + { + // Prediction mitigation. Prediction means that MoveInputEvents are spammed repeatedly, even though you'd assume + // they're once-only for the user actually doing something. As such do nothing if we're just repeating this FoR. + if (!_timing.IsFirstTimePredicted) + { + return; + } + + if (!args.HasDirectionalMovement && component.IsCurrentlyWaddling) + { + component.IsCurrentlyWaddling = false; + + var stopped = new StoppedWaddlingEvent(entity); + + RaiseLocalEvent(entity, ref stopped); + + return; + } + + // Only start waddling if we're not currently AND we're actually moving. + if (component.IsCurrentlyWaddling || !args.HasDirectionalMovement) + return; + + component.IsCurrentlyWaddling = true; + + var started = new StartedWaddlingEvent(entity); + + RaiseLocalEvent(entity, ref started); + } + + private void OnStartedWalking(EntityUid uid, WaddleAnimationComponent component, StartedWaddlingEvent args) + { + if (_animation.HasRunningAnimation(uid, component.KeyName)) + { + return; + } + + if (!TryComp(uid, out var mover)) + { + return; + } + + if (_gravity.IsWeightless(uid)) + { + return; + } + + var tumbleIntensity = component.LastStep ? 360 - component.TumbleIntensity : component.TumbleIntensity; + var len = mover.Sprinting ? component.AnimationLength * component.RunAnimationLengthMultiplier : component.AnimationLength; + + component.LastStep = !component.LastStep; + component.IsCurrentlyWaddling = true; + + var anim = new Animation() + { + Length = TimeSpan.FromSeconds(len), + AnimationTracks = + { + new AnimationTrackComponentProperty() + { + ComponentType = typeof(SpriteComponent), + Property = nameof(SpriteComponent.Rotation), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(0), 0), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(tumbleIntensity), len/2), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(0), len/2), + } + }, + new AnimationTrackComponentProperty() + { + ComponentType = typeof(SpriteComponent), + Property = nameof(SpriteComponent.Offset), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(new Vector2(), 0), + new AnimationTrackProperty.KeyFrame(component.HopIntensity, len/2), + new AnimationTrackProperty.KeyFrame(new Vector2(), len/2), + } + } + } + }; + + _animation.Play(uid, anim, component.KeyName); + } + + private void OnStoppedWalking(EntityUid uid, WaddleAnimationComponent component, StoppedWaddlingEvent args) + { + _animation.Stop(uid, component.KeyName); + + if (!TryComp(uid, out var sprite)) + { + return; + } + + sprite.Offset = new Vector2(); + sprite.Rotation = Angle.FromDegrees(0); + component.IsCurrentlyWaddling = false; + } + + private void OnAnimationCompleted(EntityUid uid, WaddleAnimationComponent component, AnimationCompletedEvent args) + { + var started = new StartedWaddlingEvent(uid); + + RaiseLocalEvent(uid, ref started); + } +} diff --git a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs index 0eff811fa4..13e3fd05f5 100644 --- a/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/MiscTab.xaml.cs @@ -59,8 +59,10 @@ namespace Content.Client.Options.UI.Tabs UpdateApplyButton(); }; - ShowOocPatronColor.Visible = _playerManager.LocalSession?.Channel.UserData.PatronTier is { } patron; - + // Channel can be null in replays so. + // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract + ShowOocPatronColor.Visible = _playerManager.LocalSession?.Channel?.UserData.PatronTier is { }; + HudThemeOption.OnItemSelected += OnHudThemeChanged; DiscordRich.OnToggled += OnCheckBoxToggled; ShowOocPatronColor.OnToggled += OnCheckBoxToggled; diff --git a/Content.Client/Popups/PopupSystem.cs b/Content.Client/Popups/PopupSystem.cs index fcc8bfc420..3faa392e58 100644 --- a/Content.Client/Popups/PopupSystem.cs +++ b/Content.Client/Popups/PopupSystem.cs @@ -184,6 +184,12 @@ namespace Content.Client.Popups PopupEntity(message, uid, recipient.Value, type); } + public override void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small) + { + if (recipient != null && _timing.IsFirstTimePredicted) + PopupEntity(recipientMessage, uid, recipient.Value, type); + } + #endregion #region Network Event Handlers diff --git a/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs index a81e8ae887..2d670d1e77 100644 --- a/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs +++ b/Content.Client/Weapons/Ranged/Systems/GunSystem.MagazineVisuals.cs @@ -40,7 +40,7 @@ public sealed partial class GunSystem if (sprite == null) return; - if (args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) && + if (!args.AppearanceData.TryGetValue(AmmoVisuals.MagLoaded, out var magloaded) || magloaded is true) { if (!args.AppearanceData.TryGetValue(AmmoVisuals.AmmoMax, out var capacity)) diff --git a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs new file mode 100644 index 0000000000..bb165c37e8 --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.Designer.cs @@ -0,0 +1,1766 @@ +// +using System; +using System.Net; +using System.Text.Json; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using NpgsqlTypes; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + [DbContext(typeof(PostgresServerDbContext))] + [Migration("20240409013837_FixRoundStartDateNullability")] + partial class FixRoundStartDateNullability + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("text") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminId") + .HasColumnType("uuid") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("boolean") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("integer") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("smallint") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("text") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("integer") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Message") + .HasAnnotation("Npgsql:TsVectorConfig", "english"); + + NpgsqlIndexBuilderExtensions.HasMethod(b.HasIndex("Message"), "GIN"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("integer") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_messages_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("boolean") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("boolean") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_notes_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("boolean") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_rank_flag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminRankId") + .HasColumnType("integer") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("admin_watchlists_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("CreatedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("uuid") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("boolean") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("uuid") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("character varying(4096)") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("antag_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("assigned_user_id_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("connection_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("smallint") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("timestamp with time zone") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("job_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("JobName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("integer") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("play_time_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("PlayerId") + .HasColumnType("uuid") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("interval") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("text") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("player_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("FirstSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("inet") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("bytea") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", null, t => + { + t.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("preference_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("integer") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("profile_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Age") + .HasColumnType("integer") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("text") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("text") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("text") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("text") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("integer") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("integer") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("text") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("text") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("integer") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("integer") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("text") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("round_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ServerId") + .HasColumnType("integer") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("timestamp with time zone") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Name") + .IsRequired() + .HasColumnType("text") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("boolean") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("integer") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("integer") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_ban_hit_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("integer") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("server_role_ban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Address") + .HasColumnType("inet") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("uuid") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("bytea") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("boolean") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("timestamp with time zone") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("uuid") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("uuid") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("interval") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("text") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("text") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("integer") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("integer") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); + + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("role_unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("unban_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("BanId") + .HasColumnType("integer") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("timestamp with time zone") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("uuid") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("trait_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("ProfileId") + .HasColumnType("integer") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("text") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasColumnName("uploaded_resource_log_id"); + + NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); + + b.Property("Data") + .IsRequired() + .HasColumnType("bytea") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("timestamp with time zone") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("text") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("uuid") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("integer") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("integer") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs new file mode 100644 index 0000000000..84b296d4fe --- /dev/null +++ b/Content.Server.Database/Migrations/Postgres/20240409013837_FixRoundStartDateNullability.cs @@ -0,0 +1,40 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Postgres +{ + /// + public partial class FixRoundStartDateNullability : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "timestamp with time zone", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldDefaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + + migrationBuilder.Sql("UPDATE round SET start_date = NULL WHERE start_date = '-Infinity';"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "timestamp with time zone", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + oldClrType: typeof(DateTime), + oldType: "timestamp with time zone", + oldNullable: true); + } + } +} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index 1d3c525dac..8376407dcf 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -845,10 +845,8 @@ namespace Content.Server.Database.Migrations.Postgres .HasColumnType("integer") .HasColumnName("server_id"); - b.Property("StartDate") - .ValueGeneratedOnAdd() + b.Property("StartDate") .HasColumnType("timestamp with time zone") - .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) .HasColumnName("start_date"); b.HasKey("Id") diff --git a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs new file mode 100644 index 0000000000..e3ca0e78bd --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.Designer.cs @@ -0,0 +1,1697 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20240409013832_FixRoundStartDateNullability")] + partial class FixRoundStartDateNullability + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs new file mode 100644 index 0000000000..dbfd7776ba --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409013832_FixRoundStartDateNullability.cs @@ -0,0 +1,38 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class FixRoundStartDateNullability : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "TEXT", + nullable: true, + oldClrType: typeof(DateTime), + oldType: "TEXT", + oldDefaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AlterColumn( + name: "start_date", + table: "round", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), + oldClrType: typeof(DateTime), + oldType: "TEXT", + oldNullable: true); + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs new file mode 100644 index 0000000000..2ec05cdd45 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.Designer.cs @@ -0,0 +1,1697 @@ +// +using System; +using Content.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + [DbContext(typeof(SqliteServerDbContext))] + [Migration("20240409014937_FixRoundStartDateNullability2")] + partial class FixRoundStartDateNullability2 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.0"); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.HasKey("UserId") + .HasName("PK_admin"); + + b.HasIndex("AdminRankId") + .HasDatabaseName("IX_admin_admin_rank_id"); + + b.ToTable("admin", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_flag_id"); + + b.Property("AdminId") + .HasColumnType("TEXT") + .HasColumnName("admin_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.Property("Negative") + .HasColumnType("INTEGER") + .HasColumnName("negative"); + + b.HasKey("Id") + .HasName("PK_admin_flag"); + + b.HasIndex("AdminId") + .HasDatabaseName("IX_admin_flag_admin_id"); + + b.HasIndex("Flag", "AdminId") + .IsUnique(); + + b.ToTable("admin_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Id") + .HasColumnType("INTEGER") + .HasColumnName("admin_log_id"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Impact") + .HasColumnType("INTEGER") + .HasColumnName("impact"); + + b.Property("Json") + .IsRequired() + .HasColumnType("jsonb") + .HasColumnName("json"); + + b.Property("Message") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("Type") + .HasColumnType("INTEGER") + .HasColumnName("type"); + + b.HasKey("RoundId", "Id") + .HasName("PK_admin_log"); + + b.HasIndex("Date"); + + b.HasIndex("Type") + .HasDatabaseName("IX_admin_log_type"); + + b.ToTable("admin_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("LogId") + .HasColumnType("INTEGER") + .HasColumnName("log_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.HasKey("RoundId", "LogId", "PlayerUserId") + .HasName("PK_admin_log_player"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_log_player_player_user_id"); + + b.ToTable("admin_log_player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_messages_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("Dismissed") + .HasColumnType("INTEGER") + .HasColumnName("dismissed"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Seen") + .HasColumnType("INTEGER") + .HasColumnName("seen"); + + b.HasKey("Id") + .HasName("PK_admin_messages"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_messages_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_messages_round_id"); + + b.ToTable("admin_messages", null, t => + { + t.HasCheckConstraint("NotDismissedAndSeen", "NOT dismissed OR seen"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_notes_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Secret") + .HasColumnType("INTEGER") + .HasColumnName("secret"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_admin_notes"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_notes_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_notes_round_id"); + + b.ToTable("admin_notes", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_admin_rank"); + + b.ToTable("admin_rank", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_flag_id"); + + b.Property("AdminRankId") + .HasColumnType("INTEGER") + .HasColumnName("admin_rank_id"); + + b.Property("Flag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flag"); + + b.HasKey("Id") + .HasName("PK_admin_rank_flag"); + + b.HasIndex("AdminRankId"); + + b.HasIndex("Flag", "AdminRankId") + .IsUnique(); + + b.ToTable("admin_rank_flag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("admin_watchlists_id"); + + b.Property("CreatedAt") + .HasColumnType("TEXT") + .HasColumnName("created_at"); + + b.Property("CreatedById") + .HasColumnType("TEXT") + .HasColumnName("created_by_id"); + + b.Property("Deleted") + .HasColumnType("INTEGER") + .HasColumnName("deleted"); + + b.Property("DeletedAt") + .HasColumnType("TEXT") + .HasColumnName("deleted_at"); + + b.Property("DeletedById") + .HasColumnType("TEXT") + .HasColumnName("deleted_by_id"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("LastEditedAt") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("Message") + .IsRequired() + .HasMaxLength(4096) + .HasColumnType("TEXT") + .HasColumnName("message"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.HasKey("Id") + .HasName("PK_admin_watchlists"); + + b.HasIndex("CreatedById"); + + b.HasIndex("DeletedById"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_admin_watchlists_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_admin_watchlists_round_id"); + + b.ToTable("admin_watchlists", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("antag_id"); + + b.Property("AntagName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("antag_name"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_antag"); + + b.HasIndex("ProfileId", "AntagName") + .IsUnique(); + + b.ToTable("antag", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("assigned_user_id_id"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_assigned_user_id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.HasIndex("UserName") + .IsUnique(); + + b.ToTable("assigned_user_id", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("connection_log_id"); + + b.Property("Address") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("Denied") + .HasColumnType("INTEGER") + .HasColumnName("denied"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("ServerId") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0) + .HasColumnName("server_id"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("UserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("user_name"); + + b.HasKey("Id") + .HasName("PK_connection_log"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_connection_log_server_id"); + + b.HasIndex("UserId"); + + b.ToTable("connection_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("job_id"); + + b.Property("JobName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("job_name"); + + b.Property("Priority") + .HasColumnType("INTEGER") + .HasColumnName("priority"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.HasKey("Id") + .HasName("PK_job"); + + b.HasIndex("ProfileId"); + + b.HasIndex("ProfileId", "JobName") + .IsUnique(); + + b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") + .IsUnique() + .HasFilter("priority = 3"); + + b.ToTable("job", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.PlayTime", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("play_time_id"); + + b.Property("PlayerId") + .HasColumnType("TEXT") + .HasColumnName("player_id"); + + b.Property("TimeSpent") + .HasColumnType("TEXT") + .HasColumnName("time_spent"); + + b.Property("Tracker") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tracker"); + + b.HasKey("Id") + .HasName("PK_play_time"); + + b.HasIndex("PlayerId", "Tracker") + .IsUnique(); + + b.ToTable("play_time", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("player_id"); + + b.Property("FirstSeenTime") + .HasColumnType("TEXT") + .HasColumnName("first_seen_time"); + + b.Property("LastReadRules") + .HasColumnType("TEXT") + .HasColumnName("last_read_rules"); + + b.Property("LastSeenAddress") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_address"); + + b.Property("LastSeenHWId") + .HasColumnType("BLOB") + .HasColumnName("last_seen_hwid"); + + b.Property("LastSeenTime") + .HasColumnType("TEXT") + .HasColumnName("last_seen_time"); + + b.Property("LastSeenUserName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("last_seen_user_name"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_player"); + + b.HasAlternateKey("UserId") + .HasName("ak_player_user_id"); + + b.HasIndex("LastSeenUserName"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("player", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("AdminOOCColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("admin_ooc_color"); + + b.Property("SelectedCharacterSlot") + .HasColumnType("INTEGER") + .HasColumnName("selected_character_slot"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_preference"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("preference", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("Age") + .HasColumnType("INTEGER") + .HasColumnName("age"); + + b.Property("Backpack") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("backpack"); + + b.Property("CharacterName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("char_name"); + + b.Property("Clothing") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("clothing"); + + b.Property("EyeColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("eye_color"); + + b.Property("FacialHairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_color"); + + b.Property("FacialHairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("facial_hair_name"); + + b.Property("FlavorText") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("flavor_text"); + + b.Property("Gender") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("gender"); + + b.Property("HairColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_color"); + + b.Property("HairName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("hair_name"); + + b.Property("Markings") + .HasColumnType("jsonb") + .HasColumnName("markings"); + + b.Property("PreferenceId") + .HasColumnType("INTEGER") + .HasColumnName("preference_id"); + + b.Property("PreferenceUnavailable") + .HasColumnType("INTEGER") + .HasColumnName("pref_unavailable"); + + b.Property("Sex") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("sex"); + + b.Property("SkinColor") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("skin_color"); + + b.Property("Slot") + .HasColumnType("INTEGER") + .HasColumnName("slot"); + + b.Property("SpawnPriority") + .HasColumnType("INTEGER") + .HasColumnName("spawn_priority"); + + b.Property("Species") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("species"); + + b.HasKey("Id") + .HasName("PK_profile"); + + b.HasIndex("PreferenceId") + .HasDatabaseName("IX_profile_preference_id"); + + b.HasIndex("Slot", "PreferenceId") + .IsUnique(); + + b.ToTable("profile", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("ServerId") + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("StartDate") + .HasColumnType("TEXT") + .HasColumnName("start_date"); + + b.HasKey("Id") + .HasName("PK_round"); + + b.HasIndex("ServerId") + .HasDatabaseName("IX_round_server_id"); + + b.HasIndex("StartDate"); + + b.ToTable("round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_id"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.HasKey("Id") + .HasName("PK_server"); + + b.ToTable("server", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("AutoDelete") + .HasColumnType("INTEGER") + .HasColumnName("auto_delete"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExemptFlags") + .HasColumnType("INTEGER") + .HasColumnName("exempt_flags"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_ban_round_id"); + + b.ToTable("server_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanExemption", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.Property("Flags") + .HasColumnType("INTEGER") + .HasColumnName("flags"); + + b.HasKey("UserId") + .HasName("PK_server_ban_exemption"); + + b.ToTable("server_ban_exemption", null, t => + { + t.HasCheckConstraint("FlagsNotZero", "flags != 0"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_ban_hit_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("ConnectionId") + .HasColumnType("INTEGER") + .HasColumnName("connection_id"); + + b.HasKey("Id") + .HasName("PK_server_ban_hit"); + + b.HasIndex("BanId") + .HasDatabaseName("IX_server_ban_hit_ban_id"); + + b.HasIndex("ConnectionId") + .HasDatabaseName("IX_server_ban_hit_connection_id"); + + b.ToTable("server_ban_hit", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("server_role_ban_id"); + + b.Property("Address") + .HasColumnType("TEXT") + .HasColumnName("address"); + + b.Property("BanTime") + .HasColumnType("TEXT") + .HasColumnName("ban_time"); + + b.Property("BanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("banning_admin"); + + b.Property("ExpirationTime") + .HasColumnType("TEXT") + .HasColumnName("expiration_time"); + + b.Property("HWId") + .HasColumnType("BLOB") + .HasColumnName("hwid"); + + b.Property("Hidden") + .HasColumnType("INTEGER") + .HasColumnName("hidden"); + + b.Property("LastEditedAt") + .HasColumnType("TEXT") + .HasColumnName("last_edited_at"); + + b.Property("LastEditedById") + .HasColumnType("TEXT") + .HasColumnName("last_edited_by_id"); + + b.Property("PlayerUserId") + .HasColumnType("TEXT") + .HasColumnName("player_user_id"); + + b.Property("PlaytimeAtNote") + .HasColumnType("TEXT") + .HasColumnName("playtime_at_note"); + + b.Property("Reason") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("reason"); + + b.Property("RoleId") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("role_id"); + + b.Property("RoundId") + .HasColumnType("INTEGER") + .HasColumnName("round_id"); + + b.Property("Severity") + .HasColumnType("INTEGER") + .HasColumnName("severity"); + + b.HasKey("Id") + .HasName("PK_server_role_ban"); + + b.HasIndex("Address"); + + b.HasIndex("BanningAdmin"); + + b.HasIndex("LastEditedById"); + + b.HasIndex("PlayerUserId") + .HasDatabaseName("IX_server_role_ban_player_user_id"); + + b.HasIndex("RoundId") + .HasDatabaseName("IX_server_role_ban_round_id"); + + b.ToTable("server_role_ban", null, t => + { + t.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR player_user_id IS NOT NULL OR hwid IS NOT NULL"); + }); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("role_unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_role_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_role_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("unban_id"); + + b.Property("BanId") + .HasColumnType("INTEGER") + .HasColumnName("ban_id"); + + b.Property("UnbanTime") + .HasColumnType("TEXT") + .HasColumnName("unban_time"); + + b.Property("UnbanningAdmin") + .HasColumnType("TEXT") + .HasColumnName("unbanning_admin"); + + b.HasKey("Id") + .HasName("PK_server_unban"); + + b.HasIndex("BanId") + .IsUnique(); + + b.ToTable("server_unban", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("trait_id"); + + b.Property("ProfileId") + .HasColumnType("INTEGER") + .HasColumnName("profile_id"); + + b.Property("TraitName") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("trait_name"); + + b.HasKey("Id") + .HasName("PK_trait"); + + b.HasIndex("ProfileId", "TraitName") + .IsUnique(); + + b.ToTable("trait", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.UploadedResourceLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("uploaded_resource_log_id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Date") + .HasColumnType("TEXT") + .HasColumnName("date"); + + b.Property("Path") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("path"); + + b.Property("UserId") + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("Id") + .HasName("PK_uploaded_resource_log"); + + b.ToTable("uploaded_resource_log", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Whitelist", b => + { + b.Property("UserId") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("user_id"); + + b.HasKey("UserId") + .HasName("PK_whitelist"); + + b.ToTable("whitelist", (string)null); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.Property("PlayersId") + .HasColumnType("INTEGER") + .HasColumnName("players_id"); + + b.Property("RoundsId") + .HasColumnType("INTEGER") + .HasColumnName("rounds_id"); + + b.HasKey("PlayersId", "RoundsId") + .HasName("PK_player_round"); + + b.HasIndex("RoundsId") + .HasDatabaseName("IX_player_round_rounds_id"); + + b.ToTable("player_round", (string)null); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.HasOne("Content.Server.Database.AdminRank", "AdminRank") + .WithMany("Admins") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); + + b.Navigation("AdminRank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminFlag", b => + { + b.HasOne("Content.Server.Database.Admin", "Admin") + .WithMany("Flags") + .HasForeignKey("AdminId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_flag_admin_admin_id"); + + b.Navigation("Admin"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany("AdminLogs") + .HasForeignKey("RoundId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_round_round_id"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => + { + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminLogs") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_player_player_user_id"); + + b.HasOne("Content.Server.Database.AdminLog", "Log") + .WithMany("Players") + .HasForeignKey("RoundId", "LogId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_log_player_admin_log_round_id_log_id"); + + b.Navigation("Log"); + + b.Navigation("Player"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminMessage", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminMessagesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminMessagesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminMessagesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_messages_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminMessagesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_messages_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_messages_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminNote", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminNotesCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminNotesDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminNotesLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_notes_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminNotesReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_notes_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_notes_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => + { + b.HasOne("Content.Server.Database.AdminRank", "Rank") + .WithMany("Flags") + .HasForeignKey("AdminRankId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); + + b.Navigation("Rank"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminWatchlist", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminWatchlistsCreated") + .HasForeignKey("CreatedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_created_by_id"); + + b.HasOne("Content.Server.Database.Player", "DeletedBy") + .WithMany("AdminWatchlistsDeleted") + .HasForeignKey("DeletedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_deleted_by_id"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminWatchlistsLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_admin_watchlists_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Player", "Player") + .WithMany("AdminWatchlistsReceived") + .HasForeignKey("PlayerUserId") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .HasConstraintName("FK_admin_watchlists_player_player_user_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_admin_watchlists_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("DeletedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Player"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.Antag", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Antags") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_antag_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("ConnectionLogs") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.SetNull) + .IsRequired() + .HasConstraintName("FK_connection_log_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.Job", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Jobs") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_job_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.HasOne("Content.Server.Database.Preference", "Preference") + .WithMany("Profiles") + .HasForeignKey("PreferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_profile_preference_preference_id"); + + b.Navigation("Preference"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.HasOne("Content.Server.Database.Server", "Server") + .WithMany("Rounds") + .HasForeignKey("ServerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_round_server_server_id"); + + b.Navigation("Server"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithMany("BanHits") + .HasForeignKey("BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); + + b.HasOne("Content.Server.Database.ConnectionLog", "Connection") + .WithMany("BanHits") + .HasForeignKey("ConnectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); + + b.Navigation("Ban"); + + b.Navigation("Connection"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.HasOne("Content.Server.Database.Player", "CreatedBy") + .WithMany("AdminServerRoleBansCreated") + .HasForeignKey("BanningAdmin") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_banning_admin"); + + b.HasOne("Content.Server.Database.Player", "LastEditedBy") + .WithMany("AdminServerRoleBansLastEdited") + .HasForeignKey("LastEditedById") + .HasPrincipalKey("UserId") + .OnDelete(DeleteBehavior.SetNull) + .HasConstraintName("FK_server_role_ban_player_last_edited_by_id"); + + b.HasOne("Content.Server.Database.Round", "Round") + .WithMany() + .HasForeignKey("RoundId") + .HasConstraintName("FK_server_role_ban_round_round_id"); + + b.Navigation("CreatedBy"); + + b.Navigation("LastEditedBy"); + + b.Navigation("Round"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleUnban", b => + { + b.HasOne("Content.Server.Database.ServerRoleBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerRoleUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_role_unban_server_role_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerUnban", b => + { + b.HasOne("Content.Server.Database.ServerBan", "Ban") + .WithOne("Unban") + .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_server_unban_server_ban_ban_id"); + + b.Navigation("Ban"); + }); + + modelBuilder.Entity("Content.Server.Database.Trait", b => + { + b.HasOne("Content.Server.Database.Profile", "Profile") + .WithMany("Traits") + .HasForeignKey("ProfileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_trait_profile_profile_id"); + + b.Navigation("Profile"); + }); + + modelBuilder.Entity("PlayerRound", b => + { + b.HasOne("Content.Server.Database.Player", null) + .WithMany() + .HasForeignKey("PlayersId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_player_players_id"); + + b.HasOne("Content.Server.Database.Round", null) + .WithMany() + .HasForeignKey("RoundsId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired() + .HasConstraintName("FK_player_round_round_rounds_id"); + }); + + modelBuilder.Entity("Content.Server.Database.Admin", b => + { + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminLog", b => + { + b.Navigation("Players"); + }); + + modelBuilder.Entity("Content.Server.Database.AdminRank", b => + { + b.Navigation("Admins"); + + b.Navigation("Flags"); + }); + + modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => + { + b.Navigation("BanHits"); + }); + + modelBuilder.Entity("Content.Server.Database.Player", b => + { + b.Navigation("AdminLogs"); + + b.Navigation("AdminMessagesCreated"); + + b.Navigation("AdminMessagesDeleted"); + + b.Navigation("AdminMessagesLastEdited"); + + b.Navigation("AdminMessagesReceived"); + + b.Navigation("AdminNotesCreated"); + + b.Navigation("AdminNotesDeleted"); + + b.Navigation("AdminNotesLastEdited"); + + b.Navigation("AdminNotesReceived"); + + b.Navigation("AdminServerBansCreated"); + + b.Navigation("AdminServerBansLastEdited"); + + b.Navigation("AdminServerRoleBansCreated"); + + b.Navigation("AdminServerRoleBansLastEdited"); + + b.Navigation("AdminWatchlistsCreated"); + + b.Navigation("AdminWatchlistsDeleted"); + + b.Navigation("AdminWatchlistsLastEdited"); + + b.Navigation("AdminWatchlistsReceived"); + }); + + modelBuilder.Entity("Content.Server.Database.Preference", b => + { + b.Navigation("Profiles"); + }); + + modelBuilder.Entity("Content.Server.Database.Profile", b => + { + b.Navigation("Antags"); + + b.Navigation("Jobs"); + + b.Navigation("Traits"); + }); + + modelBuilder.Entity("Content.Server.Database.Round", b => + { + b.Navigation("AdminLogs"); + }); + + modelBuilder.Entity("Content.Server.Database.Server", b => + { + b.Navigation("ConnectionLogs"); + + b.Navigation("Rounds"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerBan", b => + { + b.Navigation("BanHits"); + + b.Navigation("Unban"); + }); + + modelBuilder.Entity("Content.Server.Database.ServerRoleBan", b => + { + b.Navigation("Unban"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs new file mode 100644 index 0000000000..01b90f8333 --- /dev/null +++ b/Content.Server.Database/Migrations/Sqlite/20240409014937_FixRoundStartDateNullability2.cs @@ -0,0 +1,25 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Content.Server.Database.Migrations.Sqlite +{ + /// + public partial class FixRoundStartDateNullability2 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + // This needs to be its own separate migration, + // because EF Core re-arranges the order of the commands if it's a single migration... + // (only relevant for SQLite since it needs cursed shit to do ALTER COLUMN) + migrationBuilder.Sql("UPDATE round SET start_date = NULL WHERE start_date = '0001-01-01 00:00:00';"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index fb4fc71f17..80c374c785 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -796,10 +796,8 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("INTEGER") .HasColumnName("server_id"); - b.Property("StartDate") - .ValueGeneratedOnAdd() + b.Property("StartDate") .HasColumnType("TEXT") - .HasDefaultValue(new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)) .HasColumnName("start_date"); b.HasKey("Id") diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index b6c238c9e5..2e13c2a2f6 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -118,10 +118,6 @@ namespace Content.Server.Database modelBuilder.Entity() .HasIndex(round => round.StartDate); - modelBuilder.Entity() - .Property(round => round.StartDate) - .HasDefaultValue(default(DateTime)); - modelBuilder.Entity() .HasKey(logPlayer => new {logPlayer.RoundId, logPlayer.LogId, logPlayer.PlayerUserId}); @@ -494,7 +490,7 @@ namespace Content.Server.Database [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } - public DateTime StartDate { get; set; } + public DateTime? StartDate { get; set; } public List Players { get; set; } = default!; diff --git a/Content.Server/Administration/ServerApi.Utility.cs b/Content.Server/Administration/ServerApi.Utility.cs new file mode 100644 index 0000000000..951e0039d6 --- /dev/null +++ b/Content.Server/Administration/ServerApi.Utility.cs @@ -0,0 +1,147 @@ +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Robust.Server.ServerStatus; + +namespace Content.Server.Administration; + +public sealed partial class ServerApi +{ + private void RegisterHandler(HttpMethod method, string exactPath, Func handler) + { + _statusHost.AddHandler(async context => + { + if (context.RequestMethod != method || context.Url.AbsolutePath != exactPath) + return false; + + if (!await CheckAccess(context)) + return true; + + await handler(context); + return true; + }); + } + + private void RegisterActorHandler(HttpMethod method, string exactPath, Func handler) + { + RegisterHandler(method, exactPath, async context => + { + if (await CheckActor(context) is not { } actor) + return; + + await handler(context, actor); + }); + } + + /// + /// Async helper function which runs a task on the main thread and returns the result. + /// + private async Task RunOnMainThread(Func func) + { + var taskCompletionSource = new TaskCompletionSource(); + _taskManager.RunOnMainThread(() => + { + try + { + taskCompletionSource.TrySetResult(func()); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + var result = await taskCompletionSource.Task; + return result; + } + + /// + /// Runs an action on the main thread. This does not return any value and is meant to be used for void functions. Use for functions that return a value. + /// + private async Task RunOnMainThread(Action action) + { + var taskCompletionSource = new TaskCompletionSource(); + _taskManager.RunOnMainThread(() => + { + try + { + action(); + taskCompletionSource.TrySetResult(); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + await taskCompletionSource.Task; + } + + private async Task RunOnMainThread(Func action) + { + var taskCompletionSource = new TaskCompletionSource(); + // ReSharper disable once AsyncVoidLambda + _taskManager.RunOnMainThread(async () => + { + try + { + await action(); + taskCompletionSource.TrySetResult(); + } + catch (Exception e) + { + taskCompletionSource.TrySetException(e); + } + }); + + await taskCompletionSource.Task; + } + + /// + /// Helper function to read JSON encoded data from the request body. + /// + private static async Task ReadJson(IStatusHandlerContext context) where T : notnull + { + try + { + var json = await context.RequestBodyJsonAsync(); + if (json == null) + await RespondBadRequest(context, "Request body is null"); + + return json; + } + catch (Exception e) + { + await RespondBadRequest(context, "Unable to parse request body", ExceptionData.FromException(e)); + return default; + } + } + + private static async Task RespondError( + IStatusHandlerContext context, + ErrorCode errorCode, + HttpStatusCode statusCode, + string message, + ExceptionData? exception = null) + { + await context.RespondJsonAsync(new BaseResponse(message, errorCode, exception), statusCode) + .ConfigureAwait(false); + } + + private static async Task RespondBadRequest( + IStatusHandlerContext context, + string message, + ExceptionData? exception = null) + { + await RespondError(context, ErrorCode.BadRequest, HttpStatusCode.BadRequest, message, exception) + .ConfigureAwait(false); + } + + private static async Task RespondOk(IStatusHandlerContext context) + { + await context.RespondJsonAsync(new BaseResponse("OK")) + .ConfigureAwait(false); + } + + private static string FormatLogActor(Actor actor) => $"{actor.Name} ({actor.Guid})"; +} diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs new file mode 100644 index 0000000000..6f10ef9b47 --- /dev/null +++ b/Content.Server/Administration/ServerApi.cs @@ -0,0 +1,711 @@ +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Security.Cryptography; +using System.Text; +using System.Text.Json; +using System.Text.Json.Nodes; +using System.Threading.Tasks; +using Content.Server.Administration.Systems; +using Content.Server.GameTicking; +using Content.Server.GameTicking.Presets; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Maps; +using Content.Server.RoundEnd; +using Content.Shared.Administration.Managers; +using Content.Shared.CCVar; +using Content.Shared.Prototypes; +using Robust.Server.ServerStatus; +using Robust.Shared.Asynchronous; +using Robust.Shared.Configuration; +using Robust.Shared.Network; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Server.Administration; + +/// +/// Exposes various admin-related APIs via the game server's . +/// +public sealed partial class ServerApi : IPostInjectInit +{ + private const string SS14TokenScheme = "SS14Token"; + + private static readonly HashSet PanicBunkerCVars = + [ + CCVars.PanicBunkerEnabled.Name, + CCVars.PanicBunkerDisableWithAdmins.Name, + CCVars.PanicBunkerEnableWithoutAdmins.Name, + CCVars.PanicBunkerCountDeadminnedAdmins.Name, + CCVars.PanicBunkerShowReason.Name, + CCVars.PanicBunkerMinAccountAge.Name, + CCVars.PanicBunkerMinOverallHours.Name, + CCVars.PanicBunkerCustomReason.Name, + ]; + + [Dependency] private readonly IStatusHost _statusHost = default!; + [Dependency] private readonly IConfigurationManager _config = default!; + [Dependency] private readonly ISharedPlayerManager _playerManager = default!; + [Dependency] private readonly ISharedAdminManager _adminManager = default!; + [Dependency] private readonly IGameMapManager _gameMapManager = default!; + [Dependency] private readonly IServerNetManager _netManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IComponentFactory _componentFactory = default!; + [Dependency] private readonly ITaskManager _taskManager = default!; + [Dependency] private readonly EntityManager _entityManager = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly ILocalizationManager _loc = default!; + + private string _token = string.Empty; + private ISawmill _sawmill = default!; + + void IPostInjectInit.PostInject() + { + _sawmill = _logManager.GetSawmill("serverApi"); + + // Get + RegisterActorHandler(HttpMethod.Get, "/admin/info", InfoHandler); + RegisterHandler(HttpMethod.Get, "/admin/game_rules", GetGameRules); + RegisterHandler(HttpMethod.Get, "/admin/presets", GetPresets); + + // Post + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/start", ActionRoundStart); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/end", ActionRoundEnd); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/restartnow", ActionRoundRestartNow); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/kick", ActionKick); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/add_game_rule", ActionAddGameRule); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/end_game_rule", ActionEndGameRule); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/force_preset", ActionForcePreset); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/set_motd", ActionForceMotd); + RegisterActorHandler(HttpMethod.Patch, "/admin/actions/panic_bunker", ActionPanicPunker); + } + + public void Initialize() + { + _config.OnValueChanged(CCVars.AdminApiToken, UpdateToken, true); + } + + public void Shutdown() + { + _config.UnsubValueChanged(CCVars.AdminApiToken, UpdateToken); + } + + private void UpdateToken(string token) + { + _token = token; + } + + + #region Actions + + /// + /// Changes the panic bunker settings. + /// + private async Task ActionPanicPunker(IStatusHandlerContext context, Actor actor) + { + var request = await ReadJson(context); + if (request == null) + return; + + var toSet = new Dictionary(); + foreach (var (cVar, value) in request) + { + if (!PanicBunkerCVars.Contains(cVar)) + { + await RespondBadRequest(context, $"Invalid panic bunker CVar: '{cVar}'"); + return; + } + + if (value == null) + { + await RespondBadRequest(context, $"Value is null: '{cVar}'"); + return; + } + + if (value is not JsonValue jsonValue) + { + await RespondBadRequest(context, $"Value is not valid: '{cVar}'"); + return; + } + + object castValue; + var cVarType = _config.GetCVarType(cVar); + if (cVarType == typeof(bool)) + { + if (!jsonValue.TryGetValue(out bool b)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type bool."); + return; + } + + castValue = b; + } + else if (cVarType == typeof(int)) + { + if (!jsonValue.TryGetValue(out int i)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type int."); + return; + } + + castValue = i; + } + else if (cVarType == typeof(string)) + { + if (!jsonValue.TryGetValue(out string? s)) + { + await RespondBadRequest(context, $"CVar '{cVar}' must be of type string."); + return; + } + + castValue = s; + } + else + { + throw new NotSupportedException("Unsupported CVar type"); + } + + toSet[cVar] = castValue; + } + + await RunOnMainThread(() => + { + foreach (var (cVar, value) in toSet) + { + _config.SetCVar(cVar, value); + _sawmill.Info( + $"Panic bunker property '{cVar}' changed to '{value}' by {FormatLogActor(actor)}."); + } + }); + + await RespondOk(context); + } + + /// + /// Sets the current MOTD. + /// + private async Task ActionForceMotd(IStatusHandlerContext context, Actor actor) + { + var motd = await ReadJson(context); + if (motd == null) + return; + + _sawmill.Info($"MOTD changed to \"{motd.Motd}\" by {FormatLogActor(actor)}."); + + await RunOnMainThread(() => _config.SetCVar(CCVars.MOTD, motd.Motd)); + // A hook in the MOTD system sends the changes to each client + await RespondOk(context); + } + + /// + /// Forces the next preset- + /// + private async Task ActionForcePreset(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + if (ticker.RunLevel != GameRunLevel.PreRoundLobby) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Game must be in pre-round lobby"); + return; + } + + var preset = ticker.FindGamePreset(body.PresetId); + if (preset == null) + { + await RespondError( + context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.PresetId}' doesn't exist"); + return; + } + + ticker.SetGamePreset(preset); + _sawmill.Info($"Forced the game to start with preset {body.PresetId} by {FormatLogActor(actor)}."); + + await RespondOk(context); + }); + } + + /// + /// Ends an active game rule. + /// + private async Task ActionEndGameRule(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + var gameRule = ticker + .GetActiveGameRules() + .FirstOrNull(rule => + _entityManager.MetaQuery.GetComponent(rule).EntityPrototype?.ID == body.GameRuleId); + + if (gameRule == null) + { + await RespondError(context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.GameRuleId}' not found or not active"); + + return; + } + + _sawmill.Info($"Ended game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + ticker.EndGameRule(gameRule.Value); + + await RespondOk(context); + }); + } + + /// + /// Adds a game rule to the current round. + /// + private async Task ActionAddGameRule(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + if (!_prototypeManager.HasIndex(body.GameRuleId)) + { + await RespondError(context, + ErrorCode.GameRuleNotFound, + HttpStatusCode.UnprocessableContent, + $"Game rule '{body.GameRuleId}' not found or not active"); + return; + } + + var ruleEntity = ticker.AddGameRule(body.GameRuleId); + _sawmill.Info($"Added game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + if (ticker.RunLevel == GameRunLevel.InRound) + { + ticker.StartGameRule(ruleEntity); + _sawmill.Info($"Started game rule {body.GameRuleId} by {FormatLogActor(actor)}."); + } + + await RespondOk(context); + }); + } + + /// + /// Kicks a player. + /// + private async Task ActionKick(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + if (!_playerManager.TryGetSessionById(new NetUserId(body.Guid), out var player)) + { + await RespondError( + context, + ErrorCode.PlayerNotFound, + HttpStatusCode.UnprocessableContent, + "Player not found"); + return; + } + + var reason = body.Reason ?? "No reason supplied"; + reason += " (kicked by admin)"; + + _netManager.DisconnectChannel(player.Channel, reason); + await RespondOk(context); + + _sawmill.Info($"Kicked player {player.Name} ({player.UserId}) for {reason} by {FormatLogActor(actor)}"); + }); + } + + private async Task ActionRoundStart(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + + if (ticker.RunLevel != GameRunLevel.PreRoundLobby) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Round already started"); + return; + } + + ticker.StartRound(); + _sawmill.Info($"Forced round start by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + private async Task ActionRoundEnd(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var roundEndSystem = _entitySystemManager.GetEntitySystem(); + var ticker = _entitySystemManager.GetEntitySystem(); + + if (ticker.RunLevel != GameRunLevel.InRound) + { + await RespondError( + context, + ErrorCode.InvalidRoundState, + HttpStatusCode.Conflict, + "Round is not active"); + return; + } + + roundEndSystem.EndRound(); + _sawmill.Info($"Forced round end by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + private async Task ActionRoundRestartNow(IStatusHandlerContext context, Actor actor) + { + await RunOnMainThread(async () => + { + var ticker = _entitySystemManager.GetEntitySystem(); + + ticker.RestartRound(); + _sawmill.Info($"Forced instant round restart by {FormatLogActor(actor)}"); + await RespondOk(context); + }); + } + + #endregion + + #region Fetching + + /// + /// Returns an array containing all available presets. + /// + private async Task GetPresets(IStatusHandlerContext context) + { + var presets = await RunOnMainThread(() => + { + var presets = new List(); + + foreach (var preset in _prototypeManager.EnumeratePrototypes()) + { + presets.Add(new PresetResponse.Preset + { + Id = preset.ID, + ModeTitle = _loc.GetString(preset.ModeTitle), + Description = _loc.GetString(preset.Description) + }); + } + + return presets; + }); + + await context.RespondJsonAsync(new PresetResponse + { + Presets = presets + }); + } + + /// + /// Returns an array containing all game rules. + /// + private async Task GetGameRules(IStatusHandlerContext context) + { + var gameRules = new List(); + foreach (var gameRule in _prototypeManager.EnumeratePrototypes()) + { + if (gameRule.Abstract) + continue; + + if (gameRule.HasComponent(_componentFactory)) + gameRules.Add(gameRule.ID); + } + + await context.RespondJsonAsync(new GameruleResponse + { + GameRules = gameRules + }); + } + + + /// + /// Handles fetching information. + /// + private async Task InfoHandler(IStatusHandlerContext context, Actor actor) + { + /* + Information to display + Round number + Connected players + Active admins + Active game rules + Active game preset + Active map + MOTD + Panic bunker status + */ + + var info = await RunOnMainThread(() => + { + var ticker = _entitySystemManager.GetEntitySystem(); + var adminSystem = _entitySystemManager.GetEntitySystem(); + + var players = new List(); + + foreach (var player in _playerManager.Sessions) + { + var adminData = _adminManager.GetAdminData(player, true); + + players.Add(new InfoResponse.Player + { + UserId = player.UserId.UserId, + Name = player.Name, + IsAdmin = adminData != null, + IsDeadminned = !adminData?.Active ?? false + }); + } + + InfoResponse.MapInfo? mapInfo = null; + if (_gameMapManager.GetSelectedMap() is { } mapPrototype) + { + mapInfo = new InfoResponse.MapInfo + { + Id = mapPrototype.ID, + Name = mapPrototype.MapName + }; + } + + var gameRules = new List(); + foreach (var addedGameRule in ticker.GetActiveGameRules()) + { + var meta = _entityManager.MetaQuery.GetComponent(addedGameRule); + gameRules.Add(meta.EntityPrototype?.ID ?? meta.EntityPrototype?.Name ?? "Unknown"); + } + + var panicBunkerCVars = PanicBunkerCVars.ToDictionary(c => c, c => _config.GetCVar(c)); + return new InfoResponse + { + Players = players, + RoundId = ticker.RoundId, + Map = mapInfo, + PanicBunker = panicBunkerCVars, + GamePreset = ticker.CurrentPreset?.ID, + GameRules = gameRules, + MOTD = _config.GetCVar(CCVars.MOTD) + }; + }); + + await context.RespondJsonAsync(info); + } + + #endregion + + private async Task CheckAccess(IStatusHandlerContext context) + { + var auth = context.RequestHeaders.TryGetValue("Authorization", out var authToken); + if (!auth) + { + await RespondError( + context, + ErrorCode.AuthenticationNeeded, + HttpStatusCode.Unauthorized, + "Authorization is required"); + return false; + } + + var authHeaderValue = authToken.ToString(); + var spaceIndex = authHeaderValue.IndexOf(' '); + if (spaceIndex == -1) + { + await RespondBadRequest(context, "Invalid Authorization header value"); + return false; + } + + var authScheme = authHeaderValue[..spaceIndex]; + var authValue = authHeaderValue[spaceIndex..].Trim(); + + if (authScheme != SS14TokenScheme) + { + await RespondBadRequest(context, "Invalid Authorization scheme"); + return false; + } + + if (_token == "") + { + _sawmill.Debug("No authorization token set for admin API"); + } + else if (CryptographicOperations.FixedTimeEquals( + Encoding.UTF8.GetBytes(authValue), + Encoding.UTF8.GetBytes(_token))) + { + return true; + } + + await RespondError( + context, + ErrorCode.AuthenticationInvalid, + HttpStatusCode.Unauthorized, + "Authorization is invalid"); + + // Invalid auth header, no access + _sawmill.Info($"Unauthorized access attempt to admin API from {context.RemoteEndPoint}"); + return false; + } + + private async Task CheckActor(IStatusHandlerContext context) + { + // The actor is JSON encoded in the header + var actor = context.RequestHeaders.TryGetValue("Actor", out var actorHeader) ? actorHeader.ToString() : null; + if (actor == null) + { + await RespondBadRequest(context, "Actor must be supplied"); + return null; + } + + Actor? actorData; + try + { + actorData = JsonSerializer.Deserialize(actor); + if (actorData == null) + { + await RespondBadRequest(context, "Actor is null"); + return null; + } + } + catch (JsonException exception) + { + await RespondBadRequest(context, "Actor field JSON is invalid", ExceptionData.FromException(exception)); + return null; + } + + return actorData; + } + + #region From Client + + private sealed class Actor + { + public required Guid Guid { get; init; } + public required string Name { get; init; } + } + + private sealed class KickActionBody + { + public required Guid Guid { get; init; } + public string? Reason { get; init; } + } + + private sealed class GameRuleActionBody + { + public required string GameRuleId { get; init; } + } + + private sealed class PresetActionBody + { + public required string PresetId { get; init; } + } + + private sealed class MotdActionBody + { + public required string Motd { get; init; } + } + + #endregion + + #region Responses + + private record BaseResponse( + string Message, + ErrorCode ErrorCode = ErrorCode.None, + ExceptionData? Exception = null); + + private record ExceptionData(string Message, string? StackTrace = null) + { + public static ExceptionData FromException(Exception e) + { + return new ExceptionData(e.Message, e.StackTrace); + } + } + + private enum ErrorCode + { + None = 0, + AuthenticationNeeded = 1, + AuthenticationInvalid = 2, + InvalidRoundState = 3, + PlayerNotFound = 4, + GameRuleNotFound = 5, + BadRequest = 6, + } + + #endregion + + #region Misc + + /// + /// Record used to send the response for the info endpoint. + /// + private sealed class InfoResponse + { + public required int RoundId { get; init; } + public required List Players { get; init; } + public required List GameRules { get; init; } + public required string? GamePreset { get; init; } + public required MapInfo? Map { get; init; } + public required string? MOTD { get; init; } + public required Dictionary PanicBunker { get; init; } + + public sealed class Player + { + public required Guid UserId { get; init; } + public required string Name { get; init; } + public required bool IsAdmin { get; init; } + public required bool IsDeadminned { get; init; } + } + + public sealed class MapInfo + { + public required string Id { get; init; } + public required string Name { get; init; } + } + } + + private sealed class PresetResponse + { + public required List Presets { get; init; } + + public sealed class Preset + { + public required string Id { get; init; } + public required string Description { get; init; } + public required string ModeTitle { get; init; } + } + } + + private sealed class GameruleResponse + { + public required List GameRules { get; init; } + } + + #endregion +} diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index c3c024174a..b7ca4e915b 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -61,7 +61,7 @@ namespace Content.Server.Administration.Systems public IReadOnlySet RoundActivePlayers => _roundActivePlayers; private readonly HashSet _roundActivePlayers = new(); - private readonly PanicBunkerStatus _panicBunker = new(); + public readonly PanicBunkerStatus PanicBunker = new(); public override void Initialize() { @@ -240,7 +240,7 @@ namespace Content.Server.Administration.Systems private void OnPanicBunkerChanged(bool enabled) { - _panicBunker.Enabled = enabled; + PanicBunker.Enabled = enabled; _chat.SendAdminAlert(Loc.GetString(enabled ? "admin-ui-panic-bunker-enabled-admin-alert" : "admin-ui-panic-bunker-disabled-admin-alert" @@ -251,52 +251,52 @@ namespace Content.Server.Administration.Systems private void OnPanicBunkerDisableWithAdminsChanged(bool enabled) { - _panicBunker.DisableWithAdmins = enabled; + PanicBunker.DisableWithAdmins = enabled; UpdatePanicBunker(); } private void OnPanicBunkerEnableWithoutAdminsChanged(bool enabled) { - _panicBunker.EnableWithoutAdmins = enabled; + PanicBunker.EnableWithoutAdmins = enabled; UpdatePanicBunker(); } private void OnPanicBunkerCountDeadminnedAdminsChanged(bool enabled) { - _panicBunker.CountDeadminnedAdmins = enabled; + PanicBunker.CountDeadminnedAdmins = enabled; UpdatePanicBunker(); } private void OnShowReasonChanged(bool enabled) { - _panicBunker.ShowReason = enabled; + PanicBunker.ShowReason = enabled; SendPanicBunkerStatusAll(); } private void OnPanicBunkerMinAccountAgeChanged(int minutes) { - _panicBunker.MinAccountAgeHours = minutes / 60; + PanicBunker.MinAccountAgeHours = minutes / 60; SendPanicBunkerStatusAll(); } private void OnPanicBunkerMinOverallHoursChanged(int hours) { - _panicBunker.MinOverallHours = hours; + PanicBunker.MinOverallHours = hours; SendPanicBunkerStatusAll(); } private void UpdatePanicBunker() { - var admins = _panicBunker.CountDeadminnedAdmins + var admins = PanicBunker.CountDeadminnedAdmins ? _adminManager.AllAdmins : _adminManager.ActiveAdmins; var hasAdmins = admins.Any(); - if (hasAdmins && _panicBunker.DisableWithAdmins) + if (hasAdmins && PanicBunker.DisableWithAdmins) { _config.SetCVar(CCVars.PanicBunkerEnabled, false); } - else if (!hasAdmins && _panicBunker.EnableWithoutAdmins) + else if (!hasAdmins && PanicBunker.EnableWithoutAdmins) { _config.SetCVar(CCVars.PanicBunkerEnabled, true); } @@ -306,7 +306,7 @@ namespace Content.Server.Administration.Systems private void SendPanicBunkerStatusAll() { - var ev = new PanicBunkerChangedEvent(_panicBunker); + var ev = new PanicBunkerChangedEvent(PanicBunker); foreach (var admin in _adminManager.AllAdmins) { RaiseNetworkEvent(ev, admin); diff --git a/Content.Server/Audio/AmbientSoundSystem.cs b/Content.Server/Audio/AmbientSoundSystem.cs index b8cabbef41..aa2c656a86 100644 --- a/Content.Server/Audio/AmbientSoundSystem.cs +++ b/Content.Server/Audio/AmbientSoundSystem.cs @@ -2,6 +2,7 @@ using Content.Server.CrystallPunk.Temperature; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Audio; +using Content.Shared.Mobs; namespace Content.Server.Audio; diff --git a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs index bb2ab4099d..2e7f8c4235 100644 --- a/Content.Server/Bed/Cryostorage/CryostorageSystem.cs +++ b/Content.Server/Bed/Cryostorage/CryostorageSystem.cs @@ -225,13 +225,16 @@ public sealed class CryostorageSystem : SharedCryostorageSystem if (!TryComp(station, out var stationRecords)) return; - var key = new StationRecordKey(_stationRecords.GetRecordByName(station.Value, name) ?? default(uint), station.Value); - var jobName = "Unknown"; + var jobName = Loc.GetString("earlyleave-cryo-job-unknown"); + var recordId = _stationRecords.GetRecordByName(station.Value, name); + if (recordId != null) + { + var key = new StationRecordKey(recordId.Value, station.Value); + if (_stationRecords.TryGetRecord(key, out var entry, stationRecords)) + jobName = entry.JobTitle; - if (_stationRecords.TryGetRecord(key, out var entry, stationRecords)) - jobName = entry.JobTitle; - - _stationRecords.RemoveRecord(key, stationRecords); + _stationRecords.RemoveRecord(key, stationRecords); + } _chatSystem.DispatchStationAnnouncement(station.Value, Loc.GetString( diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs index efec18485c..9ffe944486 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsSystem.cs @@ -3,7 +3,7 @@ using Content.Server.StationRecords.Systems; using Content.Shared.CriminalRecords; using Content.Shared.Security; using Content.Shared.StationRecords; -using Robust.Shared.Timing; +using Content.Server.GameTicking; namespace Content.Server.CriminalRecords.Systems; @@ -17,7 +17,7 @@ namespace Content.Server.CriminalRecords.Systems; /// public sealed class CriminalRecordsSystem : EntitySystem { - [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly GameTicker _ticker = default!; [Dependency] private readonly StationRecordsSystem _stationRecords = default!; public override void Initialize() @@ -71,7 +71,7 @@ public sealed class CriminalRecordsSystem : EntitySystem /// public bool TryAddHistory(StationRecordKey key, string line) { - var entry = new CrimeHistory(_timing.CurTime, line); + var entry = new CrimeHistory(_ticker.RoundDuration(), line); return TryAddHistory(key, entry); } diff --git a/Content.Server/Database/DatabaseRecords.cs b/Content.Server/Database/DatabaseRecords.cs index 460a6c8222..c0d81147bb 100644 --- a/Content.Server/Database/DatabaseRecords.cs +++ b/Content.Server/Database/DatabaseRecords.cs @@ -123,6 +123,6 @@ public sealed record PlayerRecord( IPAddress LastSeenAddress, ImmutableArray? HWId); -public sealed record RoundRecord(int Id, DateTimeOffset StartDate, ServerRecord Server); +public sealed record RoundRecord(int Id, DateTimeOffset? StartDate, ServerRecord Server); public sealed record ServerRecord(int Id, string Name); diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index ad72e16d9f..67b29209a3 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -696,7 +696,7 @@ namespace Content.Server.Database await db.DbContext.SaveChangesAsync(cancel); } - public virtual async Task AddNewRound(Server server, params Guid[] playerIds) + public async Task AddNewRound(Server server, params Guid[] playerIds) { await using var db = await GetDb(); diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 46886fe4d1..88ecf82002 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -452,34 +452,6 @@ namespace Content.Server.Database return (admins.Select(p => (p.a, p.LastSeenUserName)).ToArray(), adminRanks)!; } - public override async Task AddNewRound(Server server, params Guid[] playerIds) - { - await using var db = await GetDb(); - - var players = await db.DbContext.Player - .Where(player => playerIds.Contains(player.UserId)) - .ToListAsync(); - - var nextId = 1; - if (await db.DbContext.Round.AnyAsync()) - { - nextId = db.DbContext.Round.Max(round => round.Id) + 1; - } - - var round = new Round - { - Id = nextId, - Players = players, - ServerId = server.Id - }; - - db.DbContext.Round.Add(round); - - await db.DbContext.SaveChangesAsync(); - - return round.Id; - } - protected override IQueryable StartAdminLogsQuery(ServerDbContext db, LogFilter? filter = null) { IQueryable query = db.AdminLog; diff --git a/Content.Server/Entry/EntryPoint.cs b/Content.Server/Entry/EntryPoint.cs index bf7f3ea84a..3cdf3bfe8e 100644 --- a/Content.Server/Entry/EntryPoint.cs +++ b/Content.Server/Entry/EntryPoint.cs @@ -102,6 +102,7 @@ namespace Content.Server.Entry IoCManager.Resolve().Initialize(); IoCManager.Resolve().Initialize(); IoCManager.Resolve().Initialize(); + IoCManager.Resolve().Initialize(); _voteManager.Initialize(); _updateManager.Initialize(); @@ -167,6 +168,7 @@ namespace Content.Server.Entry { _playTimeTracking?.Shutdown(); _dbManager?.Shutdown(); + IoCManager.Resolve().Shutdown(); } private static void LoadConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill) diff --git a/Content.Server/IoC/ServerContentIoC.cs b/Content.Server/IoC/ServerContentIoC.cs index 2a63ace8e3..25bb1072a5 100644 --- a/Content.Server/IoC/ServerContentIoC.cs +++ b/Content.Server/IoC/ServerContentIoC.cs @@ -58,6 +58,7 @@ namespace Content.Server.IoC IoCManager.Register(); IoCManager.Register(); IoCManager.Register(); + IoCManager.Register(); } } } diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index 2caab4063c..3c1e89b1f2 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -1,5 +1,7 @@ using Content.Server.Body.Systems; using Content.Server.Kitchen.Components; +using Content.Server.Nutrition.EntitySystems; +using Content.Shared.Body.Components; using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.Database; @@ -11,9 +13,14 @@ using Content.Shared.Storage; using Content.Shared.Verbs; using Content.Shared.Destructible; using Content.Shared.DoAfter; +using Content.Shared.Interaction; using Content.Shared.Kitchen; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; +using Content.Shared.Nutrition.Components; +using Content.Shared.Popups; +using Content.Shared.Storage; +using Content.Shared.Verbs; using Robust.Server.Containers; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -35,7 +42,7 @@ public sealed class SharpSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnAfterInteract, before: new[] { typeof(UtensilSystem) }); + SubscribeLocalEvent(OnAfterInteract, before: [typeof(UtensilSystem)]); SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent>(OnGetInteractionVerbs); @@ -43,16 +50,14 @@ public sealed class SharpSystem : EntitySystem private void OnAfterInteract(EntityUid uid, SharpComponent component, AfterInteractEvent args) { - if (args.Handled) + if (args.Handled || args.Target is null || !args.CanReach) return; - if (args.Target is null || !args.CanReach) - return; - - args.Handled = TryStartButcherDoAfter(uid, args.Target.Value, args.User); + if (TryStartButcherDoafter(uid, args.Target.Value, args.User)) + args.Handled = true; } - private bool TryStartButcherDoAfter(EntityUid knife, EntityUid target, EntityUid user) + private bool TryStartButcherDoafter(EntityUid knife, EntityUid target, EntityUid user) { if (!TryComp(target, out var butcher)) return false; @@ -66,11 +71,11 @@ public sealed class SharpSystem : EntitySystem if (butcher.Type != ButcheringType.Knife && target != user) { _popupSystem.PopupEntity(Loc.GetString("butcherable-different-tool", ("target", target)), knife, user); - return true; + return false; } if (!sharp.Butchering.Add(target)) - return true; + return false; var doAfter = new DoAfterArgs(EntityManager, user, sharp.ButcherDelayModifier * butcher.ButcherDelay, new SharpDoAfterEvent(), knife, target: target, used: knife) @@ -165,7 +170,7 @@ public sealed class SharpSystem : EntitySystem Act = () => { if (!disabled) - TryStartButcherDoAfter(args.Using!.Value, args.Target, args.User); + TryStartButcherDoafter(args.Using!.Value, args.Target, args.User); }, Message = message, Disabled = disabled, diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs index 59a1a3b213..dd4ba1f718 100644 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ b/Content.Server/Labels/Label/LabelSystem.cs @@ -84,10 +84,7 @@ namespace Content.Server.Labels { _itemSlotsSystem.AddItemSlot(uid, ContainerName, component.LabelSlot); - if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance)) - return; - - _appearance.SetData(uid, PaperLabelVisuals.HasLabel, false, appearance); + UpdateAppearance((uid, component)); } private void OnComponentRemove(EntityUid uid, PaperLabelComponent component, ComponentRemove args) @@ -131,10 +128,18 @@ namespace Content.Server.Labels if (args.Container.ID != label.LabelSlot.ID) return; - if (!EntityManager.TryGetComponent(uid, out AppearanceComponent? appearance)) + UpdateAppearance((uid, label)); + } + + private void UpdateAppearance(Entity ent) + { + if (!Resolve(ent, ref ent.Comp2, false)) return; - _appearance.SetData(uid, PaperLabelVisuals.HasLabel, label.LabelSlot.HasItem, appearance); + var slot = ent.Comp1.LabelSlot; + _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); + if (TryComp(slot.Item, out var type)) + _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); } } } diff --git a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs index 0edd0711b6..43087214a4 100644 --- a/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/UtensilSystem.cs @@ -1,12 +1,11 @@ using Content.Shared.Containers.ItemSlots; using Content.Server.Nutrition.Components; -using Content.Shared.Nutrition.Components; -using Content.Shared.Nutrition.EntitySystems; using Content.Server.Popups; using Content.Shared.Interaction; +using Content.Shared.Nutrition.Components; +using Content.Shared.Nutrition.EntitySystems; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; -using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.Nutrition.EntitySystems @@ -34,10 +33,7 @@ namespace Content.Server.Nutrition.EntitySystems /// private void OnAfterInteract(EntityUid uid, UtensilComponent component, AfterInteractEvent ev) { - if (ev.Handled) - return; - - if (ev.Target == null || !ev.CanReach) + if (ev.Handled || ev.Target == null || !ev.CanReach) return; var result = TryUseUtensil(ev.User, ev.Target.Value, component); diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 237ca33a4d..d1163a2be1 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -126,5 +126,10 @@ namespace Content.Server.Popups RaiseNetworkEvent(new PopupEntityEvent(message, type, GetNetEntity(uid))); } } + + public override void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small) + { + PopupPredicted(othersMessage, uid, recipient, type); + } } } diff --git a/Content.Server/Sound/EmitSoundSystem.cs b/Content.Server/Sound/EmitSoundSystem.cs index 5b9620990e..fc10d951e7 100644 --- a/Content.Server/Sound/EmitSoundSystem.cs +++ b/Content.Server/Sound/EmitSoundSystem.cs @@ -40,7 +40,6 @@ public sealed class EmitSoundSystem : SharedEmitSoundSystem SubscribeLocalEvent(HandleEmitSoundOnTrigger); SubscribeLocalEvent(HandleEmitSoundOnUIOpen); - SubscribeLocalEvent(HandleSpamEmitSoundMapInit); } diff --git a/Content.Server/Station/Components/StationRandomTransformComponent.cs b/Content.Server/Station/Components/StationRandomTransformComponent.cs new file mode 100644 index 0000000000..ea0fc5f269 --- /dev/null +++ b/Content.Server/Station/Components/StationRandomTransformComponent.cs @@ -0,0 +1,16 @@ +using Content.Server.Station.Systems; + +namespace Content.Server.Station.Components; + +/// +/// Stores station parameters that can be randomized by the roundstart +/// +[RegisterComponent, Access(typeof(StationSystem))] +public sealed partial class StationRandomTransformComponent : Component +{ + [DataField] + public float? MaxStationOffset = 100.0f; + + [DataField] + public bool EnableStationRotation = true; +} diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index 492f15c8e2..408b3ebc55 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -1,9 +1,10 @@ using System.Linq; +using System.Numerics; using Content.Server.Chat.Systems; using Content.Server.GameTicking; using Content.Server.Station.Components; using Content.Server.Station.Events; -using Content.Shared.CCVar; +using Content.Shared.Fax; using Content.Shared.Station; using JetBrains.Annotations; using Robust.Server.GameObjects; @@ -49,17 +50,12 @@ public sealed class StationSystem : EntitySystem _sawmill = _logManager.GetSawmill("station"); SubscribeLocalEvent(OnRoundEnd); - SubscribeLocalEvent(OnPreGameMapLoad); SubscribeLocalEvent(OnPostGameMapLoad); SubscribeLocalEvent(OnStationAdd); SubscribeLocalEvent(OnStationDeleted); SubscribeLocalEvent(OnStationGridDeleted); SubscribeLocalEvent(OnStationSplitEvent); - Subs.CVar(_configurationManager, CCVars.StationOffset, x => _randomStationOffset = x, true); - Subs.CVar(_configurationManager, CCVars.MaxStationOffset, x => _maxRandomStationOffset = x, true); - Subs.CVar(_configurationManager, CCVars.StationRotation, x => _randomStationRotation = x, true); - _player.PlayerStatusChanged += OnPlayerStatusChanged; } @@ -112,19 +108,6 @@ public sealed class StationSystem : EntitySystem RaiseNetworkEvent(new StationsUpdatedEvent(GetStationNames()), Filter.Broadcast()); } - private void OnPreGameMapLoad(PreGameMapLoad ev) - { - // this is only for maps loaded during round setup! - if (_gameTicker.RunLevel == GameRunLevel.InRound) - return; - - if (_randomStationOffset) - ev.Options.Offset += _random.NextVector2(_maxRandomStationOffset); - - if (_randomStationRotation) - ev.Options.Rotation = _random.NextAngle(); - } - private void OnPostGameMapLoad(PostGameMapLoad ev) { var dict = new Dictionary>(); @@ -311,6 +294,8 @@ public sealed class StationSystem : EntitySystem // Use overrides for setup. var station = EntityManager.SpawnEntity(stationConfig.StationPrototype, MapCoordinates.Nullspace, stationConfig.StationComponentOverrides); + + if (name is not null) RenameStation(station, name, false); @@ -319,11 +304,48 @@ public sealed class StationSystem : EntitySystem var data = Comp(station); name ??= MetaData(station).EntityName; - foreach (var grid in gridIds ?? Array.Empty()) + var entry = gridIds ?? Array.Empty(); + + foreach (var grid in entry) { AddGridToStation(station, grid, null, data, name); } + if (TryComp(station, out var random)) + { + Angle? rotation = null; + Vector2? offset = null; + + if (random.MaxStationOffset != null) + offset = _random.NextVector2(-random.MaxStationOffset.Value, random.MaxStationOffset.Value); + + if (random.EnableStationRotation) + rotation = _random.NextAngle(); + + foreach (var grid in entry) + { + //planetary maps give an error when trying to change from position or rotation. + //This is still the case, but it will be irrelevant after the https://github.com/space-wizards/space-station-14/pull/26510 + if (rotation != null && offset != null) + { + var pos = _transform.GetWorldPosition(grid); + _transform.SetWorldPositionRotation(grid, pos + offset.Value, rotation.Value); + continue; + } + if (rotation != null) + { + _transform.SetWorldRotation(grid, rotation.Value); + continue; + } + if (offset != null) + { + var pos = _transform.GetWorldPosition(grid); + _transform.SetWorldPosition(grid, pos + offset.Value); + continue; + } + } + } + var ev = new StationPostInitEvent((station, data)); RaiseLocalEvent(station, ref ev, true); diff --git a/Content.Shared/Audio/SharedAmbientSoundSystem.cs b/Content.Shared/Audio/SharedAmbientSoundSystem.cs index 5f17261825..0a52b7c58e 100644 --- a/Content.Shared/Audio/SharedAmbientSoundSystem.cs +++ b/Content.Shared/Audio/SharedAmbientSoundSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Mobs; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -12,6 +13,7 @@ public abstract class SharedAmbientSoundSystem : EntitySystem base.Initialize(); SubscribeLocalEvent(GetCompState); SubscribeLocalEvent(HandleCompState); + _query = GetEntityQuery(); } diff --git a/Content.Shared/Audio/SoundWhileAliveComponent.cs b/Content.Shared/Audio/SoundWhileAliveComponent.cs new file mode 100644 index 0000000000..977d9372ce --- /dev/null +++ b/Content.Shared/Audio/SoundWhileAliveComponent.cs @@ -0,0 +1,10 @@ +using Content.Shared.Sound.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.Audio; + +/// +/// Toggles and off when this entity's MobState isn't Alive. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class SoundWhileAliveComponent : Component; diff --git a/Content.Shared/Burial/BurialSystem.cs b/Content.Shared/Burial/BurialSystem.cs index ccf5f1a298..326272cc7d 100644 --- a/Content.Shared/Burial/BurialSystem.cs +++ b/Content.Shared/Burial/BurialSystem.cs @@ -116,8 +116,9 @@ public sealed class BurialSystem : EntitySystem { if (used != null) { - _popupSystem.PopupClient(Loc.GetString("grave-start-digging-user", ("grave", uid), ("tool", used)), user, user); - _popupSystem.PopupEntity(Loc.GetString("grave-start-digging-others", ("user", user), ("grave", uid), ("tool", used)), user, Filter.PvsExcept(user), true); + var selfMessage = Loc.GetString("grave-start-digging-user", ("grave", uid), ("tool", used)); + var othersMessage = Loc.GetString("grave-start-digging-others", ("user", user), ("grave", uid), ("tool", used)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); component.ActiveShovelDigging = true; Dirty(uid, component); } diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 72f7526651..c787e01471 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -229,25 +229,6 @@ namespace Content.Shared.CCVar public static readonly CVarDef GameCryoSleepRejoining = CVarDef.Create("game.cryo_sleep_rejoining", false, CVar.SERVER | CVar.REPLICATED); - /// - /// Whether a random position offset will be applied to the station on roundstart. - /// - public static readonly CVarDef StationOffset = - CVarDef.Create("game.station_offset", true); - - /// - /// When the default blueprint is loaded what is the maximum amount it can be offset from 0,0. - /// Does nothing without as true. - /// - public static readonly CVarDef MaxStationOffset = - CVarDef.Create("game.maxstationoffset", 1000.0f); - - /// - /// Whether a random rotation will be applied to the station on roundstart. - /// - public static readonly CVarDef StationRotation = - CVarDef.Create("game.station_rotation", true); - /// /// When enabled, guests will be assigned permanent UIDs and will have their preferences stored. /// @@ -776,6 +757,13 @@ namespace Content.Shared.CCVar public static readonly CVarDef AdminAnnounceLogout = CVarDef.Create("admin.announce_logout", true, CVar.SERVERONLY); + /// + /// The token used to authenticate with the admin API. Leave empty to disable the admin API. This is a secret! Do not share! + /// + public static readonly CVarDef AdminApiToken = + CVarDef.Create("admin.api_token", string.Empty, CVar.SERVERONLY | CVar.CONFIDENTIAL); + + /// /// Should users be able to see their own notes? Admins will be able to see and set notes regardless /// diff --git a/Content.Shared/Climbing/Systems/BonkSystem.cs b/Content.Shared/Climbing/Systems/BonkSystem.cs index 4fe2661aff..ea4e04c621 100644 --- a/Content.Shared/Climbing/Systems/BonkSystem.cs +++ b/Content.Shared/Climbing/Systems/BonkSystem.cs @@ -57,9 +57,11 @@ public sealed partial class BonkSystem : EntitySystem if (user == source) { // Non-local, non-bonking players - _popupSystem.PopupEntity(Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)), user, Filter.PvsExcept(user), true); + var othersMessage = Loc.GetString("bonkable-success-message-others", ("user", userName), ("bonkable", bonkableName)); // Local, bonking player - _popupSystem.PopupClient(Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)), user, user); + var selfMessage = Loc.GetString("bonkable-success-message-user", ("user", userName), ("bonkable", bonkableName)); + + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); } else if (source != null) { diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 5471f07250..1bdaecf730 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -307,8 +307,7 @@ public sealed partial class ClimbSystem : VirtualController ("climbable", climbable)); } - _popupSystem.PopupEntity(othersMessage, uid, Filter.PvsExcept(user, entityManager: EntityManager), true); - _popupSystem.PopupClient(selfMessage, uid, user); + _popupSystem.PopupPredicted(selfMessage, othersMessage, uid, user); } /// diff --git a/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs b/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs new file mode 100644 index 0000000000..5cd7a72457 --- /dev/null +++ b/Content.Shared/Clothing/Components/WaddleWhenWornComponent.cs @@ -0,0 +1,35 @@ +using System.Numerics; + +namespace Content.Shared.Clothing.Components; + +/// +/// Defines something as causing waddling when worn. +/// +[RegisterComponent] +public sealed partial class WaddleWhenWornComponent : Component +{ + /// + /// How high should they hop during the waddle? Higher hop = more energy. + /// + [DataField] + public Vector2 HopIntensity = new(0, 0.25f); + + /// + /// How far should they rock backward and forward during the waddle? + /// Each step will alternate between this being a positive and negative rotation. More rock = more scary. + /// + [DataField] + public float TumbleIntensity = 20.0f; + + /// + /// How long should a complete step take? Less time = more chaos. + /// + [DataField] + public float AnimationLength = 0.66f; + + /// + /// How much shorter should the animation be when running? + /// + [DataField] + public float RunAnimationLengthMultiplier = 0.568f; +} diff --git a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs new file mode 100644 index 0000000000..b045a6af3b --- /dev/null +++ b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Labels.Components; + +/// +/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class PaperLabelTypeComponent : Component +{ + /// + /// The type of label to show. + /// + [DataField] + public string PaperType = "Paper"; +} diff --git a/Content.Shared/Labels/LabelEvents.cs b/Content.Shared/Labels/LabelEvents.cs index 362500b768..9f00354af2 100644 --- a/Content.Shared/Labels/LabelEvents.cs +++ b/Content.Shared/Labels/LabelEvents.cs @@ -13,9 +13,11 @@ namespace Content.Shared.Labels } [Serializable, NetSerializable] - public enum PaperLabelVisuals + public enum PaperLabelVisuals : byte { + Layer, HasLabel, + LabelType } /// diff --git a/Content.Shared/Movement/Components/WaddleAnimationComponent.cs b/Content.Shared/Movement/Components/WaddleAnimationComponent.cs new file mode 100644 index 0000000000..c43ef3042e --- /dev/null +++ b/Content.Shared/Movement/Components/WaddleAnimationComponent.cs @@ -0,0 +1,72 @@ +using System.Numerics; + +namespace Content.Shared.Movement.Components; + +/// +/// Declares that an entity has started to waddle like a duck/clown. +/// +/// The newly be-waddled. +[ByRefEvent] +public record struct StartedWaddlingEvent(EntityUid Entity) +{ + public EntityUid Entity = Entity; +} + +/// +/// Declares that an entity has stopped waddling like a duck/clown. +/// +/// The former waddle-er. +[ByRefEvent] +public record struct StoppedWaddlingEvent(EntityUid Entity) +{ + public EntityUid Entity = Entity; +} + +/// +/// Defines something as having a waddle animation when it moves. +/// +[RegisterComponent] +public sealed partial class WaddleAnimationComponent : Component +{ + /// + /// What's the name of this animation? Make sure it's unique so it can play along side other animations. + /// This prevents someone accidentally causing two identical waddling effects to play on someone at the same time. + /// + [DataField] + public string KeyName = "Waddle"; + + /// + /// How high should they hop during the waddle? Higher hop = more energy. + /// + [DataField] + public Vector2 HopIntensity = new(0, 0.25f); + + /// + /// How far should they rock backward and forward during the waddle? + /// Each step will alternate between this being a positive and negative rotation. More rock = more scary. + /// + [DataField] + public float TumbleIntensity = 20.0f; + + /// + /// How long should a complete step take? Less time = more chaos. + /// + [DataField] + public float AnimationLength = 0.66f; + + /// + /// How much shorter should the animation be when running? + /// + [DataField] + public float RunAnimationLengthMultiplier = 0.568f; + + /// + /// Stores which step we made last, so if someone cancels out of the animation mid-step then restarts it looks more natural. + /// + public bool LastStep; + + /// + /// Stores if we're currently waddling so we can start/stop as appropriate and can tell other systems our state. + /// + public bool IsCurrentlyWaddling; +} diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index b199884afb..10e8ca9be1 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -94,6 +94,12 @@ namespace Content.Shared.Popups /// will do nothing and the server will show the message to every player in PVS range. /// public abstract void PopupPredicted(string? message, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small); + + /// + /// Variant of that displays + /// to the recipient and to everyone else in PVS range. + /// + public abstract void PopupPredicted(string? recipientMessage, string? othersMessage, EntityUid uid, EntityUid? recipient, PopupType type = PopupType.Small); } /// diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index f172060ded..974755f000 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -230,13 +230,19 @@ public class RCDSystem : EntitySystem // Exit if the RCD prototype has changed if (component.ProtoId != args.Event.StartingProtoId) + { + args.Cancel(); return; + } // Ensure the RCD operation is still valid var location = GetCoordinates(args.Event.Location); if (!TryGetMapGridData(location, out var mapGridData)) + { + args.Cancel(); return; + } if (!IsRCDOperationStillValid(uid, component, mapGridData.Value, args.Event.Target, args.Event.User)) args.Cancel(); diff --git a/Content.Shared/Sound/SharedEmitSoundSystem.cs b/Content.Shared/Sound/SharedEmitSoundSystem.cs index 329626964e..a9a50698d7 100644 --- a/Content.Shared/Sound/SharedEmitSoundSystem.cs +++ b/Content.Shared/Sound/SharedEmitSoundSystem.cs @@ -1,7 +1,10 @@ +using Content.Shared.Audio; using Content.Shared.Hands; +using Content.Shared.Hands.Components; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Maps; +using Content.Shared.Mobs; using Content.Shared.Popups; using Content.Shared.Sound.Components; using Content.Shared.Throwing; @@ -28,7 +31,8 @@ public abstract class SharedEmitSoundSystem : EntitySystem [Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly ITileDefinitionManager _tileDefMan = default!; [Dependency] protected readonly IRobustRandom Random = default!; - [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly SharedAmbientSoundSystem _ambient = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] protected readonly SharedPopupSystem Popup = default!; public override void Initialize() @@ -44,6 +48,20 @@ public abstract class SharedEmitSoundSystem : EntitySystem SubscribeLocalEvent(OnEmitSoundOnInteractUsing); SubscribeLocalEvent(OnEmitSoundOnCollide); + + SubscribeLocalEvent(OnMobState); + } + + private void OnMobState(Entity entity, ref MobStateChangedEvent args) + { + // Disable this component rather than removing it because it can be brought back to life. + if (TryComp(entity, out var comp)) + { + comp.Enabled = args.NewMobState == MobState.Alive; + Dirty(entity.Owner, comp); + } + + _ambient.SetAmbience(entity.Owner, args.NewMobState != MobState.Dead); } private void OnEmitSpawnOnInit(EntityUid uid, EmitSoundOnSpawnComponent component, MapInitEvent args) diff --git a/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs b/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs index 58c5fec2d8..ce96639e3c 100644 --- a/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs +++ b/Content.Shared/Weapons/Ranged/Components/GunWieldBonusComponent.cs @@ -17,4 +17,20 @@ public sealed partial class GunWieldBonusComponent : Component /// [ViewVariables(VVAccess.ReadWrite), DataField("maxAngle"), AutoNetworkedField] public Angle MaxAngle = Angle.FromDegrees(-43); + + /// + /// Recoil bonuses applied upon being wielded. + /// Higher angle decay bonus, quicker recovery. + /// Lower angle increase bonus (negative numbers), slower buildup. + /// + [DataField, AutoNetworkedField] + public Angle AngleDecay = Angle.FromDegrees(0); + + /// + /// Recoil bonuses applied upon being wielded. + /// Higher angle decay bonus, quicker recovery. + /// Lower angle increase bonus (negative numbers), slower buildup. + /// + [DataField, AutoNetworkedField] + public Angle AngleIncrease = Angle.FromDegrees(0); } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs index 57db1d2b9c..9eb290ab65 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Magazine.cs @@ -1,7 +1,6 @@ using Content.Shared.Examine; using Content.Shared.Interaction.Events; using Content.Shared.Verbs; -using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Containers; @@ -13,6 +12,7 @@ public abstract partial class SharedGunSystem protected virtual void InitializeMagazine() { + SubscribeLocalEvent(OnMagazineMapInit); SubscribeLocalEvent(OnMagazineTakeAmmo); SubscribeLocalEvent(OnMagazineAmmoCount); SubscribeLocalEvent>(OnMagazineVerb); @@ -22,6 +22,11 @@ public abstract partial class SharedGunSystem SubscribeLocalEvent(OnMagazineExamine); } + private void OnMagazineMapInit(Entity ent, ref MapInitEvent args) + { + MagazineSlotChanged(ent); + } + private void OnMagazineExamine(EntityUid uid, MagazineAmmoProviderComponent component, ExaminedEvent args) { if (!args.IsInDetailsRange) @@ -62,16 +67,21 @@ public abstract partial class SharedGunSystem if (MagazineSlot != args.Container.ID) return; - UpdateAmmoCount(uid); - if (!TryComp(uid, out var appearance)) + MagazineSlotChanged((uid, component)); + } + + private void MagazineSlotChanged(Entity ent) + { + UpdateAmmoCount(ent); + if (!TryComp(ent, out var appearance)) return; - var magEnt = GetMagazineEntity(uid); - Appearance.SetData(uid, AmmoVisuals.MagLoaded, magEnt != null, appearance); + var magEnt = GetMagazineEntity(ent); + Appearance.SetData(ent, AmmoVisuals.MagLoaded, magEnt != null, appearance); if (magEnt != null) { - UpdateMagazineAppearance(uid, component, magEnt.Value); + UpdateMagazineAppearance(ent, ent, magEnt.Value); } } diff --git a/Content.Shared/Wieldable/WieldableSystem.cs b/Content.Shared/Wieldable/WieldableSystem.cs index 9fe76c625b..6bd406c1ca 100644 --- a/Content.Shared/Wieldable/WieldableSystem.cs +++ b/Content.Shared/Wieldable/WieldableSystem.cs @@ -90,6 +90,8 @@ public sealed class WieldableSystem : EntitySystem { args.MinAngle += bonus.Comp.MinAngle; args.MaxAngle += bonus.Comp.MaxAngle; + args.AngleDecay += bonus.Comp.AngleDecay; + args.AngleIncrease += bonus.Comp.AngleIncrease; } } @@ -195,8 +197,9 @@ public sealed class WieldableSystem : EntitySystem && !_delay.TryResetDelay((used, useDelay), true)) return false; - _popupSystem.PopupClient(Loc.GetString("wieldable-component-successful-wield", ("item", used)), user, user); - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-successful-wield-other", ("user", user), ("item", used)), user, Filter.PvsExcept(user), true); + var selfMessage = Loc.GetString("wieldable-component-successful-wield", ("item", used)); + var othersMessage = Loc.GetString("wieldable-component-successful-wield-other", ("user", user), ("item", used)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, user, user); var targEv = new ItemWieldedEvent(); RaiseLocalEvent(used, ref targEv); @@ -239,10 +242,9 @@ public sealed class WieldableSystem : EntitySystem if (component.UnwieldSound != null) _audioSystem.PlayPredicted(component.UnwieldSound, uid, args.User); - _popupSystem.PopupClient(Loc.GetString("wieldable-component-failed-wield", - ("item", uid)), args.User.Value, args.User.Value); - _popupSystem.PopupEntity(Loc.GetString("wieldable-component-failed-wield-other", - ("user", args.User.Value), ("item", uid)), args.User.Value, Filter.PvsExcept(args.User.Value), true); + var selfMessage = Loc.GetString("wieldable-component-failed-wield", ("item", uid)); + var othersMessage = Loc.GetString("wieldable-component-failed-wield-other", ("user", args.User.Value), ("item", uid)); + _popupSystem.PopupPredicted(selfMessage, othersMessage, args.User.Value, args.User.Value); } _appearance.SetData(uid, WieldableVisuals.Wielded, false); diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8a4c345ae7..9bb7095fd1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,94 +1,4 @@ Entries: -- author: Jajsha - changes: - - message: Emagged borgs now recieve laws recontextualizing who's a crew member - instead of recieving a completely new lawset. - type: Tweak - id: 5843 - time: '2024-02-01T05:02:49.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24698 -- author: PJB3005 - changes: - - message: Health analyzers now show if somebody is starving. - type: Add - id: 5844 - time: '2024-02-01T06:28:17.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24789 -- author: PixelTK - changes: - - message: The arachnid plushie now has a new sprite. - type: Tweak - id: 5845 - time: '2024-02-01T06:36:43.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24747 -- author: lzk228 - changes: - - message: Yellow oxygen tank was removed to standardise gas tank colourings. - type: Remove - id: 5846 - time: '2024-02-01T06:53:33.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24374 -- author: koteq - changes: - - message: Fixed indicator near SSD players - type: Fix - id: 5847 - time: '2024-02-01T08:30:07.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24589 -- author: TheShuEd - changes: - - message: Anomaly generator can now only be used by a scientist. - type: Tweak - id: 5848 - time: '2024-02-01T08:45:24.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24464 -- author: PJB3005 - changes: - - message: Removed starvation damage - type: Remove - id: 5849 - time: '2024-02-01T09:01:52.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24790 -- author: SlamBamActionman - changes: - - message: The Visitor job can now be given to ID cards via the ID Card Console/Agent - IDs. - type: Add - id: 5850 - time: '2024-02-01T10:13:44.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/23972 -- author: Dygon - changes: - - message: When slipping on lube you now keep sliding until you reach a tile without - lube. - type: Tweak - id: 5851 - time: '2024-02-01T10:39:10.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24801 -- author: FungiFellow - changes: - - message: Added Binary Key in RD's Locker - type: Add - - message: 50% off Binary Key - type: Tweak - id: 5852 - time: '2024-02-01T10:42:12.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24778 -- author: Dygon - changes: - - message: Paraplegic entities have their legs healed when zombified. - type: Fix - id: 5853 - time: '2024-02-01T11:06:05.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24169 -- author: PJB3005 - changes: - - message: The AME can now single-handedly power the entire station until one of - our cool coders gets their shit together and fixes engineering. - type: Fix - id: 5854 - time: '2024-02-01T11:06:52.0000000+00:00' - url: https://api.github.com/repos/space-wizards/space-station-14/pulls/24806 - author: Varen changes: - message: Cutting wires will now properly electrocute if enough power is available. @@ -3828,3 +3738,104 @@ id: 6342 time: '2024-04-13T15:36:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/26499 +- author: Boaz1111 + changes: + - message: The doors on the ice expedition map can now be accessed by anyone instead + of... botanists. + type: Fix + id: 6343 + time: '2024-04-13T20:49:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26928 +- author: Tayrtahn + changes: + - message: Placing a player with no entry in the manifest into cryostorage no longer + removes the captain from the crew manifest. + type: Fix + id: 6344 + time: '2024-04-14T02:19:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26927 +- author: superjj18 + changes: + - message: Honkbot's basic AI has been restored and honks have returned to being + at random intervals! + type: Fix + id: 6345 + time: '2024-04-14T02:51:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26939 +- author: GreaseMonk + changes: + - message: Added StopsWhenEntityDead property to audio components + type: Add + id: 6346 + time: '2024-04-14T03:12:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26905 +- author: DrSmugleaf + changes: + - message: Fixed rocket launchers and laser guns looking like they have nothing + loaded. + type: Fix + id: 6347 + time: '2024-04-14T03:17:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26933 +- author: Vermidia + changes: + - message: You can now see paper attached on crates. Color differs depending on + the paper used. + type: Add + - message: The labels on bodybags also have different colors depending on the paper + used. + type: Tweak + - message: Cargo Invoices are now blueish (to differentiate them from Cargo Bounties) + type: Tweak + id: 6348 + time: '2024-04-14T03:39:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26834 +- author: Terraspark4941 + changes: + - message: Autism pins have been added to maintenance loot! + type: Add + id: 6349 + time: '2024-04-14T05:35:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25597 +- author: Flareguy + changes: + - message: Colored jumpsuits, shoes, and (most) colored gloves are now colorized + off of one set of greyscale sprites. They should now be more consistent & significantly + less ugly. + type: Tweak + id: 6350 + time: '2024-04-14T08:41:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26943 +- author: BramvanZijp + changes: + - message: Nanotrasen's Small Arms Division has slightly improved the firerate and + drastically improved the accuracy on its WT550 SMGs. + type: Tweak + - message: The WT550 and C-20R SMGs can now fire in a 5 round burst-fire mode, making + it easier for their users to control the recoil on these weapons. + type: Add + id: 6351 + time: '2024-04-14T08:51:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26886 +- author: Dutch-VanDerLinde + changes: + - message: Holoparasites and holoclowns will now phase through projectiles such + as bullets, like a holocarp. + type: Tweak + id: 6352 + time: '2024-04-14T08:52:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26862 +- author: Tyzemol + changes: + - message: Board game crate now comes with character sheets + type: Add + id: 6353 + time: '2024-04-14T08:54:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26926 +- author: FairlySadPanda + changes: + - message: Clown shoes make you waddle, as God intended. + type: Add + id: 6354 + time: '2024-04-14T12:12:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/26338 diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 6c838abb85..7be6ba13e0 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, CrafterKolyan, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, NakataRin, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OctoRocket, OldDanceJacket, OliverOtter, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, Phill101, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, RIKELOLDABOSS, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem +0x6273, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 4dplanner, 612git, 778b, Ablankmann, Acruid, actioninja, adamsong, Admiral-Obvious-001, Adrian16199, Aerocrux, Aexxie, Agoichi, Ahion, AJCM-git, AjexRose, Alekshhh, AlexMorgan3817, AlexUmAndXGabriel08X, AlmondFlour, AlphaQwerty, Altoids1, amylizzle, ancientpower, ArchPigeon, Arendian, arimah, Arteben, AruMoon, as334, AsikKEsel, asperger-sind, avghdev, AzzyIsNotHere, BananaFlambe, Baptr0b0t, BasedUser, beck-thompson, BGare, BingoJohnson-zz, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, Boaz1111, BobdaBiscuit, brainfood1183, Brandon-Huu, Bright0, brndd, BubblegumBlue, BYONDFuckery, c4llv07e, CakeQ, Callmore, CaptainSqrBeard, Carbonhell, casperr04, CatTheSystem, Centronias, chairbender, Charlese2, Cheackraze, cheesePizza2, Chief-Engineer, chromiumboy, Chronophylos, clement-or, Clyybber, Cojoke-dot, ColdAutumnRain, collinlunn, ComicIronic, coolmankid12345, corentt, CrafterKolyan, crazybrain23, creadth, CrigCrag, Crotalus, CrudeWax, CrzyPotato, Cyberboss, d34d10cc, Daemon, daerSeebaer, dahnte, dakamakat, dakimasu, DamianX, DangerRevolution, daniel-cr, Darkenson, DawBla, dch-GH, Deahaka, DEATHB4DEFEAT, DeathCamel58, deathride58, DebugOk, Decappi, deepdarkdepths, deepy, Delete69, deltanedas, DerbyX, DmitriyMX, Doctor-Cpu, DoctorBeard, DogZeroX, dontbetank, Doru991, DoubleRiceEddiedd, DoutorWhite, DrMelon, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, Duddino, Dutch-VanDerLinde, Easypoller, eclips_e, EdenTheLiznerd, EEASAS, Efruit, ElectroSR, elthundercloud, Emisse, EmoGarbage404, Endecc, enumerate0, eoineoineoin, ERORR404V1, Errant-4, estacaoespacialpirata, exincore, exp111, Fahasor, FairlySadPanda, ficcialfaint, Fildrance, FillerVK, Fishfish458, Flareguy, FluffiestFloof, FluidRock, FoLoKe, fooberticus, Fortune117, freeman2651, Fromoriss, FungiFellow, GalacticChimp, gbasood, Geekyhobo, Genkail, Ghagliiarghii, Git-Nivrak, github-actions[bot], gituhabu, GNF54, Golinth, GoodWheatley, Gotimanga, graevy, GreyMario, gusxyz, Gyrandola, h3half, Hanzdegloker, Hardly3D, harikattar, Hebiman, Henry12116, HerCoyote23, Hmeister-real, HoofedEar, hord-brayden, hubismal, Hugal31, Huxellberger, Hyenh, iacore, IamVelcroboy, icekot8, igorsaux, ike709, Illiux, Ilya246, IlyaElDunaev, Injazz, Insineer, IntegerTempest, Interrobang01, IProduceWidgets, ItsMeThom, j-giebel, Jackal298, Jackrost, jamessimo, janekvap, Jark255, JerryImMouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JoeHammad1844, joelhed, JohnGinnane, johnku1, joshepvodka, jproads, Jrpl, juliangiebel, JustArt1m, JustCone14, JustinTether, JustinTrotter, Kadeo64, KaiShibaa, kalane15, kalanosh, KEEYNy, Keikiru, Kelrak, kerisargit, keronshb, KIBORG04, Killerqu00, KingFroozy, kira-er, Kit0vras, KittenColony, Kmc2000, Ko4ergaPunk, komunre, koteq, Krunklehorn, Kukutis96513, kxvvv, Lamrr, LankLTE, lapatison, Leander-0, LetterN, Level10Cybermancer, lever1209, LightVillet, liltenhead, LittleBuilderJane, Lomcastar, LordCarve, LordEclipse, luckyshotpictures, LudwigVonChesterfield, Lukasz825700516, lunarcomets, luringens, lvvova1, lzimann, lzk228, M3739, MACMAN2003, Macoron, MagnusCrowe, ManelNavola, Mangohydra, matthst, Matz05, MehimoNemo, MeltedPixel, MemeProof, Menshin, Mephisto72, Mervill, metalgearsloth, mhamsterr, MilenVolf, Minty642, Mirino97, mirrorcult, MishaUnity, MisterMecky, Mith-randalf, MjrLandWhale, Moneyl, Moomoobeef, moony, Morb0, Mr0maks, musicmanvr, Myakot, Myctai, N3X15, Nails-n-Tape, Nairodian, Naive817, NakataRin, namespace-Memory, NickPowers43, nikthechampiongr, Nimfar11, Nirnael, nmajask, nok-ko, Nopey, notafet, notquitehadouken, noudoit, noverd, nuke-haus, NULL882, Nylux, OctoRocket, OldDanceJacket, OliverOtter, onoira, osjarw, Owai-Seek, pali6, Pangogie, patrikturi, PaulRitter, Peptide90, peptron1, Phantom-Lily, Phill101, PixelTheKermit, PJB3005, Plykiya, pofitlo, pointer-to-null, PolterTzi, PoorMansDreams, potato1234x, PotentiallyTom, ProfanedBane, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykzz, PuroSlavKing, PursuitInAshes, Putnam3145, quatre, QuietlyWhisper, qwerltaz, Radosvik, Radrark, Rainbeon, Rainfey, Rane, ravage123321, rbertoche, Redict, RedlineTriad, RednoWCirabrab, RemberBM, RemieRichards, RemTim, rene-descartes2021, RiceMar1244, RieBi, Rinkashikachi, Rockdtben, rolfero, rosieposieeee, Saakra, Samsterious, SaphireLattice, ScalyChimp, scrato, Scribbles0, Serkket, SethLafuente, ShadowCommander, Shadowtheprotogen546, shampunj, SignalWalker, Simyon264, SirDragooon, Sirionaut, siyengar04, Skarletto, Skrauz, Skyedra, SlamBamActionman, Slava0135, snebl, Snowni, snowsignal, SonicHDC, SoulSloth, SpaceManiac, SpeltIncorrectyl, SphiraI, spoogemonster, ssdaniel24, Stealthbomber16, StrawberryMoses, Subversionary, SweptWasTaken, Szunti, takemysoult, TaralGit, Tayrtahn, tday93, TekuNut, TemporalOroboros, tentekal, tgrkzus, thatrandomcanadianguy, TheArturZh, theashtronaut, thedraccx, themias, Theomund, theOperand, TheShuEd, TimrodDX, Titian3, tkdrg, tmtmtl30, tom-leys, tomasalves8, Tomeno, tosatur, TsjipTsjip, Tunguso4ka, TurboTrackerss14, Tyler-IN, Tyzemol, UbaserB, UKNOWH, Uriende, UristMcDorf, Vaaankas, Varen, VasilisThePikachu, veliebm, Veritius, Vermidia, Verslebas, VigersRay, Visne, volundr-, Vordenburg, vulppine, wafehling, waylon531, weaversam8, Willhelm53, wixoaGit, WlarusFromDaSpace, wrexbe, xRiriq, yathxyz, Ygg01, YotaXP, YuriyKiss, zach-hill, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zerorulez, zionnBE, zlodo, ZNixian, ZoldorfTheWizard, Zumorica, Zymem diff --git a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl index 8de5f9019b..500a530562 100644 --- a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl +++ b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl @@ -1,5 +1,6 @@  ### Announcement +earlyleave-cryo-job-unknown = Unknown earlyleave-cryo-announcement = {$character} ({$job}) has entered cryogenic storage! earlyleave-cryo-sender = Station diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 72cf6c447c..c52e13bd13 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -180,6 +180,8 @@ - id: GrassBattlemap - id: DiceBag amount: 6 + - id: PaperCNCSheet + amount: 6 - type: entity id: CrateFunSadTromboneImplants diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml index 2038ef0013..4e885a08b2 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/wardrobe_colors.yml @@ -38,7 +38,7 @@ amount: 3 - id: ClothingUniformRandomArmless amount: 5 - - id: ClothingUniformRandomStandart + - id: ClothingUniformRandomStandard amount: 5 - id: ClothingUniformRandomBra amount: 5 diff --git a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml index 38472e3901..02cf0ab6f6 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/base_clothinghands.yml @@ -34,3 +34,13 @@ spawned: - id: MaterialCloth1 amount: 1 + +# gloves that cover the fingertips and have synthetic fibers +- type: entity + abstract: true + parent: ClothingHandsButcherable + id: ClothingHandsGlovesSyntheticBase + components: + - type: Fiber + fiberMaterial: fibers-synthetic + - type: FingerprintMask diff --git a/Resources/Prototypes/Entities/Clothing/Hands/colored.yml b/Resources/Prototypes/Entities/Clothing/Hands/colored.yml index 4a78bd0a99..0fa298b648 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/colored.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/colored.yml @@ -1,13 +1,8 @@ -# gloves that cover the fingertips and have synthetic fibers -- type: entity - abstract: true - parent: ClothingHandsButcherable - id: ClothingHandsGlovesSyntheticBase - components: - - type: Fiber - fiberMaterial: fibers-synthetic - - type: FingerprintMask +#DO NOT MAKE THESE THE SAME COLOR AS THE JUMPSUIT. It is going to cause contrast issues for those wearing the full set of color clothing and is almost definitely going to look worse. +#If you want to make it similar to the jumpsuit color, it should be slightly off. +#P.S: Most of these just use the shoe colors, so they end up having a nice "secondary" color when wearing the full set of color clothing. +# Purple Gloves - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorPurple @@ -15,12 +10,28 @@ description: Regular purple gloves that do not keep you from frying. components: - type: Sprite - sprite: Clothing/Hands/Gloves/Color/purple.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#9C0DE1" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9C0DE1" + right: + - state: inhand-right + color: "#9C0DE1" - type: Clothing - sprite: Clothing/Hands/Gloves/Color/purple.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#9C0DE1" - type: Fiber fiberColor: fibers-purple +# Red Gloves - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorRed @@ -28,12 +39,232 @@ description: Regular red gloves that do not keep you from frying. components: - type: Sprite - sprite: Clothing/Hands/Gloves/Color/red.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#940000" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#940000" + right: + - state: inhand-right + color: "#940000" - type: Clothing - sprite: Clothing/Hands/Gloves/Color/red.rsi + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#940000" - type: Fiber fiberColor: fibers-red +# Blue Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorBlue + name: blue gloves + description: Regular blue gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#0089EF" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#0089EF" + right: + - state: inhand-right + color: "#0089EF" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#0089EF" + - type: Fiber + fiberColor: fibers-blue + +# Brown Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorBrown + name: brown gloves + description: Regular brown gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#723A02" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#723A02" + right: + - state: inhand-right + color: "#723A02" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#723A02" + - type: Fiber + fiberColor: fibers-brown + +# Grey Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorGray + name: grey gloves + description: Regular grey gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#999999" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#999999" + right: + - state: inhand-right + color: "#999999" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#999999" + - type: Fiber + fiberColor: fibers-grey + +# Green Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorGreen + name: green gloves + description: Regular green gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#5ABF2F" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#5ABF2F" + right: + - state: inhand-right + color: "#5ABF2F" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#5ABF2F" + - type: Fiber + fiberColor: fibers-green + +# Light Brown Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorLightBrown + name: light brown gloves + description: Regular light brown gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#C09F72" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#C09F72" + right: + - state: inhand-right + color: "#C09F72" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#C09F72" + - type: Fiber + fiberColor: fibers-brown + +# Orange Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorOrange + name: orange gloves + description: Regular orange gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#EF8100" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EF8100" + right: + - state: inhand-right + color: "#EF8100" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#EF8100" + - type: Fiber + fiberColor: fibers-orange + +# White Gloves +- type: entity + parent: ClothingHandsGlovesSyntheticBase + id: ClothingHandsGlovesColorWhite + name: white gloves + description: Regular white gloves that do not keep you from frying. + components: + - type: Sprite + sprite: Clothing/Hands/Gloves/Color/color.rsi + layers: + - state: icon + color: "#EAE8E8" + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EAE8E8" + right: + - state: inhand-right + color: "#EAE8E8" + - type: Clothing + sprite: Clothing/Hands/Gloves/Color/color.rsi + clothingVisuals: + gloves: + - state: equipped-HAND + color: "#EAE8E8" + - type: Fiber + fiberColor: fibers-white + +# Black Gloves +# TECHNICALLY, if you ported the worn state to the RSI, this could be greyscaled, but I do not really feel like doing that. - type: entity parent: ClothingHandsGlovesSyntheticBase id: ClothingHandsGlovesColorBlack @@ -42,6 +273,14 @@ components: - type: Sprite sprite: Clothing/Hands/Gloves/Color/black.rsi + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#535353" + right: + - state: inhand-right + color: "#535353" - type: Clothing sprite: Clothing/Hands/Gloves/Color/black.rsi - type: GloveHeatResistance @@ -53,97 +292,8 @@ - type: Fiber fiberColor: fibers-black -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorBlue - name: blue gloves - description: Regular blue gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/blue.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/blue.rsi - - type: Fiber - fiberColor: fibers-blue - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorBrown - name: brown gloves - description: Regular brown gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/brown.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/brown.rsi - - type: Fiber - fiberColor: fibers-brown - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorGray - name: grey gloves - description: Regular grey gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/gray.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/gray.rsi - - type: Fiber - fiberColor: fibers-grey - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorGreen - name: green gloves - description: Regular green gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/green.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/green.rsi - - type: Fiber - fiberColor: fibers-green - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorLightBrown - name: light brown gloves - description: Regular light brown gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/lightbrown.rsi - - type: Fiber - fiberColor: fibers-brown - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorOrange - name: orange gloves - description: Regular orange gloves that do not keep you from frying. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/orange.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/orange.rsi - - type: Fiber - fiberColor: fibers-orange - -- type: entity - parent: ClothingHandsGlovesSyntheticBase - id: ClothingHandsGlovesColorWhite - name: white gloves - description: Those gloves look fancy. - components: - - type: Sprite - sprite: Clothing/Hands/Gloves/Color/white.rsi - - type: Clothing - sprite: Clothing/Hands/Gloves/Color/white.rsi - - type: Fiber - fiberColor: fibers-white - +# Insulated Gloves (Yellow Gloves) +# Currently can not be greyscaled without looking like shit. - type: entity parent: ClothingHandsBase id: ClothingHandsGlovesColorYellow @@ -166,6 +316,7 @@ fiberMaterial: fibers-insulative fiberColor: fibers-yellow +# Budget Insulated Gloves - type: entity parent: ClothingHandsGlovesColorYellow id: ClothingHandsGlovesColorYellowBudget @@ -192,6 +343,7 @@ - 3.5 - 4 +# Conductive Insulated Gloves - type: entity parent: ClothingHandsGlovesColorYellow id: ClothingHandsGlovesConducting diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index 0d22a653db..0054a3645c 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -151,3 +151,35 @@ clothingVisuals: neck: - state: trans-equipped + +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckAutismPin + name: autism pin + description: be autism do crime + components: + - type: Sprite + sprite: Clothing/Neck/Misc/autismpin.rsi + layers: + - state: autism + - type: Clothing + sprite: Clothing/Neck/Misc/autismpin.rsi + clothingVisuals: + neck: + - state: autism-equipped + +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckGoldAutismPin + name: golden autism pin + description: be autism do warcrime + components: + - type: Sprite + sprite: Clothing/Neck/Misc/goldautismpin.rsi + layers: + - state: goldautism + - type: Clothing + sprite: Clothing/Neck/Misc/goldautismpin.rsi + clothingVisuals: + neck: + - state: goldautism-equipped diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml index 0bfe153b59..16608aacc9 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/color.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/color.yml @@ -1,3 +1,6 @@ +# DO NOT ARBITRARILY CHANGE THESE TO MAKE THEM "CONSISTENT" WITH THE COLOR JUMPSUITS. You are probably just going to make them look worse. + +# Black Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorBlack @@ -5,76 +8,30 @@ description: Stylish black shoes. components: - type: Sprite - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#3f3f3f" #Different from the worn state for contrast reasons. + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: soles-inhand-right - type: Clothing - sprite: Clothing/Shoes/Color/black.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorBlue - name: blue shoes - description: Stylish blue shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/blue.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/blue.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorBrown - name: brown shoes - description: A pair of brown shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/brown.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/brown.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorGreen - name: green shoes - description: Stylish green shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/green.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/green.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorOrange - name: orange shoes - description: Stylish orange shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/orange.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/orange.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorPurple - name: purple shoes - description: Stylish purple shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/purple.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/purple.rsi - -- type: entity - parent: ClothingShoesBaseButcherable - id: ClothingShoesColorRed - name: red shoes - description: Stylish red shoes. - components: - - type: Sprite - sprite: Clothing/Shoes/Color/red.rsi - - type: Clothing - sprite: Clothing/Shoes/Color/red.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET +# White Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorWhite @@ -82,10 +39,183 @@ description: Don't take them off at your office Christmas party. components: - type: Sprite - sprite: Clothing/Shoes/Color/white.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EAE8E8" #Deliberately NOT pure white + - state: soles-icon + - type: Item + inhandVisuals: #We don't want the sole icons. Since this is white, it's just going to look weird (white on white doesn't really contrast.) + left: + - state: inhand-left + color: "#EAE8E8" + right: + - state: inhand-right + color: "#EAE8E8" - type: Clothing - sprite: Clothing/Shoes/Color/white.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EAE8E8" + - state: contrastedsoles-equipped-FEET +# Blue Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorBlue + name: blue shoes + description: Stylish blue shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#0089EF" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#0089EF" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#0089EF" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#0089EF" + - state: soles-equipped-FEET + +# Brown Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorBrown + name: brown shoes + description: A pair of brown shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#723A02" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#723A02" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#723A02" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#592D01" + - state: soles-equipped-FEET + +# Green Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorGreen + name: green shoes + description: Stylish green shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#5ABF2F" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#5ABF2F" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#5ABF2F" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#5ABF2F" + - state: soles-equipped-FEET + +# Orange Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorOrange + name: orange shoes + description: Stylish orange shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EF8100" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EF8100" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#EF8100" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EF8100" + - state: soles-equipped-FEET + +# Red Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorRed + name: red shoes + description: Stylish red shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#940000" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#940000" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#940000" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#940000" + - state: soles-equipped-FEET + +# Yellow Shoes - type: entity parent: ClothingShoesBaseButcherable id: ClothingShoesColorYellow @@ -93,6 +223,56 @@ description: Stylish yellow shoes. components: - type: Sprite - sprite: Clothing/Shoes/Color/yellow.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#EBE216" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#EBE216" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#EBE216" + - state: soles-inhand-right - type: Clothing - sprite: Clothing/Shoes/Color/yellow.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#EBE216" + - state: soles-equipped-FEET + +# Purple Shoes +- type: entity + parent: ClothingShoesBaseButcherable + id: ClothingShoesColorPurple + name: purple shoes + description: Stylish purple shoes. + components: + - type: Sprite + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#9C0DE1" + - state: soles-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9C0DE1" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#9C0DE1" + - state: soles-inhand-right + - type: Clothing + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#9C0DE1" + - state: soles-equipped-FEET \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml index 4b9cbeef42..987eda582e 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/specific.yml @@ -15,6 +15,7 @@ parent: [ClothingShoesBaseButcherable, ClothingSlotBase] id: ClothingShoesClownBase components: + - type: WaddleWhenWorn - type: ItemSlots slots: item: @@ -157,9 +158,28 @@ - type: Tag tags: [] # ignore "WhitelistChameleon" tag - type: Sprite - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: soles-icon - type: Clothing - sprite: Clothing/Shoes/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: soles-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: soles-inhand-right - type: ChameleonClothing slot: [FEET] default: ClothingShoesColorBlack diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml new file mode 100644 index 0000000000..1f77059841 --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpskirts.yml @@ -0,0 +1,491 @@ +# White Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorWhite + name: white jumpskirt + description: A generic white jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + - state: trinkets-inhand-left + right: + - state: inhand-right + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + - state: trinkets-equipped-INNERCLOTHING + +# Grey Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorGrey + name: grey jumpskirt + description: A tasteful grey jumpskirt that reminds you of the good old days. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#b3b3b3" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#b3b3b3" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#b3b3b3" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#b3b3b3" + - state: trinkets-equipped-INNERCLOTHING + +# Black Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBlack + name: black jumpskirt + description: A generic black jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3f3f3f" + - state: trinkets-equipped-INNERCLOTHING + +# Blue Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBlue + name: blue jumpskirt + description: A generic blue jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#52aecc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#52aecc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#52aecc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#52aecc" + - state: trinkets-equipped-INNERCLOTHING + +# Dark Blue Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorDarkBlue + name: dark blue jumpskirt + description: A generic dark blue jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#3285ba" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3285ba" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3285ba" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3285ba" + - state: trinkets-equipped-INNERCLOTHING + +# Teal Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorTeal + name: teal jumpskirt + description: A generic teal jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#77f3b7" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#77f3b7" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#77f3b7" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#77f3b7" + - state: trinkets-equipped-INNERCLOTHING + +# Green Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorGreen + name: green jumpskirt + description: A generic green jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#9ed63a" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9ed63a" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9ed63a" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9ed63a" + - state: trinkets-equipped-INNERCLOTHING + + # Dark Green Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorDarkGreen + name: dark green jumpskirt + description: A generic dark green jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#79CC26" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#79CC26" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#79CC26" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#79CC26" + - state: trinkets-equipped-INNERCLOTHING + +# Orange Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorOrange + name: orange jumpskirt + description: Don't wear this near paranoid security officers. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ff8c19" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8c19" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ff8c19" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8c19" + - state: trinkets-equipped-INNERCLOTHING + +# Pink Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorPink + name: pink jumpskirt + description: Just looking at this makes you feel fabulous. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ffa69b" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffa69b" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffa69b" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffa69b" + - state: trinkets-equipped-INNERCLOTHING + +# Red Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorRed + name: red jumpskirt + description: A generic red jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#eb0c07" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#eb0c07" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#eb0c07" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#eb0c07" + - state: trinkets-equipped-INNERCLOTHING + +# Yellow Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorYellow + name: yellow jumpskirt + description: A generic yellow jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ffe14d" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffe14d" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffe14d" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffe14d" + - state: trinkets-equipped-INNERCLOTHING + +# Purple Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorPurple + name: purple jumpskirt + description: A generic light purple jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#9f70cc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9f70cc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9f70cc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9f70cc" + - state: trinkets-equipped-INNERCLOTHING + +# Light Brown Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorLightBrown + name: light brown jumpskirt + description: A generic light brown jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#c59431" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#c59431" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#c59431" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#c59431" + - state: trinkets-equipped-INNERCLOTHING + +# Brown Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorBrown + name: brown jumpskirt + description: A generic brown jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#a17229" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#a17229" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#a17229" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#a17229" + - state: trinkets-equipped-INNERCLOTHING + +# Maroon Jumpskirt +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpskirtColorMaroon + name: maroon jumpskirt + description: A generic maroon jumpskirt with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#cc295f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#cc295f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#cc295f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#cc295f" + - state: trinkets-equipped-INNERCLOTHING diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml new file mode 100644 index 0000000000..f56afabeac --- /dev/null +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/color_jumpsuits.yml @@ -0,0 +1,503 @@ +# White Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorWhite + name: white jumpsuit + description: A generic white jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + - state: trinkets-inhand-left + right: + - state: inhand-right + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + - state: trinkets-equipped-INNERCLOTHING + +# Grey Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorGrey + name: grey jumpsuit + description: A tasteful grey jumpsuit that reminds you of the good old days. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#b3b3b3" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#b3b3b3" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#b3b3b3" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#b3b3b3" + - state: trinkets-equipped-INNERCLOTHING + +# Black Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBlack + name: black jumpsuit + description: A generic black jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3f3f3f" + - state: trinkets-equipped-INNERCLOTHING + +# Blue Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBlue + name: blue jumpsuit + description: A generic blue jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#52aecc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#52aecc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#52aecc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#52aecc" + - state: trinkets-equipped-INNERCLOTHING + +# Dark Blue Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorDarkBlue + name: dark blue jumpsuit + description: A generic dark blue jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3285ba" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3285ba" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3285ba" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#3285ba" + - state: trinkets-equipped-INNERCLOTHING + +# Teal Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorTeal + name: teal jumpsuit + description: A generic teal jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#77f3b7" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#77f3b7" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#77f3b7" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#77f3b7" + - state: trinkets-equipped-INNERCLOTHING + +# Green Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorGreen + name: green jumpsuit + description: A generic green jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#9ed63a" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9ed63a" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9ed63a" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9ed63a" + - state: trinkets-equipped-INNERCLOTHING + + # Dark Green Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorDarkGreen + name: dark green jumpsuit + description: A generic dark green jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#79CC26" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#79CC26" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#79CC26" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#79CC26" + - state: trinkets-equipped-INNERCLOTHING + +# Orange Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorOrange + name: orange jumpsuit + description: Don't wear this near paranoid security officers. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ff8c19" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8c19" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ff8c19" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8c19" + - state: trinkets-equipped-INNERCLOTHING + +# Pink Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorPink + name: pink jumpsuit + description: Just looking at this makes you feel fabulous. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ffa69b" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffa69b" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffa69b" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffa69b" + - state: trinkets-equipped-INNERCLOTHING + +# Red Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorRed + name: red jumpsuit + description: A generic red jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#eb0c07" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#eb0c07" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#eb0c07" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#eb0c07" + - state: trinkets-equipped-INNERCLOTHING + +# Yellow Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorYellow + name: yellow jumpsuit + description: A generic yellow jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ffe14d" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ffe14d" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#ffe14d" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ffe14d" + - state: trinkets-equipped-INNERCLOTHING + +# Purple Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorPurple + name: purple jumpsuit + description: A generic light purple jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#9f70cc" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#9f70cc" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#9f70cc" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#9f70cc" + - state: trinkets-equipped-INNERCLOTHING + +# Light Brown Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorLightBrown + name: light brown jumpsuit + description: A generic light brown jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#c59431" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#c59431" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#c59431" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#c59431" + - state: trinkets-equipped-INNERCLOTHING + +# Brown Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorBrown + name: brown jumpsuit + description: A generic brown jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#a17229" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#a17229" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#a17229" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#a17229" + - state: trinkets-equipped-INNERCLOTHING + +# Maroon Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformJumpsuitColorMaroon + name: maroon jumpsuit + description: A generic maroon jumpsuit with no rank markings. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#cc295f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#cc295f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#cc295f" + - state: trinkets-inhand-right + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#cc295f" + - state: trinkets-equipped-INNERCLOTHING + +# Rainbow Jumpsuit +- type: entity + parent: ClothingUniformBase + id: ClothingUniformColorRainbow + name: rainbow jumpsuit + description: A multi-colored jumpsuit! + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 5573deb314..50d84e30eb 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -263,15 +263,34 @@ sprite: Clothing/Uniforms/Jumpskirt/brigmedic.rsi - type: entity - parent: ClothingUniformSkirtBase + parent: ClothingUniformBase id: ClothingUniformJumpskirtPrisoner name: prisoner jumpskirt description: Busted. components: - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + layers: + - state: icon + color: "#ff8300" + - state: prisoner-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8300" + - state: prisoner-inhand-left + right: + - state: inhand-right + color: "#ff8300" + - state: prisoner-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/prisoner.rsi + sprite: Clothing/Uniforms/Jumpskirt/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8300" + - state: prisoner-equipped-INNERCLOTHING - type: SuitSensor controlsLocked: true randomMode: false @@ -279,8 +298,8 @@ - type: Tag tags: - ClothMade - - WhitelistChameleon - PrisonUniform + - WhitelistChameleon - type: entity parent: ClothingUniformSkirtBase @@ -359,184 +378,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/warden.rsi -# COLORS - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorGrey - description: A tasteful grey jumpskirt that reminds you of the good old days. - name: grey jumpskirt - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/grey.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBlack - name: black jumpskirt - description: A generic black jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/black.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/black.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBlue - name: blue jumpskirt - description: A generic blue jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/blue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/blue.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorGreen - name: green jumpskirt - description: A generic green jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/green.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/green.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorOrange - name: orange jumpskirt - description: "Don't wear this near paranoid security officers." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/orange.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/orange.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorPink - name: pink jumpskirt - description: "Just looking at this makes you feel fabulous." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/pink.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/pink.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorRed - name: red jumpskirt - description: A generic red jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/red.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/red.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorWhite - name: white jumpskirt - description: A generic white jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/white.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/white.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorYellow - name: yellow jumpskirt - description: A generic yellow jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/yellow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/yellow.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorDarkBlue - name: dark blue jumpskirt - description: A generic dark blue jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorTeal - name: teal jumpskirt - description: A generic teal jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/teal.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/teal.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorPurple - name: purple jumpskirt - description: A generic purple jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorDarkGreen - name: dark green jumpskirt - description: A generic dark green jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorLightBrown - name: light brown jumpskirt - description: A generic light brown jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorBrown - name: brown jumpskirt - description: A generic brown jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/brown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/brown.rsi - -- type: entity - parent: ClothingUniformSkirtBase - id: ClothingUniformJumpskirtColorMaroon - name: maroon jumpskirt - description: A generic maroon jumpskirt with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpskirt/Color/maroon.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpskirt/Color/maroon.rsi - - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtLibrarian diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 5eba391786..ec160b54cb 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -458,9 +458,28 @@ description: Busted. components: - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#ff8300" + - state: prisoner-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#ff8300" + - state: prisoner-inhand-left + right: + - state: inhand-right + color: "#ff8300" + - state: prisoner-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/prisoner.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + clothingVisuals: + jumpsuit: + - state: equipped-INNERCLOTHING + color: "#ff8300" + - state: prisoner-equipped-INNERCLOTHING - type: SuitSensor controlsLocked: true randomMode: false @@ -592,195 +611,6 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/warden.rsi -# COLORS - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorGrey - description: A tasteful grey jumpsuit that reminds you of the good old days. - name: grey jumpsuit - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/grey.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBlack - name: black jumpsuit - description: A generic black jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBlue - name: blue jumpsuit - description: A generic blue jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/blue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/blue.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorGreen - name: green jumpsuit - description: A generic green jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/green.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/green.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorOrange - name: orange jumpsuit - description: "Don't wear this near paranoid security officers." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/orange.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/orange.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorPink - name: pink jumpsuit - description: "Just looking at this makes you feel fabulous." - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/pink.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/pink.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorRed - name: red jumpsuit - description: A generic red jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/red.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/red.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorWhite - name: white jumpsuit - description: A generic white jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/white.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/white.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorYellow - name: yellow jumpsuit - description: A generic yellow jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/yellow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/yellow.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorDarkBlue - name: dark blue jumpsuit - description: A generic dark blue jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorTeal - name: teal jumpsuit - description: A generic teal jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/teal.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/teal.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorPurple - name: purple jumpsuit - description: A generic purple jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorDarkGreen - name: dark green jumpsuit - description: A generic dark green jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorLightBrown - name: light brown jumpsuit - description: A generic light brown jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorBrown - name: brown jumpsuit - description: A generic brown jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/brown.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/brown.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformJumpsuitColorMaroon - name: maroon jumpsuit - description: A generic maroon jumpsuit with no rank markings. - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/maroon.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/maroon.rsi - -- type: entity - parent: ClothingUniformBase - id: ClothingUniformColorRainbow - name: rainbow jumpsuit - description: A multi-colored jumpsuit! - components: - - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi - - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/rainbow.rsi - - type: entity parent: ClothingUniformBase id: ClothingUniformOveralls diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml index 88278077b5..e113f0ffc7 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/random_suit.yml @@ -10,9 +10,9 @@ - type: Sprite sprite: Clothing/Uniforms/procedural.rsi layers: - - state: base_torso_standart + - state: base_torso_standard map: [ "torso" ] - - state: base_leg_standart + - state: base_leg_standard map: [ "leg" ] - state: mask_null map: [ "decor" ] @@ -24,9 +24,9 @@ sprite: Clothing/Uniforms/procedural.rsi clothingVisuals: jumpsuit: - - state: base_torso_standart + - state: base_torso_standard map: [ "torso" ] - - state: base_leg_standart + - state: base_leg_standard map: [ "leg" ] - state: mask_null map: [ "decor" ] @@ -42,7 +42,7 @@ offset: 0 prototypes: - ClothingUniformRandomArmless - - ClothingUniformRandomStandart + - ClothingUniformRandomStandard - ClothingUniformRandomBra - ClothingUniformRandomShorts - ClothingUniformRandomShirt @@ -57,7 +57,7 @@ - torso: base_torso_armless: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -76,16 +76,16 @@ - type: entity parent: ClothingUniformRandom - id: ClothingUniformRandomStandart + id: ClothingUniformRandomStandard name: colorful costume components: - type: RandomSprite available: - torso: - base_torso_standart: Sixteen - base_torso_standart2: Sixteen + base_torso_standard: Sixteen + base_torso_standard2: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -100,15 +100,15 @@ decor_torso_armless8: Sixteen decor_torso_armless9: Sixteen decor_torso_armless10: Sixteen - decor_torso_standart1: Sixteen - decor_torso_standart2: Sixteen - decor_torso_standart3: Sixteen - decor_torso_standart4: Sixteen - decor_torso_standart5: Sixteen - decor_torso_standart6: Sixteen - decor_torso_standart7: Sixteen - decor_torso_standart8: Sixteen - decor_torso_standart9: Sixteen + decor_torso_standard1: Sixteen + decor_torso_standard2: Sixteen + decor_torso_standard3: Sixteen + decor_torso_standard4: Sixteen + decor_torso_standard5: Sixteen + decor_torso_standard6: Sixteen + decor_torso_standard7: Sixteen + decor_torso_standard8: Sixteen + decor_torso_standard9: Sixteen mask_null: "" - type: entity @@ -121,7 +121,7 @@ - torso: base_torso_bra: Sixteen leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -143,7 +143,7 @@ - torso: mask_null: "" leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen base_leg_skirt: Sixteen base_leg_skirt_long: Sixteen @@ -159,11 +159,11 @@ base_torso_armless: Sixteen mask_null: "" leg: - base_leg_standart: Sixteen + base_leg_standard: Sixteen base_leg_short: Sixteen decor: base_torso_shirt: Sixteen overlay: decor_torso_shirt1: Sixteen decor_torso_shirt2: Sixteen - decor_torso_shirt3: Sixteen \ No newline at end of file + decor_torso_shirt3: Sixteen diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml index d7a5e2b787..ad02f4aa67 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/specific.yml @@ -8,9 +8,28 @@ - type: Tag tags: [] # ignore "WhitelistChameleon" tag - type: Sprite - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi + sprite: Clothing/Uniforms/Jumpsuit/color.rsi + layers: + - state: icon + color: "#3f3f3f" + - state: trinkets-icon + - type: Item + inhandVisuals: + left: + - state: inhand-left + color: "#3f3f3f" + - state: trinkets-inhand-left + right: + - state: inhand-right + color: "#3f3f3f" + - state: trinkets-inhand-right - type: Clothing - sprite: Clothing/Uniforms/Jumpsuit/Color/black.rsi + sprite: Clothing/Shoes/color.rsi + clothingVisuals: + shoes: + - state: equipped-FEET + color: "#1d1d1d" + - state: soles-equipped-FEET - type: SuitSensor randomMode: false mode: SensorOff diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 46a4dcaf7d..852fe020d3 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -66,6 +66,8 @@ - ClothingUniformJumpsuitPirate - ClothingShoesBootsCowboyFancy - ClothingHeadHatCowboyBountyHunter + - ClothingNeckAutismPin + - ClothingNeckGoldAutismPin rareChance: 0.01 prototypes: - Lighter diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 5263fefd44..9489fda5f0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -114,11 +114,16 @@ description: Horrifying. components: - type: SpamEmitSound + minInterval: 2 + maxInterval: 12 sound: collection: BikeHorn - type: Sprite sprite: Mobs/Silicon/Bots/honkbot.rsi state: honkbot + - type: HTN + rootTask: + task: HonkbotCompound - type: Slippery launchForwardsMultiplier: 2 - type: Speech diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index c7cd40988d..ae4a370f9d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -66,7 +66,7 @@ mask: - FlyingMobMask layer: - - FlyingMobLayer + - Opaque - type: Damageable damageContainer: Biological - type: MobState @@ -86,6 +86,8 @@ animation: WeaponArcFist attackRate: 1.8 autoAttack: true + soundHit: + collection: Punch damage: types: Blunt: 20 @@ -227,6 +229,8 @@ angle: 30 animation: WeaponArcFist attackRate: 1.8 + soundHit: + collection: BikeHorn damage: types: Blunt: 5 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml index 06009b4d2f..1aeef4f066 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/Vapes/vape.yml @@ -5,5 +5,5 @@ description: "Like a cigar, but for tough teens. (WARNING:Pour only water into the vape)" components: - type: Sprite - sprite: Objects/Consumable/Smokeables/Vapes/vape-standart.rsi - state: icon \ No newline at end of file + sprite: Objects/Consumable/Smokeables/Vapes/vape-standard.rsi + state: icon diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 58457ebb7f..c6cc598f26 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -15,6 +15,7 @@ map: ["enum.PaperVisualLayers.Stamp"] visible: false - type: Paper + - type: PaperLabelType - type: ActivatableUI key: enum.PaperUiKey.Key closeOnHandDeselect: false @@ -143,6 +144,8 @@ - state: paper_stamp-generic map: ["enum.PaperVisualLayers.Stamp"] visible: false + - type: PaperLabelType + paperType: CaptainsPaper - type: PaperVisuals headerImagePath: "/Textures/Interface/Paper/paper_heading_captains_thoughts.svg.96dpi.png" backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" @@ -160,19 +163,21 @@ sprite: Objects/Misc/bureaucracy.rsi layers: - state: paper - color: "#f7e574" + color: "#9ef5ff" - state: paper_words map: ["enum.PaperVisualLayers.Writing"] - color: "#f7e574" + color: "#9ef5ff" visible: false - state: paper_stamp-generic map: ["enum.PaperVisualLayers.Stamp"] visible: false + - type: PaperLabelType + paperType: Invoice - type: PaperVisuals backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" contentImagePath: "/Textures/Interface/Paper/paper_content_lined.svg.96dpi.png" - backgroundModulate: "#f7e574" - contentImageModulate: "#f7e574" + backgroundModulate: "#9ef5ff" + contentImageModulate: "#9ef5ff" backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 contentMargin: 16.0, 16.0, 16.0, 16.0 headerImagePath: "/Textures/Interface/Paper/paper_heading_cargo_invoice.svg.96dpi.png" @@ -184,6 +189,29 @@ name: bounty manifest description: A paper label designating a crate as containing a bounty. Selling a crate with this label will fulfill the bounty. components: + - type: Sprite + sprite: Objects/Misc/bureaucracy.rsi + layers: + - state: paper + color: "#f7e574" + - state: paper_words + map: ["enum.PaperVisualLayers.Writing"] + color: "#f7e574" + visible: false + - state: paper_stamp-generic + map: ["enum.PaperVisualLayers.Stamp"] + visible: false + - type: PaperLabelType + paperType: Bounty + - type: PaperVisuals + backgroundImagePath: "/Textures/Interface/Paper/paper_background_default.svg.96dpi.png" + contentImagePath: "/Textures/Interface/Paper/paper_content_lined.svg.96dpi.png" + backgroundModulate: "#f7e574" + contentImageModulate: "#f7e574" + backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 + contentMargin: 16.0, 16.0, 16.0, 16.0 + headerImagePath: "/Textures/Interface/Paper/paper_heading_cargo_invoice.svg.96dpi.png" + headerMargin: 0.0, 12.0, 0.0, 0.0 - type: CargoBountyLabel - type: StaticPrice price: 0 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 2c48ef5da0..0656621465 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -17,8 +17,8 @@ visible: false - state: open_overlay map: ["enum.StorageVisualLayers.Door"] - - state: label_overlay - map: ["enum.BodyBagVisualLayers.Label"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Objects/Specific/Medical/Morgue/bodybags.rsi state: bag @@ -62,9 +62,15 @@ - type: GenericVisualizer visuals: enum.PaperLabelVisuals.HasLabel: - enum.BodyBagVisualLayers.Label: + enum.PaperLabelVisuals.Layer: True: {visible: true} False: {visible: false} + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } enum.FoldedVisuals.State: foldedLayer: True: {visible: true} diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml index 4abeea3812..c38868b399 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml @@ -1,4 +1,4 @@ -- type: entity +- type: entity id: CrateArtifactContainer parent: BaseStructureDynamic name: artifact container @@ -24,6 +24,8 @@ - state: locked map: ["enum.LockVisualLayers.Lock"] shader: unshaded + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: InteractionOutline - type: Physics - type: Fixtures @@ -73,6 +75,23 @@ - type: EntityStorageVisuals stateDoorOpen: artifact_container_open stateDoorClosed: artifact_container_door + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } + enum.StorageVisuals.Open: + enum.PaperLabelVisuals.Layer: + True: { offset: "0.0,0.3125" } + False: { offset: "0.0,0.0" } + - type: LockVisuals - type: ItemSlots - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 311a5d5106..96aff6df98 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -21,7 +21,7 @@ maxAngle: 16 fireRate: 8 angleIncrease: 3 - angleDecay: 16 + angleDecay: 16 selectedMode: FullAuto availableModes: - SemiAuto @@ -95,6 +95,11 @@ - type: Clothing sprite: Objects/Weapons/Guns/SMGs/c20r.rsi - type: Gun + shotsPerBurst: 5 + availableModes: + - SemiAuto + - Burst + - FullAuto soundGunshot: path: /Audio/Weapons/Guns/Gunshots/c-20r.ogg - type: ChamberMagazineAmmoProvider @@ -222,9 +227,16 @@ - type: ChamberMagazineAmmoProvider boltClosed: null - type: Gun - fireRate: 5 + fireRate: 5.5 + minAngle: 1 + maxAngle: 6 + angleIncrease: 1.5 + angleDecay: 6 selectedMode: FullAuto + shotsPerBurst: 5 availableModes: + - SemiAuto + - Burst - FullAuto - type: ItemSlots slots: diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index c3fbb998b2..dcaa3d747a 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -4,6 +4,12 @@ components: - type: StationData +- type: entity + id: BaseRandomStation + abstract: true + components: + - type: StationRandomTransform + - type: entity id: BaseStationCargo abstract: true diff --git a/Resources/Prototypes/Entities/Stations/nanotrasen.yml b/Resources/Prototypes/Entities/Stations/nanotrasen.yml index ab885b03e5..7e650d536f 100644 --- a/Resources/Prototypes/Entities/Stations/nanotrasen.yml +++ b/Resources/Prototypes/Entities/Stations/nanotrasen.yml @@ -25,6 +25,7 @@ - BaseStationSiliconLawCrewsimov - BaseStationAllEventsEligible - BaseStationNanotrasen + - BaseRandomStation noSpawn: true components: - type: Transform diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index fa029c035a..2caa4010ca 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -53,18 +53,6 @@ components: - type: StorageFill contents: - - id: ClothingUniformRandomArmless - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomStandart - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomBra - prob: 0.05 - orGroup: dressermainloot - - id: ClothingUniformRandomShorts - prob: 0.05 - orGroup: dressermainloot - id: ClothingNeckLGBTPin prob: 0.06 orGroup: dressermainloot diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml index 403e20b43c..95580292d9 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/base_structurecrates.yml @@ -21,6 +21,9 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: InteractionOutline - type: Physics - type: Fixtures @@ -55,6 +58,18 @@ - type: EntityStorageVisuals stateDoorOpen: open stateDoorClosed: closed + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } - type: PaperLabel labelSlot: insertVerbText: Attach Label @@ -106,6 +121,9 @@ - state: locked map: ["enum.LockVisualLayers.Lock"] shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: Damageable damageContainer: StructuralInorganic damageModifierSet: StructuralMetallic diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index e55612d2c4..8d8eec9538 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -138,6 +138,9 @@ map: ["enum.StorageVisualLayers.Base"] - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + map: ["enum.PaperLabelVisuals.Layer"] - type: Construction graph: WebStructures node: crate @@ -320,6 +323,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.25,0.625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/livestock.rsi state: base @@ -371,6 +378,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.125" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/cage.rsi - type: Destructible @@ -424,6 +435,10 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,-0.09375" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/piratechest.rsi state: crate_icon @@ -449,6 +464,8 @@ - state: welded visible: false map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/toybox.rsi state: crate_icon @@ -465,6 +482,8 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/coffin.rsi state: base @@ -503,6 +522,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.28125,0.625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/wooden_grave.rsi state: base @@ -547,6 +570,10 @@ - state: base - state: closed map: ["enum.StorageVisualLayers.Door"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.3125,0.5625" + map: ["enum.PaperLabelVisuals.Layer"] - type: Icon sprite: Structures/Storage/Crates/stone_grave.rsi state: base @@ -571,6 +598,17 @@ sprite: Structures/Storage/Crates/trashcart.rsi - type: Sprite sprite: Structures/Storage/Crates/trashcart.rsi + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] - type: entity parent: CrateBaseSecure @@ -581,6 +619,20 @@ sprite: Structures/Storage/Crates/trashcart_jani.rsi - type: Sprite sprite: Structures/Storage/Crates/trashcart_jani.rsi + layers: + - state: base + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "0.0,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] - type: AccessReader access: [["Janitor"]] diff --git a/Resources/Prototypes/Maps/debug.yml b/Resources/Prototypes/Maps/debug.yml index 15561da2c1..c35a83fa17 100644 --- a/Resources/Prototypes/Maps/debug.yml +++ b/Resources/Prototypes/Maps/debug.yml @@ -24,6 +24,9 @@ Dev: stationProto: StandardNanotrasenStation components: + - type: StationRandomTransform + enableStationRotation: false + maxStationOffset: null - type: StationBiome - type: StationNameSetup mapNameTemplate: "Dev" diff --git a/Resources/Prototypes/Maps/europa.yml b/Resources/Prototypes/Maps/europa.yml index a47a63bdfa..fb9c15cad5 100644 --- a/Resources/Prototypes/Maps/europa.yml +++ b/Resources/Prototypes/Maps/europa.yml @@ -8,6 +8,9 @@ # Europa: # stationProto: StandardNanotrasenStation # components: +# - type: StationRandomTransform +# enableStationRotation: false +# maxStationOffset: null # - type: StationNameSetup # mapNameTemplate: '{0} Europa {1}' # nameGenerator: @@ -61,3 +64,4 @@ # Mime: [ 1, 1 ] # Musician: [ 1, 1 ] # Reporter: [ 1, 1 ] +# diff --git a/Resources/Prototypes/Maps/train.yml b/Resources/Prototypes/Maps/train.yml index 7673213dc1..244652e08b 100644 --- a/Resources/Prototypes/Maps/train.yml +++ b/Resources/Prototypes/Maps/train.yml @@ -8,6 +8,8 @@ # Train: # stationProto: StandardNanotrasenStation # components: +# - type: StationRandomTransform +# enableStationRotation: false # - type: StationNameSetup # mapNameTemplate: 'Train "Sentipode" {0}-{1}' # nameGenerator: diff --git a/Resources/Prototypes/NPCs/honkbot.yml b/Resources/Prototypes/NPCs/honkbot.yml new file mode 100644 index 0000000000..c9c925ac49 --- /dev/null +++ b/Resources/Prototypes/NPCs/honkbot.yml @@ -0,0 +1,6 @@ +- type: htnCompound + id: HonkbotCompound + branches: + - tasks: + - !type:HTNCompoundTask + task: IdleCompound diff --git a/Resources/Prototypes/Procedural/dungeon_configs.yml b/Resources/Prototypes/Procedural/dungeon_configs.yml index 9e8d3a4409..3614e4e787 100644 --- a/Resources/Prototypes/Procedural/dungeon_configs.yml +++ b/Resources/Prototypes/Procedural/dungeon_configs.yml @@ -292,11 +292,11 @@ - !type:JunctionPostGen width: 1 entities: - - AirlockHydroGlassLocked + - AirlockGlass - !type:JunctionPostGen entities: - - AirlockHydroGlassLocked + - AirlockGlass - !type:AutoCablingPostGen diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index 6d69010a0c..7dc43f5f33 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -82,7 +82,7 @@ - type: latheRecipe id: Vape icon: - sprite: Objects/Consumable/Smokeables/Vapes/vape-standart.rsi + sprite: Objects/Consumable/Smokeables/Vapes/vape-standard.rsi state: icon result: Vape completetime: 2 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/equipped-HAND.png deleted file mode 100644 index 61a4591b67f275dd2adb14506f47f4ddd35e6d85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU~KSoaSW-L^LEz8tV013ZvR`B zIlnA;`RLJQkvqG}&N9z^oOIJqZk}%Ty|ceh#fkNM z-e-P(bXDoQYp+VucK@BdS8ra`d&TST?=l`gd<-Zwb2f`-dR|hg)#k^E!X>tQ>n>;q zm}am3tM{UD>;1^9Yns>bKArShy|%vV+0jjVx9?u?_PU{d*xUA6zFYt5x7Ou1{6BZ~ zKNn61;dgTJx0(Z*`_8}Fe(%481JHcgWQ||9Z!Nzz+e*AvPBDwU#Q68hV#DqIUf-W4 zpI3I-&lI|O+uH9NxAz~r_S^Bf;G$!X4UK<$8$GdUI>(MJXyVPk&%f5aH@OQKB@CXf KelF{r5}E**RmO7w diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/icon.png deleted file mode 100644 index 5904f18aff2c1800bbc31a94c027953d4c1f4bfa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmV-!0g?WRP)`c=!JwH2xgi^kA0AO5~Eh`QXp&TECf*?;p*UwvBwo$^dQJ3vY53vAX z{>@m75sNV-#0vnJL%|V)kZ~oYuv(E24!}3JT8T=^APD3=?zap&9>ZW`7_&RzHm0mim1MTt@m?559X;wyuFBU(Wj3N7l$6BU&QJE0|_7jB!JTao^06~eC8i|d;kCd M07*qoM6N<$g1d{FcmMzZ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-left.png deleted file mode 100644 index 6c05483432b2ef45fdb44cd64ddcb926e744f0d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVASz+aSW-L^Y)f)UbBJ7fsfDg z1iin-DKL90yZXcywY;%&@SDQCp}0k7o|4KQg964fvF?dJF0Nmkdvim>{_p2~lRmrM z_Gc&1KoD?9`1#T3Z|a}&kRC_=<+oLog2G#^=Hy-0JH4dX@7ThL->Uu<`rZF=pTjDm zZjVp?`uF|M&sp9~y}2qr^4a`zuciO@Ob=krysIbnf9g5Qi@RcTGw=UMXZ38j_BN$j zd2Vs{_s17H-kx2x|LxgFF~5)f=9t8ATl!|sccb}ND=*5Q&yIYSb??&bw{;hvNxxV2 zV7m1>vey}?4d@7=iAV3xv0t%{E4BLb3t=reh;xDD|JL)iiIc*86koGX@^a|;)tK;= wapTcd@*YZzhCm??hcmw#RfHV=GBCIlvFop65`F(xXf{ZmdKI;Vst0LgZnr~m)} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/inhand-right.png deleted file mode 100644 index 1b786b19c778f563c5d7b7a691ef13a0ba6e2b54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVAS?>aSW-L^Y)g0U$cYA@sH*^ z*n;-+4< z`@2Au+yDRAb3Z)l^ttcxaRSF1r@BT=x^FBV81hYQe{iO5U`W(<)oIVZpLw*%Z|S97 z<~wtXG+%vrs^~g5>T7(&JQHPGjHY%vz;MP z-qTvVT&k{`@Sm9!AX-{AKbiabXJ&{q85njPURHc)rCp@0lgo<~JPt!0;|_AIt8|-QM5JG+qWcDaWV_2~WHib71m`@~~U? z4xh~R_>sRQM(^#cmlv5#xE#1IXfWtHEN0lk(93iIi$HU-{JG7YyZ7(j`dw?&dEaDy zfBnGg%;K9@O7pl+Q#*IhF6`TnKesCRch)`U)3_e(Eu3Ds{=KT~_g_HCQ(v#WuBxhC zAFiMuwYt2He@%Jx>F#Tz$rEm$ zKlSf)`#g7!I@V8%wk})aly5KX8#%W`PBFtq&S>*~mF08XFZ^VPYH(xBV3cBAz?vb_ gAhsY7DDaG1mdKI;Vst07Oc@e*gdg diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/icon.png deleted file mode 100644 index 20d3129452506730f2650b3b2bea2ba3f2b5fbb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmV-z0h0cSP)O!3ikgmk&{r2 z1?Y3hc^4ya1p%7925%8EaE1>wtyu0HL{cptPx?AeeW%KML%43PX)?Ebc(qR3Qi_ zE}eDjK+V(Qb3Rp`&z?GO%@46f8s^)1?;YwqHS`>l{_7qU_l$(uiErmc`s&nCr zLQ$@W>kHiaFcD%45P;$HNMLDE8&VBUDi7#;l;k~Hl)Oht-y@*BQlJ&$6om#FWhm96w3}AjnymdF zOYF0qi;a9D000000002s*?zkk{xbeMD#W0N-DVIGDXT^ucAFtdmtsvPrnhpw-hQ0Z zHU2le4z}N}hWC&4{n?sMl5{!icRXDl&g&ZgiZ@>a6?ryU{4>^cQsmieOS{Iu%1Z)@ zJR5Y~iZ$Kjz3Hv!x}EjcbvrrNuJJCsBtX}#q>DtxvpO#N>v=t%E^6G;=^~l5xyHNj zl7RE|rc7_enoi29Q6e(=o8t$SRikv>-uw892LJ#7000000Kk9Ya!(lL6_d~Ufv6G? zqJF?zeL!fT>Ib4oK*;)mC=w8|ejthjP(J_wfqVj84+YFE_8z?e0000SybX&s>}yU&y=n*LiiB zY2@{=u02&19uvdk{)#_)(tpQcQ^(P_qT658?VqC;{?u+|ieU9u{TY+(i-b#ak7g-n zhG_|AhF-QcIO`Sqzopr0I!#!3IG5A diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/brown.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/equipped-HAND.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/equipped-HAND.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/equipped-HAND.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d01ea7d91292102395208b47e8212a040487dbc0 GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCikh0(?STOG`_S9Xs~_|9_x>U1n=8NL@*gUoc3-L2Km~AfL0qBeIx*f$uN~ zGak=hkpdK);OXKRV&VUGBDYY30*8y^`}*fM_!oy6$1adnO_@JUHA!d?c!>W?R0 zx}@b@wOuM~dF({#39mN_PQ720W6t|=Ow)tNM bljp3499#xPBA$jow=sCS`njxgN@xNA%xh)J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-left.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/inhand-right.png rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json similarity index 89% rename from Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json rename to Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json index 88e3ebd509..7a0bf77e1b 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/blue.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and modified by Flareguy for Space Station 14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/equipped-HAND.png deleted file mode 100644 index 92fd0f3d729ae90bb869e93263087a9cb5724c6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU@Z1@aSW-L^LCbD-XQ}Cw|Xyg zZ%O0dB6GUt8dsd3x7fmXxx=Yx2b-6kc^9y8=@FI}t51D*6FTni?=~^%eOuy&@@LIr z3j!IU8r&E&7^PSjux5xfU=jGar_`_|fUmtdR!@BP^P7FgALqSojJ+=Ud`{*2w>5UR zUzSA4I-lFWiz&$K+1~BTGFL5`z0C0a-lbDky<7f#{V(pG#~GH-SFt~vlPhz4Rdsgd z(?7en_AgRwc{FErR9*P4b=se8?6>@>&;ECn;s4z2_1qc^x(^n9JABC^m{@(9!dmH~;_ZuPy z-c+Bjo3(81;rYi*e7D_yf7Wt)=AUJ6Kk8P0TmNL@XAUcQY&O?0)`ZU4zf`JV888+Y NJYD@<);T3K0RX}DxWE7a diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/icon.png deleted file mode 100644 index 10fc55c579aa2b586a4ab6a171555991d5d57980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmV-c0jd6pP)5r|`jZunn_$lN>#V4_+hhWJDcIN!2Pn@ShN|{eK_>+4g-;ck1s}_XV&3 z7Qin6JU&&3hz=W?_s>Ljl&&io2mur6_3ukh$LpNv8^#8p7JVytppKI z-L0yLnNz#ck*t=7=&5@Oy!p({=C{^ESY2P|;gi}1iOhR_AtI+(t2bJ}%Ztb-zWeAz oy7U-*L%07AEPw^D0B#5P2ah`!|Nr~MrvLx|07*qoM6N<$g5+Y7Bme*a diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-left.png deleted file mode 100644 index cfbe7a4066ba810171e1440a5e73aa7756cdda6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC436aSW-L^Y+%p+@lHt4G)!* z0}R@)FHGV&A`!BtxH#aBl;6|k5q0{3atltJ`d?}$^T0S{4hK*_2>6I4-}!I!&pPku z0?X&IE=#67Dmu6Od)yhHs`r*G$i~UpFmve|+Cmm2vB}*wCYA{N7i;U$koazg1OM*B5_OUZ&y@s@kG( zJknO|@7F!crrg=M)R|-Xwu?UmgM}_c74I!KG}c^dA!zyc?BixHO}|k2+O(t05a%&4 zJlHR>Q+>}<(aUFkHAbr@xc)t`FVdQ&MBb@07Y(&yZ`_I diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/inhand-right.png deleted file mode 100644 index 1878f635198eab8cc150514f86e858a354cc61b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVC3_3aSW-L^Y+%p-WCIa)`yKo zGCTNgDHcgiJ6+&n9o*iW+05-1r@LK;-Mir1%l}Fnaw?<}h59*wCV;>ngY%z%U6*`k zamxM;?=gvR!HH8Y2_(nNElx@c@|u_$S$2KP6R&?~&)S@SZQ|QsZ7lr!&S`EZ4qvf{ zlm8^|Jz<$Iwm&&-QgL3Mcg?K&HQk}1XL5{pPElI*>ytoe?yLO;>i;9y_k0if?iKrG zPrMU{^WP+@KkXdn z`d=?PR(${0m_Gf`w|n**(*M+++J5gh`#sCh1|ZcpN6X>;UuJhd(T30E3_q6dWB76K V-*o-%)&(F#JYD@<);T3K0RVebkMRHi diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/gray.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/equipped-HAND.png deleted file mode 100644 index 089be844882a42464b7e85d545cc47f1fa2655da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 471 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV4Uaa;uumf=j|**|3eNk?)9P4 z$ps3Ag2HNL=Jrg5r5}Y$(l1PGdC$-+-8}!mQtcT6-}2sVns8&2fyWUBOZLatE<_!e ze&T=cmh$hPidtH%^9>|2=36dc&Cp@cbx3B+V3gu^;Jy&S5Y=#u=>n69ScBMtjSO2D zdRc)=`mWi&X=&WOXYYmApBLVq(q+NAXe z?%MoCa}5gKEt!)2`|pK!rgOd<-p=^_|LU)qjQ^~w|7$1UcN=c!|153rli0EEe#za$ z)1`+FEVaGg7xn8_=KRuj-Rs|Hue6I4xy5)t{hRjGQ&*J^Z}(am6S_9;kDb%Q^$tR3 zO=tIY^WB%){4&DRMBirLg^v{zjeo~(I$6uITOM05ofS8{x{$+@UDzEMVGN$GelF{r G5}E+N9nNzA diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/green.rsi/icon.png deleted file mode 100644 index 9c84c803b921249149ed76e680b68335f3c1db72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)U5JktUR4Au#m4XI(4#7z{3n$?UNa^E-g36~rv}^%m?D5$0Mv2(Mzd~p{{|$T_ z#5j&{rG74T&j1-91N;Yo+ou{0Q@7!DTlV5B03nlM>NZ&wXPxS{R0xrJ6jKweR%pv! znEUs~S-i}k)#`!11%OkBOuYL<`uU221Obe3Q-|pgB35I8a1iV+7^ZHMO`X&@RkEp_ z3;)#?gCWLvZOeTH zcBpI+ra78ZF0Ix*`A4m7EUUs>X8>>#SrvY|ml^c)1*8--z0o zK9y7P_WJlR^dj5cx?OqxbllMRXS~Gf$aM8`@?RNxFYVWOE-0RTz5K$7~t&?KEk&nB2oAms?>hi4aN4nT=7XL!yL&P}&$4>cn6d8Ka zRdb!#Y&Y)<(p96pb&ocY;sF2v00000008h`guD}G`NR~nejuv^q^KW=Rv(aBs``N} q5|FZfAd3W~tRKiC0n`rwKqBuEyy$NHpwQ0%0000yk-M|10N43 zPg$ODs_l}lQ|*j5Q~&5p+w?p!;0Rk%@~2>hFslIbC5lt}7nXhf@0;-RLCL1QKU{!D zfxrXyTF+hk&n0%R{IhtYW3hFql9JU~WgxxDzQbhejZLDT1ACACNb&r~um5XO$;aQf zYZt6^{nox*{>775se;#@tiRK|@?8JH^(I?qyn1tYTEy)AMF-8ae|7N!waymxzrP{! z;nkfRRO_FzJ$mf7@B69n3kCaMJdxU|Dk@(dHjKsckp{5^fecs#(*7@>o%mpP_h;kk zntz+lZx7$SXP@rUy&LZ5?reT6oNach?Ei<9aP#t&$tQjWhab@CT6`x)8kiO|HN}&V`|mf3zaQ*<{zlowCQQdyz(E%BK)4Wo>P8uOYZ#U^!>hF ibKEcd#1=Boq@S#s@3lboS|~7{7(8A5T-G@yGywn^63)5+ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/icon.png deleted file mode 100644 index 09b2d39429fa7a3799d76d394b0b9c73eb1a8ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 369 zcmV-%0gnEOP)F(#bk(N0Lg@&tGaUU zaNWRIJb``%K&zHa`14c#v_wHf05b0SRum_Q*c=}u1QF~4Jq~-@2hC~1| z|7GC10j^sR;s8MAlyJo$W~}N8jKv^?1Mtm_MNoAW1##d1^)9I5ISesZMzgfL79!>QvphZlI?H{FTOnv^Yd4f?dGPQ%*L%wH(6fGMy(+ z@(V;V57mXS2w;!B?(}T<3;;+uh*;vcmyQ&dE~CGQ+y4hLKnBPFw*!0tfKnBNU`P%w P00000NkvXXu0mjfi*co` diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-left.png deleted file mode 100644 index 16e615d22248a5670b2e60dc0fcc6c9e9fa09b97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVAS_?aSW-L^Y)fvf3tzefsfaJ zv;4TZ(|2CXw3U;&%ZlO~ef<0;)v`W$)8sO7=_Vl=vHST4L{1BqmG9how)M{c=L>3c zE4QrjX91cB0yfrfuicG5R`1>_@uliUnUYfBtktg*Z@YHyys>NIs;xzP?$ph>Z2Hf9 z4`11>wY#q#|NZ#pwO*I*pDXUC)z?|A&;Fx*uZA}y?PS8o_>HB?sndG4ZOQ(#dXLJ2 zGn4$p-E!{o+zVeT8apGfK6b{zon^h{4^ z*?YM4IW6MyR%NXPT5WN5Y6s81wEvEUv$SJpxXZ_Xgt!+-{?Lzk$EjX<^vUMBgdk3i zK>G)4?G&~Id}W^O;c((tqo;~O%HIPjLJof!7+8wfD>MJ*HE!fP4$|)F>gTe~DWM4f Dsmh^a diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/lightbrown.rsi/inhand-right.png deleted file mode 100644 index 9ef6856a3713ebea54d3158f8a1b1a702fd49183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)eT000000002M56A7Q{_6}=bmdoVgO|gm77>Z!L|qP>I$X@flv;|) z$ot1<>l&8~$=|p+Zddi|+sp0Vlv={Y{NV-b-O0%!jL9F^i|cvcSp1ABwOr48=eESy z{DEDZrMZ|=HzpUAku1$09+IWGQ~!l2`2#z!oP}cdid}TSU)H;mvY*s)7CQAWn36xR z6N}1-DYZm#qC})oP5ZzoPE?lWw>hrxJwE^d00000004kLTskKlYSa;t@BIV!28H## zf1pk9`;>3K_YXYNs{p?D4|M5O0N?uuy7Vdl=kEaUPkjNkU;S?BJ}>_O0000nn|tTgy{)r!S2qh3Y`*09V#y`G*4Ix$vM;Ip zTJZ0l#LhdXA3Ghe&bN`fty%2GeL;gk*I_Zk7KUD?3rr?l4p;#c zlh4kVda%FvQ#>Q<0@e(X2C)T!3{eekj2Vnl#0mV9QQ%{~F17V;$%W!Vi9a_s-7Q_K zQ#U)`>c!4$EB0Pi?~Tz;*qt7qYxappe`?m|z!x@7@4^+lYNF3Rt8AZsEXz#4L{9Pg ow~BeTznz1g*fgDE#}+d86AdQ|>BsKA42&TLPgg&ebxsLQ0D)r09smFU diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/icon.png deleted file mode 100644 index b879d6144c196938cc619fea8a7105d33d1a9b63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)ST5JgSI0u;=_1Qdu7+^`8Vut}PXfI#vDp2GzTSRw`b#5vC3phTqbuaI;1|Fd<5 zB;z=WD|NdxJpx342=EU8>9>rgPR@AF+DGye0AI+|$+^s5b*htdC`1zaD&B;c1p@17 zU97*^UJGTmpr-(^YhMUmryA~h7sLyI;HvSP17fen1>qprTQGHUu9_mqI8;?ryv>jo z0O8-1?X|GIW+C1H5RQgV0``K_x)90;7Gec(!=2q1Fv9^KIV>fSr{2cDik^#c+S!?IXd9LU3Yl0S))<))hTk3ISj0bK{y^ zQ?7}d3mm;$3qP!Ln>c(C(WbK>9iM`~1;5he{|6#K1c(5a13Uq<;`fVfgVS070000< KMNUMnLSTZmew?5H diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-left.png deleted file mode 100644 index 0ac2935cb1375df1616e6070f71814b5c3b879e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV3hH6aSW-L^Y)f?UbBNh!$ZYK z4AVHCKVZ>g5>4F|^6jRFtNTo@;2$i-e94{63b|b;rhQcAf8Up+{y+TVjmT+t8`Iob zfTn=}Q}(GNf7AY?Cw2S%K6<=CK7M=Pevg=#luOHBU6Y>pe0y$+?0;cLYoIFIy(zyx zZw&41ezW9m&Q7b}G53FDvz%^NcxwODWy!0JLUvl$aRP;GTVABBD7t=CD|z+g*ROj$ z!e4v-UU%(e`CIAt$|qP#ww|&P?dCi3SFDtF~K9{Z+o@G?Hd;ay0 zA0KALMp@pkfVdAx{$aPb@tV^${yW#$9*gU|Vt=Q`yyg{qQ%-;M<~8y=x;cLc he`VgcLY{$v`Tfdcujh$49a|03@9FC2vd$@?2>_R0mS+F} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/orange.rsi/inhand-right.png deleted file mode 100644 index e0241e65fed7a45b1a928e6ca860b74f44d72344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;OqaSW-L^Y)e@Uz34E+e7(7 zj6M^J3z*nblS+y&ZGL&=*ozjPc?+Hk2=hAxu`@fmxE{SR>-)?FnJ1@jD|xBU1T+Z* zbTi+)j!*w_WbvQ4@Z^nqcqH=s{5F2sD&88z;`N?i>GRu*Kf^98+%xI_E7jgw+t`+` z)iX6eE(*BiwtDWw$shdwRk6>xwmI(ho-hkR>Xn@zJnOb+&0tZA6Y-k4vMS(nz2w?5zpYEv8Y9yWD*U{BpiL<=ddi?Q*-%R7E1~tQjH=VhaKpun0W+vwe1>{I27#*{k;Bc6(;&q;*?Y#p%5ay9$#1SvKu; zW!1l!`3_Tja(8wX?=9Hbsq3|D=e)D04WF-1`Ku}QW8vYqQUXT|9%{O-PK?eL&|-M#!B83u(ww{Q8~9_T&a`fZfSj2%_`C%&5Ox=?h( z?akkBomD!_-*r82npJ|gMiaSKB) r(*-6IE(h)l8VtG)iy5{soaLV!w&+`{=lXVF3^91R`njxgN@xNAVW`A7 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/icon.png deleted file mode 100644 index 04f8fb677df43b0195def66debcdd847298254e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP)hZ=2ddYHYifAwn@Whzr7b3g%uNUDZS-j#XDR zrylYGp!p}YsU0@8J0VU0XpReBF$ftKJOinP6T$%4=28nNcoqb~xOU(SJD$Q&V;p;T zz-}rV#FZS)DVWp(#&t2VwsD!)mvsgJD=G8((%qZdVO$rmD-8*AQ3#iur+}LKsTlydjeH+eB7arIW~v;Qd1t5waq^vZpI=5?veOQ-5$TC)Evo>!v+ zWWO?+yv}s-@6z}Vz0JEn?mFZ4`V5ddUNznR;!z5?Q6Ao)jJ?|I8)o1{-S?G08kwY-r3 za7|tyYQ;ZB{pE)jw!V>{;lk+jjo)Vx!xw%A2ZelTzQ5|b<{zjA>GyQ?b6Mw<&;$Te Cr=$D; diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/inhand-right.png deleted file mode 100644 index ceace96792554352266ec4c6bf88ee4ee43e7f4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRuVP)=21J;~b68lIB20)I*Y!`a zGt2i=sl3r254D*m0ssI200000-yFPS{nr_$=*sW3T|DnDwTMU%`_6fHsh6v{6snS} zOyn#7Y+YlLA^9682k%&ayuClp3suQ-HGg@4ciI@)gfaPN`XJw5d%fm`swCfEYtx!A zHovPEhiN2*sv5;vnMjyMFEDx~uwHCMe=B;?^Y`MNHjaL!){CuC|AHy` zU0s-!i4>}mAod**X>?QHFo=C8OruAQDQwRV0000000000U=Ne_35OcBMP&Q@z_USN zZJ!@#GyA>d&i46%pSXRBY@Z+K(yIZs&kuCz)d2S20pOpy0ZN4ZC)eIK+W-In07*qo IM6N<$g2LpW-T(jq diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/purple.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/equipped-HAND.png deleted file mode 100644 index 72465e0ae4784729335ce4fa4f2c763a0c0765c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV65|WaSW-L^LExoze52MZvTVC zOs-mN_#m+ET`gn$vg*_CPXAz9maQ&yuc5WIF=MfBhxzrDot+-}QLj9oSZiOXw%BQ| z^2c23^d-HSoVpH+8MZL=GF@OY;d0=+rf&N=&7#iL42eVW-hvws3#>Z<-OP~K1^ ze0!(Wi$?44+o$G!PwCxRcjfEyjH#k^WpA6e#hq;0KWk6_bnma4?B$IfC%OIAQS|73Uoj0T_dA}W20;2OAoOC zVE)b6mQ`%aNTnkT!S>c=JompzX`tPFs^R7Srxa61a-g#$w z&2Cpn`w4B>9~W}%+M;f^CY3Oyq(5i>H3J!$ad&_3=wgSsn1SIyePXe{#VKvI>0g-_ zdo}d`Vod+axbNpGc?nmhnrr+$N{n`|+1(~GykciKFxkKL5tE!~n=L;`x2LP0%Q~lo FCIFzQoA>|# diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/inhand-right.png deleted file mode 100644 index f8ea1028064ddfa3980c7acb490fa1382c73def2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmV-w0hRuVP)fD7{~GFPP9pr>glRtmb%%hzJiL`>ZUKJsm5096`*Eu1XENsnuG)l6U#MarHnsf zcgy#q;Bp7QJmE0+hyVZp00000zz^s3w)*P~W3=U0O@o)st`ZUP0$*J=yK1_eNs;6d zm6^PMel)JJNuT_+oAY{Gy}iEN?u#Us>2mh)g2nM=5JIDL3X7^hbK7slk*W?(g$i`gq?(fxi|98b!8Qme__s(-xhrvh;P4gmku7l&s89tm?>UjP6A07*qo IM6N<$g2~{gJOBUy diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/icon.png deleted file mode 100644 index a59b2c401dda6279cbf7cdfe29235b238bee10c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv{s5m4S0G(iS9jpRfzO{m@87@Q zO!j{zP>8W4$S;_|;n|HeAg9{X#W6%<;@SR2-opkQEN9so)DQS1?Bfo(S-+ei@b(H} z7RA?=w%@9Ij!*xPt01}M4O_`Zr6^WZ|P|LYp%11ul+R;8Yuz$ED^9r1If&2KKHgHz@nHotNI{JcnY`yWDK3*J86 Q0dxj~r>mdKI;Vst095%^!~g&Q diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json deleted file mode 100644 index 88e3ebd509..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/white.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/equipped-HAND.png deleted file mode 100644 index 6d3662739748b4b35e31a53745ae30a96fb2f4c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV7%<<;uumf=k2VGS%(57-1bkg zb9|@9k*8O-N(U0RmyG|xP3 z{$sA`$*)feHvhPvur=!8teuJ68v+@&F-Wr};AQMwyUSv>eldf^8)Jq8CBNi$i1j@7 zdtT=>Epu~?XF{%3=+aj1=itg6*W=}40e}U%D?l=omwt_ ze<^3%;>PQL*KK7uaO=q*C%qod#J3;+tl@s|pD!*2=m*{!>))uDI>tq+5(_i^UlZr0r#$P`mq` z_3?bCo41a&WR&iDzL}>q^AG2nOG`@9-UG!C`S1Te+nBTW*yGJVjqKlSzIFTU{*K3< m_gy_*a2TY%l&_X)r->H{#o(l`vrLIG@UZ3E!n!yuMLN`Oi;|Qy|~mue>h5!E;?D3{b080qAs2Rm`;Bm%SrEChY2pXwerme_jDj`+kpht7 z*?@77aR|TXF^u{X&;6c6}ulRjJjg_&tv}?%~*`7)E^#%zeIm{>0_wnQB<0pmBSBMKFjcmMYwYKEWU&Cq`-! zY7mW*oDv@gk!8H!>ob1-_^!I$u^(nZ`n~(I8wHJGsY2Jg0N|Ov&h7P8YKEu^IJPO| zXO$I~rIg8~U+p7zse8vZgyAmyKy zCpRrf+AQ&`Sdt{fVKC9*vZ~U*@Em}L!zCN^r-#lgd(>g{FKp@m11o?PzzSgL0KWhX W7ic+n&niX$0000+bjwI diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-left.png deleted file mode 100644 index 5a4586c2f9db66ce39c94ebed1270efcac5713bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU`+FLaSW-L^Y)gbH@N+s*NB<3ES#|C|+KZ6rO|IrZ5#ubghY~=10z_72LB8eqHF~`lynXr``7H zu7B2R%oc=YpNd<^!ywULm9f>DiD6}l-0${E7Dv|p?&z7mhxz#hx7SH?Msu$m!gtDnj& zS3f@cr};Cfr9qxKSC1z?U=24-w<`qaHh|cYf%gdX1r6Ue?EFX zje#M2y7;NEzv~08q^`Us{i$xv)@j?<|47%bx>Kcu1b*>9`lDMkiND}%T3y0&sRv5- z3A*wRX085nz|Z7BYF&c*x&!l1@E6v%a?)?*i3Vhn4~Zp25@A&t;ucLK6TZ CHLS@1 diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/inhand-right.png deleted file mode 100644 index c993e20080e81b9be1785b79b9dcfe1c93245a7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV9fJ$aSW-L^Y)g%H*^snx#tfx5lkPJ$IC$OY<2Ijt@bhbl_xeJYPjdXNyD#9R!63oMbhs?$ zX__%Z!|&aex1$N1TXBZPtgDI&(Gxxe=U>gN!|r)Y>zsC5y0T- L>gTe~DWM4feSElD diff --git a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json deleted file mode 100644 index dd95d95446..0000000000 --- a/Resources/Textures/Clothing/Hands/Gloves/ihscombat.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/55d823b97dda098a1b2ee9edfca7155c753e456e", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HAND", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism-equipped.png new file mode 100644 index 0000000000000000000000000000000000000000..49e264e16eca3145825903ea1270c0e11a205ed4 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBufiR<}hF1enu-enbF{C2y?L|YbLjeM=7ulnBScpHqb|%dy zF9(+0{IC;8M)VbR?o?p6lMQN+m{pHhM zewy)L(CqN{&!=Bng-*L_bX>;n_{^=PsWtwmL%u!E&eH{Ihl76#l}yshG;2=e&-(%r N^mO%eS?83{1OPGQPtE`U literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/autism.png new file mode 100644 index 0000000000000000000000000000000000000000..16a2ce09cd04031d731103e621097c8692e48966 GIT binary patch literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCilo1AIbU-yUU{&G6{|4Tc*)ksCJ{{{PmNl8w|VuGu#2nXwF`K z0!ZEak-;s5sRLB19R9@oGv zYo}cL|3B_`0gLeQ9T(@8FXWvw<%xN1!fVe70&SdIm9IF?65P32Cs5qF<9CEXdeX!Q zgCh(xG}49o60I0@bDIv_|Hsg)f7(A{YgrA8YpCmtBGb)POae$Ug%4;Jy~?B%-?F8@{MGsA`t7l2M-@O1TaS?83{1OT)DcZ>i4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json new file mode 100644 index 0000000000..e82672f071 --- /dev/null +++ b/Resources/Textures/Clothing/Neck/Misc/autismpin.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-NC-4.0", + "copyright": "Terraspark's work", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "autism" + }, + { + "name": "autism-equipped", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism-equipped.png new file mode 100644 index 0000000000000000000000000000000000000000..39560cafa6137a30163dc21a40c90236a5cb00fc GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~8jL($978JN-d@@0bvQtz;bC#n>}6J&)-MxS z*$-Yl==e6|%@gJyGJg9y{TEnRym<8Jl4Hxh1`e*K8?IN%HfCPB^Sbv5>nzO|{|`Pa z$UDdT@6_%Ck7h6N{zFKr9nD`r}4$9MGF`(R$Z ztiVf#UrTPQJ#)+17HSe6wUg0gmgltyvr8FQRkM24yS;_#`sW^z4}0Xl`lH6wlqX&9 zytK_3c-u@3_qx1|mD+KzY4+QWWxprQ*yq#S*!FQSPGt_g$#~T74oJe&)z4*}Q$iB}L{_z* literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png b/Resources/Textures/Clothing/Neck/Misc/goldautismpin.rsi/goldautism.png new file mode 100644 index 0000000000000000000000000000000000000000..22e9102e2ba88321fb0b198bacfdf1fe1c6429e0 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim11AIbUUmRt4bw;UocRBv%n*= zn1O-s5C}7hYIrpO1+zU}978Pp-%cDq z_Qu)Q=5N2f^iO5a$MF6`2J%0C&3O8Fr<)y;lLh}~UoQG`>C>0^^zf_aiymH-2+k@{ zYzeG?JL}E{KZ~<`iVO_%&Ofipz7VCpwshwNg%*jg@dquZZ@Kn#lFK{&l|JY7`qO{b zIehD~X1qT$&HuWY`&aH0TYm^J@%_#HmgeaW zY&_4y7=sYswJ(r-x3 zRm^6y(Hr^`AkTBN-EN7Z2!J$AIiJsTT}K#(H~&Zb{hqq6ky4HV7(9eomfbZ6NRou6 zY1r*{Pt5@~n+;M*+O{19FgO9naR4Za;?8$nx7P;;;9VFRAF#HA&z zJP98-Tf(TJJ%In{h2Z)-Kk_;EoY!o5q3l;O*#)Q@4Cde7cJ|lS z;&b-wFU?=~|h_b4fCTbI2*^?0GqV#{-u+=?C?2cxoulBd+(SKs&Ya&Fmz zReFYQnQMJdzHSe{`mp~;uw}ZpX5`wdMdzH~&Mw{-wR-84wrqFb_YHob;_vrP39?(I zzqI4~zp8pUn7s@KN{qj;>seR4`OU2K-0j7GGueOBPQT-yV_01OV3X{De?Z^uVc(M* UmzI%Re;=gF)78&qol`;+04}|E{{R30 diff --git a/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/black.rsi/inhand-right.png deleted file mode 100644 index d854fb1dc21eeb1d58ca90306a6ab0dcf0cc6b81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Pd!~6Ln`LHy>+njuz^79!;h21 zVj3J&S1_0_x-7CN=}Jd_meT{KkRwkvNH|4U&YrO0)2DiM#qPwG=igMAfcin;$Fn(` zYxnAO%g&WOnmd2{-|sP1@^gyCoF)h~ZN26ani_lEeCtokRa#0(pKabpZ_B-X#rpr( z6%XouN+fST;gQrcd6if8+pkKN>8rO!d7Ugew_M_HwPm`uX5`whANcNaYAo&e{?DZT zUtCY&r+eO-PuE8?LhJ>Sey?xx)TP}0&geex>;w02A8HTy-^6ECf8nc~yO*lOb-sJSx8WtYgMjc%@a zPPh19)gP01S6{Sa$DP%zjt$PwI&=@XF>PSI;lZ$tL7MY`Sb{R+4W=9whUkV~mIUq% z6B%+C&4e0oDmr_ReZ`7>GtNBMWGHcFUSZ0>aIkX8R<~Xe27~T``*WBX{CJ(Uqf3hG zo_>}+zc&1>k%jmEzO#ouPc1uO(RaD;^`ULKJyoFzVyW>nTqVA)+K?+Pd;O?IU+`1? z(}wl7|HQVk?OHgodf&1ln|Hteonw_fe(~GiWm*fZ{wMD|V^e-R_iduZnKSkmzs7u? z%Je6l@1K7F1)lNMWX#KZ?`6yT@AS-8KKJswoHKmXc4U}&?-$?DJ>9_P^;fHgx4*e6 zuWRjNHhaf1V_IwD^S{6RBr4*vqQt)43qR5LiFab@y0GgFd^Wae^Yte!+0dcYt#a^o pNmt$e|Bn|lNBm@%bLVv}^9}B<(qpDZ>w%HW;OXk;vd$@?2>{O0*}nh) diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/icon.png deleted file mode 100644 index 5c9abb0963e3658e0084e1e46e9f823c22e718b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)#dY+5{;5y<_?@=d zZ~_eig8!;n*&i}?e}Cm#W&f^=-TA9}XWa9}d9z*D&h`CVdQ`F9GiX}sJ`FB=-?Ur3 z{=3#q-?iphmE0ZwPxra1W*?K7zig$-Nz3J*VorUIxpwOmP!Ggd5ZS;r_irZeRe6qk n{29?N{y8j;dF(t zrdzioS*`UI!YrNr9xxsWzERN0l^P_zl*Nv`?h3R?2_Rxiq18yo_FqK)bE=sHZ1d+clP}=?!yLKGH2b|XMSPP z?u&U=*UF5pWTx(${*O2H^Zh+;0xZ|Q*LqGebh~LOe0<{~ja519S8VMeCWFYDGp8qC v+V!44<=r=Cxs|{FImE5JpY)FpDD$UBd)nf(OY(wIEFguRu6{1-oD!M<%rj;( diff --git a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/blue.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/equipped-FEET.png deleted file mode 100644 index 6bf8932f146eeb16debc1aea78a009b1f2542700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9sP;uumf=k2V6UQB@!Zu_Gz zt`d+ss$TF^+sETGlVQ*8YmQGYrS6 zhF+Eg?hO+ea4RyiJK%RieqY5rwuY*m9dG6_G0eFpch&c$2lIiHb%k}M>-@T=!^_U>Mre4f9Q>Db|g+hp07WiGlUlVEhc@%`kTZd)xIGG}d&Wqo3_TnD$_XXxbam+%YR7jU{kIia{^Q_#iH#Z3x= z;2_ebFL6;RH6E8DWVvU2?&bMiaxX!erc@bAl~(rv5AXmF@BkoOWKg%0nDQ~2vRx0^+pPWcy?-9if1g+pPG3MNl`jV{$zgvZ z=J9oeY}I*KPXO4O>3e%~K^R#VT@Ij>%7qX}DFM)0BQ8(r#fQx1zvJZKio5=hX2b38 zS~uZ*aR4bLz1k6?-TqY^V7Plsvk~(2Hg*CyF}2ptc_9P{0e~@vohVuykYyRhn8LQd u@DezMd!#qlk>KUbxH_&&luC{DLh&C(us>gKL6HBv3%a} zDB$;ZM&b&qA- z`~Boz$W8TxhjX-VZJR1^Xw^S~rY*U<_uBJAYzC4FyBDs0v)tDua{r64wbN*e|Ejss|dG=g}dqBN)?}Zig;)G=RuGoMK@^tlc JS?83{1ONnBiSqye diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/inhand-right.png deleted file mode 100644 index d1236d63068223c1572bf9201fa4d603094e8b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=;OqaSW-L^Y)gZ-(drhV;{wj zOlqCh$n0|R#0};U(d!kbChSZvct1gTPql(se1l;S-v!2lLY+r>1h%d!=;rE>_**~u zX@vjzQ@8E9frf&?y|rANkE=G{S-U)E|M|cFlJ%11!&+OaCVKCka3P;vQ(Cz4!u(gC zuTSYc>1HBg{`2@bfp^s>lb-AQiOT4&Uv*I_c+slJn=`)Le)vZzO>EaX?sGd6(mZ?q zDH;P=7fSD5w02QHP^}*ts`~jk|H`be(5V&g|L+oo+0LL4`Sz|}dHnrzlX(2yFMek{ zekOZzm`P0RbEQvO*)vhVv`3%+~wH&D%He;D7e`vk#WPS;HwY@gOt9 arEhE*F7YW%AO6k)8S3fk=d#Wzp$P!fsgh&> diff --git a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/brown.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/equipped-FEET.png deleted file mode 100644 index 95a66438695ef89a231c6710aa57dbed7eb4a18f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9&T;uumf=k2VsUQB@!ZTE$D zP2!TdTgtAtr}1U`!rGNvU-Io~D%+KJRj>KmIw9UH@xvk7)0ws699&u!hj=$@$UTR5JtKpg)#68D zb7#L-4XEB1{&a1v{IT#SKcmzaTz~)Ls1xV1%tiCElHaiH?~h$DFYB<0uL!s5mtV5+ z;RA!UAz)J!hYk)wTm-*_j#=z>bP^n$gyPf>;9k+`zQau(IA?Zp5GTQan+VmR zDxt|aSfywhk|Jce-}t`oy}#%FJ8>M-q*{%-TL24S0W5$80K8=e4U?Yv(6y-!`(-+7{r;Mhy+M1U#p;g#Q~Pq4^6`|HLR4A-DW!2dFjH7N@t7nT zo4XzI!5#qXbG6ThSD2O3N!J6AQkp1=5JCW;l;V2-g7NV-^YL%>??cA7Q-aW~1W(OMVg7R8Htl&SVD o_-{4-5Lo~VU;!+E1!x@L6AU$1E>>@;*8l(j07*qoM6N<$f*3=SO#lD@ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5d4b837a9242adfa89da081c12f7003776489204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=dp%toLn`LHy=BOC$Ux%g$LmVF zR+bB}6n;@H`=cdGjf)>lF@OnPyLE_%+@7UAMMwlaC)r4WsO^}*A=*9vTU>IpOi z2!7}XhBt42zEa*L=x0r~NvCNX&(!!htF@oqtZzS?-Q~dKiMz(#cZ<5$72$nlZySW?o3)6IxTf8P!A)-To7qm_4~5aDtm!F@)x#V k_}dt_m*E#PP}sphesxG@i~El!`#`EZUHx3vIVCg!0M^D~P5=M^ diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/green.rsi/inhand-right.png deleted file mode 100644 index 15799306e807f5bd58ba43c0d286789743825e6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=hdo^!Ln`LHy=BOC$U&g>;dF&t zE6W8~HhyMO;@H`=bE^9Z)+Avav79|EOGCHx32;R02-ECg>0PAqtN!XCqYpRc=D9He zjbUIoP+xdT@7e8rxt2j?yH;E-zAC$Q>YH=7d?sI-WmRdmKU#;U>AP2TK&J$tDfzzD#<;ciuJmbS`#B~^JP@kfei)|KW0o0t4>^7Ia{B2z1wg2cJS)kkx$#929nJw%3B1%9iJzf1=);T3K0RUGQXD0vv diff --git a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/green.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/equipped-FEET.png deleted file mode 100644 index 6e5b72b88d74edc1b6ee5803919e6d0f733c2bdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9gL;uumf=k2VGS%(57-1dvK zH;Ej4q40x^Z=XY#s)&rYhy20k7u;Wjan-i6y}jV5p?K+}p};|Q4p|jbkLi3TQ@ zPt8vo)LZ}4d;3hy@7m86`biKWFCa$1nC-Gj6`g^L(z~!|zPrJ{rwbSsTWE z;QVi{$nU3WnabX?Tq%`RKK}FTWP_qPOV+)%D2Z3(K4tE*ZD-{7Mz)6K%db?49RKMn u()mbYeK#vx^TF>)i}}lWXIOsw&GceQ*J6n?n-&72m%-E3&t;ucLK6T|s@*aG diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/icon.png deleted file mode 100644 index 5adb5f2d6af176d4173f5147bdc6b482529419d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmV-W0k8gvP)SPw{bi1RALg{OCu;_H}aFYS&Jc5G=f?&k0=uiZQ zH0?Q5MM@gdELr}4xaD{M4& zXnAvzoqYNJ=c;ng<%^B?rnAp8Uw8T7qsO102i4SOOP#fRC-Qskmit=krdO{^nYmrd zv+6XT$>x`P3S;#xD?cBeee;9&pYV5bTd%#?+rFEB?fTvB?`^Zz9^Sn8l6gW}TCk?; z+O4ji*P2cZy7v7kBg9f5x#aW<{w3d;<5XAMe@L%yk5AqDw=q5C8++Jp#xLv)4Ci+< Xx;&0At(s##8>Ge4)z4*}Q$iB}EY5bn diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/inhand-right.png deleted file mode 100644 index 3516a60cd886c120e672a09fb5277ef3990057ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=&pllnLn`LHy|uTO$xxu};Z0#z zh1geI+gO~cW-xJda>xcB|Kh;Cti80$McldJ8{b-k{~Y>N^G|$=TD-Ar(|IMJ5g^d8 z_-f3a`26YrU(cHRt@2j=$t7PBO~vESxQH2l{Oh+Q+t=lbYwkY(>$7sEzq)*Xzixc~ z63w~)cZO})zh{+L_Z64W+3QSizMrR&ls2#Uo5bSTH#OYqPn@wi_QLXcce#e2gO{fh z$Ks!#ombsz5l~tB>kXSp7P=TgKIqd()fKH e`g!CS4D#4{uEg2i(3tccq|ejU&t;ucLK6Vt@p}6J diff --git a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/orange.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/equipped-FEET.png deleted file mode 100644 index 9e52d381b4ef2b9141d23bf33ec58417bf99ba2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9;V;uumf=k2V$UWWrD+U_ft z25y|_R&7T;HcG=7HAL3v*w5w4_hv7i`^VMIOwV4_i?0UKd7!t&Irfz-l=TBx{ zPw#E_uXQ_wpW2_j@_DPD!v$%Vt5K}mau2`CQ)-Z}=aUaB7v7e;IBK=R3tpwa;g{#z zOV`g6(rGDG{#dj0bLE}VyRFhzeT%2rUY>ek?tiP=?zQsaeId_3X_?hq@1L5nFRbDJ znN$Bcy-0FCsvl3P9Ju+ia#?)y|Dv>2{foQbv3&Vm`{wQYv^xC+!SCh#fjeW^K78Ki zbZKwU{Dz;_jI5hG%2t1Vt-kQ?D;FR;^}Fb#1+~s8(`FyzWJsuxjptWid_`$j%VfcM q@$)X^nC%yrJ|LhcW6}BjH`9^OE=Fyi7G7ZNGI+ZBxvXlyNdz4-bP)tUfP?5#$YPyt@8~2*zlfsK&Ej^8rZ_p|BRGhYkcfjI zE-o#Grg0EOOB!Plvb;CGd-vY&xEs!jqKG=9QR{R82tWV=5CGuJvZ>!m^2ywswNO~w zzFfBc70~Y_`HI~FV9ZDF;rNv|1}rsJX}RlPwQ+jK_1<${hNuM4TIV(n86&ow9#2`q z#^N>?JBL5&VqkF9W!`F5KG3fKt#uv*0ZJ(Vj4^DU?sC3%!1w%TocZ@WjBfF4zY?JI z5l#*VP)bc54$wTh!Lxl{vd2n*N>^Zv`BUCIj`4snJi&Ec+U(B;NYj)s3=7w$<%@ch lg(Y7y0SG_<0uVsmfOmINRHQb>6i5I7002ovPDHLkV1ko5k<$PG diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-left.png deleted file mode 100644 index 056e73d94d4d22b811f47ddd98850ef48810ca4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=2RvOILn`LHy`{)^$Ux%g$L*Xv zOd|6V6fE={0;~_`HMA!ySRB$b2o3E#rhHJqM8$WSLfDljlO~p`aQ~mbs`CDHlhRrt zpgBPB&-=>N2Zw(=@pjcZHNEYl$K``g+rPX1e!lDCxotm}J(_S>Mf0@L`#GOK-wc}k zICS@Mx7)wHo*(+B@_+4u?K79H^q=H1DP?VF={kwzDbFk4p4(OlF&0ER^xpforR^0z o%X{_`-IDqR;rb2#K;i;t*!Ra}-b;6yAqV1my85}Sb4q9e00I|hu>b%7 diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/inhand-right.png deleted file mode 100644 index 01230871716364963d4eb46b011dd37571a44ea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=$2?seLn`LHy`{)^$U&g>;dL$^ zCXsmw3Kn_}0k+Qh4eiMa7EbyBp<9J|-GiJjOfbo8da+1LBXfa(2lxNwW;cC4ZL-dD zV*;AQz;K|x@RVNI-QKfLG|ryO+AaGvTKVYoxzmbP0l+XkKss&_U diff --git a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/purple.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/equipped-FEET.png deleted file mode 100644 index 61d3dd5026cc8eae198c4c3c27bceeebf39a122d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBGEL;uumf=j|-ttV0eGZTBa> z^Aha2=eXf_UeJ`71uZ+it9=w(dO=%ai^z7xOQGKci<(HC?4jD+$krgzU_6t7A?oe6RX2@u5c%FO+e_0#qCJ(@Ci zz0bPihYf6YEPQP7>V|nR=jEU8S6{vMYwqh+%U_mc{|nt5nYAyl;s2SN|2e(Lb3fRV zD^(9XK3uzY`@wq4&6l3OSZL08`l-Mb!Ayq668}5^d!Eui087 eA9?hz9pfsecK0~ZGCN>wGI+ZBxvX06=q>O>-gAeC`O? z6!abjf%dO}xe)2a*Rb#Fdjg&T2iWg)vfkI#iaR0FGDIbSlrn8-8hcTM+3j*4h8*{L zTp7kz-y?9kSa1@@l@IhMKuVdquA8kNMk5ZEODy$;g~I{D!GIw!sR$^&flc$X?0FvOdX|sc?Vo%;EQ=S*!T`>E zA6?fu-xZJ~3BK-DVdT&8<)Y>Hz_V{c1mLc^_82$(S_zrW~WkeZ?NO4R=498-F%VU%&NVO~cH}wO7y2nJ)i7ZmY%8 zFIG+gnoD2TYPz~}cxmoctLKFn3?vVvZF|FiW>aZ>LfhNl%*tus*r$DE4qI%`z##FR Xar%c+Wwm>*1|Zd*u6{1-oD!M<%%NH3 diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/red.rsi/inhand-right.png deleted file mode 100644 index 73fbec68f5bb705f4650a17adadedf8e80f96f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=+dN$yLn`LHy|tV3h=D-M!>^@D z0TS<(slD)!SlTOpklzI!#@sI_W$o@@k>*e?FQ-s1G}z{uivfq%+EO!c`ijy zDa~-!(Tvp{D_3H{O7PVP5z5ICjsx0qw*P?z`9nOC3 zyf*ZifXY&nyTTviG?!-bIcBZh-^TFK$FE{^DzoERje$(0i%-<54 c*%^L(W8*tgsvMF%Uk{|*)78&qol`;+02BaUi~s-t diff --git a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/red.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/equipped-FEET.png deleted file mode 100644 index db8ec2d0bb18adc6c6747fec4dc2b596570cfdec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9^X;uumf=k2VGS%(57-1bjt zdLWcpaz-I`$t?37t|#6oRVu_U@>qCYprAl(sa?a7h)p8f`GjWe;_!PJAQBwp>2!<# zRlVBYw%_w*n!MMU&Gjoh8MBe~h6lqo25HU%VhPHOH<)r%7@`|`SrWK6Ok~JmG!tsj zJ>bT)0jHv!KNzk@>euie{_!DFla--@lj-fct6hunD-PpR;%M^`$26 zzyG*&@3p+yXLkgxJP@zjwJqj`0VnF2(heP^Q!kvd;0Z9ijn8t3)^zv-pP+t-E{8$+p^BDaqE}&9)En~ zPuA91*>%ep{?F|GFFb`9$K&u}uvf$Kizx`p0>s8_-XMD7{d&nu6{1-oD!M`s1A@#(aw*YGx+qGYueJ8I;AUo*e-h>k*`%1J z33rydb-DlqAOHaf0KnTThrIXsm}#w%^HYqrZHs>ec<-}w?jcJlVV-9gW6(6sp2rx` zbzMF~Tmpm;vQi(frL_h#qpoW(^S(zZ1!hJ{2~|~HzR-_=5JK+zeqYBJ0RZDTKHYfh z55oX!?cV_*glvp?7<@K-D{C!?2*;=THDIgH!>{B3;G6>yp)AYS0qeSgh`#K7mmh0c nmeYPAUors*KmY;|z}xp{gW00000NkvXXu0mjfCf0Pg diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-left.png deleted file mode 100644 index a47cde633136a0ab65160112a78ee66603d04266..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Cp=voLn`LHy>*cDh=M@t!;_nO zIm{9buPH5=%6_}c_r~cro+mO7t4(%z@ZV3aM4)z_j4@Cb2plNP&bB)~>Cg2$wzt3D z-Ze4qB5UxuZQGtD^XM;?v19R!^V(?Gwtj8pDa)$WX=Mi)uS89svblE2gev)yLFdA< zW1YC}xlTH-@@F=ar(OQPH^#Sw=QU)iE&N`WQTzVyOmlvSEkIHs#^wJ3>pbi4x4!Y8 x(f^{X_gi+~>Ez$+=Q`fVSL86gkY`|+^PP2TOuCoOW9?9oHcwYSmvv4FO#tn&XgB}> diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/white.rsi/inhand-right.png deleted file mode 100644 index 47119de22337ba24385046715f3da3874e3499c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Cp=voLn`LHy?L7Ruz^5JqUBtU zD=l4tx=h=R9)w+Ksk$lCbfD!&r}L8!_3F*7k?WtConr)Q1A#b|$ZEObZCf|*opIiB ze*MYhm#r$@hP$Fx_gc>8f4E9=|Ecx|$L6fPmSuSCtg4RQf|)AMoeMOVKHO!vUwx^` z4}m)>bN_d!WSj3-ce9<8qRW~6f5VK1pi^t}{>6GbX+FKa7-9{G++Mn+`Tfl_+kYo7 w^6g7sE>_^l{-6I_*#}$esSRy>atsCe{!;tXZ})A|nGRC!>FVdQ&MBb@0L1cWZvX%Q diff --git a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/white.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/equipped-FEET.png deleted file mode 100644 index 083a41ec47a86fefee4e47ac886ac38157249a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU_9;V;uumf=k2V$UWWrD+U|Q4 zu2_-56I;dD%D1=ihjYR8ZE^n9oOyh^ETf~?%{c>??_!Ob#jU|LDIz4s#e%OiBUw{j z@mJH|c`N5k`D|NjQF7AI=KNu$%}2x%lo@X@<)|=3H}tY3aBrB%ki%#u)S!F7jcEhx z4G)HG4APtja4JfB$o!;a{|}i~E{17mm8WPu-n#I;LeS+b!Z|IIwJIYKpGZ zeEY7V3i&u`?W46@6YG}ETVKl5xA1e-ozlBArLFps&r~ndUTFRQ?bp<-zYjKK#gyF&{v3Y&n(*1{ zTp#8~{;+q%<5q$mn#p2eZF}-d?uYnuK3|JUuFY+z+u#3o?%gx*S$ z_u49VwZC$9+~?e&BRse4^>u%z<#&Uor6%30ZB@y*FEI1TpB*3nzRb$9?QwhQYr?r$ qP)=_Cg&Z^WFzFrTjK@9q-51~E-FDnoyO{|Xy9}PLelF{r5}E*6Vbu=+ diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/icon.png deleted file mode 100644 index 2398b7f04a51288ed2446ce82a8f58caf2f87281..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmV-X0j~auP)YU6vy#z{t!^RidYEZBIpx1DY#^@F5ca-APC~(<|`;VU3`T*8F0=ch)A&_7$}Ii z38E0vUI$U6rXkIe<(%<%PI5k%n;}k;Bs5uWquT`_009U<0DxcTp|szztM&0Au0j1*4FnS&*5m_CryWJ zthYEk+59)Vw|mV@tMt&*0kqaOiXxO!02pJ~-n!u6c!j_DPd(m-+}-DdZLbob^dlT! z4xp5pxE$c-;gqoLF?b$U0#v#JW6V_f)5{sSaDEvR1OeS{O+c1q#Bp5Mo0J#5qpTeH jB@=)E1RwwbG!6Iy?Hg3cv|d3600000NkvXXu0mjfrT&t3 diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 082235b69c7695a767ccc367017b899fd4d59db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=dp%toLn`LHy=BOC$Ux%g$LoB3 zuVm+}nY~%TPcZ*NbY)B2f?#oGy|_h-CtH*Rad7bU1|N4?x-#I;|7AMwe=DS%o(wbu z2tLFwTF4gfS1f<^(&ekOe3Nx2cb@vR_U*rmnd$dy!V6C%PMVTBv;5r8&`lS%T4j~* z$lkm2NT9ClD&3T@nQ|GrFVdQ&MBb@0Hf<-9RL6T diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index f95c6619390d6d175fc835772ea041f5cf12f455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=hdo^!Ln`LHy=BOC$U&g>;dGH{ zuVmNs%-yOGCYV1Vy0RrkAyi5{XOD}Q_QnlC5du1!!ZdqWdKanus=s>3=);Y#b0;rYjbpuEW21zw`NV|r1a0fpB}R4o4fT|Z&Ty8_N8gv zdyh??d*;`lyMt(bdg3;qJ-C^9z(5jttP%xRXmfe7rgz+2sRi*JV=h4H)UIG t{ept+@*g~Ie`i0H^;hh3IY=fwhVkq6Y?CJa)gM4AJzf1=);T3K0RU#@X~X~k diff --git a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json deleted file mode 100644 index 54b1191d42..0000000000 --- a/Resources/Textures/Clothing/Shoes/Color/yellow.rsi/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7e4e9d432d88981fb9bb463970c5b98ce85c0abe", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-FEET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ebf25671f5d4658c2fd7de44cd080fa2becec6 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}zo<4c9uCDIYix=zGtVvEzj){r+|NnnMZZ1&1#`1nCkm4)}@(TtE zf&oLYe}xc8u)rg-n1O-s5C}7hYIrpO1*dwtIEF;HznylGui1dZHB++h|NlpfSxe^T zsQs$&Puf#;((}H?OJ9YC1C0z!>`WXo9Bv2aWoO===OVSt&oJTr*W)bN-TNY~EYfBh zwoP2LzQ0PTSN(f`L$&6D)=-W7|D0-p tagU@nPG;Ts^J#9*ec^j2Dy#$kGW_talh-~`I0xuJ22WQ%mvv4FO#ly9clQ7Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png b/Resources/Textures/Clothing/Shoes/color.rsi/contrastedsoles-equipped-FEET.png new file mode 100644 index 0000000000000000000000000000000000000000..0baedaa9c0c3f5742f6c0fcf7589fd30edec3181 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E2l#}zu3NKa-|pQrrcC+&|NpBOFHWC4SyxwAn4cdV5!T$;Sdg0=6B7ee z8@}mtJdolo3GxdDs)Pdu+ZRf0KnczQkH}&M2EKzJ%(!D>_FJIf1Wy;okO=p;(;WE@ zEAX($dSp!g@c;X?qi&36mcCkh%Q8Vsd$COTr~Uv3#sv*b4vee~O^ynS7M_)yxb|G` z4g2o`-wmL~1TbhUU;t|V;eGJ-Gok%+ zSeMGoDT^)m_0HgF6rUb<-|EtiKEo`_9lDlzccYms>lwCg+#75(Q#}gkHU>{uKbLh* G2~7Z-LxC*- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..d81e2314b68b96de7850bc50a8c588fde8e9bc57 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~u2Ka=y{{R2KuCDI%$&*i?K3%tFO>%N_Oiav;8#i9Pcu|m>3siNGGXSKS zyCldj7^oNu7`*%$KLLd~3p^r=85sBufiR<}hF1enaJi?8V@QPi+i4g14l8iD9<;js z@xQ!{!)#IETY9%oPpX#d;h6WMO!cP_hk}7Z!+{0{rpNbL%xv%e@Nm%U2=5c^ZS?Uv zva9HgeAlL)#-(4HJDuLtF1y7)XM4lc9i1wF-|XDp$iT$R#K8m9U#In8wpss$xf&N< z8FsPcexGn}CX343FOpYu{uLk8y3Q0?d~n&x`%b_7LqtPv88xccS8FYvx52M_Kl4QK YUEk&;OB-z23Uo4qr>mdKI;Vst0L2fC82|tP literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png b/Resources/Textures/Clothing/Shoes/color.rsi/equipped-FEET.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4df4b601ce1277f8e0fd8f6605e4bc27bb08d0 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1^2Ka=y?%Tcl{rmU-|Nnpd@ZqOVpPoK_T31(BQc@Bf5w>p4n&!sF8B?Yd zgl_%W^Z)5JzI99oC$HH2>MrBKO(jOEC;J&05}@cs!<3H58Jb5| zz4bJDo>zZY*xy*wp~|i4ooIMN@$UWWp1%1lsr__mr|et1U)L8iFl>OJe?k?%&2wVD zHQ4e^yV|~>)bhSSu6e_=&h2-XFRWdi-?2?@MSt_*i#{BeIx*f$tCqGm2_>H2?);JzX3_Ed1a0Ir1G);9yzE@#p{XSeN82xmDTv z=NNmfy;bTHxlcZ4Vy$6$n=0nv5NK%p@|eJs#v>1y-YaEXS+dP{Lzd`-1=B3^N|aeF pnWI{N{qL09@_C}J%75;6>Q{uMBx2quSpY3!@O1TaS?83{1OVk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uw9yxMk@#4k*|NjRHR3_cH0#a8JlBSEK+1t2|vCLn7SYUOUOvV8G*gk>~&a^J*))eG*=HRg|Z4TV4wFu99G2kOQIy z#tpu8cK37c{$G7JRj8AxJHYIH)wLELp3lq^S}W_ArdTp0iq2{{&&coqg8uSvur}(` yY5e6E!TfXHea5raiJVu;4}Ib=WjNmOiuLk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`211o(uwE?&I&$dM!e|NjRH9CrNX3Q|`RlBSEK+1D?D8sLn7SYPBRobpuoYx`2YX&j>jq*t#@uL*^#?tNA$~pTdE=f4+0z- zoe!$NSbpyH%y~8P^TZ7=|1wyV_V8(;!r#OQ)&zU0WeywaG8PX^_xYGN9LE+419AIK8U(-i#eZ7zd3l9uM*G=44$rjF6*2UngE#0WJdr1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/meta.json b/Resources/Textures/Clothing/Shoes/color.rsi/meta.json new file mode 100644 index 0000000000..5e43acc086 --- /dev/null +++ b/Resources/Textures/Clothing/Shoes/color.rsi/meta.json @@ -0,0 +1,57 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039 and modified by Flareguy for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-FEET", + "directions": 4 + }, + { + "name": "equipped-FEET-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "soles-icon" + }, + { + "name": "soles-equipped-FEET", + "directions": 4 + }, + { + "name": "soles-equipped-FEET-vox", + "directions": 4 + }, + { + "name": "soles-inhand-left", + "directions": 4 + }, + { + "name": "soles-inhand-right", + "directions": 4 + }, + { + "name": "contrastedsoles-equipped-FEET", + "directions": 4 + }, + { + "name": "contrastedsoles-equipped-FEET-vox", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-equipped-FEET-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..0255ed7b786c58bb680b8d368c34c8aa9f69a98a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}z*45RWK6&!hix=zGtVvEzj){r+|NnnMZZ1&1D(2fWAjMe{#op#i9RJCl9#O?N~4B%kiD?gxNmDVN9o?faRvGy`Vuay%Jicsk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uwu3NKa#*``l|NnpW;>GEcC+q6!3iI=$Bf^>+8w+xCV`5@}3hnz6 ze*!6iL|ND0ZIO>Q$KKn){;k24?U+E`7E)52e00xZ(3;`E7?@Y~pA^BbRx4~J_~f3shzX6x{j!F+bjck+p$|i-A?7A)YI2Z~Ki)9CN&9v8n8~vXS2) ulQWAq`mUnX-UT}ByZzesez9Vl$gKH&?Q5TXpYH)(#Ng@b=d#Wzp$PzG+ItlM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png b/Resources/Textures/Clothing/Shoes/color.rsi/soles-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ba918d282df75e4333f67af25ff77ec70d4862c7 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij?1AIbUBO@bYq9PY8Sn%b`m&k~S;NW1O%yIT3SwM=tB*-uLKNv7bc{95K zg*Xd5B8wRq_zr_Gl@BKe<`;2p(T)#yQeizLC zyy7RnyTEMDvO=>(tr_y(4xj$02&_J(y@7qo3;!CXz)6?7Do#6y{N1YQF7TT5yY$v( WajD}O)$f5OGkCiCxvXG+x3>=R9#-ICaJUs2(H$w#mKf0# zyF%w8(RwP(BXN>{xT+&#PY%7^%iC2LFj44++Pd{q0y z_20{f_g~*xH|5hQ%jNfecf|--PLwYV;{a=9XmGDv`2JJ*;rDmsEw;%Q%=*j7P&f4w Xd!fF=Txq>$b|6Kbu6{1-oD!MG+x3^AnGAoL(22761IUS{w*0qtd z+OYD$nzj~2d5MQ}dLKExEB);QRL{UruqF5QjN9J7z0ZZ7dcW_SwD^~M?rTfegw=`f zRIdM0as8p)_2z3)r!1EToywKdRV{M=_kt0uk>SI{Q1xT>PX*_lJNIDyo2UO9jL$q^ bjEMB&7c+5~Tgv(V3P_o!tDnm{r-UW|BQ95! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 6a76cd35eff9d8b09322bbb615d18b97f6250d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20288 zcmeI43vd)g8h}So9?_hrSc2lYuE0UzWas@@Hf!FH$c6|}gC3fmnVw{eWM|#okPQmt z06lzL+?Adn4^!fKv9!dCf)xeSJ5jvzRRWrDf>H`9l%j`9B6>ah>?|852JSqoW~+9$ zx99)=?)m=izyI#3+S{utr{(5cm_ramZu#_*S?IgKe2*B0KHL2_eSp432B*&n6U3S4 zneWqxl@E;}h%49nt7{@Pz8P-SXv_nep}@RoV-QIbgy)KA5UBHD#G$}Ce<0uaMduc$ z!>{E#ujPG|FIWug{nHnO;OqsJ)#`$Is;oJ$@aA};Ze*YlMt~#Q*boT2qxsI5T{kM5 z)h?$aCK8#K?<_PMbkz8&9K}WmI`}++R4GAph;kmyiy|jp?qDdIcTud1rAUT#bCjE7 z9Eq3Hn}bT8kfyt5m6Ro#L%;H!^^r)>?Q%6YH|I68c}A$tMa#16q8Jy$kVt|Iw*(>} zN(RE0#f>EGl)$hW@&_Y+Bj7OY0>x;Gy3VzOkM7`VdN8^FV%L|{x&vdZ8{t& zosSSCkY?2kSGNSAYZeR}O(7MQ&PTU$S+=_mM`ppacLrbziDxww@$3EAF|YIs0Y?4( zsF_#dYOygDceMvWa~Fpoh!~-2!)Wlvhig^R7mniM*zj~ry4D}ijOOrUk1JCpJ#f<2 zUzn3nPii%{OE#+8QDk`Q6nW9307kH|$ zP!^an$>TETIucB`o)`g%`gj1-4Arl>)4irt6+nhTF-wq;D`}{a3WYvY0aCQgauOx0 zgETEejnx$>k_wcSxM>N}G^vQ1LIZ}CbzT{yX_e-9UJ_IkX<0sQ8ZZJ!0!GsyE66Nl z;UG_KMMKrc^)gGnFb^v2qeo3I>{-VK+2TFk`k>!pfXV6B+e2AS`+d# z6gd=yQdCW+NuWcS)Ob!OWm!R71%*hnwsu67n+v7D?)6cnGJ91Tbo{JVku(~gu>8Fi1MAu zj3||3##fcZ+7e5w+(0#xO|NRE84!*AKDFs?r8GTp0sryt92kP*)cbFvxgG{il%~W@ z#iaT-5;pWmGYG-LI<$ZfB!h}u?W>k)KKm>=C5{M#`6uTFR+R+^B$;G*G`B^8qew~B zcv3*IkLLu17Bw;HX3UG3w`krB1{h_FDAS|OY|-2Xan~hH{2chxeN*c}pblzYSF$_F zip<;jfA*LpN)*fL45=_OM~W0$`6LbHMiQh{kyUh6*7fB54Z>q=HAT5ir_r|4BB^+1 z1m?rgPlcF!jrMxlsOXO%^H35U`-UgywWh@(Xk<@&yaBxn`ddh*VkeL%Y zy-4-VB?fSa6Svw|t$*{$CGY24156tmOy`DWYV^J~j5g)^S_j}1b?h;RWL7f!>nY~!*-gbUcXa2l3n8SmgN)T%1Qt077U=j+GR4O3S?(l+V& zsa-pV7rb$J%CV-pO&xFCUA}^7y}fM&vF@2ylnn(}jUK&i!#PC-6(fnNik9EkF5TF3 z&##De`#k^D*~N3Wo=*^yCoCIPKYY)J9S`j7?%Da9OH20iU+@K!;XB-|I~Sbs(vBTF zD!#mK-Xs35%GaLoO@=#jJ2t-=J>#v=qw<={Kd;`u5EgbGd1hx-#S`4$Zr=aGj@HA` zhH)=-)LcGebm^G8%c6@G1$tKR?2^V7HEr0P(>iKM#a}*o?hmgm>l*v;AD4_;vb%T9 znl-O>Pjak(g!5f>|Ah8-rf^g(cj1R$eRb}xUArV%elheMch%@~h-F}TZ*T7n-UcY7Lkv)$M+cftTlDoLFYFGW8+yO)J@eh~d!Hh_D;6Gme&tY&9SaAOUIY5oN!a;%vxd9+na|Ny-RY% z>HpqNbdC>vJM!RV7wz6VckQr4L#`S9-Ntc&OSL)AvLoi)-*l*=@X)HU&kw8l>*HHy zRV)LW&O@~iQfIB&yK(OCyj@&v=h%mh?YU4C#g~T$#fu+Wz52oS_NuGTU*g#M>8F#w z@?7G1%k$>p@4j1p^p<-*4jtXT@o@Cu;?V~xUf#EF-=jTUdmeb;0%BcvclV2(t&dMx zUoz+Z7doyu(zNdN&%U1c`qPC=7tg%8j(u@{?t9nz-n-`8$F?ng?DE&of2XO3-!=TM w=F-mf-B+%RWgyIDQG(@BJQhf^c?!j<$=jK*|y9dKi{loiE?$++}-8hkU zpJ=+fb?09LGPa8|aBf;XN(_8^*R25dhV%m zs123^PWdg?MxFv=^>Yji&Up)|nghm?0z@ru(euN=DlMGXMYp diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/icon.png deleted file mode 100644 index d39607e94dd44ff3705b615de269cb8608d61aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0K&7$sr*rp{=cLW@ct@ zZyyvC6dW9!m6bJR%9I;7ZcMQL&IeS)SQ6wH%;50sMjDXQ;OXKRA|ZM8;6dI)20W}6 z-uoqJzh#=spnZxV@G@tTcOvt;oaPx~e5z+zrdIIRx8*e?35bYD%D$c2oL;hdx0?B} z^Fn{#l_tt)oQ|{gKGrxTs95!AVw9%o^-NdyjiE;yFnGH9xvXAFb zZtm*p>hA9D<>eI+5RjUhnwFMUR8+KL#fshyXD0(yGnNGT1v5B2yO9RuEcSG94DmSr zcJfBvW&;6Ndm$m+AT^Jfx_Vp(Cq4Ik+I48L!USD0kBN7K7&_10x#;vT-1g@EqOT1; z&lGqZHVbOqx;I_!!{$Q(S5H>Wa}!<86AM^JAs|M1==%O^>?14@8EuAAaYc8Iu+J dIHa|n@#SgLdA1ypMnLB>c)I$ztaD0e0sy9}XEp!; diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/black.rsi/inhand-right.png deleted file mode 100644 index f2a18bc4ebb1aec5e19174fc63413b3038f9ebbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0F7RAt5Ixr=Xyqr>AFb zZtm*p>hA9D<>eI+5RjUhnwFMUR8+KL#fshyXD0(yGnNGT1v5B2yO9Ru9QAZ@4DmRg zoFKuvxZ&M_#>Tsh!B=Ee7}<1qd31CoJ}D@!&^TSh_FZ)b*EH)5&aQjIriQFNw1L_4 z%Id7MtF(MrIReGjPhA~ju+~ASG=3*fxBi_lz48X*joJ;JMp^IfuIy0kS2^|K>7%C| zD;YdPZd{FIxXkrt(c%P=3+x*V45mB?eZc6#_d}#YbVJC)-~*eocK%+a`a?t~zBJ3y zj+IAmb(-$M*KE^PMQZ-oJJZ#n@xq(ilRu=nOjOnL{-Bj$!f7aTM39$3%*|}KDwiK8 P&_fKKu6{1-oD!MRF(jn<;x;qPq8r&EW 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index f453ae0427a41b0221b9e4f3dc9d8261a39a045b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)`lVt8!`h*axT<)qt%pkbk?fQ zuvg`xEjd?phA!*7)-GLaRi}$_Bzx77#*0f;{xu+Dc~eGqR%h7kupE^)J7;wU0F+}5 za}W)N`#o&aI6rhTK}KY1y!Et+}~e8D(y5;za|H%oC?&0}#=wZ*{Ay zfQWS$A54}M4iF_Q4i3ub4^r02e}Q(WA#$j68XA=1F6KflGz?h}zM)f&S4g(l&{#qP zQHfX7xEPqF#6MICo3-ux$1mS-e(w8+wLI9H&1oecu$URI`_c@m8P0000nJBvY}C5T&d$!> z-aZHj)}09s4vw0(J2NvgD=TZtlqolE+;}an0n)`-666=m;PC858j#cK>Eak7A$j%S zM&3gP0<0J2PnJ-So^#H13g6sr9@or;mj%7l3c5}hE0#4KvY5xv`Taxs3my$CN5_d5 zFU+%ua5J9$GU?opSxt9!eS5k#y$L@(DRAPYB4bro)1EDBmL2YBdo)XA?&YUnYZf>k zwOuTH$JUTF6n0)>C&oeq(`+FGAHgROAwGk(SQ-$Yz()|fMKrA|f*^tc3yTy+ zA%#s`8InWHWs}X>iQ(Y?L5iGY|DEid-68`bA|fIpA|fIpva^30;`k=)I#$+g^g2%R zZSx{bs-#F!t6RX!UH50QK5Wq@uao54&1i*z~-&-38>J}Q+8f*?R?dL6hti+?WdygrgY1DZ-}dnoM`8c*ko2LSUx z{s^cSf!D{e=S5Mwm!xY*%>Z)?Kx!7KRe|?6p!Q+cE$uuaA|fIpA|fIp`uE(XG>#wb zU}RJj$MJ4n0O*b5-TQxCd3^5f4p17OtBuC~jPm&0%^jdPj(7JK=*423?&gqDaeVIH nGoVRpeD3a;nd5V!!~pyN(CGOSO*-XG00000NkvXXu0mjfcRuP# diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/blue.rsi/inhand-right.png deleted file mode 100644 index b185b623967a0a1d91893ac08cab301d8e7b5f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVt#)Rk-^bw*>qFghAAcBO328S$g zXt5hl_a4;yqUR{ZIr9I3gU{8&|32q<2Okg-5fKp)5fKrQ@8HynbmI8Ni>=#0a!J0h zA$g}`tMaAwooM~#4!?EVnxOJZzOW&A;~OBBx6#*8S!89)uiHp+Nxt5jmHb2UPQ`Y! zQ0~5ezV$mRi)V7(`c(xuKa76=zm1tU`2@&9B9p_(+E;fmRkzKEd1oROze}E4Of(t| zU^Tcd-IbROyN~hn#-9N7;c)k!uKTasLgi8U6qSEK-sGQv`0iMBpT;!u$9JY!@^(M( zk^TKvpM0y-7o z_3@AI$lR!TlXtOL@{pPX7M6h2JkV|d?{7f+!>-*|T+2&DL_|bHL_|bH4sdN`u3_+C zq?cuU~FAInkvEmUCtvpl;0b5(-A&)@s>^sW_GXZPunK@@)cmDso z_kRC>|NH-U&e?forFUJId2=R$AlD5oc9z4>!TRf(PVjxDI%O~X=A;{fJ)r!hsWyx^6q+wNp1j)&(^$F7bAZQUmmFmsS`sU4zSr%2! z%^E|OU?sjn;8Kh0{a{pmX@yjOzr@Q~d5+ASS~~>rfS_Qh^|-wOdu?u37}pNJ>&><- zOIRd$e{NR3-l3(kq|8#N`GJMDGN^+O7k^A=QwA zD5YsN0~K{XU@Hd!ZK_`aL#p9a`lOqEAXp9()@cJ26i*8jRFzh6^gFGR0BY4%)bu+M zwXjb`Oq~Nsvlse-5Y+q?n&x&y+_fxb3rk^P*gY-TV^puK)dU9Q*iuyzj*~zGP9X>! z1O|N($54!@z-c>4+i`XvhTAbL2_zz!f>EN$s!|ujAW@7$NleEea63&TV+jzl?J27*KYj^e2Ar2_5=RvAVP zQN%<^R&Z2M0FTNvrJy`7LS7jWlOPb_a5_C$q_t&;OOBtH3XuA~Q&M6d>J0=17(a(P z9r}1weLONpONvD3E<~X$plGu9W4>-848G?XuAu`S+u!}kx;a6cID!7wmV%)Nl#7Pn@qYA6gs7%7S zh!iAP;$R@gNeb|+5bGih%tc)ltNKP$*K$V)Z#1L8l$NcDjV7Ej`UHOf=m}A7RxBfm z=a`XQCAznS6DzwQ>B*);($fq8eZNI(Vpws_oQQyWu{qmD!A0t=_fg{l-bmUJ53DyXHkY5Ei@U~=75!9AysqpDn$rUj~K&ZYvGmsL`0Dt{V+EjTVf@JIz}S z{6-=kjH?1XKL9ZMSNxjC5-&O|LCqrgd~Q_|^iXQ6_R7&}Jf5n@te1rGUvy9z_*El8 zC25pWj3&!ZY|fV*Mga>`XNgo$SVz$)tx&KQqHq?4`98z(G><75EUwzIn?=H?xhTUK zMRbdaCLxz?G+87tkx^Kb!30)MmnD>EX#wVAEJeb~m5`Kn?|o@cIg)nB)CHZ`q*~?@ zZ8*efOA3;Jk8OEB<{lW26R{-`wP@?4Bn6ppX!)K9st4J4#Eo^5gpu0O54hi7xp4Z^ zne%0@%(m5f?F*;>uPZa+!!7H*SPgk`eHbf-Bb$AZo}%cdhj5L2PdNxXqNz00J_5CevU zP46=4GQ@x(Vbi-zx(qR3NZ9l)lP*IH7!o$U%cRQ?1BQf6?=tB!#DF1T)4NQ%3^8Cx z*z_)wE<+3$5;ncdq{|QkhJ;P;GU+nJfFWViyG*(aFHel{Vci)z;Kf&(a zvJMHIJIPm{+>Tg~N%A0ZIyYyR$= z_HQ1)XF$J@a*ONZ)kg!jJ@#qQaZml0Z$CS9tdjexsBia?{K9>XL#y6u9NBG#<<)cF z?f1D#H#AInVEc@x{6{}$9NyPofAz?h)q_49e|?Yr?$yi3&0X?#NtYQ9i&s6ow!`U{ z^I=Pad-W{mdjp5Rf6I%fA0_L~J>L1=3)4A&T4ftZVs-UyR;fm|Z=mVeE_e!9&QTwc|YMvF*F=xc$O}kDAU-*f2zSYc`Z4x-cJ2 z*xj_`mmQbpJ<#_8Iul-k_Vpnk3 zBKf)#H{fd)&aGQEW}*%0D^AF$aSdypZe0^PKo?bLqq&|vwCVd+{$t<#^9#Pfd}nUh z`2L2mSMPW1aaFAE+5h97XL8oquSO1bxCY5c*to@yYZq;P=l6{x8=h_GxGE4DeOBr_ z;Evr*Jq8>el<`*o_XqB-pVr~pi9cI+Q^VZ4ZpYv3di>2#4lmj8TIsJ9W%gCg*0uZ> z^-DwjknfIk7<15PUFYxay0@CXb-^pmYaV~Y+pt*s`n8YNtN9Cef4R9gTh!_LZVR@J z9dvsh;maPew|GS8fTc2fbXoRjY~z$pLxX!)xg2%7@+OV%TJgITw)*;mwlmWm&a7_B z%Lf!U%4*Z|W!Wz_HK}fo=fL5^#kW4_JM&qYy0=dLDWl Pf!EL>rOwp_lViqM*w`_4=-mJS00DGTPE!Ct z=GbNc00B2iL_t(Y$L-XyYQsPb24E$Fpj%DfAaBsO=-M~9NpQq3QL=UFBoMv_$kNqd ztSyk{dU~jCjYP1gP9@sDL-v6<{Q&p+%fb%;_9kKS4VeKYITz}^QESRJI$Jeo*qd>& zmYl0OL!a&2YM-vwYSYy?lAdg&@#<2Ie+|f3zKoHb%^9{kEEnVL&e@y+0OeA{9K?cQ z^YVFo^*$U9Z()*iYvYO`x7KP}Htbt#ZZ0=QnOmE9(Eud##A(?8M6~LA-RmYGVm-tM zlO=@%L{;uSS6 z24*So4^_fuZMyF1-8UScyY6u<5B92aTFD12s>&<*fU2tFay~#FRA*Vq1I)uLw3Y`* dME~hI{{WgSzT%n;Pvigq002ovPDHLkV1l6Exf}oh diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/icon.png deleted file mode 100644 index 0c2d3ece6b603a132f8cbde89e12ea34f3673f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0Jset!*G9U~g|96ciL3 z92{mWmYJEEm6cWDFE?e%l$n_v3yU;w+_+&__Tny3HDgJTUoeBivm0qZPP?azV~B+0 z)q@*(4;cusUhwadR=Ip()4@>n$dd*k>XDxqOtwr@TE1A}S)PVQ(__vF75w#W>lzjb zi-<__uASPPZZdhdn)$KoGJl?yroGWP{p*8{q;-&&e|XTFwuzUXS@mRSqGWWM8~6;*8i)$E3(97X<~6@$Y4vvB=CcbM=8HppzIpUHx3vIVCg! E0B}@ZJ^%m! diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/brown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e147716d7a0df188a172533daa9a0cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 3f010030040970ba28cab2366a12356d94310d68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmV;m0ZRUfP)Q)y{wYHDhfl$6-m*y>7%bpQYW0d!JM zQvg8b*k%9#0X9iQK~zY`?bNYq!$1rMU`2t_HE(c;_~wF_&c^Zsq^Db&LJ>Z_NMECS zAEZ-;zCq}-bZaDnJ#{M4_8qbh#OVjP)n69A0;o5cl5fZgXvw)z=Z#!bmcd!7IKy5< zo0Q~S#TmLRFH*a7F;|%`#)0@r1{yAIRrJ?@itSkx)mfZjv%_{2-Rzvj8353ZHO#>z z81CP{&mYd))9LgXCOMWetQc}BrKV-WzLetTa%Hr!lt~v2KsHXAmJL8etG?B(t^y*~ zU3@UvQaC`gusAr2qCZGkCjSNUp@ztz)|Jp86n8N!}+c6AJ+0<&pf7;e89%cx{?pb%sedT1LT=`w3R%-JdZ|e fd4NRppPus%e4$&A&_$?;00000NkvXXu0mjfVW7QE diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/icon.png deleted file mode 100644 index 97bd52cfe97cfbe7078b8257b33b00ffab55942a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv-2k5uS0F9N>nJBvtgWqWRJO*b zb(g9COglR}dwct!prGL3;LOa-tgNglQ>NUwapRR&M=4MPV@Z%-FoVOh8)-mJv!{z= zh=k2n`+_CZx99K@`JT2@i*{M^1x-6EDJz)x=YsU29a5>HuQpo)ox|Yi>gTe~DWM4f DQx9P8 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkblue.rsi/inhand-left.png deleted file mode 100644 index ea01f616e466472ef4e29ffffb7eba47b204200c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/icon.png deleted file mode 100644 index 5077680c75a1381a486df300098c4520b4a0d3a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0Jroz^M|;VP|J&Z*T82 zT`VXlC^$Gcez9C;W@c7aR{kEPDO0B0xN+mdy+hxCsu@dy{DK)Ap4~_Ta@svz977}| zuO7U}dB{M3?ZN(b?vm!m3IQ*SiY6@2d$3xXg{yI0@`E>)jSu{O30(G3_)+`AxP(n) z?t%p;GBUJfY!=SEQ(Bl@bM~NoT$-D!=eF7Eo+~^uckZ6FNXjj$?0TY$bD@6MxtE`+ z;w~=CnRbCQEli^Qq@4us(VT5sd_tdB_4IWZ)V<(6ZKvMxqQ}_)=p+VDS3j3^P6x8VNU&9Y4gTW%IetWcE6xGmXz<;8(B*Az^DwUll9*mG&u%N@(^bi8@+ z=gy|)B~km9rk5;`{`;vXXwU0A+dZCiuKj#xt#|Y4QpSY^>q=j8g2+OHe=;1c#cRE7 cR(%kaeqg-#;!YP8pj#O{UHx3vIVCg!0K;Z?^#A|> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/inhand-right.png deleted file mode 100644 index 23855a8759e370493aafc27569cb8e04fc93a7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDWF)YHW=#N&8! zf&}a0hIa=V8}Bj(Uy)T|WYgj0(b1Loq@cJ$<8%qzcg-1G%d9szyV|Bt3psaW1GDFq z%|++Vc=@n$1d5%HG>$b`>mXD*-;}po|4y23d4usr?S@XHsJC}hI~4m>PQ7^f=w-)B z2G5WaS3ManbG=!#I6>qB`vwDpDGx#)FuL&l5UCK`5b`MafKlv=Tx%17(f~@-ieco1E{ta?c6q OAqG!ZKbLh*2~7awGIwqO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/darkgreen.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 161af53da2516bdaec89d217af640e142b4f0a1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20366 zcmeHP3vd)w7VTixKrmT>0+CO4i0l@qo$3E)OeVicNQ{Y?L5c%xu`DZf0bij4p>Z!`i zr2F1;-#hod`|f>RHTO@inwF71E*-j|AtGN_M_IJvU%O08Z!!mVmR-<+BCyvV*ub^j*Jf z&9($Z{PXg%3w48*y2|O6Vz(Ds*c=X*368h$Vh+jjJi}jWp$L+-610^jaEi7ugpHvr z;a9dj9evC7Dyps8Q5rUf{>#g5@cTVBtF^hgIj5PvSeH?emu` zKoo>2O{(duUFd<vUp-~?4mvNoEvk^D6TX(Na@kdR~oMx|TP)P)fY8YdW>CUgu+uu*J0Mx10K z23m*;@Ph%N#LLFvD6&m;d!4{<*PNgpT0O4%Tx;xNoMbdSZN=_Jw-*fy+UZSVqM~Q9`_O5+NfXD3EM&u+Y`sDK0*Lo-aY_`%Y!0t=#4F1C&3@ z9d>;@8X6D96S5#mydIrAP6CF(B@zV_qY5Nsd5IEblnMH%$C6|iI$|9`Cr^|#K(k|1 z7Kc1XhrBMxEQ`yG2nDpRIf_DgA!H~HtdF4^y&5V+L1UbZJ{O%^UX}$}W))oJksXC* zSX@FTaWp}iA!!DRJcyV`0@KG-nWk?v3w!Sf!HuQ{&hLFSw$TJjMi21%pk5H=Wk)Ka zXpI@#Rl<8qu&}ZLSuZy2vR-CD6#Kod#)cKu%nb=>ecd@Q3i_z`Z=<;Zy3SXogrI^_ z{e$@2s=pa{VPQSmzz0%6g;0B|CBi3PB^SjJKCs}z+(64B2Z12s6pPk2&oKlp$O?;d zDEF}pCy~6uN8B9e#l$J$2H>iPirpF+PUJ%3 zbpDq;Ch!75(<+6djK|GQUB1jIJdJo9;Bybecb!@7%5h z&}$^)p}Y#v`2j@Lzv^{6EzzdK;&)qs$J40EKu@LC1uiArjYmuMi1*?!{)+*sK(A&b zsl<&^j?iTJh0Xbb(;UeUMohG4nm1IyCB6E6~%b>jv2m*scg;xjw7!`FEgLPWcQ;xVDGI2r2HmTmV z!~hO)22z5=;3He!&$$Oi^F)N*ut)nRB`(PXQ_GKJP(8^;Gj7C497dv{pK!mwcw-Gzo42bRp1`$F6Fkd-7bF>4V&IAV0ib>+GGV*nfK z^HI+kEDG)DaInv{IJDrsI=x?SYzp?{JVl_FmDJzEs`0lIRcD=FHU4&@YE1KHm*%%q zVQUGOilJo__arUon9x=9oDMxAv__v1#`!E*kNh-mu^Ig|_(4?Dh#_)Kx=gwZFXqNqsyer5CevU z&FC`eGQ@x(VKcf+x(qR3NZ5=nlP*IH7!o$4%cRQ?1BQgn=rZXt#DF1TGrCN=3^8Cx z*o-cdE<+3$5;mjDq{|QkhJ?-NGU+nJfFWTsx=gwZF9Jqkf-dw^Tg~VW7w&4=<^7MH4zxrH5bEd z%Q5T<_oH*Rmtxo@TDhaJHqiO?lVroFo5t=qXRVxi|JaVgaa8Hu?8t9j-XkNom#-1V z-0E-rq*+OuWp_6IJ#?m0X&`h=fDYam)Np*$XD~P!ctqY%dsH^*wBLR*&pmIsi~6WTHoJzAbFBRKz=2XYOw>+&re=eYmz#7lYuB-F-=Y09a&4GmruRMNKyzQN% zSnKg0GjMk4%pKZ!h{{C^(#3f+$_qTks zZbs(nRIFoVeb(l8hp$kJ$AHhuJ`_(* zJah9=nx9IxPXm0`T~~kq=@8-Ah?;kft`+JFCbe$txp&L1)KtEwa8uRLXEso?&i!!a zp^5eW75mnDd}BJhXO?W}c5FL#Hf#O4(d|Dhv0;aIzP+yQibL=6%bpqD(v7WNgr!)p z)QBs4{nMH@yyetQ)cBFw|MfFp)@>^L zkiTPg*ZxhGDP6~q&o}QOn94(+j$Pzp8#DJ;+}L^oU;pOxC-;{Q+gH%DsO0$P%cs26 ze$B0$U(VS0-LR$d<~f$fc22?n`1s#o&WXv(>Af9K9h`UPUr0>bHEqWs#OV9gO>5pb zJT?9H`%gRD^1e%Z?SYg%@21S&SED>Oeobx0S;sfb;WFRM2d`YUc=hR%n@41Q)w62b zh^+M|5ANAAT~tB-Fgy7JasCk z?K4UY!ukOo^_PY30OCz5%{N@e zaeVIO!I^nZoqWK;%+kpRWM-cB^8xb4JZmQpFmJO`FAtE2{?l{*0g=LY9Tre9Gynhq M07*qoM6N<$f*$;{(f|Me diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/icon.png deleted file mode 100644 index 1407b79d7a3a73b21c277880072f2e88fa7adf3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0Jroz^M|;VP|J&Z*QM= z#yBf0t7MPTlqpl@U9-Az$`x87)yfuf*Bm1-ADs+T0C7GLnI`x9z4i-*no%i zg8W6+O^pUDlP$Sq4 s>wXE@r7L!E`sp3@m0*4@^SIq^>T0FsOG*|#0J?|4)78&qol`;+0BC?)B>(^b diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5456486c2589acec3dd4dc1e6ac4ad79c3ef5a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDW_z|+Ms#N+te z$+lcA1_EyG0y#%#--tTfm3^W%=Th!NK^M;tD%|&cKTP*b+ZNls=auXJ39lGklx8VNU&9Y4gTW%IetWcE6xGmXz<;8(B*Az^DwUll9*mG&u%N@(^bi8@+ z=gy|)B~km9rk5;`{`;vXXwU0A+dZCiuKj#xt#|Y4QpSY^>q=j8g2+OHe=;1c#cRE7 cR(%kaeqg-#;!YP8pj#O{UHx3vIVCg!0K;Z?^#A|> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/inhand-right.png deleted file mode 100644 index 23855a8759e370493aafc27569cb8e04fc93a7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDWF)YHW=#N&8! zf&}a0hIa=V8}Bj(Uy)T|WYgj0(b1Loq@cJ$<8%qzcg-1G%d9szyV|Bt3psaW1GDFq z%|++Vc=@n$1d5%HG>$b`>mXD*-;}po|4y23d4usr?S@XHsJC}hI~4m>PQ7^f=w-)B z2G5WaS3ManbG=!#I6>qB`vwDpDGx#)FuL&l5UCK`5b`MafKlv=Tx%17(f~@-ieco1E{ta?c6q OAqG!ZKbLh*2~7awGIwqO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/green.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 7edf356ec60ddb4aef6d94a10a89afd5cf1518a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7292 zcmeHMU2Ggz6<#+*G=EjnQZ#L~2_*tnvUlgsIo~<=oO91T=iV<5Z`-nZ#rhSQOlI}aVE+hwZwmfySqA@~JoAM= z!dI6!vZXgO`}|#hfQOqarE)2g`N3l=|4u#x&l`rfj&0t)efya+XJ%$*PMkQgckkZO z(b4ng&mTQ{)HF>Xp&Q?n;cJCIvTgKI{K@?Ax%*#$(dCW7U0x=$^7i1bEA#bluFGWB z&pKn{{&;z-N!?mEVXnoyr)v$M&SVN3ryGRs<9^oS6{p^ld;9FUT-ISdxt&TGl^cD0 z!Wlf&p@@rcFSoai3(TYt_1EPWR+OU=w}^!}(k`B=Pt4vm>AYoHRrYvP!pB#wGW(!Sbn$~2By8v|Zx=jF>xLi(TbkwC*OGJ47=1G`F%PJkIy|IH0o*&_!d!R}A=1EZV zo_IE%Kf>pXx(Ie4PndnjUVt}v(>5tS?JPhVyopFdmk0hYfCa62THl zl?5U(#<6N(j`v1Ns>qrOkydpM6#Ko8G<2ly=7Yq9>J#A zk|aenG;s;AT;yC=NvLfLmRtvIIg^=0bUQG@^@QbE5-l0DwUt(Y5u!-~QMgQWrrV;p zl(^+KR~17h0@jEf+14<0Bp5m|6b)-SCu|9}wIxx)I@nfLA~W@R0mqU7xO2W^x+)@z zsRGwj964C0iXu?i;5sZ5{mH0T5y#KBZT4-2+YzCSgTY!G49)gVoe2lYr#E-pyoDlOWt zfjlf}OhSWFtw@71fJ0cfjmC;ZJS`6Aa=$HZz7ceay(9e81g~GIe27p&s*e1gYx`5A z$x9X3T^Cc*M1bvVY2*%(e~rfW$mEhujj5q>qQmM?V1;TbED@bDMNlDYDY9yb8q;Dg zF4ojgXNf_j7IX*l12OjpXyPOq=>(})I4kC3CE|e_*CD#5BaCfHup~nkGz8m`&Y&>S zIiec2Y--q$v#u`oBZuHIgv`Jv;{T#gs9T@p%|+%U$ae%fV-97s-E?c&q;k*tZk99} zRfm!w&*dlUtkrZTGXl%N#b0`wh z53;BUP%o>xp%}O}WnvZ$hHO!qi(!!*Agio3pOR~-np|KPL>qWnrN5HvGz#%iWYHFtwoV1>W;1Jq`E*9FYu*NFF zdDdlP2~zlGJZMU*2g1%%lMsCJV(`Dkn10>Pxa-P{>DTRyb9~$Dj$f2olI9I3Ji%#s zbgVlHH#oegDhh@pkom*y^ux|Hua5USaIEVEJ+%s_FCoYL7aiDkEyR|35wS%JBX!LZ zdLkNyI~;fdZ^ai#!BcVx#p`hM)PyT0`S_of!&TXxL;a<(@hulmzW$YCXw|XNU+#YK zy(6!G<43>$$>{BOy!F~Y*v36W&cv4Lm-O`Q(P~=RcO&eLVBf z*}tv-T>b3mw$u6Fo|`x@FC>2TH5fE!*_;D~~<%#&-fSmsab?U1{dwNB{iB*1_NkZ)o$j{@LC=U;HNn C1gD1p diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 5074896bfbef442b0470b25354df68506399d0d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)52NXb3mIRy~5CBS)*yD!w`bCwna=M8xE{QOl&oM9A3RO`>*z%VD z@|=GK(mg2B1Y>;*vQZ<;rcfDM(Yntz$HP$ z|4a%&zi0u22J>BV1_3-uL>zFm3yxaWKLX+{0syGtDHDUq0FdN(2PETDPAR37GWIB7 zM?O3k=l{$wpZ~K0F`54}!*u@74YT<_F9_55e;0%o)hEopW)|us8(IJW002ovPDHLk FV1f#7u(bdH diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/icon.png deleted file mode 100644 index 3c0c3e0f9a4335c9d7d669d31daca31cfc36e89e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*PVQ%R6tFatx`+3GrH#`oxX_wsM zP`7^}+b`2&&HknBf!{n&AO5)$89l$LI9%X#vyjYOY+g>%2;@nnW?4Up0#@w&9>-{dw;4Ny&es S^V45|-0kV==d#Wzp$P!)vsFs~ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-left.png deleted file mode 100644 index ae15d262d7a641a5c2a66ab22b2d0e933dfe7330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0JsguWx2%W?^CB=H}+_ z?;jr@pO~1Kl9G~@mDSkT*wob2*VlLA#EIjjGHZaU8B2ovf*Bm1-ADs+7JIrlhIkx* zJ9#5-vw?uCy^xS@kebI#T|KUYlb(A%?K-qrVS=uh$Hcoq44vohTy%OEZhP~7(boo_ zX9_$Hn+3IQ-J34=VRNa*UIU4huf&^QZfBN`*Ap_gD+n$*(p#VCoFnvjOJdBtnFbRq zBKo5X1Mb+p&rYgIkgoRcDXz48b;W3=@ix8B`LWV}qQV2Xrbk`h2O`7S55IHJjLC|9 d9MW3P`0}*rJX?-PBcO8`JYD@<);T3K0RW_9YL);1 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/grey.rsi/inhand-right.png deleted file mode 100644 index 60bea1b51ac8101c3cf535f7e1a4195dea17a941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0JsguWx2%W?^CB=H}+_ z?;jr@pO~1Kl9G~@mDSkT*wob2*VlLA#EIjjGHZaU8B2ovf*Bm1-ADs+j(WN{hIkxL zPLN<--0r~JYnt^2XV<-9Q$yAs+Q962 zWp&osRa!o*9D!o%r>>4MSnD8E8o!gLTmMd&UU`G@M(u`9qpWv#S9U1&tDJiA^wHCf zl?Po$2b(c;U_M$sf{OCaUUrf6z)W;WU&vBFM`i=4Q5AmCKJ4 P=phDAS3j3^P6~69NicO(J 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 BTz&um diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightbrown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e147716d7a0df188a172533daa9a0cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 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 S*J1rT2XnH=WUbCDtoaY>N>}gz diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 7dc954dd906ba8ece731831ad6ad07947257cab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)9Qd3h?X=!O{YHENc|CE%JnP$wNaLm})*z|{0W&i*H0d!JM zQvg8b*k%9#0Xa!TK~zY`?bNYO!$1rMV7I~xTi*ahJPA*5ii93VuaK;u6_ZXK!yGD7hdg zC@45MI5RUdD=Vu(?f;Z1Q)Z@}nO|_`#*G`i+<{Yosu@dy{DK)Ap4~_Ta@ssy977}| zuO8gUd&oe5^@4mMcgkYzbsHx!u9(^JNXlETq3xXSlM<05cX(M{3v3vL-akBlK{TMG zsYz+^!mULgdeVxnKRNbeR`dQn=XzvQBjx9*CcAsReCgG7*C6OtOuHcO(Y0Du%Rm1u zb8PR5bW@)ZnJT09JHbSx`{p7G51no!E2Tp}7MfqJGB#=HU{C|Ph{4m<&t;ucLK6V* C=3o8* diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/inhand-left.png deleted file mode 100644 index 46be5288e60e921d8efc632e9fdab093343421e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF#9;uumf=k3k?UWWrj*gp6x zUvhQfa{VH@#AQWEfo7iHT-n$;uZ({%^p$Yn6<>eK37y=InmK9or%_;G@mixKxy~fF@Aobaq%u6;HX)QkQYr|)) zdQ_~?CTjh{F6)?cd*+qh)5)@S;1Ugba*&TQ5%9ty`-xSs#L;nlPWzC&95YOcagm3SMkuzOdREc%lnK6T|U z?p+gh<@yFxs>a8J-8;h8VZ|L&Nc z`jLxI{i~YPj)On1y#IfDQDv}ygN{nd#Kor{rWl59Kf9;$`lHqj-VY6b#U1%xD{}bt zrMqgo!rs``Dds=o42bV5f6utxe%)=Sr-463rq+kuyW-B^80~I$ce&x*Kb>z5 zH1xB@?fn;jfAYr4&&%E|Dls)bmCS5?B9Ys9&tvBE5>@$OZ}&Zlic^AtqK0hcVp(H$ z<-m2lXG$~88Tk6nlxF;me|PJ|otBH71-U8fluJ#-o`SgFz}(X>1P=)HoO!&Z{Os0= tJN4F{$Q+ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/lightpurple.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 3df6ea0d92cb1be2ba87bc2612c0219990186ddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20669 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 6d92e3e450423e98e91111070b139cb9f8541fe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 437 zcmV;m0ZRUfP)Q)y{wYHDhG0|S(ll%F6o%qd^YGiKP>*hY)DH~;_u0d!JM zQvg8b*k%9#0X9iQK~zY`?bNYO!$1rMU{`dpScrHM-k}e{%$qQDVY=12bnk>%Eng-E zTF&Ra9FDj;Ir z#|M)og#$zhi-UtQ`h%2p@?W5xYls{weG3graTjwT4Glxqvv25?;}w!EHZ+#dKvd!t zH7*8bDe(_g!e(u{?(xkx9G|-GVJ#01W^-D}2P|gBEBSzCX5(@`KpxCyS;+&;!z{Fx f2S`N!={f%ZIH2MWw9k}P00000NkvXXu0mjfaFV&V diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/icon.png deleted file mode 100644 index 9be9ecf9d6814d64a92cd7de90f95caa378ba3aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0HU?XJ>D3@4&zi6ciL3 z9Gsb%nU$4Q&CEPy%9QyE#%DC+&lsoOxN)O7Jp2$)HDgJTUoeBivm0qZPK&3DV~B+0 z)q{q7hYWaFFX-?3VQ0%?Z2l=@>D`$VB-WNBFHri%xX7%%NpXoKqtN?@=P$?xlr%Ld zEna9_xS=P_?DEk$A5B@SBWFp7rrwmFrn*>Z>C;TFt}KbnNZ)or-lL|PR?9!Xt#WMd zs&-S~QJo}{_CLWyr2F?W3lE*yMpjCPek?RkUuNkfw{D{+&^-*Eu6{1-oD!M<2iaPu diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-left.png deleted file mode 100644 index a703128c96356bd62bd99a80479f2c7db3dff21e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmV~6Nm5C8xG00000003w?S=dd^m-dtVvplYwmmlMN-Mk`> zLhg{PTnXY6Tr6X4sF!kq2hSOcw9H{`;OvV&ezQ=QZo(U z!VYIwv+Jw=;A^G0*mk3yji0{W)6vsK>HDPf%7{%T7s|NE=J8%utQ!CCydqPk0qH8F z+rHgMS1t_0>^`qvcR-a_OFFNN$PQ4&T=x4z<7&0WEmnO#zuGEa>dQ0P6D21mv%}i- z`6@(a@?d@|x!as0&-2K2UGjaOf*_zMim21+(Av!lojqSyewTFKC}I<^UTYDb-h4VM z>iRb6jXeR9d83H^mbmCv(xhc)h8CS^dW_%cA%3G??L(_r={x`c0000000000t4X!v zC)ya96v=kHl@maM?Re|{Uzcv5Te}0K+ULgY@xLbBKDTlQNVemx{R#X=r=4zPlTosL oZtVm}wa=|>GoyVDV2+4B0R${KVORlRJOBUy07*qoM6N<$f^f9ytN;K2 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/inhand-right.png deleted file mode 100644 index 8c73e1c7ce200b66e201d55d9ff7136293888c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF>D;uumf=k3jdUQB@!tPhge zT)Q1e}Q?6&x=f^jU}rSx0Hq_I9^oBQ9QQ(oXMS;7wf0I zinF|b&iY(|O|knyc^4QkDQI21@8%I%zh8x~%_hW5I^ScY`QGWyqB$iEYfn@$>rW`X z?e*cam)+$hdp5Fm)P51j3(?!ue)iz5UX|%jxa%WM+H2;ktvf4Jbnvy5QFGeUN34HD zB9CdGE0nhUzy9nj^FsD3Zg)?(?wWr5;L)s$=hhhH-g7NZym6^OTGZ|Aw%czX?AUUf ziRW{{vt-!YKn@`d+6YPSa2GRgTe~DWM4fdoS#p diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/maroon.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index fe4dcbe7f755e471df1018f8c1f1eb2e934b4bf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/icon.png deleted file mode 100644 index 3f876a8b2a737920e24cf7c3273dcec0e2e94125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0HU?XJ>D3@4&zi6ciL3 z9Gsb%nU$5*AiywX%9I;7ZoGN~{QYv-^O+r8x|p-#?_k;M1^j zbewqcLYPH`oAJ)lw(ay!39V#KnL+-HVE??ynOs z$uK?rg2h<7=WvRAPurucZ5n(+*IgxL1rz^Vkhc6{=gZlB;1bY944$rjF6*2UngGUL BU2*^b diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/orange.rsi/inhand-left.png deleted file mode 100644 index 5e5c42697c38c6155026d8597e56dbec936ef6e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 478 zcmV<40U`d0P)=f?2qW`AJ9RXA5tQjT%062=%9N+5Ru4d zIBR3mGQvQ5(z zr+dX~S-nAn)zZ$Zqp|}`F?ap(akE-Yi#6{rueQn8`td^T5}4$}@m}rv`B|vUYGb4=n(cTmCjg4=c<=sS z*KVJCy92b^=g#f%zoy+j_i_hlw&T6M1SYX*r+e9C^sarbO|yOO?JTitj<7XJ?<@(ERAloBkKCcxU;M}dhat{3F`=$$?4 zwp05(^U||hckcW7?v|6ifFKlHJaLupQj+Q<=Ow!er9JdchW7+bFAp@=P=8x~`f+o* z!?9fLrc>HKyIy_D;#RP7zuEQteoDTv^!ABQCe{4xp8BV>QoQ7<&CVGz_HB`=sh{!; zB=^5#Tweb4^Z(mxDz(cSd{j~wPrtugkRG9d2H#bN>HJQBxD|d#6^N@RZg* z@J(vNKCV4`nZG+f_{to%cHg6@I3*Y;YRJ|t77mtHu3WeEjIX3P1K+kYz7l`q-$k9? z)9Ge?VC%Gp988`>85>5%;aJX;|Jag XX9PTcEOht*j6DWVS3j3^P6eKE@Z# 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 6698c719ff13eee761b788c32a1a4ee1cab3a50c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)Dp=hcv^yY1AK+GhS@;3K-Xu)EAv2&P=R&8(gl5;g@=(BxW?bF3tZMqmo(oY*{ytq{3Ujs6hFJok9bB666%gK1VcQ$7LKsnVg z2eDwddwxH>IB#~l-D{ZS+}gNe$gQ=SmJP?&nw!g&QRdbrUNiv7JaJk!01>VFR=2te zh*=Wg%Y&opoL2Gyi>mTUKA@`VxSS7=2h~|t@&NNN h3$5h=648Hp&Of=b`2{ZWHQ@jN002ovPDHLkV1i^(zWx9J diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/icon.png deleted file mode 100644 index bef1f6a308fe74f07a1d389db99e36c79af14b6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0HU?XJ>D39~2Z692}gP znVFT9Rm^QaWy+K@n(;So-1wY0>Ho}`|Ci0~U-lfNnz1CvFPOpM*^M+Hr_IyFF+@W0 z>cNe?hYSQ*FX+#DA+{)eRgQyW>D!Yh`L?KQGe;CksVJ%3f6LTbXu~M<{^9uxvH>Mc zO-hRwt}Xb`l2&y6Xzxc;_WH`1lA@|N<>sj@R9gDeun}?j`{a` zEAv@wFpyR$yfEcpo_m@ePq>wW3g zE&ZdfE%+xEBWT>1YkUnVTl=t7_qhn!NaGr!$AHudoAYaf&Cubsc6Mrf&(}sO|15mBeOaYbsx8*WE*Q!}R6M4v>cqqim?5Fa9uah6d z70=!MZT*)YR{Q2DE!$vspWQQ&dB^u=mBnfW9~?LQ`*>l7e8^%eR+8GHShAxZ+AW|@(kJkW!v7J*7xRZSKk{FpnQNk zZF{-W@5*M^*Q!A`8f^Nv+dQAPl(mxQlhW1odM^&yExP62yX&sr-F~+%o5H_@#a?*u z`O4Xw*%^CX0@yADKc1zPTW#&r{{G1Y&QPn;sQh!6?(utF_GU_LFqQYe%XT!rP3iZ} z>kJ#>KJ^MHNzQ+N!IXjZ(|(6nANSALQ*lID?qi3$%_G5n6z1UrcAZmsSIO|N=AGub zMP~koPMd7SYd*{z5q;+88f>2a(5X7s#}M*UCQM3OFyrT)D}oH#^QF@nb{$H2B%+Y= s^G*nJ!qehlUX8Ui>oopLD*a+R>nNWnH8)Tem<$*^UHx3vIVCg!0AMKy)&Kwi diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/inhand-right.png deleted file mode 100644 index d3df7bcb6b73f99e8093a452b873e89171ac9a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)h3yLK%HUuf?X)Gk6 z9P@_V&44pFyCm+6e!oT;{(bX!yGwWk0000000000@V}IFyNw!M{v(>>etQ4sRZp%> zh9gqfT@f|9qJ9x_n$qFJjk*`XYt3D?ZCAUU*cSG2Z%VY%+LGSMpuCJN&KR55!N=(_s6YOIL@KwO^U#| z)x5f{X2uR!JT21~eZD?TH=nG#CU4$v=KwxojP74#wZitQva{KYsCF*@m&e&~^*Bdr zuv1=B2gnC+R!_O@+EpNTUgII~6Vqkox9yrkcL*?XQ<>6Pa6r}fDs?&?x*H5=9?a>r zGNsUHtN4oNJms|*J!ak*>=4xOy0bv0+c4hk*L%9mkZ^# zbLRlh@&W(=00000002NitbZ)@ab#}8__Mgm$C0_MOp_tsM&>qb3*gnrJc~>n;M>UD zhSfR1!;!hQEFIw6$lOZq@wkpFBl9e54*~LUWNsx(0lXWT+sIM?jGzJj7$W)tzcUyZ TGJxM=00000NkvXXu0mjfN4@gS diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/pink.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 0e1f28b34f89b359b6acddacc4b5062b4f0dda33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20629 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 Fe*k(rH-Z2F diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 31cb581211a261dda5d5df69cf26d4b358bd24be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)B=riOYI`>fuS-RaQE_lw;p`(zw-Pq_M zvNY)(dY5jEM6jn$CEC72_JKJ40QdUK!cPG9CSmdonE@p^7wWxHYsxk{TQz4mm~pX| zoU1uQpY7XfpRU$w)73bVo@}J?>Qaq=4aiu&jFFwq8MZqtXXEY8*_;6Y%03`FoY1sfowCa1^>n0##J;Vo- zC4~b-35$b+G5Uj)ZSr5BUTTOODt!wLMsXK&Aqx#dwu^7*jpG%PH8wPs&_Gn;6*Vpf zW-0LxRl;U%y6)-SHyoe4?r|*-4yton$p0SmIp{g c|LHmZ0F<`Xlgx46t^fc407*qoM6N<$f~+REpa1{> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/icon.png deleted file mode 100644 index 52ac071c07790c7d21c75dd1b65f2b86290cff3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv^#Gp`S0Jset?j_T5EK*?92}gP znVFT9Rn5#iWy+L|oUGRv7;fCS@tTKyd8!^SP$^?ckY6x^!?PP{Ku(*di(`m{t%Wn*G+zveIV*P5@zE}g#mY)O@>R@_WXwu}N)`nIUBuw&>gTe~DWM4fv3FU3 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-left.png deleted file mode 100644 index 4cd9c955ae1063bea4b15fc8b4c410cdda09accd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e-2k5uS0HU=Wo2(~pUBCcm6cV@ z!P?N!(B0kL!^Jj-hkXYh$8LVk0|yQq z5Rc=@2@}veYI_2nvzf8f7_jk+w zzGu2%Q-J83>VJ9h%v#)6yY{KSx4ICqV!`W^*(NP9Z0h-o4c0n#hO3^F1F;j<9q^@veTI=;*K*GJSoTlvPCV5EVk|GlQm#0t`N3k gh48p}R>|-&OkxX6J#}NA641#Ep00i_>zopr0K5-uiU0rr diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/red.rsi/inhand-right.png deleted file mode 100644 index ae5a124c663e6500ec6ee2541a37a6dc945c0081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-left.png deleted file mode 100644 index 748bfb2e972ef9dba0f651c40ec5522d90d02cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 587 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=s3laSW-L^LD1SH?yNi>w3?S zfTj~k6OUbT%H86l<)|dK@{_!dN^jHLr3s1|lTZCm&}|anvAe`6^k%Yd(1~eWfrdrq zGfQJP&903xGJaC$t7d%irg3_jnYW$+&tU{QlVUivWZTY|b9H}hw7%~vH%rL-{bRn` zxASviUH6^a@V@rWye~%P=LN#nUw+y1$46_`#>5+w^~D&^RvxUA>0kVu_3Psotd2qq zM*FuhZDtp(p6VjMZKM6VdEwk&AHVuJ@dt;*bJ5!~W`Dol{!b;0+b{q7BB`v`k6!Ki z+LqaRRrnnPdYUp=_Q_j1XxqqT}}db^|Y zMO3UEW_(=NQz3sn!T$J$U!Nx3_1pUT!{+X{t{z*(74B9{T=$&)=H!G6+ve1HW21u_`}p2Y<2$5SJlbDM8e?d>gTe~DWM4fmtp_k diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/inhand-right.png deleted file mode 100644 index 4944e6fc0ba93912e2166df7438f59890b4959ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)F-^qu?Ou(#h}OEP_xh{^=%2ac?_x zkQ)`MVkPOtUURuN*F*BgzQ3ipJ6%;r&_Hh&$hRx6-1q0-JL%jX0Ata#SX#?cj@ z&vSh;!}KZ*V9c&8@h2{>S$lfF$onzEbTNIh=3#mROW8Rq@Q$})akK24xW@J?5J#`lfY05H-xrCP#6P)z90PIm2DX48Tdu?EYZ@HKfo!1w z&ea3Bt_!tV9Uj-ynCj<@syEbtyS*G#78iIs(Wt=pHfzsAqA>@_>hs@J5ra|nhMoim zEt|=UGP;wXj$YMCFw}tmi1txk h#>AK)2x1@r@B>ePI?oTEzAOL$002ovPDHLkV1mN&3~c}a diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/teal.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 6c3ea56b531688b7c77768b07b61ba3788fe227b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20659 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 WfXl&IS3?p20000na*S0JsetsN8;6dW8J8XB6J znVFT9HD$__BS((hxN+nD{rms_|NpM@|36S2V@Z%-FoVOh8)-mJv!{z=h=kC^oN`@Pkhd2J3(FMR_ob`RTDy99&r$TbNZmbr8x|p-#?_k;M1^jbewqcLYPH` zlkv{ikBU0w!MiRHEu?+Oy@&y2Bl9kK#n;UjA9OcY*UworS_@ v))??jt~HSAx|tIyqw*|NQdThW&jslZAB|%d>6a}8I)}m2)z4*}Q$iB}06u2i diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-left.png deleted file mode 100644 index 592cd94079c18409b39ea9ddc66a6f20a9bf8063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)@MF;8RAh;?4DNfeU=qhA(6sJm;m>&?F3{s5ul@3MlQn^VG zByW0<2T3?MfJo#=i~wY768f@xE;ax~Yime~55au`uC*)7TsO!b)d?jv8k8PONsV5S zc}xSNjJ=nky)(#-$pfRoQtLc08mv6#fl<^#%|nYs{t59~2FyB{N-oHD$$<+5p7$5W z1r1`u1(2e3>>Gr&NA?%BF?GcTT5tIP?Trn3YN)<6lqV8JF|_crklO$N002ovPDHLk FV1f(Ke8m6& diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/inhand-right.png deleted file mode 100644 index 3d3dd56f27ed45246c680f7db952cefbd22cee16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}P)}|M5eA0P6BEwT6_JX8-^I07*qo IM6N<$f@+q9Q2+n{ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/white.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 07673c8fa6404205a2624368c608fac241344917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20764 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 Cw}7Ak diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d55755808112291eeea4b02f193f706cbf48d47f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 439 zcmV;o0Z9IdP)$C*_+X4UKO|(#`Gynhq0d!JM zQvg8b*k%9#0XRuSK~zY`?bNYq!$1rMV1+_J(4nSJ(zoc`hsb*rGIhFDaPb`IOLP^; zw;OCN9h#IoJwvxfBG^->5^dih`#_w2fLr}#;RgVFlQ8*)%z%=d3-#WpHDw!}t(r3& z%(z%f&efcu&-QJ#PZw*o>0%s7KW(J(;!=%&4aiu&jFFwq8MZqtC*$qT*_;6Y{ z;uSS624*So4^_fuZMyF9%{LsMy6#~u4-TqxTFD12s>&<*fU2tFay~#FRA*Vq1I)uL hw3Y`*ME~hI{{WnO@|+Ky+@=5k002ovPDHLkV1j%jzApd( diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/icon.png deleted file mode 100644 index 15670841c25b7b061ebed04e29be9d31fc75a908..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvtpJ}8S0HU?XJ>D39~2Z692^{G zES8y>nU$4Q7{V}R%9I;7ZoJ;Y^8YsD|A)SXJs#(Psu@dy{DK)Ap4~_Ta@ssy977}| zuO2kyI&8qhdcj|DfpqCR#UlA$CiUWl%U@_1+~f6}#>ac~QtYjRr8P}X_YcosXuaSC z3#+S}bM(Upl4qZ+JK6iul)b)krle@-%|5OL)A_h-aKbLh*2~7Yd CR$ycR diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 6959537bcead7b03244c6181fa21d6c2d1839053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=sFpaSW-L^LD1S_u&AEHv8AS zYnmqL#omdz;y7nXcel6<*FUa*9ou>?W;zlL8&ry6xMt zymzB#@y{2Q?RDob#mq9#zc*)c+r9$^Jckiz@zID&tIwuwKKK0Nz2$p1-)cJh=#0GY zow_Pp(VsSd`*v&ZyS?3CSRicu%^bczep;(G)-AaCcCFX~OZ^?P-;ZDX-1MvPOOpa8 zLu8!K;l#vSJH3;n^&WrQQ5C0qrGNEv_eYuqWeFC??(7MYwlfG#xP67ZQ`fzp4T^&$A{QnakSlEtoro-l3tJJdN*=6zfJbN{HCkpxzi1H z@vZk1Jlq-#9`7|yvRxIKwO7G|>BjvZuk6;ecy6!!UME@Qs4|bKDM*=p{b%h23AQJn zEqAPxNQe}>B4rxkZSQscbF)svp><|B#q-wIA>D$3)yAWhIp9EZ2vN)AC}De6R8Fa=-c(aaz#frd&2qZS|VFA_4(hkKbZ* xxC#_-ST4J5^@ZI5-;3s$%}Sgh$ih&^7`Dr5%dDGfkAbO#!PC{xWt~$(69DwY1^xg4 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index 148b9812320ec61496ff21a90bbcb590f7d7e5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)0__I|>#*KwIcg zGAgLm$eZ?Rnq1mTgWP-e{Vh%I(&Krb+$BdIU>JsB7=~dOhG7_nVVKck%wKIfopyhZ z_dcA{>#3gpyZoDT`!oUmb_$^0oz)g>=4X1edFyC28UdvVnRfis_EsyTg;_ERe! zb)h~#gY-%bK$aJi?j0BBczl?fcH1d}x=^2A^B}!}seE=|xrGW|O0VwGQl@vH^NV*9 zO9Ah$S1*KUM!iRuc0jLm2H*hRL5g1|(mpEqHKATn{2;x7Mbo*fPP_PaTdh{>_KS5! z~DN_A0%QB@8I5k3dGSHd~b9p)HBeWUjfUqAe+s= zP00e=wxLq5z*_Q=QvEK&>J2p@xBdVNseAXhT1dcd>KkAVpgNm?^7HuLR1t$=^@i>Q z`%Rmx;v~79po(7EPB7Gf|A_Kdc$8oR2x!m>8$dvVR@eXn8nnU&5YV6%Hh_Qzt*`+E zG-!nlAfQ1jYybfbT44jCTr3M2F@K{LmPSF@0Mimk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0(2Ka=yPMI?0;>C;q|Np;n<3?y`=!+LGfHE-;rI>&edr6RAFi;8z7^J+J z-GD-z1s;*b3=Dh+K$tP>S|=yal5|fO$B+p3x6^L-H5>4_$cp{=?|)A+S<3oG=F)eU zwVJui9?ywc!BJGVk~M9>V_LQxXrJD_m??$T z_6V2Xe*P||^Ow4Q{Z`QD*m~YnZi1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..64642a11589e4ee7d66ac750216c4f7ed0c4d69c GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij?1AIbUr%ai0@#4k*|Nq~(aU(P|^u>!8K$)0_QcOUKy(Gvl7$^k<3{u|A zZa^W<0*}aI1_r)^Ak4U9V)k30V6Uf(V~B* z;{0tT@de-I7*_h&3msxVdjIYsmK|%tR1Gd#0lT;(ouTj)u6GtglSp00i_>zopr0NZ70<^TWy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1312348654cdba461670aa3a307575528fb402 GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1k1^9%x?%uuo&Ye5=@8AFT@88XvH|NivziQR0W5jwNkEFL zB*-uLKMXKzI-_$QD9Tyj5n0T@z;_sg8IR|$NC67o@pN$viEw{A^&(%h0*`C=3hDp< z4`(k-xpq&rta_%WztTBv>jwSlxB8bTusU%CDg0U5;3fb2y=T2vhUxr^mo^(}ZRrt| zXjpK{YpImu)7Xh;MZ^Qw=4jaLi(i<-#9}n@e*%l$>;{)>kGJ;a2P|8V@pR{M{d?c{ zH=UGcU4BwS`bW;k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uw?%uuo&Ye5=@8AFT@88XvH|NivKWo;kRjXDVJ9g~Tr%&h3odYUd zFyBrPNb!^e`33(+00yD^U}??*kH}&M2EM}}%y>M1MG8>yQ%@JikO=p;Q*ZM%D+stu zSK4~@|Nr~%l%~51&+XMWyE$283ZJ@weA~6zI}WfmamOgwxJ_8za8u)nq5bulako1p zyjG=kD{PwT)WQ+eYVpqsLon_Z+njDhq*u4IgjO7dd_<3Y`m#{{?T={AiIE89@@k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~O1^9%xW@Tk5C@2I62OAj~`TF_-g++yzssbstk|4j}{~*AydH<6AKoQOY zkH}&M2EIce%qXhi)c_Ri_H=O!iEw{A?KW3~f`H5CZ~yntQI1}@b82dU0lUt$wT~a1 zwrXt;a9~{UfYouk!T*CUI&wkRC7#Db1*yN1UAsqrGsm8fkxU_~EBC9N_;pyQLDy0G z4Ikh61=3s^3?cyx8VeX|{2MN=ID0IuIEQJc@*I^9ze?8Si*g-JPi1mEC41?b@SR2` et^@B`70>w8`b~Zid4mJ!ECx?kKbLh*2~7Zw!DbWy literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0cea666be5055d5be45f27895a739f50265298c0 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCim11AIbUv$C=j6cmDkgMEE{fnu7Ha?wDFwIs+d_&*RZ{NBbF3>4rj@Q5sC zVBk9h!i=ICUJXD&XHOT$5DWk01VsinQHKK)LK+q_Mm7j?%y3|t!q4`?YQ_Q+nFAsQ z#zx9B86G(@UQ}yfIK-mTkjKO(5z4@55`N$i6GOli{)NrUm=*(#WAJqKb6Mw<&;$T9 C?>R>R literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f6ff6866ffc359196192cec6c75f0631f2a399a3 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!RekZjv*CsZ*OkoZ8i{Ky>MDBpi0y&(IIT% zk=ZInUQ4!cimN>OK1*9?uI|rrd!Pmeh6VE5pWEa}v{lc3Y;nxQccYGX&h2gUuSVJL zQ?I_i@>%6Q`T45V_jk`%SujQD^{!>A3d#3Z?(%cET=({C^x26lCX&Cw#xU$EzuETm u(%Zsq%6A{et2`(IvepS-$mnPM;dX?%^>JKj1RqBfNU5i*pUXO@geCw@Enh?c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/prisoner-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..45393e81a66103898d2e33673dc0c227824b4f29 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5N+|jv*CsZ*OkoZ8i{Ky>MDBpi0y&(IIT1 z$!rxPuT>nHE{Z2Rzt7UviB^AIZV%MK!0^CE@B7asuXkn7uDyTUfXC1`_)66E&8d-Q z@Bf}!_`C1%4!e0r=heo0IcTartMr@P(Eq;r6^qH+aQXc={}eOL;`z-4Hm2t8x?@i+ xu$j%yseL$YyYPgChIUt03SY=bU_7Dsh;8qzxKia)({({gJzf1=);T3K0RWP*Ul0HQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..cee5a50d2caea42b0fc53599a92a1cc8be1a8d72 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}z-nel?TU$FbGczkID<~*v%9JU=!NKN00Px8&;n4KL0zFl=Dh!{F2Wk@?e1J*L^`O9T_!lvI6;>1s;*b3=Dh+L6~vJ#O${~!3<9q$B+p3x0g2Z9#G(6IZ(bVfm!9oLDA&R zY#pLAlsHauv$%Ur+~1}ze_KIGNvYrPSnfw@%k=Wb)Ay8DWxbrUx}hV&>bcg3Huv}& z*8PS`Ee%tIyfjyAUG%-r^0}SYmTP~K6_pmrGm5ENh@ROp^S~9LoeZ9?elF{r5}E+l C6-M0v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9bbcac8268ab5a6466b66447666b6542c66ca9bc GIT binary patch literal 245 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!7fi1$B>G+w>LNPwixiR2Hf{OsGy;oV#Aii zGDT2AA-ceqD{4v%Ex1oH{<0B z)YsP^SbjE7b7}It=QEaR7MUoS=Pdp4qVpOJ=HoRC&7kxvXpFt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/color.rsi/trinkets-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd725831525040c80289ad5c787cadc64f573c4 GIT binary patch literal 251 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/inhand-right.png deleted file mode 100644 index cfbe848c3b23e01ca10192642182d1d6a901d312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmV+-0^R+IP)Sd|XW{Uao;{u5nmm!d@Cdb-(86FVyJ%-}++j@{jOygt8(D_beSyXxcm=Wnq0WBBvWZQ8sqvu+$71o3Ma z(r7gJbbL&75CITITrx@n;5%r`n%Y-iSalx z2P0{Gn;5%r?v`&8V^?DZ_HAP9!ubf)YBjqx+s>T8eqF5DcDwCe5u5}2HZgWJ){mfX k6Jr-+bxadj5&7Tz0lqX4*UHG0C;$Ke07*qoM6N<$f`6X@4*&oF diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json deleted file mode 100644 index 36ab573091..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/prisoner.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey derivative made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index cb1a5eece64580ee3a8394f4262942e5b5e60a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20645 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/icon.png deleted file mode 100644 index 8cf3cc9e90152cdaa5da2f13a849768735f8e32b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfvxd5LKS0K&7$)T;SZEtTM8XB6N zo!!{j*wfRqdiCm?H*c~|+QJD`!B`UH7tG-B>_!@plkVx_7@~3h>bZrY4F&?t7hbb1 z(Ri{|c+0|m#)_V%1YQxb<2!DYFn9b>>byB!=u+t}r!UX_nh!)Q_h@veN)ucW6Cui# zF2=|#-93%XY^?$J&W*ntudFJ!-AFb zZtm*p>hA9D<>eI+5RjUhnwFMUR8+KL#fshyXD0(yGnNGT1v5B2yO9RuEcSG94DmSr zcJfBvW&;6Ndm$m+AT^Jfx_Vp(Cq4Ik+I48L!USD0kBN7K7&_10x#;vT-1g@EqOT1; z&lGqZHVbOqx;I_!!{$Q(S5H>Wa}!<86AM^JAs|M1==%O^>?14@8EuAAaYc8Iu+J dIHa|n@#SgLdA1ypMnLB>c)I$ztaD0e0sy9}XEp!; diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/black.rsi/inhand-right.png deleted file mode 100644 index f2a18bc4ebb1aec5e19174fc63413b3038f9ebbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 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 dbe{Ob_y(XRV2002ovPDHLkV1kE8uF(Jh diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/icon.png deleted file mode 100644 index 54266e7972def6341e281d02dd4c9dc47d24f215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0F9N>nJBvY}C5T%E~He z-I?Iv;H<2yDO0AbUcLI}&6}Ggyq$rH7)yfuf*Bm1-ADs+@;zM~Lp07`J-3mw!9axN zLcW?nA;VwA-qfbD(o)zCvnUI=Hhx^;{E$=7Tx?HWhL&Z~(%A30D>F6n0)>C&oeq(`+FGAHgROAwGk(SQ-$Yz()|fMKrA|f*^tc3yTy+ zA%#s`8InWHWs}X>iQ(Y?L5iGY|DEid-68`bA|fIpA|fIpva^30;`k=)I#$+g^g2%R zZSx{bs-#F!t6RX!UH50QK5Wq@uao54&1i*z~-&-38>J}Q+8f*?R?dL6hti+?WdygrgY1DZ-}dnoM`8c*ko2LSUx z{s^cSf!D{e=S5Mwm!xY*%>Z)?Kx!7KRe|?6p!Q+cE$uuaA|fIpA|fIp`uE(XG>#wb zU}RJj$MJ4n0O*b5-TQxCd3^5f4p17OtBuC~jPm&0%^jdPj(7JK=*423?&gqDaeVIH nGoVRpeD3a;nd5V!!~pyN(CGOSO*-XG00000NkvXXu0mjfcRuP# diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/blue.rsi/inhand-right.png deleted file mode 100644 index b185b623967a0a1d91893ac08cab301d8e7b5f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 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 efI;&2WYz{K`yC>StZ zKfLYl6JPCiyC}V7I@TQk1&e?3lKHm;56|siK^o?SHmNMWluzG pf`S|g_)WB33B!cnbe#CZ_y#v|pgm_rl}!Ku002ovPDHLkV1nPxxC;OP diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/icon.png deleted file mode 100644 index 9dcfac02b714b15f3f689040690551e97b90c6f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0HU5BVc7^6&xHKW-OMK zl~v&{H)YC{g+-dHSFgT#^QMo+fi*xyj3q&S!3+-1ZlnP@1)eUBAsXkep4-UTU?9SB zK|h5-P+jnisGXvPJBMCE@@xM+oGjJS+qc-7U(lAnQ>YZ*<^5bxvS!bE6M+_^N&yRn za|TUKvaJU<9OQ7Bm}v8ALZ#D@vy$uOXBBnEWd16Bnbj1w_Z9bogA!U_txlc)#PCT` VF7=!oLkQ4r22WQ%mvv4FO#r`7O?3bO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/brown.rsi/inhand-left.png deleted file mode 100644 index d316b0400e147716d7a0df188a172533daa9a0cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkblue.rsi/icon.png deleted file mode 100644 index a054d2a82ef2ad810817477ce01f9f97a2217ee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 4ae08467c95067a0f398ea5078b8922893564d3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)D_jo7Bu4UTXBj;gOi82yGE1u}5N>YJ7xGC9!AbF7X~+`VTh` z{bpk2b`E7t9EoWdxt&9YF>xd&BDS-`IamM_+l!%Kz;yTYc{ycXmgN;Hh=@Q1#R?pr z501F?K*7~OP?42TYTw~&2v(}@Fb(5j9C!E@|87BG+!w%V1rp4wTirrACrS-3aP7Op z%8@n&3W9I3HbJ3PcsMkLVhh^}R`6{$Y~dmxRBKqlP0MN@pkRhA=K1k03zyS8XJPoQ z#UUq-7I@TQ4={@X3lL3yz-i)N5>>}(u7*bh%btkX1O?d$_)TiWS0Jroz^M|;VP$3IGhHk= zI5;aSD}RsDlqpkIuU>ug=FMI6FK!1aVk`;r3ubV5b|VeQDe!c04AD4$_1s3z1_Ke6 z3;AjSu@3f)4aqGH%p825IxW>VY}mGOYq9t3V&=V{4$7*3TDqe|ZsNh?zrAD~Pc*YP zGC$%_J`pidl83v;L4@_#V!l>&mpc(3el1-2gTe~DWM4fA*54m diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-left.png deleted file mode 100644 index 5456486c2589acec3dd4dc1e6ac4ad79c3ef5a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDW_z|+Ms#N+te z$+lcA1_EyG0y#%#--tTfm3^W%=Th!NK^M;tD%|&cKTP*b+ZNls=auXJ39lGklx8VNU&9Y4gTW%IetWcE6xGmXz<;8(B*Az^DwUll9*mG&u%N@(^bi8@+ z=gy|)B~km9rk5;`{`;vXXwU0A+dZCiuKj#xt#|Y4QpSY^>q=j8g2+OHe=;1c#cRE7 cR(%kaeqg-#;!YP8pj#O{UHx3vIVCg!0K;Z?^#A|> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/inhand-right.png deleted file mode 100644 index 23855a8759e370493aafc27569cb8e04fc93a7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDWF)YHW=#N&8! zf&}a0hIa=V8}Bj(Uy)T|WYgj0(b1Loq@cJ$<8%qzcg-1G%d9szyV|Bt3psaW1GDFq z%|++Vc=@n$1d5%HG>$b`>mXD*-;}po|4y23d4usr?S@XHsJC}hI~4m>PQ7^f=w-)B z2G5WaS3ManbG=!#I6>qB`vwDpDGx#)FuL&l5UCK`5b`MafKlv=Tx%17(f~@-ieco1E{ta?c6q OAqG!ZKbLh*2~7awGIwqO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/darkgreen.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 947d515970f77c1c33aa2111339652563383c024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20637 zcmeI433L=i8i1Q{8UzBuf`Bp%L=NdppVQq#GLQpEfW(jlxdhYGU7buwW`>ywIS>ek z9KsV6c#l)L44?)CB0>$}!5r{KpEj`(3N1Zn(~{96ZE zytEC13@}^MhPsC)4m1h&oCsdDTR=p9jsr>~NMx^k2QQ2UZk+{WSZz`IE8BPJbyhJ- zKZH)i5*@K1(;8ps1gV8dX+q&>ffMz;%%PF_CTJiBxOrWEPPWZu%8$}}?3!R%t~Tg( z9ufEGD1Eftpl)blvM$!{1UfpxhzgjI(J@>EPBRR}^w1F)P8%@NKw>CCnkdXf5jx+G z-W&=`kxo%ErNs61H3$ES(r3Ee4wJ!RbXk8fN#4y7TR%f}8;uwk%X*g{nX%o&okKrZ^3o_!BtYRb4E?T7mzYP+_D3rv~aKc2>!3KiF zsv3Z+P~_eGZ<`1f3^F1LCduy1;oW9y4xa%G4qHZ~Ay644sZ2~$tUcTAgna^LGSX08 zb+uY?b|F_@8PPTYxS$(cLGFQ0@~r(BKBIE2|3?Ea~zAI9LsYwLozJj#agnK2%I2U$eJ?38R%IuJSIUt5(a3J z6bQyrYtuAAV5E_Ny=Hy$`uF!52JQ$EE^>FN=9Yb!^i;86FlSSD`{iHW8Jo6F6^P?r#AmiuFc{h=t4mCtU%MKKyiSDOVCIVa0z?+ z8D#8%hF)-5VYbL;2g&%^GJ?Pg0xhBvBhjcx!m(H=2pA55q;Qe~9K-vYsK(3#O~qT~ zJ)xj-@b>HpsbEay+Q6RR$?F`v(*@+LB}(s4Ta-l5y8-yN0Z;a0;srS)Gz)Sr0N^yO zR2%4)q8aHGus-NcbqF3%uepu9OkjIhF5xxhk*e8<%PzU|cqfR?fP1Z)G{Ja6@1ObLA z9Zbh?Ii-`&D%5bli9Z5=pl?DZZ_5Cp+2HSvzoP1J{+~U@GAu@t5`kI>jzSp>Zc?lW z(-;KLn*==Ki^Y=tN7*~0C$OkY{mz?$-opL_V zx$QdM;mEcMyc|jmV{M}E$gE`5e(wd@_#aMC5jd^CC#VGVQt)Ha{mI7s$YE4Y6$pWp zP7QrJkGw3^9rUzi=?RJQ z#XEs3pY;5v#|KY_{$sFro9`6A&D+%=W7V}~f7AoIx0Pzl1X}a^AufPB=sX@NKczRp6Fxj`deT8Ne1i8t zU63`;y`l0+Jv-NP5@!eu{upri>QfEAT~&41!&QTCS5*yY4z^j{X2RE6mFgfZ`Bj4V zX?H4oeFn@%nkM0XTD7{WMzS>@WDkwA!l&IX`B{UJ^66B)QLW;zniPX>_!Pa%Cg??% z$1&bo_!3K}joloS~amx4k~LBpknk|LwwQc$QVXt>l+Qe-q-3JNs^4VM~9ij0O!L7}Fg z;Zj3MkJK*-ycFT#?$ z?wpbG`CFk}E6cWeso%wxhwWdt{JA#$yXAJv-MBn`Zg}?*Y@@iQp{4uETA$oBx&CVt zk8WuAOG(~4xhqFr3Z3#z`O1n$TV7{t zS?96NFRx!G?oQ}++1z;Tmwm7Qx@H%G>>P3brM!y%U!1vru{A)BR2(~dR_u2;eA(*V zOO`Cz`b&@APbG9fmZy}gnqN^L2`OqIJR3iXLDDPi`OlaUWXJdgKeRnMtbG6e z8Rr(~th~3U$%T7&wmD0Rlj!uRU%k>Ip+on7lu3!#%brG#-YF_CokdK`l0MH&+dQfN zho6;3XT&w1I(Pk?rw66o%8Qx3D<>&Ar*PJ+S!EYzr%XPwU|;IwqH#%s>Ryd09I$Ez zQ!?V`(B<(TB)=bmNKDfMb+bQ@`=VjOn@GzK=APPpsNaT!;-Ra;zxwQ@DRgPX+nKjE z%zynry|L@g=01OP$lotpe!kYRAbs+#`^x>SwK=fb{;?lxEhmgX{e`q99J+ z{Ok>QePZCa8`S)-yAnDu72QPazCHF6gD#wtCOxtNkONw)E?>$oX&L9NYcX%FpcK9ah`OUjN z0#gg`4oNJ%{bb$VjkcAZ%Pu~AV7zx0e~UN*liEQaNE<}uz8Lz;`vvZ9Q(<%E7v^ob z-*##9KH|>t(?iPPgm}U+YVoG`+OJ=O4qV)KY0WsKcc(XIRJ1vA@`al% zPais1Z{eJfK9f^6PHU0X`@Hkj&955XJ6Lj}ZG)LT^Dd-s`6zt&-KV<7>^pKKtaCz4 zXv&?hNweN6h~{{Y%(S~may diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 029f91d0d48c0fb064f8712de01764a5d3144902..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)|{J+ zqFY=u_?1XAi>YLxDzTNsCN(pMml{2BcqFDdLR&;h?2(w}8lT~FN$i=qOMFC^{=>~f zznNIMt)Z-mBQXsVw>5N_5=UYpVp|=~!2+1r-V6l;rn{&2^D*=3bb5vgA|g;hu>yzZ zgClM|P;fO6RAeKR+Ar`m1S?f9Fb&fiWS0Jroz^M|;VP$0%92}gL zl~uAwY08u-^R8K~UcLI}&6@#kIyZod7)yfuf*Bm1-ADs+3OrpLLp07`J-3mw!9axN zLcW?ntV6wEQ+7x95)QqDGzzg5#YvntF5HQ$Bp$7vwH*>Ve~f z28+WSTxB9`huM?`T-!dbaDK)qXr8{OF5{GH(bBosQrB=weO;yBz?Qt?O18fJX=a-e W=`(5We9b_+89ZJ6T-G@yGywq815mX9 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-left.png deleted file mode 100644 index 5456486c2589acec3dd4dc1e6ac4ad79c3ef5a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDW_z|+Ms#N+te z$+lcA1_EyG0y#%#--tTfm3^W%=Th!NK^M;tD%|&cKTP*b+ZNls=auXJ39lGklx8VNU&9Y4gTW%IetWcE6xGmXz<;8(B*Az^DwUll9*mG&u%N@(^bi8@+ z=gy|)B~km9rk5;`{`;vXXwU0A+dZCiuKj#xt#|Y4QpSY^>q=j8g2+OHe=;1c#cRE7 cR(%kaeqg-#;!YP8pj#O{UHx3vIVCg!0K;Z?^#A|> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/inhand-right.png deleted file mode 100644 index 23855a8759e370493aafc27569cb8e04fc93a7cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8R}k$jViYBAW@cuaFY8*X z7&28WY=(B^9G%n?R#{nDO-)UGeSIfRoCuS790gR(SQ6wH%;50sMjDWF)YHW=#N&8! zf&}a0hIa=V8}Bj(Uy)T|WYgj0(b1Loq@cJ$<8%qzcg-1G%d9szyV|Bt3psaW1GDFq z%|++Vc=@n$1d5%HG>$b`>mXD*-;}po|4y23d4usr?S@XHsJC}hI~4m>PQ7^f=w-)B z2G5WaS3ManbG=!#I6>qB`vwDpDGx#)FuL&l5UCK`5b`MafKlv=Tx%17(f~@-ieco1E{ta?c6q OAqG!ZKbLh*2~7awGIwqO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/green.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index a1e1573d24bff218ba847a934b8c15e61fd15971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 TGX?q)00000NkvXXu0mjfDL)0p diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 56c385790eaccf28001828fc42c3ae7dc7776977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)D>^zlKR-WHQ&VbcYLt|emzS5XudlPSv)S3%y$6Tm00001bW%=J06^y0W&i*I zJV``BR7l6|ltD@bF${*I4#9H_9^@hAT|jVMWC&#r;Kq%s5PAT?16V>%`F5Irp3LgG z5MFj)`AFKP4be3&8T?M9ndS3Cve1;+YGRX?nZs*~kvKdO(;A^Yq9*o8Olyk~zShK^ znTNzz3>iP%J@lK2mHP-~O&p17D%?ltO-US~Q%T3L;cyQYz{IA8f&tUr^V{oF;@f3e zULb>r$WBJ$@O*K^eFO@w27-!ggxbaqUqZ0jbcbmwhf;R<8vkxUVBA;0W)&8gH?O*f za$cw{yuz~|4kJhU8Yl?<#nuId-r(cV8j2na*S0HU~Zyy>Onw6E6ot@p- z*x1w4GkyB>)vH&pU%!6y=FK;6-W2~R`wys&u_VYZn8D%MjWi&q$kW9!MC1I`a~nAu z3`AHi=tnvfG96@`63bP0l+XkKl_67d diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-left.png deleted file mode 100644 index ae15d262d7a641a5c2a66ab22b2d0e933dfe7330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0JsguWx2%W?^CB=H}+_ z?;jr@pO~1Kl9G~@mDSkT*wob2*VlLA#EIjjGHZaU8B2ovf*Bm1-ADs+7JIrlhIkx* zJ9#5-vw?uCy^xS@kebI#T|KUYlb(A%?K-qrVS=uh$Hcoq44vohTy%OEZhP~7(boo_ zX9_$Hn+3IQ-J34=VRNa*UIU4huf&^QZfBN`*Ap_gD+n$*(p#VCoFnvjOJdBtnFbRq zBKo5X1Mb+p&rYgIkgoRcDXz48b;W3=@ix8B`LWV}qQV2Xrbk`h2O`7S55IHJjLC|9 d9MW3P`0}*rJX?-PBcO8`JYD@<);T3K0RW_9YL);1 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/grey.rsi/inhand-right.png deleted file mode 100644 index 60bea1b51ac8101c3cf535f7e1a4195dea17a941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|etpJ}8S0JsguWx2%W?^CB=H}+_ z?;jr@pO~1Kl9G~@mDSkT*wob2*VlLA#EIjjGHZaU8B2ovf*Bm1-ADs+j(WN{hIkxL zPLN<--0r~JYnt^2XV<-9Q$yAs+Q962 zWp&osRa!o*9D!o%r>>4MSnD8E8o!gLTmMd&UU`G@M(u`9qpWv#S9U1&tDJiA^wHCf zl?Po$2b(c;U_M$sf{OCaUUrf6z)W;WU&vBFM`i=4Q5AmCKJ4 P=phDAS3j3^P67K%;X?KjG|m3 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index d77f8e18e13aac1e6ff5b9ce5f7fd96f0e7e794c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)!x+1c6nOrFC40004WQchCBp&!8I0Ekubf5{mmNk za(0@3Pp&!(;nIEKBiWtIgy<6I41Oij%<}OrS*S{EC9z4(%;BX*PaGbJX^zkqQ4)J3 zrn$yv_*@cuX6_P)=+b|V1_Nm@%A|j`@3<>!th&*O-^hr@TkKcVHN`xAew!H)5O0ds*clK4UY(xJrS`9 o3UVaiH_>(_3=@9SapDi-3xheVNzI|B>Hq)$07*qoM6N<$g6~zm5dZ)H diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightbrown.rsi/icon.png deleted file mode 100644 index db1bf71e11df0e858b7ad03e1a27915306c006cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 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 QKP8yft8a2e;?U9m0n46O7ytkO diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index a7784172f721ecc8a782877057bb7ec21b7d0f5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmV;n0ZIOeP)^zlKR-WF8K6^BQ)+5zfF}Qxl$4)v%-Px58P_#400001bW%=J06^y0W&i*I zKuJVFR7l6|lrc`kKnz74kR{4Zu@{Iq2`3l|OQWra3}eL`m$CnC2R%@VO-R z%-khDqf7tc=AqwAtlW;FtcfEr4I{T>=rAUZ#6-k)bT|hKU}AeW6bzVdpFa*yiEox= zd4UQdB2YoG0*B{=BW^uVa5WHAWF?f^H~12Qm8u&|!?+vA4Zg;|TM!s`1+ZFy1oP@v zw@}WBQo{>e`|hxEq|JeX;9IOsP-qn%4$Yz1!p;RN_%<81a1juyHLT#KWwj4bFvAwp zbpM)#!^1RXVfd}ZE+_UDc+_E!FpB{T5Y4{BY2sfJRmW+rhDQX;o`~241vwM&n`plh gh7rH%Jn@I|1v++^fqrhzG5`Po07*qoM6N<$f&%!lMgRZ+ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/icon.png deleted file mode 100644 index e3825ee3d1133d550f03953f0ddf2effd7b4f494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0F9N>u6f zE2}~6|CA|H<`R0<+awEA#8?vK7tG-B>_!@plke%`7@~3h>bZ@a4F)1C z7xW_?N(7%eb4+WR%+kbt<3^ouKGVTlr*w1A^L{zSUOwl<^hcK}UD)K`YnQStoD$Fkl>zZkYm6Um?F_{l`>DDu=v>P_GK|j;j=PhkIh;Ty8ahahC!Rx-fy2a+boTe V)!3nRU=z@422WQ%mvv4FO#lyjQM>>E diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/inhand-left.png deleted file mode 100644 index 46be5288e60e921d8efc632e9fdab093343421e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF#9;uumf=k3k?UWWrj*gp6x zUvhQfa{VH@#AQWEfo7iHT-n$;uZ({%^p$Yn6<>eK37y=InmK9or%_;G@mixKxy~fF@Aobaq%u6;HX)QkQYr|)) zdQ_~?CTjh{F6)?cd*+qh)5)@S;1Ugba*&TQ5%9ty`-xSs#L;nlPWzC&95YOcagm3SMkuzOdREc%lnK6T|U z?p+gh<@yFxs>a8J-8;h8VZ|L&Nc z`jLxI{i~YPj)On1y#IfDQDv}ygN{nd#Kor{rWl59Kf9;$`lHqj-VY6b#U1%xD{}bt zrMqgo!rs``Dds=o42bV5f6utxe%)=Sr-463rq+kuyW-B^80~I$ce&x*Kb>z5 zH1xB@?fn;jfAYr4&&%E|Dls)bmCS5?B9Ys9&tvBE5>@$OZ}&Zlic^AtqK0hcVp(H$ z<-m2lXG$~88Tk6nlxF;me|PJ|otBH71-U8fluJ#-o`SgFz}(X>1P=)HoO!&Z{Os0= tJN4F{$Q+ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/lightpurple.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 543da4f4e4f6829cdb155cb1a940344bc94cbc4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20574 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index ddab094d22b92dc71d299247da5087786a6c1e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)8V2#WjQ9h%~d9N*1aTTS;tEGjn*U(G!P9Vp<}!MU=!IiD{|v8NQUno|(JEM|9~w z+&uJ~iIv+Wlr?cAreWrG2_5Fdk(h|sE)M5l0ZeS~hJpdp-Q(-|koj~vJwXK#5vZV8 zfy48`5w{*FxEcs5vJy(|JA4hnO4S{vVV>rBhi~!k76it90jyRa!MwWFEtGSj)bIk= zzB{ZOX-l9W_!esu6k3IcLrW;Ou&rPP-)6%WE&@Weh85hjto8v4X4qmJAD**tK8#}) zhTmFDIdQbWqYit4SqxZ!Xz>ZBiGN8{9jCb(9uX{iB4QI1WFz1=(QzdVGk()H@rUsR X0ho*mH!FXP00000NkvXXu0mjfLg1{K diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/icon.png deleted file mode 100644 index 459de73286b8f5dc6b6445a8c5ce45c97d1750b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0HU=W#z!Y5F8wwm6cV^ z%sgevl=%wAt5>f+qZxnm=FPhTZ@Phs7)yfuf*Bm1-ADs+3OrpLLp07`J-3mw!9axN zLjMHYEd>k*9bJB~tX=!Y`2@?Y+4(ydS&nb9HNT)Of2U9>zN`DUm_*Hv^%ep?soxX| z96St~nuJ>q798MknV4wvYC@&ck)=J?`FnS=tTXw$tHjiCb=+6h3nwMCzFM6+|A}GA X5~UfN6c#iB?PlbP0l+XkK8rM^* diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-left.png deleted file mode 100644 index a703128c96356bd62bd99a80479f2c7db3dff21e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 498 zcmV~6Nm5C8xG00000003w?S=dd^m-dtVvplYwmmlMN-Mk`> zLhg{PTnXY6Tr6X4sF!kq2hSOcw9H{`;OvV&ezQ=QZo(U z!VYIwv+Jw=;A^G0*mk3yji0{W)6vsK>HDPf%7{%T7s|NE=J8%utQ!CCydqPk0qH8F z+rHgMS1t_0>^`qvcR-a_OFFNN$PQ4&T=x4z<7&0WEmnO#zuGEa>dQ0P6D21mv%}i- z`6@(a@?d@|x!as0&-2K2UGjaOf*_zMim21+(Av!lojqSyewTFKC}I<^UTYDb-h4VM z>iRb6jXeR9d83H^mbmCv(xhc)h8CS^dW_%cA%3G??L(_r={x`c0000000000t4X!v zC)ya96v=kHl@maM?Re|{Uzcv5Te}0K+ULgY@xLbBKDTlQNVemx{R#X=r=4zPlTosL oZtVm}wa=|>GoyVDV2+4B0R${KVORlRJOBUy07*qoM6N<$f^f9ytN;K2 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/inhand-right.png deleted file mode 100644 index 8c73e1c7ce200b66e201d55d9ff7136293888c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVBF>D;uumf=k3jdUQB@!tPhge zT)Q1e}Q?6&x=f^jU}rSx0Hq_I9^oBQ9QQ(oXMS;7wf0I zinF|b&iY(|O|knyc^4QkDQI21@8%I%zh8x~%_hW5I^ScY`QGWyqB$iEYfn@$>rW`X z?e*cam)+$hdp5Fm)P51j3(?!ue)iz5UX|%jxa%WM+H2;ktvf4Jbnvy5QFGeUN34HD zB9CdGE0nhUzy9nj^FsD3Zg)?(?wWr5;L)s$=hhhH-g7NZym6^OTGZ|Aw%czX?AUUf ziRW{{vt-!YKn@`d+6YPSa2GRgTe~DWM4fdoS#p diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/maroon.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 3ac7ea5d022bbe84ccad83568165182048eb9d1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20597 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 X57d$(flD$Y00000NkvXXu0mjf#0Rav diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/orange.rsi/icon.png deleted file mode 100644 index c443437f6ac300b4698e24e1b52b8ba621fbe32d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 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 W*1xngo^XDxU|gTUu^Xbt<^KnpkYI-Z diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index bb3294245a52c3ea30eef3b8289df33c8cd440fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmV;e0aE^nP)8V2#WjQ9h%~d9N*1aTTS;tEGjn*U(G!P9Vp<}!MU=!IiD{|v8NQUno|(JEM|9~w z+&uJ~iIv+Wlr?cAreWrG2_5Fdk(h|sE)M5l0ZeS~hJpdp-Q&yokokB#K0yT$5vZV8 zfy48`5w{*FxEcs5vJy(|JA4hnO4S{vVV>rBhi~!k76it90jyRa!MwWFEtGSj)bIk= zzB{ZOX-l9W_!esu6k3IcLrW;Ou&rPP-)6%WE&@Weh85hjto8v4X4qmJAD**tK8#}) zhTmFDIdQVUqYit8SqxZ!Xz>ZBiGN8{9jCb(9uX{iB4QI1WFz1=(PiWS0HU=WfdG8oRyVT%xynq z%9PcsSD(?0zj^cK=fp|>m(Bht^mh$V5o1Y^UoeBivm0qZPNAoZV~EE2tLHXyHW-Mo zT!`nG=^W#t&Ay?K>EJo1A8O1mI25O`{d}@)i>>(uZTUNeO7UIZmt`bt?(}aFXxUUL zV4*P2ps7i^^hReun}?j`{a` zEAv@wFpyR$yfEcpo_m@ePq>wW3g zE&ZdfE%+xEBWT>1YkUnVTl=t7_qhn!NaGr!$AHudoAYaf&Cubsc6Mrf&(}sO|15mBeOaYbsx8*WE*Q!}R6M4v>cqqim?5Fa9uah6d z70=!MZT*)YR{Q2DE!$vspWQQ&dB^u=mBnfW9~?LQ`*>l7e8^%eR+8GHShAxZ+AW|@(kJkW!v7J*7xRZSKk{FpnQNk zZF{-W@5*M^*Q!A`8f^Nv+dQAPl(mxQlhW1odM^&yExP62yX&sr-F~+%o5H_@#a?*u z`O4Xw*%^CX0@yADKc1zPTW#&r{{G1Y&QPn;sQh!6?(utF_GU_LFqQYe%XT!rP3iZ} z>kJ#>KJ^MHNzQ+N!IXjZ(|(6nANSALQ*lID?qi3$%_G5n6z1UrcAZmsSIO|N=AGub zMP~koPMd7SYd*{z5q;+88f>2a(5X7s#}M*UCQM3OFyrT)D}oH#^QF@nb{$H2B%+Y= s^G*nJ!qehlUX8Ui>oopLD*a+R>nNWnH8)Tem<$*^UHx3vIVCg!0AMKy)&Kwi diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/inhand-right.png deleted file mode 100644 index d3df7bcb6b73f99e8093a452b873e89171ac9a94..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)h3yLK%HUuf?X)Gk6 z9P@_V&44pFyCm+6e!oT;{(bX!yGwWk0000000000@V}IFyNw!M{v(>>etQ4sRZp%> zh9gqfT@f|9qJ9x_n$qFJjk*`XYt3D?ZCAUU*cSG2Z%VY%+LGSMpuCJN&KR55!N=(_s6YOIL@KwO^U#| z)x5f{X2uR!JT21~eZD?TH=nG#CU4$v=KwxojP74#wZitQva{KYsCF*@m&e&~^*Bdr zuv1=B2gnC+R!_O@+EpNTUgII~6Vqkox9yrkcL*?XQ<>6Pa6r}fDs?&?x*H5=9?a>r zGNsUHtN4oNJms|*J!ak*>=4xOy0bv0+c4hk*L%9mkZ^# zbLRlh@&W(=00000002NitbZ)@ab#}8__Mgm$C0_MOp_tsM&>qb3*gnrJc~>n;M>UD zhSfR1!;!hQEFIw6$lOZq@wkpFBl9e54*~LUWNsx(0lXWT+sIM?jGzJj7$W)tzcUyZ TGJxM=00000NkvXXu0mjfN4@gS diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/pink.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index d1274a497a12ea3db1ad043211afaa59898482d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20519 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 WRUy;6KGHzD89ZJ6T-G@yGywql3{OS? diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-left.png deleted file mode 100644 index 4cd9c955ae1063bea4b15fc8b4c410cdda09accd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|e-2k5uS0HU=Wo2(~pUBCcm6cV@ z!P?N!(B0kL!^Jj-hkXYh$8LVk0|yQq z5Rc=@2@}veYI_2nvzf8f7_jk+w zzGu2%Q-J83>VJ9h%v#)6yY{KSx4ICqV!`W^*(NP9Z0h-o4c0n#hO3^F1F;j<9q^@veTI=;*K*GJSoTlvPCV5EVk|GlQm#0t`N3k gh48p}R>|-&OkxX6J#}NA641#Ep00i_>zopr0K5-uiU0rr diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/red.rsi/inhand-right.png deleted file mode 100644 index ae5a124c663e6500ec6ee2541a37a6dc945c0081..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 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 OV6TL}@hjs-O#Ba1z-V^> diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 2c8be92e08e0b5b993e004a0a401c06d84f4cc9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 426 zcmV;b0agBqP)Q=~<<#9ScUV8scDL_HR3POuWUrUU;3rCJK4b@!|%I~mWI z=oZ%uek9V&Vk%jvN^B*uNzKgRrAAL29*Jp+&=ye=dnBf*#z**65_@Lu67SKa|8Vor zZzfi5=TO$fk(h>&+c|U?6GvhqVmmvWg9R|LJsAoHO!qIJms93tSze)nhzL|rtia*< z;D}of6kH7i64V5RB~(=Z;!affg5?-m5cT>-3CAi=!4)h(2BqSWvL*S>W1>a`F7A^upwT2bkw5;|43TD`1o}b^ca5>F$7KYzi z9CG4lfkz$o0J9jd0MX_v)-$ciiFpT(3+r%Hn7eR+p UfBbsg`2YX_07*qoM6N<$g2~yi*8l(j diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/icon.png deleted file mode 100644 index d2156294af59cf6b5290b303ba06a3bb12bad027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0K%;VI-20BE6-_%E~G@ zI5;aStNio!DO0AbUcLI}&6_w3?S zfTj~k6OUbT%H86l<)|dK@{_!dN^jHLr3s1|lTZCm&}|anvAe`6^k%Yd(1~eWfrdrq zGfQJP&903xGJaC$t7d%irg3_jnYW$+&tU{QlVUivWZTY|b9H}hw7%~vH%rL-{bRn` zxASviUH6^a@V@rWye~%P=LN#nUw+y1$46_`#>5+w^~D&^RvxUA>0kVu_3Psotd2qq zM*FuhZDtp(p6VjMZKM6VdEwk&AHVuJ@dt;*bJ5!~W`Dol{!b;0+b{q7BB`v`k6!Ki z+LqaRRrnnPdYUp=_Q_j1XxqqT}}db^|Y zMO3UEW_(=NQz3sn!T$J$U!Nx3_1pUT!{+X{t{z*(74B9{T=$&)=H!G6+ve1HW21u_`}p2Y<2$5SJlbDM8e?d>gTe~DWM4fmtp_k diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/inhand-right.png deleted file mode 100644 index 4944e6fc0ba93912e2166df7438f59890b4959ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)F-^qu?Ou(#h}OEP_xh{^=%2ac?_x zkQ)`MVkPOtUURuN*F*BgzQ3ipJ6%;r&_Hh&$hRx6-1q0-JL%jX0Ata#SX#?cj@ z&vSh;!}KZ*V9c&8@h2{>S$lfF$onzEbTNIh=3#mROW8Rq@Q$})akK24xW@J?5J#`lfY05H-xrCP#6P)z90PIm2DX48Tdu?EYZ@HKfo!1w z&ea3Bt_!tV9Uj-ynCj<@syEbtyS*G#78iIs(Wt=pHfzsAqA>@_>hs@J5ra|nhMoim zEt|=UGP;wXj$YMCFw}tmi1txk h#>AK)2x1@r@B>ePI?oTEzAOL$002ovPDHLkV1mN&3~c}a diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/teal.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index c99223c4672e59ccf876fab5b653ad5f4e36dbf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8408 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 VV8^g&N3HrmLTr+wEPBMm{{m|wIr{(r diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/equipped-INNERCLOTHING.png deleted file mode 100644 index 1196f82db6ed3941ac35003e3652d7e03d7a99bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmV;h0Z;ykP)D_jo7Bu4UTXBj;gOh@2yGE1u}5NBYV`1>B=*eQCBC9d z|KaAL-%PCBPNA%cBQXsVw^QgaC62^I#CCEx2Mb_g`!o~`nC_q7k57s3=6QaB3L+v< zL9qgd=Yu0|Jy38p5L9F(l-f7=8iJLo8%)DAPSXb8;@>R@jE4ePtw4f#b*oz_=R~RD z1+IN}SUJ*`Ktb>=)+Q*l3J-^tP;6nBf)#w54O_Sf2-O-^aMQBd2Pl|fi~WB8nuX)z zZkL7Ow-#eg94zpt!`@&P0~R1!e8g$uUlLWvX|9Gx1k0X?*aQW+5b&Gmuo8v|zv(jZ ahj9j9^QpxE@CfPv0000iWS0HU~Zyy>Onw_29*x1<9 z(=%ntl+~+OA31X5=FOY`|Nl2r(G>+MVk`;r3ubV5b|VeQ$@g?|4AD4$_1rgJN!dJMrLg>9Uy$Q?522 zVEou1C}N|*(Fj%(z_EY>M~BL7A<|fd}B5z+t*d14$X!puSzG*f66+W WUyb8?P5yhJ)eN4lelF{r5}E+{(O2dG diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-left.png deleted file mode 100644 index 592cd94079c18409b39ea9ddc66a6f20a9bf8063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)@MF;8RAh;?4DNfeU=qhA(6sJm;m>&?F3{s5ul@3MlQn^VG zByW0<2T3?MfJo#=i~wY768f@xE;ax~Yime~55au`uC*)7TsO!b)d?jv8k8PONsV5S zc}xSNjJ=nky)(#-$pfRoQtLc08mv6#fl<^#%|nYs{t59~2FyB{N-oHD$$<+5p7$5W z1r1`u1(2e3>>Gr&NA?%BF?GcTT5tIP?Trn3YN)<6lqV8JF|_crklO$N002ovPDHLk FV1f(Ke8m6& diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/inhand-right.png deleted file mode 100644 index 3d3dd56f27ed45246c680f7db952cefbd22cee16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmV-60m=S}P)}|M5eA0P6BEwT6_JX8-^I07*qo IM6N<$f@+q9Q2+n{ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/white.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/equipped-INNERCLOTHING-monkey.png deleted file mode 100644 index 69166ef2e52c07b8660e4e7246ab93c835cd06f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20629 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 X57d$(flD$Y00000NkvXXu0mjfVOFjr diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/icon.png deleted file mode 100644 index 74cc6a4f8cc7d9c04e5839f738fd3e8e72cbacaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv#Q>iWS0HU=WfdG89A+$*m6cT( z!Z2mZl+~+O-@JMA^%j=@4}Ehs+GPV3F_r}R1v5B2yO9Ru6neTihG?9>dTt|UgMkRk z1^!8nEbJE!*|PjhSfhK#LB?T@f@_f1z6rB0eY@kZzNX-KXN{&_UUkBUhc=HK45puK zKESAWkb^5vgzYe^vVd#b#}&@cI0dI0#o3!Y6WVdf^mWj7mc3P1#U0X+yDRo diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-left.png deleted file mode 100644 index 6959537bcead7b03244c6181fa21d6c2d1839053..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEU=sFpaSW-L^LD1S_u&AEHv8AS zYnmqL#omdz;y7nXcel6<*FUa*9ou>?W;zlL8&ry6xMt zymzB#@y{2Q?RDob#mq9#zc*)c+r9$^Jckiz@zID&tIwuwKKK0Nz2$p1-)cJh=#0GY zow_Pp(VsSd`*v&ZyS?3CSRicu%^bczep;(G)-AaCcCFX~OZ^?P-;ZDX-1MvPOOpa8 zLu8!K;l#vSJH3;n^&WrQQ5C0qrGNEv_eYuqWeFC??(7MYwlfG#xP67ZQ`fzp4T^&$A{QnakSlEtoro-l3tJJdN*=6zfJbN{HCkpxzi1H z@vZk1Jlq-#9`7|yvRxIKwO7G|>BjvZuk6;ecy6!!UME@Qs4|bKDM*=p{b%h23AQJn zEqAPxNQe}>B4rxkZSQscbF)svp><|B#q-wIA>D$3)yAWhIp9EZ2vN)AC}De6R8Fa=-c(aaz#frd&2qZS|VFA_4(hkKbZ* xxC#_-ST4J5^@ZI5-;3s$%}Sgh$ih&^7`Dr5%dDGfkAbO#!PC{xWt~$(69DwY1^xg4 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/Color/yellow.rsi/inhand-right.png deleted file mode 100644 index 148b9812320ec61496ff21a90bbcb590f7d7e5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)0__I|>#*KwIcg zGAgLm$eZ?Rnq1mTgWP-e{Vh%I(&Krb+$BdIU>JsB7=~dOhG7_nVVKck%wKIfopyhZ z_dcA{>#3gpyZoDT`!oUmb_$^0oz)g>=4X1edFyC28UdvVnRfis_EsyTg;_ERe! zb)h~#gY-%bK$aJi?j0BBczl?fcH1d}x=^2A^B}!}seE=|xrGW|O0VwGQl@vH^NV*9 zO9Ah$S1*KUM!iRuc0jLm2H*hRL5g1|(mpEqHKATn{2;x7Mbo*fPP_PaTdh{>_KS5! z~DN_A0%QB@8I5k3dGSHd~b9p)HBeWUjfUqAe+s= zP00e=wxLq5z*_Q=QvEK&>J2p@xBdVNseAXhT1dcd>KkAVpgNm?^7HuLR1t$=^@i>Q z`%Rmx;v~79po(7EPB7Gf|A_Kdc$8oR2x!m>8$dvVR@eXn8nnU&5YV6%Hh_Qzt*`+E zG-!nlAfQ1jYybfbT44jCTr3M2F@K{LmPSF@0MimPx#1ZP1_K>z@;j|==^1poj54^T{0MU<43(b3WW|Nm80RR910^JJ8%00005bW%=J z|NsC00Q9zuh8$6*4mK3$Sd^6o-jl7FZ!gdKLMl!u=?KubXhDpK$pd{*ntjw4KFXTR-aUwjRI(pdP>suzv`trmx*a z_}2NwTeOjugLpl_Vxu)TB(VLNa>>=Xq{EH@T+gO;e*$3Rj+Zo!pBXU#cDAu-i1>FA z-vTya*#;Mhu{v?2Q1N86lv{;zeeMBWQPTVcc0< zG6_k0Be?b+aJ0PrN$@+LPfsV2S`%h~f5eN{gar`K0mWD46Cm2$B|hd1FmL{=mW*`3 ecl6hQ#34uZl3LGwuy6@{Bmrcw}a686) z<+n!S{EU+}9~>P+qO(_J25U_4&Y!FQeu731qjO2m-iA4BpHf^JZ@R7)%3(Wjs#-xW zUeRRnhCIiE*~*+{jxkrVl|`ED55%li&f{pib5GHe;fCJU1N;vb3*@kk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1k1^9%x?%uuo&Ye5=@8AFT@88XvH|NivziQR0W5jwNkEFL zB*-uLKMXKzI-_$QD9Tyj5n0T@z;_sg8IR|$NC67o@pN$viEw{A^&(%h0*`C=3hDp< z4`(k-xpq&rta_%WztTBv>jwSlxB8bTusU%CDg0U5;3fb2y=T2vhUxr^mo^(}ZRrt| zXjpK{YpImu)7Xh;MZ^Qw=4jaLi(i<-#9}n@e*%l$>;{)>kGJ;a2P|8V@pR{M{d?c{ zH=UGcU4BwS`bW;k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1E1o(uw?%uuo&Ye5=@8AFT@88XvH|NivKWo;kRjXDVJ9g~Tr%&h3odYUd zFyBrPNb!^e`33(+00yD^U}??*kH}&M2EM}}%y>M1MG8>yQ%@JikO=p;Q*ZM%D+stu zSK4~@|Nr~%l%~51&+XMWyE$283ZJ@weA~6zI}WfmamOgwxJ_8za8u)nq5bulako1p zyjG=kD{PwT)WQ+eYVpqsLon_Z+njDhq*u4IgjO7dd_<3Y`m#{{?T={AiIE89@@k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O_~u2Ka=yc6WCxC@2I62OAj~Wo2dg`ue)KxI{-s7ZenF{y|Y|0h0r(o`8k!j{gT-bn<%oC7#cT>1lo3!#rPq zGgrjpqX!lE_H3-#|7hZU83m=gG7as`Ml)nhvJ0d{e^@vEP`|ljS#GJ~)K5_^q6|Q@ z9{gr0FuAsEOVXzG%-=ZtWq$lxwyTskcT(a?=0gU}FLyOtODvz6c+95PsAb`W?H%tI uFsU}a(qgDI5}m-e!1J2jpBh2u2!{CX*(uS>zUTve!rMDBpi0y&(IIT% zk=ZInUQ4!cimN>OK1*9?uI|rrd!Pmeh6VE5pWEa}v{lc3Y;nxQccYGX&h2gUuSVJL zQ?I_i@>%6Q`T45V_jk`%SujQD^{!>A3d#3Z?(%cET=({C^x26lCX&Cw#xU$EzuETm u(%Zsq%6A{et2`(IvepS-$mnPM;dX?%^>JKj1RqBfNU5i*pUXO@geCw@Enh?c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/prisoner-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..45393e81a66103898d2e33673dc0c227824b4f29 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!5N+|jv*CsZ*OkoZ8i{Ky>MDBpi0y&(IIT1 z$!rxPuT>nHE{Z2Rzt7UviB^AIZV%MK!0^CE@B7asuXkn7uDyTUfXC1`_)66E&8d-Q z@Bf}!_`C1%4!e0r=heo0IcTartMr@P(Eq;r6^qH+aQXc={}eOL;`z-4Hm2t8x?@i+ xu$j%yseL$YyYPgChIUt03SY=bU_7Dsh;8qzxKia)({({gJzf1=);T3K0RWP*Ul0HQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-equipped-INNERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..e21afe8d4eb1d95295728d41429e90b26765ade0 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uwPMI<#I5;>fE6d8t>gLUx+S=Oo_Vz%@%o>weAjMG<Cq9An1c> tgNc!)tEbL-8M&)_WEdDO-fsBKcXda8)CR4_t3VqWJYD@<);T3K0RXUxTIT=& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e8398b47d94679bfbec574bbdd8c639bb7064b GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSK$uZf!>a)(*x>2n7!u+B_R2xd0}4E>7q&QCwB6?5d#cbh z*`i5%N6S?q?!8wdZZ-dJRC%JH=*7V>ZF`}Nn3KkwNrrAU=g$?+xb{n|eqzwBWgFC< z-}%CFq<%rCVUe2o)rO!hG+w>LNPwixiR2Hf{OsGy;oV#Aii zGDT2AA-ceqD{4v%Ex1oH{<0B z)YsP^SbjE7b7}It=QEaR7MUoS=Pdp4qVpOJ=HoRC&7kxvXpFt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/color.rsi/trinkets-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd725831525040c80289ad5c787cadc64f573c4 GIT binary patch literal 251 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 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/icon.png deleted file mode 100644 index 6910994580210734ec6540f57f879f800dabe8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv-2k5u*Z&L*6CD{21~aT$wd!Oz z!_AvF|93ESc6KT#Czopr0A^Q84*&oF diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-left.png deleted file mode 100644 index 0e0295965262d06a34743f643a90c04bd8e92e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 525 zcmV+o0`mQdP)iHj5I8m4(X| zrm(nESp-1~3%jwnByrUn&CS7Zm*>}nnZPq)&Y30$L_|bHL_|bHL?n$`8Q-YlU)xWc z_k6EW#iz|n^4TJ!R>m((!bR)lcMFsKUqUQ`+JA5_51Dftn=P7GH5_sxEsWuVMwJ? zVdvkdJcbEu;qrIm&D{I*XHoQ?t;!b48u;f z0G7rbKmNS`EbF{pOgmt6x&1~ROw(Ck-V8r4iP>9Po5PQf!PhS^F$T8}aD5MV52UJ= zb)JZbh=_=Yh=_<}o7FVhY&iOnET_?#ya2G9MrZEtW$Wp&* zfZg;slTV;jD*4sXdgAo>=Tynp>-GP)11zV^; diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/inhand-right.png deleted file mode 100644 index cfbe848c3b23e01ca10192642182d1d6a901d312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmV+-0^R+IP)Sd|XW{Uao;{u5nmm!d@Cdb-(86FVyJ%-}++j@{jOygt8(D_beSyXxcm=Wnq0WBBvWZQ8sqvu+$71o3Ma z(r7gJbbL&75CITITrx@n;5%r`n%Y-iSalx z2P0{Gn;5%r?v`&8V^?DZ_HAP9!ubf)YBjqx+s>T8eqF5DcDwCe5u5}2HZgWJ){mfX k6Jr-+bxadj5&7Tz0lqX4*UHG0C;$Ke07*qoM6N<$f`6X@4*&oF diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json deleted file mode 100644 index 1fb9cf1b66..0000000000 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/prisoner.rsi/meta.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039, monkey made by brainfood1183 (github) for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-INNERCLOTHING", - "directions": 4 - }, - { - "name": "equipped-INNERCLOTHING-monkey", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standard.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standart.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_leg_standard.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard2.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standart2.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/base_torso_standard2.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard1.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart1.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard1.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard2.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart2.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard2.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard3.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart3.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard3.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard4.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart4.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard4.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard5.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart5.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard5.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard6.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart6.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard6.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard7.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart7.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard7.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard8.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart8.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard8.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png b/Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard9.png similarity index 100% rename from Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standart9.png rename to Resources/Textures/Clothing/Uniforms/procedural.rsi/decor_torso_standard9.png diff --git a/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json index 08133fc00b..545f209db9 100644 --- a/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/procedural.rsi/meta.json @@ -20,7 +20,7 @@ "directions": 4 }, { - "name": "base_leg_standart", + "name": "base_leg_standard", "directions": 4 }, { @@ -36,11 +36,11 @@ "directions": 4 }, { - "name": "base_torso_standart", + "name": "base_torso_standard", "directions": 4 }, { - "name": "base_torso_standart2", + "name": "base_torso_standard2", "directions": 4 }, { @@ -116,39 +116,39 @@ "directions": 4 }, { - "name": "decor_torso_standart1", + "name": "decor_torso_standard1", "directions": 4 }, { - "name": "decor_torso_standart2", + "name": "decor_torso_standard2", "directions": 4 }, { - "name": "decor_torso_standart3", + "name": "decor_torso_standard3", "directions": 4 }, { - "name": "decor_torso_standart4", + "name": "decor_torso_standard4", "directions": 4 }, { - "name": "decor_torso_standart5", + "name": "decor_torso_standard5", "directions": 4 }, { - "name": "decor_torso_standart6", + "name": "decor_torso_standard6", "directions": 4 }, { - "name": "decor_torso_standart7", + "name": "decor_torso_standard7", "directions": 4 }, { - "name": "decor_torso_standart8", + "name": "decor_torso_standard8", "directions": 4 }, { - "name": "decor_torso_standart9", + "name": "decor_torso_standard9", "directions": 4 }, { diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/icon.png b/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/icon.png similarity index 100% rename from Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/icon.png rename to Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/icon.png diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/meta.json b/Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/meta.json similarity index 100% rename from Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standart.rsi/meta.json rename to Resources/Textures/Objects/Consumable/Smokeables/Vapes/vape-standard.rsi/meta.json diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/bounty.png new file mode 100644 index 0000000000000000000000000000000000000000..5db87e6182595ee03f45125e6b6521a22cdf0f79 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>`CI|pPYCo?c;Oe~#f>wP#t zq)k41=_7X05`n@O3mz>{;CiGXS`yeEb#Rrp(B&|X+Y^>_?BLSlYifS+==uZu3!w#} z0xYfqg(csz1v{V5a_Zh}YGSHB9`D;=^o>;CFpv%-C@H|%nI7bWQeFLy{+-F2yWBG6zN+e`)z$fB zO@EUYBjh8f-sU$kRL6#G=`+>Mul6mpzpumkQR36K$m4?UZEGsnU39&|gR`Pag5|nP zr~dwLbN9=Mf(v_9`FPLo`+tvnV(gEbAOF5jzW?8{@t69JGt>XFp3Hm`{AKQ@YsDNF zeJ%EDW&e_k$#HzXc&+8F`62q&Q~VC!mfW&z!C$di)0)9k@tYwPfOIU<7a$ctjR6FmMZjFyp1Wb$@_@?Vc`i^yOBy4Z*EGRYMG??(zpxJTSY7MS`@AFI9E-UQG z%46tiUh$HHXFluC761D=uDEPWKKko5&+Bb>mUwC;n2J2%ND;qqswk`N$%;s4a~6iD XrHY?2A1~PobP|K7tDnm{r-UW|jT`{3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/captains_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..87ee739fa2f386afe0199fe005b60265f4765b9b GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>`CI|pPYCo?c;Oe~#f>wP#t zq)k41=_7X05`n@O3mz>{;CiGXS`yeEb#Rrp(B&|X+Y^>_?BLSlYifS+==uZu3!w#} z0xYfqg(csz1v{V5a_Zh}YGSHB9`D;=^o>;CFpv%-C@H|%nI7bWQeFLy{+-F2yWBG6zN+e`)z$fB zO@EUYBjh8f-sU$kRL6#G=`+>Mul6mpzpumkQR36K$m4?UZEGsnU39&|gR`Pag5|nP zr~dwLbN9=Mf(v_9`FPLo`+tvnV(gEbAOF5jzW?8{@t69JGt>XFp3Hm`{AKQ@YsDNF zeJ%EDW&e_k$#HzXc&+8F`62q&Q~VC!mfW&z!C$di)0)9k@tYwPfOIU<7a$ctjR6FmMZjFyp1Wb$@_@9iA?ZArbD$2@~C&W5vpI#|BX>l6wT>%D$ Y_q@t7;w68Yfo@{(boFyt=akR{07w`9FaQ7m literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..508a6b12e6fd32e0787c34c579cbdbfed8e7710a GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>@BI|pPYCo?c;Oe~$a+xu{U z$g%p`A7L^j0);OEjxJ;k6mVa;z`JyXXpL^}FQHi`Dw;~`n!1}GDD3(n^@qPiG)9!g zQP4$ZZmn+6qn*70g4Ku5{``3Nx2)g32K%@xCDs;vyBzPa5{n~SQ`K#QJudC|c-@iKTN$wSA78{%}b?LV*3&pa()+&_X0mJDUiZ87$*!r%95#nq13yn!S-z3~;`Z#Q9}HIJ z58iBAwzT|Vjc}FRnJH6Oc`@Gn7sD6lzc86`SKflslc!%jpEJ4IW8G=}U2S`7B_{ly zd-}fmr3{((X>W~z!OvOX5n0T@z%2yAjF;}#{Q(NLdAc};M7Sp>NU$zeG>~G#Mkw2| zNF*|DsQdfte^gWy&#PCjdUD0{{<-tb&|)s#VKs|I;zZGmg9@jQhKBq<{>7K^vcjCr zOp5-w>pn{2T+&(zn6arHt4cZJ;zVbg-GP2A5)&r)Py(3+w& V>*v?#e?S*8c)I$ztaD0e0stvb{~!PW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json index b6feb49959..e872787314 100644 --- a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/39659000f380583c35fb814ee2fadab24c2f8076", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/39659000f380583c35fb814ee2fadab24c2f8076, additional label sprites by Vermidia", "size": { "x": 32, "y": 32 @@ -14,10 +14,19 @@ "name": "bag_folded" }, { - "name": "label_overlay" + "name": "paper" }, { "name": "open_overlay" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/label_overlay.png b/Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/paper.png similarity index 100% rename from Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/label_overlay.png rename to Resources/Textures/Objects/Specific/Medical/Morgue/bodybags.rsi/paper.png diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/bounty.png new file mode 100644 index 0000000000000000000000000000000000000000..ee32a8211eadb9763915d84d1c0b3ed7650c632e GIT binary patch literal 611 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>}DI|pPYCo?c;Oe~#f>wP#t zq-}oK(nVAGtU9bx0ty2JSYK+0zFEY#wJF|PdUlvcmPe3F46As1Q}c^Q*B{tl2rUQ| zU~v^FEcuo#*!kS7wd)11`SXW+zuV5))A*rfWpv(OjR@ECo~pvP-rU(ER=I4RThfu2 zXI`wcwX~i0?Ecq6Z;z|98Lz(nUtPcM+0r?yomT`_xNMj8k64zNbak_6KIitAt!E~E zXe`*T%*++9Wh?z*@}rsq`CW5MvUm=yT0ZUn!JG1H#AUp9`0u!F`OkrA7 zR{I;hm>?C;1rwJZF;bIb4(gtC^ZverUHM(2A76ah7I|3EeO^<=Z&zK<>vKY!zs#{w z%hvjSzjD{H4*?f!XEn6B->-k$c*3k^YVH5e7ryWBTkwwYT({}}t|ub(;(KE*@A|H| zjd8iSsqSv(^w}5c^3&(|xUQNkYsOPy**MKIV{hBCR)y8CERUB@h?^c?!n(Wqg7)|1 z?)&z)Gt^zPq%DEr&spFRS7SR4}TUca+0 txX|p>7{?&T^u_DzmrplV*t)bcFxcHu_|s8w`CI|pPYCo?c;Oe~$a+uNy7 zfXZ1$Y?T=-xYa>1w z%Y~PeYHpHPn*GPdYw3~Z^KY*1U6;(G61|qGoyxjWou}-tFO;K?bUN?f5Le!^c^9jwQU1`*mG zhIWP%PS)1q8}_b`vs*s>FHZscftr6`UMjO?W?KHTZkXOa-O(pzl4E3KZh{lTlc&4O v^BZgVxLB(gD?~16U%h-fdGR*^Stf?(`D*HOXT(|poyp+o>gTe~DWM4fqHGLF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/artifact.rsi/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4951d12a88e44ca8c368c6bf35eba85934abf7 GIT binary patch literal 609 zcmV-n0-pVeP)$TonXC5kwrFeJxVrxs6Z}d&AB7@!k6!PQHLYUet6uI1akuSc$1vXntWa)bv7- z78(f?Nolq@Jv*7C?)tpLr|NA~^{RjG-_@4M+8X$pg-12ha)f0X;;W9ScuTljE2J{Q zhr$s{1{A(hdfMY>#d(k46Cy z_hFM@iWni%lv$yOLsY6Enf>n@s`_RqiAR&S$r_e8@)X1y5w$E`vr==SXXPofrgHzA zr=1%a_PV#npyA1N-}<3x2P)gH`*q~Hm177z!i7=umn5gL57D=4TKE7uH{k5Drloh` zd=q*e%#@X?N&(saTn=7Op<@BMZlHC^%j)NxlY2<6%P+cyy?q#v`<=_*C(>vf?`G{Y z00009a7bBm000XU000XU0RWnu7ytkOn@L1LR9Hu2U>F6XAut*OqaiRF0;3@?8Umvs zFd71*AuzxpzzDM6yQK0zHg|08X$Q;G60pDwcgf5}v1iZp$+WZ=ZZ;FLEl;jpVfg;} z6ByGAz(W9Jp|+DN*xrvXp3}>I2Dk%YK7af85reR-9Q_@@$;-#UFCobwp{hPGApr97 vi`zHBJ_m&Yy#PE4=#}c}<*`wFhzYwC#xznPqA@R!M2G`s*-v!^@L#)&povRYnvO4yUnm6hf^=9f5Ag_Vfp zQ8{Digb5PBO@cC;C;zwT)t2Tt2G*P;&sU;$C^&V#{~?=VCWwD*BiTP-gEv0(QWxfcW`(FlTz>6_ya6BXdX~6 z!@vLl010qNS#tmY3ljhU3ljkVnw%H_005dvL_t(oN9~d^4uBvK1W#j)tv0m0gy(3_ z3+VM}+R)Nqs~^xnBGJUc#8)q2DFS&Vkd8JJAOzXC#!>b+yDRo07*qoM6N<$f=RO&9RL6T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/bounty.png new file mode 100644 index 0000000000000000000000000000000000000000..54a2f0fbd031b013bf88329a94513fd52bef8db0 GIT binary patch literal 628 zcmV-)0*n2LP)@BO)2SJJKy4b8%%y6qH%Wg4c}3bx`c;VwO= ztq30q4>~fS@Rib26@FHnt?;{IClQ|jpXwRT)^Vzi^_*i04+uw0qo`NsQC|{FTk~^L zdt~?G5@(7SVNw)X#h^e`swJ8I?HellX32|3m$yv`M;uvl;vE#VC|%Q1Goq*EF(|3r zf9L6DMuschgE44&^1Qb`2<*W3wvdEWOiG(N(GRrBX1r?C&ww`*GD074sZc3IO> zyKue<-4C|rXl1EUwl9-`*HdUqLgx*%ELF0qo^x^!iFNr!*RZz_{c=CF`~%a7XZ4!| zJTw3R010qNS#tmY3labT3lag+-G2N40068>L_t(oM`K_Z1*0J_8UmvsFd71*Auzxp zz(|Sxm6erPwYRso6KyOD(JFB$%*)M1k(o4kGD$`(Ms-n@B};nAZ<3?Rpl3Mftk3l}bg+qr-Lep2lpRX-X6qaiRF z0;3_oKv8?3G}rt;wlM6Te3EE$DXt5$lZ;T@Fm>KJlH!$O2aswZy6XT6h$mln8jWKB O0000@BO)2SJJKy4b8%%y6qH%Wg4c}3bx`c;VwO= ztq30q4>~fS@Rib26@FHnt?;{IClQ|jpXwRT)^Vzi^_*i04+uw0qo`NsQC|{FTk~^L zdt~?G5@(7SVNw)X#h^e`swJ8I?HellX32|3m$yv`M;uvl;vE#VC|%Q1Goq*EF(|3r zf9L6DMuschgE44&^1Qb`2<*W3wvdEWOiG(N(GRrBX1r?C&ww`*GD074sZc3IO> zyKue<-4C|rXl1EUwl9-`*HdUqLgx*%ELF0qo^x^!iFNr!*RZz_{c=CF`~%a7XZ4!| zJTw3R010qNS#tmY3labT3lag+-G2N40068>L_t(oM`K_Z1*0J_8UmvsFd71*Auzxp zz(|Sxm6erPwYRso6KyOD(JFB$%*)M1k(o4kGD$`(Ms-n@B};nAZ<3?Rpl3Mftk3l}bg+qr-Lep2lpRX-X6qaiRF z0;3_oKv8=jH@EyhwlJJLxszyfDXt5Wld@3UFn8WGlH!$O2aswZy6XT3I43WP{L)$g O0000`CI|pPYCo?c;Oe~#f>wP#t zq)k41>7uJjRvi{4D;^~{iW~{lda;OaYg6cSlW)!*mnLlSC=`v6VPU^`bp65l1*;#d zQsC%Pc=Y1UbtR$mx!k&o%lyy=d!%3?zx4o|Ns8)&ZzK9>-c!j9$LKXtw>9%)UxYb+aBpY)U#c_ zmP4M4-^ysghpCr>MeD-mto^V%NnLP0!~9p0=dKm5>iaq;nTwyp-DmNN@aKW?LO#)- zi-W3DzCRL5?~+Ii5{W#zz#(Ln>de1yrL}&io$Pj>zTKD8T_&>Vk*vs8jo8aU#*3Ce zHPl#nr~diNG`BYGyUm6fRiE~3x8rzo;QO}cwX&7>z8jj@9cm5z{9JYUM*fT2v!k9c zI7t_jMP3ftU9gYyF8{V?8L2A+x9LxAydIq4?ev^?i%#gKRr89A_&ZB~x?bO~o&Rr< z{gyw>mpjtG&StSO0Y(64fk$L90|U1Z2s2)~TlWVj81Cuf7!u*0oFKuvSkXX=2_JDl z@qkC?-+QW4|8IPG|JG%{Ejx9lSTHQPu4*iPw8QqY`s5UqqkIZiol34VGR#=a@gex4 RG!xJY22WQ%mvv4FO#tn?=&S$$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json index 610ea0183c..7908408cd3 100644 --- a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/32c8d0abc573d7370eb145d8ce74176d59b7eea3", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/32c8d0abc573d7370eb145d8ce74176d59b7eea3. Label sprites by Vermidia.", "size": { "x": 32, "y": 32 @@ -15,6 +15,18 @@ }, { "name": "closed" + }, + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] } diff --git a/Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/coffin.rsi/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..630ffe8e10c5660e4cd916d22ec52e2e1396b6ce GIT binary patch literal 624 zcmV-$0+0QPP)@BO)2SJJKy4b8%%y6qH%Wg4c}3bx`c;VwO= ztq30q4>~fS@Rib26@FHnt?;{IClQ|jpXwRT)^Vzi^_*i04+uw0qo`NsQC|{FTk~^L zdt~?G5@(7SVNw)X#h^e`swJ8I?HellX32|3m$yv`M;uvl;vE#VC|%Q1Goq*EF(|3r zf9L6DMuschgE44&^1Qb`2<*W3wvdEWOiG(N(GRrBX1r?C&ww`*GD074sZc3IO> zyKue<-4C|rXl1EUwl9-`*HdUqLgx*%ELF0qo^x^!iFNr!*RZz_{c=CF`~%a7XZ4!| zJTw3R010qNS#tmY3labT3lag+-G2N4005{-L_t(oM`K_Z1*0J_8UmvsFd71*Auzxp zz(|Sxm6erPwYRso6KyOD(JFB$%*)M1k(o4kGD$`(Ms-n@B};nAZ<3?Rpl3Mftk3l}bg+qr-Lep2lpRX-X6qaiRF z0;3_oKxup6KejLgwg-qdm*To0K0Y4B4aju^F%e9$14y+H-BADx?}DI|pPYCo?c;Oe~$a+xu{U z$g%ouT}RpZtU4@G0ty2JSPQ3c?Fwn%*0f%=*H_!bP(?Q=hE=@1srkjD><{)ALJL9# zSX>1POTKOO=zMPG)O|%d?_B@;d+!TAu{v#>lUUh1IpJodxt;J;F|p}eo`p+wUhw2k zy!&C!%_Aj~>aSn7S_Hg$Se4;@NnVhLq@zCd-p7^aNlwI#H-bZ z+z&age1{*LdT&?N#}>`{A+k5*>My>9 z$=v7GuZqgz*W0%6_r;5`dzD&K+kJ%Zom)^VXqCS()$+uv?{hA*d*q$c-_`h+Sz^L( zS#A5v^U}Z0kt|{dhCgS4M`SSr1Gf+eGhVt|_XjB0<>}%W65*blAi=s=(Ljm`lepyE zFj0&#U{>}&`Pn<~PWDf_aomZUz2VFmKO-l@s#kl8Bi1G@n#ycf_wQuE(__+X0=@hf z&M^Mj^M>bK*{6ivA1#~G_!uIqUca+$JMM39+#u7;eL;s;C$d&F@A<*x{tVH}i=Xi| a3otMkhseK|y4D9uJPe+$elF{r5}E*^Ed)RS literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/captains_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..961991bf349e71e7be007ec83fd2f148c114ee44 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>`CI|pPYCo?c;Oe~$a+xu{U z$g%ouQ^n*ht~k1=GZOb{>4(2gk0Op7eQf`kV_Cyl z9RpYd-P7Z{r&O#H)e6erVQIgwdjH{*;vam)dlm`LXjt^}*2jpD+5Wm22h*8aIE?-B zZxyVWc_d^~{q^IzzN_x>tc?4AKYK^ibmKloU&V)phd0G0&TM-bdOc{5=AFzZmroyJ zKO`8yX>FLjQ{I=_>SpKnFn7{rv>50idyB1TQjz6TL#Ihs*&MB^8KWX~YHGIQvcIKk} z$uGJ6xia(<^<8BY?BOBeIx*fm;ZK886+f`vVm0@^o(XuIxk0G+^`#asX<^J-94KmH#7j$^nL~WJGdwy{-d#32+#n1Sf a1sE8DJ>+}#MKgm^4}+(xpUXO@geCwUuKQj9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..3e00e7d806875df92f79b001cda052714c5c7e6b GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>@BI|pPYCo?c;Oe~$a+xu{U z$g%p`A7L^j0);OEjxJ;k6mVa;z`JyXXpL^}FQHi`Dw;~`n!1}GDD3(n^@qPiG)9!g zQP4$ZZmn+6qn*70g4Ku5{``3Nx2)g32K%@xCDs;vyBzPa5{n~SQ`K#QJudC|c-@iKTN$wSA78{%}b?LV*3&pa()+&_X0mJDUiZ87$*!r%95#nq13yn!S-z3~;`Z#Q9}HIJ z58iBAwzT|Vjc}FRnJH6Oc`@Gn7sD6lzc86`SKflslc!%jpEJ4IW8G=}U2S`7B_{ly zd-}fmr3{((X>W~z!OvOX5n0T@z%2yAjF;}#{Q(MgdAc};M7Sp>NU$zeG>~G#BrZ8O zOcY~$5F7MUe)i7j>RX0yk{7lzJEZMOdA3MmZ~Cv4HDQJqPch!NuTQEdddtP!ag06V z8G~P(9b2w?_=dYbWE_pz8+2+5f2$q7eY{`7q3-difnJ%0F3wu43?X^>bP0l+XkKUX}z- literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json new file mode 100644 index 0000000000..c180604984 --- /dev/null +++ b/Resources/Textures/Structures/Storage/Crates/labels.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by Vermidia.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/labels.rsi/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..8daf7770832d0af33409e26f65458e3e2e460cc3 GIT binary patch literal 592 zcmV-W0bXYSJSo*O#$I?-LxEGnTGhfV=CSj?$LAF zs_>!kuq6WuUnxE1@w4Kr$M1@*WMT?@s%JR+hf{x8&sm1>kZ`||FX_MYs4wYA7v|@r zhGh3)lORTvFeyr`k;h>~YC$rq?;EZ9W+{qCm$yk7OB`8p;vE*XBwf=|Goq*E$x~Lj z|IgFTj77Ze9Z_g`a^1H9Xx)MDitBzIx$gHd_#fe-Q1cfhr-={ID>beE0D_xvc3IO> zyKue*y$_~lX;sND+n33}>nU_DLiY`{Eqhu0o^x^!$qo5M*RZz_gK|H(@&hv6Xdzn4 zS_1$8010qNS#tmY3labT3lag+-G2N4004+dL_t(oN9~fa5r7~N1YgG(tD+ptseoK6 zpc0CZgp>}X0i8E+#u3dv(Yu7~ZfAKS1O{LL24DaNU;qYS00#bUppy__t=(F^&biy( zAOXOglQEa-+56^HF9opHN=r(_?_0zGMx{t=eQdu$hyn0u&Y4On#4t}0yMYkGxfx@W e`f2ojz`zd3&mUFfM5z4$0000`CI|pPYCo?c;Oe~$a+xu{U z$g%ouT}RpZtU9bjY91_5;CiGX`X)#=i#6U`>T;Mzl1J2%9b9^Rtn3$$UVl)(VD*Dl z3LISuk6ygV7VLaJ%c=VXule)iXNZ^ za-Q$^IV)$L6#2idKRPR9uVl#HfBU~b&x$d#kAEy<}o_Bd# zD}M`njAX!%pqDQj=8L2=*9E^>Hc40@$ae8fEx+)M^NMvJ);*Lvt@Gk(<(26slHcC+ zT;aPJTcOe^tn4+5Nqfc<$thXhY4yL`>S`{p>2jaG-B~bPCbH;}tiV= z#%r;6MaD~6i`y;Vs@;pX%4_OaPdRzuG^fdV=hvntI&6_s&s*+mzOw7jBJCS@o9%Yq z-}Hr7>PLoHU4Ek|FakIWJR*x37`TN&n2}-D90{P{Bu^K|kO=qW1PRu~iUv|ln8YRL zhKXW~0kg9I$p;bd?SRlivzxSN^Ii>tJ3p{w9nw~HrEn!FLcUcRm0>)XE k4B?BEB~%u3y^v*M5UP;%KNz!b3ea^7p00i_>zopr0IqQYi~s-t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/captains_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd4bf0503f6036fa0b747890cded0b7dcc894bd GIT binary patch literal 601 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>`CI|pPYCo?c;Oe~$a+xu{U z$g%ouQ^n*ht~k1=GZOb{>4(2gk0Op7eQf`kV_Cyl z9RpYd-P7Z{r&O#H)e6erVQIgwdjH{*;vam)dlm`LXjt^}*2jpD+5Wm22h*8aIE?-B zZxyVWc_d^~{q^IzzN_x>tc?4AKYK^ibmKloU&V)phd0G0&TM-bdOc{5=AFzZmroyJ zKO`8yX>FLjQ{I=_>SpKnFn7{rv>50idyB1TQjz6TL#Ihs*&MB^8KWX~YHGIQvcIKk} z$uGJ6xia(<^<8BY?BOBeIx*fm;}a85w5HkpK!#^mK6yiEvL&kYHV`XduOeNnCPn zm?*|LVRrOC`Pn-stCuI;IPS#F-f+gp@062a)w?~J5o?ncO=Wg?R`>7I%!kL$u1=5= zUl7UBpc4`n#{4*3fBxeVhOe-q$InAOUl&#&LSWsA(=ySukb%(JU?`LA(c j>I)9GlPj32+8G!sgyq{qZ>!D+I*!59)z4*}Q$iB}Wmf+c literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..aacd2ca7681dcc93a92f3a4bf48e3f797b814409 GIT binary patch literal 599 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFy>@BI|pPYCo?c;Oe~$a+xu{U z$g%p`A7L^j0);OEjxJ;k6mVa;z`JyXXpL^}FQHi`Dw;~`n!1}GDD3(n^@qPiG)9!g zQP4$ZZmn+6qn*70g4Ku5{``3Nx2)g32K%@xCDs;vyBzPa5{n~SQ`K#QJudC|c-@iKTN$wSA78{%}b?LV*3&pa()+&_X0mJDUiZ87$*!r%95#nq13yn!S-z3~;`Z#Q9}HIJ z58iBAwzT|Vjc}FRnJH6Oc`@Gn7sD6lzc86`SKflslc!%jpEJ4IW8G=}U2S`7B_{ly zd-}fmr3{((X>W~z!OvOX5n0T@z%2~Ij105pNB{*Vdb&7NU$zeG>~G#BrZ8O zOcY~$5F7MUe)i7j>RX0yk{7lzJEZMOdA3MmZ~Cv4HDQJqPcbSK@2~%N|FQcXP5CoONoLJiXsBBCPM>(YLdC^5yLp)r&mv jDq(3(31Qsp%)oH#uKX5((wSC3$1!-i`njxgN@xNA5h({f literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json index 082564ccfb..9c0d876c50 100644 --- a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood118 (github) for ss14", + "copyright": "Made by brainfood118 (github) for ss14. Label Sprites by Vermidia.", "size": { "x": 32, "y": 32 @@ -20,21 +20,33 @@ "name": "crate_icon" }, { - "name": "sparking", - "directions": 1, - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] + "name": "sparking", + "directions": 1, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 ] + ] }, { "name": "crate_open" + }, + { + "name": "paper" + }, + { + "name": "bounty" + }, + { + "name": "captains_paper" + }, + { + "name": "invoice" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png b/Resources/Textures/Structures/Storage/Crates/toybox.rsi/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c91659d3e19398d4a45cd9f06ec21555735105 GIT binary patch literal 599 zcmV-d0;v6oP)bXYSJSo*O#$I?-LxEGnTGhfV=CSj?$LAF zs_>!kuq6WuUnxE1@w4Kr$M1@*WMT?@s%JR+hf{x8&sm1>kZ`||FX_MYs4wYA7v|@r zhGh3)lORTvFeyr`k;h>~YC$rq?;EZ9W+{qCm$yk7OB`8p;vE*XBwf=|Goq*E$x~Lj z|IgFTj77Ze9Z_g`a^1H9Xx)MDitBzIx$gHd_#fe-Q1cfhr-={ID>beE0D_xvc3IO> zyKue*y$_~lX;sND+n33}>nU_DLiY`{Eqhu0o^x^!$qo5M*RZz_gK|H(@&hv6Xdzn4 zS_1$8010qNS#tmY3ljhU3ljkVnw%H_0056kL_t(oNA1$F4S*mJ1<=!2>jtz;hdmR} z%Q%c74K0nfx_|~cBgE=x{Fe|K^6z*+gn|GBAOHafKmY;|fWY4cIt~D>^;OC>#=QCs z90R1xS*b_#Vr{Wi&ow~GJ@AF5Q0Jo l6k}}v1hr51NrD5d1#a|