From 069c1874a8f0dbc44e633a77d0ec0116003d2aea Mon Sep 17 00:00:00 2001 From: gluesniffler <159397573+gluesniffler@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:52:20 -0400 Subject: [PATCH] Service & Instrument Loadout Groups (#906) # Description This PR creates Loadout Groups specific to Service jobs, and provides a discount on all service loadout items in return for having the group limit behavior. Also adds significant discounts to all instruments for musicians in exchange for only being able to pick up to 3. --- # Changelog :cl: Mocho - add: Service Job related items are now part of a Service loadout group, and have all been significantly discounted. - tweak: Musicians now have significant discounts on all instruments in loadouts, but can only take a maximum of 3. Signed-off-by: gluesniffler <159397573+gluesniffler@users.noreply.github.com> --- .../musicianInstrumentsGroups.yml | 31 ++ .../CharacterItemGroups/serviceGroups.yml | 80 +++++ .../Loadouts/Categories/categories.yml | 4 + .../Prototypes/Loadouts/Jobs/service.yml | 331 +++++++++++++++--- Resources/Prototypes/Loadouts/items.yml | 48 +++ 5 files changed, 436 insertions(+), 58 deletions(-) create mode 100644 Resources/Prototypes/CharacterItemGroups/musicianInstrumentsGroups.yml create mode 100644 Resources/Prototypes/CharacterItemGroups/serviceGroups.yml diff --git a/Resources/Prototypes/CharacterItemGroups/musicianInstrumentsGroups.yml b/Resources/Prototypes/CharacterItemGroups/musicianInstrumentsGroups.yml new file mode 100644 index 00000000000..ccad399e74d --- /dev/null +++ b/Resources/Prototypes/CharacterItemGroups/musicianInstrumentsGroups.yml @@ -0,0 +1,31 @@ +- type: characterItemGroup + id: LoadoutMusicianInstruments + maxItems: 3 + items: + - type: loadout + id: LoadoutItemSynthesizerInstrumentMusician + - type: loadout + id: LoadoutItemMicrophoneInstrumentMusician + - type: loadout + id: LoadoutItemKalimbaInstrumentMusician + - type: loadout + id: LoadoutItemTrumpetInstrumentMusician + - type: loadout + id: LoadoutItemElectricGuitarInstrumentMusician + - type: loadout + id: LoadoutItemBassGuitarInstrumentMusician + - type: loadout + id: LoadoutItemRockGuitarInstrumentMusician + - type: loadout + id: LoadoutItemAcousticGuitarInstrumentMusician + - type: loadout + id: LoadoutItemViolinInstrumentMusician + - type: loadout + id: LoadoutItemHarmonicaInstrumentMusician + - type: loadout + id: LoadoutItemAccordionInstrumentMusician + - type: loadout + id: LoadoutItemFluteInstrumentMusician + - type: loadout + id: LoadoutItemOcarinaInstrumentMusician + diff --git a/Resources/Prototypes/CharacterItemGroups/serviceGroups.yml b/Resources/Prototypes/CharacterItemGroups/serviceGroups.yml new file mode 100644 index 00000000000..305375930cb --- /dev/null +++ b/Resources/Prototypes/CharacterItemGroups/serviceGroups.yml @@ -0,0 +1,80 @@ +- type: characterItemGroup + id: LoadoutUniformsService + items: + - type: loadout + id: LoadoutServiceClownOutfitJester + - type: loadout + id: LoadoutServiceClownOutfitJesterAlt + - type: loadout + id: LoadoutServiceBartenderUniformPurple + - type: loadout + id: LoadoutServiceBotanistUniformOveralls + - type: loadout + id: LoadoutServiceLawyerUniformBlueSuit + - type: loadout + id: LoadoutServiceLawyerUniformBlueSkirt + - type: loadout + id: LoadoutServiceLawyerUniformRedSuit + - type: loadout + id: LoadoutServiceLawyerUniformRedSkirt + - type: loadout + id: LoadoutServiceLawyerUniformPurpleSuit + - type: loadout + id: LoadoutServiceLawyerUniformPurpleSkirt + - type: loadout + id: LoadoutServiceLawyerUniformGoodSuit + - type: loadout + id: LoadoutServiceLawyerUniformGoodSkirt + - type: loadout + id: LoadoutServiceReporterUniformJournalist + - type: loadout + id: LoadoutServiceReporterUniformDetectivesuit + - type: loadout + id: LoadoutServiceReporterUniformDetectiveskirt + +- type: characterItemGroup + id: LoadoutOuterService + items: + - type: loadout + id: LoadoutServiceClownOuterWinter + - type: loadout + id: LoadoutServiceClownOuterClownPriest + - type: loadout + id: LoadoutServiceMimeOuterWinter + +- type: characterItemGroup + id: LoadoutNeckService + items: + - type: loadout + id: LoadoutServiceClownBedsheetClown + - type: loadout + id: LoadoutServiceMimeBedsheetMime + +- type: characterItemGroup + id: LoadoutMaskService + items: + - type: loadout + id: LoadoutServiceClownMaskSexy + - type: loadout + id: LoadoutServiceMimeMaskSad + - type: loadout + id: LoadoutServiceMimeMaskScared + - type: loadout + id: LoadoutServiceMimeMaskSexy + +- type: characterItemGroup + id: LoadoutShoesService + items: + - type: loadout + id: LoadoutServiceClownBootsWinter + - type: loadout + id: LoadoutServiceMimeShoesBootsWinter + +- type: characterItemGroup + id: LoadoutEquipmentService + items: + - type: loadout + id: LoadoutServiceClownCowToolboxFilled + + + diff --git a/Resources/Prototypes/Loadouts/Categories/categories.yml b/Resources/Prototypes/Loadouts/Categories/categories.yml index 03198ba2a6f..78ae8f5e5af 100644 --- a/Resources/Prototypes/Loadouts/Categories/categories.yml +++ b/Resources/Prototypes/Loadouts/Categories/categories.yml @@ -31,6 +31,7 @@ - JobsCommand - JobsMedical - JobsSecurity + - JobsService - type: loadoutCategory id: JobsAUncategorized @@ -80,6 +81,9 @@ - type: loadoutCategory id: JobsSecurity +- type: loadoutCategory + id: JobsService + - type: loadoutCategory id: Mask root: true diff --git a/Resources/Prototypes/Loadouts/Jobs/service.yml b/Resources/Prototypes/Loadouts/Jobs/service.yml index 815138e393a..65dbf8d1c9f 100644 --- a/Resources/Prototypes/Loadouts/Jobs/service.yml +++ b/Resources/Prototypes/Loadouts/Jobs/service.yml @@ -1,10 +1,12 @@ # Clown - type: loadout id: LoadoutServiceClownOutfitJester - category: JobsAUncategorized - cost: 3 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Clown @@ -15,10 +17,12 @@ - type: loadout id: LoadoutServiceClownOutfitJesterAlt - category: JobsAUncategorized - cost: 3 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Clown @@ -29,10 +33,12 @@ - type: loadout id: LoadoutServiceClownOuterWinter - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 1 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutOuterService - !type:CharacterJobRequirement jobs: - Clown @@ -41,10 +47,12 @@ - type: loadout id: LoadoutServiceClownOuterClownPriest - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutOuterService - !type:CharacterJobRequirement jobs: - Clown @@ -53,10 +61,12 @@ - type: loadout id: LoadoutServiceClownBootsWinter - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutShoesService - !type:CharacterJobRequirement jobs: - Clown @@ -65,10 +75,12 @@ - type: loadout id: LoadoutServiceClownMaskSexy - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMaskService - !type:CharacterJobRequirement jobs: - Clown @@ -77,21 +89,28 @@ - type: loadout id: LoadoutServiceClownBedsheetClown - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutNeckService - !type:CharacterJobRequirement jobs: - Clown items: - BedsheetClown +# For the most part we dont want people to take this item, so its used as an example of all the things +# you can do with requirements. Point someone to this thing if they ask "how tf do loadout requirements work?" + - type: loadout id: LoadoutServiceClownCowToolboxFilled - category: JobsAUncategorized - cost: 3 + category: JobsService + cost: 2 requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutEquipmentService - !type:CharacterLogicXorRequirement requirements: - !type:CharacterLogicAndRequirement @@ -121,7 +140,7 @@ - !type:CharacterSexRequirement sex: Male - !type:CharacterJobRequirement - inverted: true + inverted: true # This is the equivalent of !(condition) jobs: - Clown - !type:CharacterJobRequirement @@ -133,10 +152,12 @@ # Mime - type: loadout id: LoadoutServiceMimeOuterWinter - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 1 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutOuterService - !type:CharacterJobRequirement jobs: - Mime @@ -145,10 +166,12 @@ - type: loadout id: LoadoutServiceMimeMaskSad - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMaskService - !type:CharacterJobRequirement jobs: - Mime @@ -157,10 +180,12 @@ - type: loadout id: LoadoutServiceMimeMaskScared - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMaskService - !type:CharacterJobRequirement jobs: - Mime @@ -169,10 +194,12 @@ - type: loadout id: LoadoutServiceMimeMaskSexy - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMaskService - !type:CharacterJobRequirement jobs: - Mime @@ -181,10 +208,12 @@ - type: loadout id: LoadoutServiceMimeShoesBootsWinter - category: JobsAUncategorized - cost: 1 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutShoesService - !type:CharacterJobRequirement jobs: - Mime @@ -193,10 +222,12 @@ - type: loadout id: LoadoutServiceMimeBedsheetMime - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutNeckService - !type:CharacterJobRequirement jobs: - Mime @@ -206,10 +237,12 @@ # Bartender - type: loadout id: LoadoutServiceBartenderUniformPurple - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Bartender @@ -219,10 +252,12 @@ # Botanist - type: loadout id: LoadoutServiceBotanistUniformOveralls - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Botanist @@ -232,10 +267,12 @@ # Lawyer - type: loadout id: LoadoutServiceLawyerUniformBlueSuit - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -244,10 +281,12 @@ - type: loadout id: LoadoutServiceLawyerUniformBlueSkirt - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -256,10 +295,12 @@ - type: loadout id: LoadoutServiceLawyerUniformRedSuit - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -268,10 +309,12 @@ - type: loadout id: LoadoutServiceLawyerUniformRedSkirt - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -280,10 +323,12 @@ - type: loadout id: LoadoutServiceLawyerUniformPurpleSuit - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -292,10 +337,12 @@ - type: loadout id: LoadoutServiceLawyerUniformPurpleSkirt - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -304,10 +351,12 @@ - type: loadout id: LoadoutServiceLawyerUniformGoodSuit - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -316,10 +365,12 @@ - type: loadout id: LoadoutServiceLawyerUniformGoodSkirt - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Lawyer @@ -328,10 +379,12 @@ - type: loadout id: LoadoutServiceReporterUniformJournalist - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Reporter @@ -341,10 +394,12 @@ # Reporter - type: loadout id: LoadoutServiceReporterUniformDetectivesuit - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Reporter @@ -353,10 +408,12 @@ - type: loadout id: LoadoutServiceReporterUniformDetectiveskirt - category: JobsAUncategorized - cost: 2 + category: JobsService + cost: 0 exclusive: true requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutUniformsService - !type:CharacterJobRequirement jobs: - Reporter @@ -365,12 +422,170 @@ # Musician - type: loadout - id: LoadoutItemSynthesizerInstrument - category: JobsAUncategorized - cost: 8 + id: LoadoutItemSynthesizerInstrumentMusician + category: JobsService + cost: 2 requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments - !type:CharacterJobRequirement jobs: - Musician items: - SynthesizerInstrument + +- type: loadout + id: LoadoutItemMicrophoneInstrumentMusician + category: JobsService + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - MicrophoneInstrument + +- type: loadout + id: LoadoutItemKalimbaInstrumentMusician + category: Items + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - KalimbaInstrument + +- type: loadout + id: LoadoutItemTrumpetInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - TrumpetInstrument + +- type: loadout + id: LoadoutItemElectricGuitarInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - ElectricGuitarInstrument + +- type: loadout + id: LoadoutItemBassGuitarInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - BassGuitarInstrument + +- type: loadout + id: LoadoutItemRockGuitarInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - RockGuitarInstrument + +- type: loadout + id: LoadoutItemAcousticGuitarInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - AcousticGuitarInstrument + +- type: loadout + id: LoadoutItemViolinInstrumentMusician + category: Items + cost: 2 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - ViolinInstrument + +- type: loadout + id: LoadoutItemHarmonicaInstrumentMusician + category: Items + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - HarmonicaInstrument + +- type: loadout + id: LoadoutItemAccordionInstrumentMusician + category: Items + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - AccordionInstrument + +- type: loadout + id: LoadoutItemFluteInstrumentMusician + category: Items + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - FluteInstrument + +- type: loadout + id: LoadoutItemOcarinaInstrumentMusician + category: Items + cost: 0 + requirements: + - !type:CharacterItemGroupRequirement + group: LoadoutMusicianInstruments + - !type:CharacterJobRequirement + jobs: + - Musician + items: + - OcarinaInstrument \ No newline at end of file diff --git a/Resources/Prototypes/Loadouts/items.yml b/Resources/Prototypes/Loadouts/items.yml index 97a3ed2fdc3..12fc1cdf85a 100644 --- a/Resources/Prototypes/Loadouts/items.yml +++ b/Resources/Prototypes/Loadouts/items.yml @@ -139,6 +139,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemKalimbaInstrument @@ -149,6 +153,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemTrumpetInstrument @@ -159,6 +167,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemElectricGuitar @@ -169,6 +181,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemBassGuitar @@ -179,6 +195,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemRockGuitar @@ -189,6 +209,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemAcousticGuitar @@ -199,6 +223,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemViolin @@ -209,6 +237,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemHarmonica @@ -219,6 +251,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemAccordion @@ -229,6 +265,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemFlute @@ -239,6 +279,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician - type: loadout id: LoadoutItemOcarina @@ -249,6 +293,10 @@ requirements: - !type:CharacterItemGroupRequirement group: LoadoutInstrumentsAny + - !type:CharacterJobRequirement + inverted: true + jobs: + - Musician # Survival Kit - type: loadout