]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add smart corgi prototype (#36664)
authorSparlight <twiksparlight@gmail.com>
Tue, 13 May 2025 16:10:10 +0000 (10:10 -0600)
committerGitHub <noreply@github.com>
Tue, 13 May 2025 16:10:10 +0000 (18:10 +0200)
* 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
Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Resources/Prototypes/InventoryTemplates/smartcorgi_inventory_template.yml [new file with mode: 0644]
Resources/Prototypes/tags.yml
Resources/Textures/Mobs/Pets/corgi.rsi/belt_displacement.png [new file with mode: 0644]
Resources/Textures/Mobs/Pets/corgi.rsi/meta.json

index 347b052c8bcbe0fd13772ef5d6f058e5486e8847..c9ea293cb6442e13debcb1a9dc18604ca3b7637d 100644 (file)
       - 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 (file)
index 0000000..89c374c
--- /dev/null
@@ -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
index f23e95c61cdc477eb40c7ff20f451c3a868438d4..234550532b2f39f2a5e6ce838a6da41954aa828f 100644 (file)
     - VimPilot
 
 - type: entity
-  name: corgi
+  abstract: true
   parent: [SimpleMobBase, StripableInventoryBase]
-  id: MobCorgi
+  id: MobCorgiBase
+  name: corgi
   description: Finally, a space corgi!
   components:
   - type: Sprite
   - 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:
       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
         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 (file)
index 0000000..0696378
--- /dev/null
@@ -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
index 2c01f73ac3f279cefbe0dbeb66c0026691596389..0a9980962df697030b5eaaab73126178c17a6796 100644 (file)
 - 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 (file)
index 0000000..6e3cb09
Binary files /dev/null and b/Resources/Textures/Mobs/Pets/corgi.rsi/belt_displacement.png differ
index 0e36d32316f8026dd160e18310e93886b44bf8bd..9182c1d9910c4af32d3f830a526f1592633dcaa6 100644 (file)
@@ -5,7 +5,7 @@
     "y": 32
   },
   "license": "CC-BY-SA-3.0",
-  "copyright": "https://github.com/tgstation/tgstation/commit/53d1f1477d22a11a99c6c6924977cd431075761b , cerberus by Alekshhh, real mouse by TheShuEd",
+  "copyright": "https://github.com/tgstation/tgstation/commit/53d1f1477d22a11a99c6c6924977cd431075761b , cerberus by Alekshhh, real mouse by TheShuEd.  belt_displacement by Sparlight.",
   "states": [
     {
       "name": "corgi",
     },
     {
       "name": "real_mouse_dead"
+    },
+    {
+      "name": "belt_displacement"
     }
   ]
 }