From 26c5d77f07b91731ef82931c36651c9b62680cf0 Mon Sep 17 00:00:00 2001 From: Sparlight Date: Tue, 13 May 2025 10:10:10 -0600 Subject: [PATCH] Add smart corgi prototype (#36664) * Add smart corgi prototype * 1984 - exploded dog names * Tag fixes * exploded anomalyhost tag * Demolish the mysterious corgi flesh-pocket * Review changes: yml convention tweaks and reparenting of Corgi and Smart Corgi to new abstract base * new week, new review, new me --- Resources/Prototypes/Body/Parts/animal.yml | 25 +++++ .../Body/Prototypes/Specific/smartcorgi.yml | 28 ++++++ .../Prototypes/Entities/Mobs/NPCs/animals.yml | 93 +++++++++++++++--- .../smartcorgi_inventory_template.yml | 76 ++++++++++++++ Resources/Prototypes/tags.yml | 3 + .../Mobs/Pets/corgi.rsi/belt_displacement.png | Bin 0 -> 83 bytes .../Textures/Mobs/Pets/corgi.rsi/meta.json | 5 +- 7 files changed, 216 insertions(+), 14 deletions(-) create mode 100644 Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml create mode 100644 Resources/Prototypes/InventoryTemplates/smartcorgi_inventory_template.yml create mode 100644 Resources/Textures/Mobs/Pets/corgi.rsi/belt_displacement.png diff --git a/Resources/Prototypes/Body/Parts/animal.yml b/Resources/Prototypes/Body/Parts/animal.yml index 347b052c8b..c9ea293cb6 100644 --- a/Resources/Prototypes/Body/Parts/animal.yml +++ b/Resources/Prototypes/Body/Parts/animal.yml @@ -94,3 +94,28 @@ - ReagentId: Blood Quantity: 20 +- type: entity + parent: PartAnimal + id: LeftHandSmartCorgi + name: corgi hand + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: l_hand + - type: BodyPart + partType: Hand + symmetry: Left + +- type: entity + parent: PartAnimal + id: RightHandSmartCorgi + name: corgi hand + categories: [ HideSpawnMenu ] + components: + - type: Sprite + layers: + - state: r_hand + - type: BodyPart + partType: Hand + symmetry: Right diff --git a/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml b/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml new file mode 100644 index 0000000000..89c374ccdd --- /dev/null +++ b/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml @@ -0,0 +1,28 @@ +- type: body + id: SmartCorgi + name: corgi + root: torso + slots: + torso: + part: TorsoAnimal + connections: + - righthand + - lefthand + - legs + organs: + brain: OrganHumanBrain # feels strange but it is what it is + lungs: OrganAnimalLungs + stomach: OrganAnimalStomach + liver: OrganAnimalLiver + heart: OrganAnimalHeart + kidneys: OrganAnimalKidneys + lefthand: + part: LeftHandSmartCorgi + righthand: + part: RightHandSmartCorgi + legs: + part: LegsAnimal + connections: + - feet + feet: + part: FeetAnimal diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index f23e95c61c..234550532b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2750,9 +2750,10 @@ - VimPilot - type: entity - name: corgi + abstract: true parent: [SimpleMobBase, StripableInventoryBase] - id: MobCorgi + id: MobCorgiBase + name: corgi description: Finally, a space corgi! components: - type: Sprite @@ -2779,6 +2780,22 @@ - type: Inventory speciesId: dog templateId: pet + - type: InteractionPopup + interactSuccessString: petting-success-dog + interactFailureString: petting-failure-generic + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/small_dog_bark_happy.ogg + - type: Grammar + attributes: + gender: epicene + - type: MobPrice + price: 200 + +- type: entity + parent: MobCorgiBase + id: MobCorgi + components: - type: DamageStateVisuals states: Alive: @@ -2793,19 +2810,8 @@ amount: 2 - type: ReplacementAccent accent: dog - - type: InteractionPopup - interactSuccessString: petting-success-dog - interactFailureString: petting-failure-generic - interactSuccessSpawn: EffectHearts - interactSuccessSound: - path: /Audio/Animals/small_dog_bark_happy.ogg - - type: Grammar - attributes: - gender: epicene - type: SentienceTarget flavorKind: station-event-random-sentience-flavor-corgi - - type: MobPrice - price: 200 - type: Tag tags: - VimPilot @@ -3635,3 +3641,64 @@ Base: reindeer_doe_dead Dead: Base: reindeer_doe_dead + +- type: entity + parent: MobCorgiBase + id: MobCorgiSmart + name: smart corgi + description: An unusually smart dog. + components: + # Use corgi sprite, need to add handcuff layer + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: corgi + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi # Would do a custom dog handcuff sprite but unfortunately handcuffs have their overlay baked-in to the cuff itself so this is mostly filler + state: body-overlay-2 + visible: false + - type: UserInterface + interfaces: + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + # Custom inventory template + - type: Inventory + speciesId: dog + templateId: SmartCorgi + displacements: + belt: + sizeMaps: + 32: + sprite: Mobs/Pets/corgi.rsi + state: belt_displacement + ears: + sizeMaps: + 32: + sprite: Mobs/Pets/corgi.rsi + state: belt_displacement + - type: Hands # HANDS! + - type: Puller + - type: Cuffable # bad dog! + - type: BlockWriting # dogs can't write, paws unwieldy; mouth-writing is a myth + - type: Stripping + - type: ComplexInteraction + # Implement custom borgi body type + - type: Body + prototype: SmartCorgi + - type: RotationVisuals + defaultRotation: 90 + horizontalRotation: 180 + - type: Grammar + attributes: + gender: epicene # Gender neutral + proper: true + - type: Tag + tags: + - VimPilot + - CanPilot + - DoorBumpOpener + - type: StatusIcon # marks them as crew + bounds: -0.5,-0.5,0.5,0.5 diff --git a/Resources/Prototypes/InventoryTemplates/smartcorgi_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/smartcorgi_inventory_template.yml new file mode 100644 index 0000000000..069637800a --- /dev/null +++ b/Resources/Prototypes/InventoryTemplates/smartcorgi_inventory_template.yml @@ -0,0 +1,76 @@ +# Borgi Inventory Template +- type: inventoryTemplate + id: SmartCorgi + slots: + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 2,2 + strippingWindowPos: 2,0 + displayName: Ears + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 0,2 + strippingWindowPos: 1,2 + displayName: Mask + whitelist: + tags: + - PetWearable + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + stripTime: 3 + uiWindowPos: 0,1 + strippingWindowPos: 2,5 + displayName: Suit Storage + whitelist: + components: + - GasTank + - name: id + slotTexture: id + fullTextureName: template_small + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 2 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID + - name: belt + slotTexture: belt + fullTextureName: template_small + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: outerClothing + slotTexture: suit + slotFlags: OUTERCLOTHING + stripTime: 6 + uiWindowPos: 1,1 + strippingWindowPos: 1,3 + displayName: Suit + whitelist: + tags: + - CorgiWearable + - name: eyes + slotTexture: glasses + slotFlags: EYES + uiWindowPos: 1,2 + strippingWindowPos: 1,1 + displayName: Eyes + whitelist: + tags: + - CorgiWearable + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,3 + strippingWindowPos: 1,0 + displayName: Head + whitelist: + tags: + - CorgiWearable diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 2c01f73ac3..0a9980962d 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -350,6 +350,9 @@ - type: Tag id: CoordinatesDisk +- type: Tag # designed to let corgis wear things; at present only for SmartCorgi. View PR 33737 on upstream for more dog wearables + id: CorgiWearable + - type: Tag #Ohioans die happy id: Corn diff --git a/Resources/Textures/Mobs/Pets/corgi.rsi/belt_displacement.png b/Resources/Textures/Mobs/Pets/corgi.rsi/belt_displacement.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3cb09bcf701bc53ecc7886c19b82d386469aa6 GIT binary patch literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzDNh&2kcv5P4>B?Wc})uc*XMaS bfSB*u1QZw;C7n&)0XYnwu6{1-oD!M