diff --git a/Content.Shared/_NF/Clothing/Components/CatWearableComponent.cs b/Content.Shared/_NF/Clothing/Components/CatWearableComponent.cs new file mode 100644 index 00000000000..d9a4a4cd956 --- /dev/null +++ b/Content.Shared/_NF/Clothing/Components/CatWearableComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._NF.Clothing.Components; +/// +/// Replace tag for frontier use +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class CatWearableComponent : Component +{ + +} diff --git a/Resources/Locale/en-US/_NF/ghost/ghost-role-component.ftl b/Resources/Locale/en-US/_NF/ghost/ghost-role-component.ftl new file mode 100644 index 00000000000..83e0600d2a6 --- /dev/null +++ b/Resources/Locale/en-US/_NF/ghost/ghost-role-component.ftl @@ -0,0 +1,2 @@ +ghost-role-information-clippy-name = Clippy +ghost-role-information-clippy-description = The Station Representative's loyal worker, smells like cardboard and papers. diff --git a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl index 9d5452892cd..e9dd33a63e1 100644 --- a/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/en-US/deltav/ghost/roles/ghost-role-component.ftl @@ -49,3 +49,5 @@ ghost-role-information-syndicate-refugee-rules = You're a regular crewmember fro ghost-role-information-shadow-cat-name = Shadow Cat ghost-role-information-shadow-cat-description = A cute cat made of... shadows? How?! + +ghost-role-information-deltav-clippy-description = The courier's loyal pet, smells like cardboard and papers. diff --git a/Resources/Locale/en-US/deltav/preferences/loadout-groups.ftl b/Resources/Locale/en-US/deltav/preferences/loadout-groups.ftl index 9d0b06d8804..ae92424f84a 100644 --- a/Resources/Locale/en-US/deltav/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/deltav/preferences/loadout-groups.ftl @@ -43,6 +43,7 @@ loadout-group-courier-neck = Courier neck loadout-group-courier-jumpsuit = Courier jumpsuit loadout-group-courier-shoes = Courier shoes loadout-group-courier-outerclothing = Courier outer clothing +loadout-group-courier-backpack = Courier backpack loadout-group-courier-id = Courier ID loadout-group-mail-carrier-head = Mail Carrier head diff --git a/Resources/Prototypes/DeltaV/Loadouts/Jobs/Cargo/courier.yml b/Resources/Prototypes/DeltaV/Loadouts/Jobs/Cargo/courier.yml index a01f92d0d9d..3cf896b1e8d 100644 --- a/Resources/Prototypes/DeltaV/Loadouts/Jobs/Cargo/courier.yml +++ b/Resources/Prototypes/DeltaV/Loadouts/Jobs/Cargo/courier.yml @@ -15,6 +15,18 @@ equipment: jumpsuit: ClothingUniformSkirtCourier +# Backpack +- type: loadout + id: ClothingBackpackClippy + equipment: + back: ClothingBackpackClippy + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobCourier + time: 54000 #15 hrs + # Shoes - type: loadout id: RollerSkates diff --git a/Resources/Prototypes/DeltaV/Loadouts/loadout_groups.yml b/Resources/Prototypes/DeltaV/Loadouts/loadout_groups.yml index 8b5b827e09a..18546b628a8 100644 --- a/Resources/Prototypes/DeltaV/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/DeltaV/Loadouts/loadout_groups.yml @@ -56,6 +56,15 @@ - CargoTechnicianWintercoat - MailCarrierWintercoat +- type: loadoutGroup + id: CourierBackpack + name: loadout-group-courier-backpack + loadouts: + - CargoTechnicianBackpack + - CargoTechnicianSatchel + - CargoTechnicianDuffel + - ClothingBackpackClippy + - type: loadoutGroup id: CourierShoes name: loadout-group-courier-shoes diff --git a/Resources/Prototypes/DeltaV/Loadouts/role_loadouts.yml b/Resources/Prototypes/DeltaV/Loadouts/role_loadouts.yml index 7431e4f8a4a..ab2da8c0009 100644 --- a/Resources/Prototypes/DeltaV/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/DeltaV/Loadouts/role_loadouts.yml @@ -8,7 +8,7 @@ - CourierJumpsuit - CourierOuterClothing - CourierPDA - - CargoTechnicianBackpack + - CourierBackpack - CourierShoes - Survival - Trinkets diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml index 8e09936d689..aacb0d3b81f 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Clothing/Head/hats.yml @@ -8,6 +8,11 @@ sprite: Nyanotrasen/Clothing/Head/Hats/mailman.rsi - type: Clothing sprite: Nyanotrasen/Clothing/Head/Hats/mailman.rsi +- type: Tag # DeltaV + tags: # DeltV + - ClothMade # DeltaV + - WhitelistChameleon # DeltaV + - CatWearable # Frontier - type: entity parent: ClothingHeadBase diff --git a/Resources/Prototypes/_NF/Datasets/Names/cat_clippy.yml b/Resources/Prototypes/_NF/Datasets/Names/cat_clippy.yml new file mode 100644 index 00000000000..1be9f601480 --- /dev/null +++ b/Resources/Prototypes/_NF/Datasets/Names/cat_clippy.yml @@ -0,0 +1,4 @@ +- type: dataset + id: names_cat_clippy + values: + - Clippy diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/_NF/Entities/Clothing/Back/backpacks.yml new file mode 100644 index 00000000000..02617511b49 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Clothing/Back/backpacks.yml @@ -0,0 +1,11 @@ +- type: entity + parent: NFClothingBackpack + id: ClothingBackpackClippy + name: Clippy's backpack + description: Made from a real Clippy. + components: + - type: Sprite + sprite: _NF/Clothing/Back/Backpacks/clippy.rsi + - type: Storage + storageOpenSound: + collection: CatMeows diff --git a/Resources/Prototypes/_NF/Entities/Clothing/Back/base_clothing_backpack.yml b/Resources/Prototypes/_NF/Entities/Clothing/Back/base_clothing_backpack.yml new file mode 100644 index 00000000000..b495d0c88a8 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Clothing/Back/base_clothing_backpack.yml @@ -0,0 +1,13 @@ +- type: entity + parent: [ ClothingBackpack,] # DeltaV - Comment out NFBackpackHiddenStash + id: NFClothingBackpack + components: + - type: Storage + maxItemSize: Large + defaultStorageOrientation: Vertical + grid: + - 0,0,6,3 + - type: Item + size: Huge + shape: + - 0,0,6,3 diff --git a/Resources/Prototypes/_NF/Entities/Debugging/tippy.yml b/Resources/Prototypes/_NF/Entities/Debugging/tippy.yml new file mode 100644 index 00000000000..cdc29f42ea4 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Debugging/tippy.yml @@ -0,0 +1,20 @@ +- type: entity + id: NFTippy + parent: Tippy + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - sprite: _NF/Tips/clippy.rsi + state: left + map: [ "revealing" ] + - sprite: _NF/Tips/clippy.rsi + state: right + map: [ "hiding" ] + - sprite: _NF/Tips/clippy.rsi + state: down + visible: false + map: [ "speaking" ] + - type: FootstepModifier + footstepSoundCollection: + collection: CatMeows \ No newline at end of file diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml new file mode 100644 index 00000000000..818a8dd4f2e --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml @@ -0,0 +1,64 @@ +- type: entity + id: BaseEmotionalGhost + abstract: true + components: + - type: GhostTakeoverAvailable + - type: GhostRole + name: ghost-role-information-emotional-support-name + description: ghost-role-information-emotional-support-description + rules: ghost-role-information-emotional-support-rules + makeSentient: true + allowSpeech: true + allowMovement: true + prototype: EmotionalSupportPet + - type: Grammar + attributes: + proper: true + gender: epicene + - type: IdExaminable + - type: InventorySlots + - type: Strippable + - type: UserInterface + interfaces: + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - VimPilot + - type: Puller + needsHands: false + - type: Inventory + templateId: nfpet + +- type: entity + id: BaseEmotionalGhostCat + parent: BaseEmotionalGhost + abstract: true + components: + - type: ReplacementAccent + accent: cat + - type: Vocal + sounds: + Male: Cat + Female: Cat + Unsexed: Cat + - type: Inventory + templateId: nfcat + speciesId: cat + - type: RotationVisuals + defaultRotation: 90 + horizontalRotation: 90 + +- type: entity + suffix: Ghost + parent: [BaseEmotionalGhostCat, MobCat] + id: MobCatGhost + components: + - type: RandomMetadata + nameSegments: [names_cat] + - type: DamageStateVisuals + states: + Alive: + Base: cat diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/pets.yml new file mode 100644 index 00000000000..9dd1500c7d5 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/pets.yml @@ -0,0 +1,43 @@ +- type: entity + id: NFMobPet + abstract: true + components: + - type: GhostRole + - type: IntrinsicRadioReceiver + - type: CargoSellBlacklist + +- type: entity + name: Clippy + parent: [NFMobPet, MobCatGhost] + id: MobCatClippy + description: It looks like you’re writing a letter, would you like help? + components: + - type: GhostRole + name: ghost-role-information-clippy-name + description: ghost-role-information-deltav-clippy-description # DeltaV - Alternate Description + rules: ghost-role-information-nonantagonist-rules + prototype: CatClippy + - type: Loadout + prototypes: [ MobClippyGear ] + - type: RandomMetadata + nameSegments: [names_cat_clippy] +# - type: AutoImplant # DeltaV - Comment out Implants +# implants: +# - MindShieldImplant +# - MedicalTrackingImplant + - type: Butcherable + spawned: + - id: FoodMeatCat + amount: 1 +# - id: MaterialHideClippy # DeltaV - Comment Out +# - type: IntrinsicRadioTransmitter # DeltaV - Comment out Radio Channels +# channels: +# - Service +# - type: ActiveRadio +# channels: +# - Service + - type: NpcFactionMember + factions: + - Cat + - PetsNT + - type: ShowJobIcons diff --git a/Resources/Prototypes/_NF/Entities/Spawners/mobs.yml b/Resources/Prototypes/_NF/Entities/Spawners/mobs.yml new file mode 100644 index 00000000000..c20fb81c007 --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Spawners/mobs.yml @@ -0,0 +1,12 @@ +- type: entity + name: Clippy Spawner + id: SpawnMobCatClippy + parent: MarkerBase + components: + - type: Sprite + layers: + - state: green + - state: ai + - type: ConditionalSpawner + prototypes: + - MobCatClippy diff --git a/Resources/Prototypes/_NF/InventoryTemplates/cat_inventory_template.yml b/Resources/Prototypes/_NF/InventoryTemplates/cat_inventory_template.yml new file mode 100644 index 00000000000..b071496f3bd --- /dev/null +++ b/Resources/Prototypes/_NF/InventoryTemplates/cat_inventory_template.yml @@ -0,0 +1,69 @@ +- type: inventoryTemplate + id: nfcat + slots: + - name: head + slotTexture: head + slotFlags: HEAD + slotGroup: MainHotbar + uiWindowPos: 0,0 + strippingWindowPos: 0,0 + displayName: Head + whitelist: + components: + - CatWearable + + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,1 + strippingWindowPos: 1,1 + displayName: Mask + whitelist: + tags: + - PetWearable + components: + - CatWearable + + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: SecondHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + displayName: Suit Storage + whitelist: + components: + - GasTank + + - name: belt + slotTexture: belt + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 1 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + whitelist: + components: + - CatWearable + + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,2 + displayName: Suit + whitelist: + components: + - CatWearable + + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID \ No newline at end of file diff --git a/Resources/Prototypes/_NF/InventoryTemplates/pet_inventory_template.yml b/Resources/Prototypes/_NF/InventoryTemplates/pet_inventory_template.yml new file mode 100644 index 00000000000..8abe4f58a66 --- /dev/null +++ b/Resources/Prototypes/_NF/InventoryTemplates/pet_inventory_template.yml @@ -0,0 +1,12 @@ +- type: inventoryTemplate + id: nfpet + slots: + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,1 + strippingWindowPos: 1,1 + displayName: Mask + whitelist: + tags: + - PetWearable diff --git a/Resources/Prototypes/_NF/Roles/Ghostroles/whitelisted.yml b/Resources/Prototypes/_NF/Roles/Ghostroles/whitelisted.yml new file mode 100644 index 00000000000..88c7ab85989 --- /dev/null +++ b/Resources/Prototypes/_NF/Roles/Ghostroles/whitelisted.yml @@ -0,0 +1,7 @@ +- type: ghostRole + id: CatClippy + name: ghost-role-information-clippy-name + description: ghost-role-information-clippy-description + rules: ghost-role-information-emotional-support-rules + entityPrototype: MobCatClippy + whitelisted: false # DeltaV - Change True>False diff --git a/Resources/Prototypes/_NF/Roles/Jobs/Fun/misc_startinggear.yml b/Resources/Prototypes/_NF/Roles/Jobs/Fun/misc_startinggear.yml new file mode 100644 index 00000000000..f97b8c6ffe9 --- /dev/null +++ b/Resources/Prototypes/_NF/Roles/Jobs/Fun/misc_startinggear.yml @@ -0,0 +1,21 @@ +# Aghost +- type: startingGear + id: NFMobAghostGear + equipment: + back: ClothingBackpackSatchelHolding + id: NFAdminPDA + storage: + back: + - GasAnalyzer + - trayScanner + - AccessConfiguratorUniversal + - Multitool + - PowerDrill + - JawsOfLife + - WelderIndustrialAdvanced + +- type: startingGear + id: MobClippyGear + equipment: + head: ClothingHeadMailCarrier +# id: ClippyIDCard # DeltaV - Commented out diff --git a/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/equipped-HELMET-cat.png b/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/equipped-HELMET-cat.png new file mode 100644 index 00000000000..9151fde10bc Binary files /dev/null and b/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/equipped-HELMET-cat.png differ diff --git a/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/meta.json b/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/meta.json index e0e8d077364..2b130716d8b 100644 --- a/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/meta.json +++ b/Resources/Textures/Nyanotrasen/Clothing/Head/Hats/mailman.rsi/meta.json @@ -6,21 +6,25 @@ "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "equipped-HELMET-cat", + "directions": 4 + } + ] } diff --git a/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/equipped-BACKPACK.png b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/equipped-BACKPACK.png new file mode 100644 index 00000000000..05507b196ec Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/icon.png b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/icon.png new file mode 100644 index 00000000000..bea19721a99 Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/icon.png differ diff --git a/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-left.png b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-left.png new file mode 100644 index 00000000000..cec88928889 Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-left.png differ diff --git a/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-right.png b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-right.png new file mode 100644 index 00000000000..774f217630d Binary files /dev/null and b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/inhand-right.png differ diff --git a/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/meta.json b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/meta.json new file mode 100644 index 00000000000..80aa8ed45d9 --- /dev/null +++ b/Resources/Textures/_NF/Clothing/Back/Backpacks/clippy.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by gentlebutter(Discord) for fs14.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_NF/Tips/clippy.rsi/down.png b/Resources/Textures/_NF/Tips/clippy.rsi/down.png new file mode 100644 index 00000000000..0c0411f10d3 Binary files /dev/null and b/Resources/Textures/_NF/Tips/clippy.rsi/down.png differ diff --git a/Resources/Textures/_NF/Tips/clippy.rsi/left.png b/Resources/Textures/_NF/Tips/clippy.rsi/left.png new file mode 100644 index 00000000000..573dcb7912e Binary files /dev/null and b/Resources/Textures/_NF/Tips/clippy.rsi/left.png differ diff --git a/Resources/Textures/_NF/Tips/clippy.rsi/meta.json b/Resources/Textures/_NF/Tips/clippy.rsi/meta.json new file mode 100644 index 00000000000..68942d731c9 --- /dev/null +++ b/Resources/Textures/_NF/Tips/clippy.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "down" + }, + { + "name": "left" + }, + { + "name": "right" + } + ] +} diff --git a/Resources/Textures/_NF/Tips/clippy.rsi/right.png b/Resources/Textures/_NF/Tips/clippy.rsi/right.png new file mode 100644 index 00000000000..2cca72ed897 Binary files /dev/null and b/Resources/Textures/_NF/Tips/clippy.rsi/right.png differ