diff --git a/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl b/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl new file mode 100644 index 00000000000..3778460b564 --- /dev/null +++ b/Resources/Locale/en-US/_NF/ghost/roles/ghost-role-component.ftl @@ -0,0 +1,2 @@ +ghost-role-information-emotional-support-name = Emotional support pet +ghost-role-information-emotional-support-description = You're an emotional support pet! Loyal to your owner, make sure to cheer them up! diff --git a/Resources/Locale/en-US/_NF/prototypes/catalog/cargo/cargo-livestock.ftl b/Resources/Locale/en-US/_NF/prototypes/catalog/cargo/cargo-livestock.ftl new file mode 100644 index 00000000000..e9808e9575a --- /dev/null +++ b/Resources/Locale/en-US/_NF/prototypes/catalog/cargo/cargo-livestock.ftl @@ -0,0 +1,2 @@ +ent-LivestockEmotionalSupport = { ent-CrateNPCEmotionalSupport } + .desc = { ent-CrateNPCEmotionalSupport.desc } \ No newline at end of file diff --git a/Resources/Locale/en-US/_NF/prototypes/catalog/fills/crates/livestock-crates.ftl b/Resources/Locale/en-US/_NF/prototypes/catalog/fills/crates/livestock-crates.ftl new file mode 100644 index 00000000000..1449cf9dcdb --- /dev/null +++ b/Resources/Locale/en-US/_NF/prototypes/catalog/fills/crates/livestock-crates.ftl @@ -0,0 +1,2 @@ +ent-CrateNPCEmotionalSupport = Emotional support pet crate + .desc = A crate containing a single emotional support pet. diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 4290a95599c..fc60548fce4 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2020,6 +2020,21 @@ interactFailureString: petting-failure-generic interactSuccessSound: path: /Audio/Animals/cat_meow.ogg + - type: Barotrauma + damage: + types: + Blunt: 0.0 #per second, scales with pressure and other constants. + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 0 + currentTemperature: 310.15 + coldDamage: + types: + Cold : 0.1 #per second, scales with temperature & other constants + specificHeat: 42 + heatDamage: + types: + Heat : 0.1 #per second, scales with temperature & other constants - type: entity name: caracal cat diff --git a/Resources/Prototypes/_NF/Catalog/Cargo/cargo_livestock.yml b/Resources/Prototypes/_NF/Catalog/Cargo/cargo_livestock.yml new file mode 100644 index 00000000000..b0488cad7be --- /dev/null +++ b/Resources/Prototypes/_NF/Catalog/Cargo/cargo_livestock.yml @@ -0,0 +1,9 @@ +- type: cargoProduct + id: LivestockEmotionalSupport + icon: + sprite: Mobs/Pets/cat.rsi + state: cat + product: CrateNPCEmotionalSupport + cost: 10000 + category: Livestock + group: market \ No newline at end of file diff --git a/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml b/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml new file mode 100644 index 00000000000..3ce83244347 --- /dev/null +++ b/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml @@ -0,0 +1,27 @@ +- type: entity + id: CrateNPCEmotionalSupport + parent: CrateLivestock + components: + - type: StorageFill + contents: + - id: MobCatGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCatCalicoGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCatCaracalGhost + prob: 0.15 + orGroup: MobCatGhost + - id: MobBingusGhost + prob: 0.15 + orGroup: MobCatGhost + - id: MobCatSpaceGhost + prob: 0.15 + orGroup: MobCatGhost + - id: MobCorgiGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCorgiPuppyGhost + prob: 0.15 + orGroup: MobCatGhost \ 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..3eab22f56cf --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml @@ -0,0 +1,191 @@ +- type: entity + name: cat + suffix: Ghost + parent: MobCat + id: MobCatGhost + description: Feline pet, very funny. + components: + - type: GhostRole + name: ghost-role-information-emotional-support-name + description: ghost-role-information-emotional-support-description + makeSentient: true + allowSpeech: true + allowMovement: true + - type: GhostTakeoverAvailable + - type: CombatMode + combatToggleAction: + enabled: false + autoPopulate: false + name: action-name-combat + - type: ReplacementAccent + accent: cat + - type: Grammar + attributes: + gender: epicene + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + +- type: entity + name: calico cat + suffix: Ghost + id: MobCatCalicoGhost + parent: MobCatGhost + description: Feline pet, very funny. + components: + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: cat2 + - type: DamageStateVisuals + states: + Alive: + Base: cat2 + Dead: + Base: cat2_dead + +- type: entity + name: caracal cat + suffix: Ghost + id: MobCatCaracalGhost + parent: MobCatGhost + description: Hilarious. + components: + - type: Sprite + sprite: Mobs/Pets/caracal.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: caracal_flop + - type: DamageStateVisuals + states: + Alive: + Base: caracal_flop + Dead: + Base: caracal_dead + +- type: entity + name: space cat + suffix: Ghost + parent: MobCatGhost + id: MobCatSpaceGhost + description: Feline pet, prepared for the worst. + components: + - type: Sprite + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: spacecat + - type: DamageStateVisuals + states: + Alive: + Base: spacecat + Dead: + Base: spacecat_dead + - type: InteractionPopup + successChance: 0.7 + interactSuccessString: petting-success-space-cat + interactFailureString: petting-failure-generic + interactSuccessSound: + path: /Audio/Animals/cat_meow.ogg + - type: Barotrauma + damage: + types: + Blunt: 0.0 #per second, scales with pressure and other constants. + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 0 + currentTemperature: 310.15 + coldDamage: + types: + Cold : 0.1 #per second, scales with temperature & other constants + specificHeat: 42 + heatDamage: + types: + Heat : 0.1 #per second, scales with temperature & other constants + +- type: entity + name: bingus + suffix: Ghost + parent: MobBingus + id: MobBingusGhost + description: Bingus my beloved... + components: + - type: GhostRole + name: ghost-role-information-emotional-support-name + description: ghost-role-information-emotional-support-description + makeSentient: true + allowSpeech: true + allowMovement: true + - type: GhostTakeoverAvailable + - type: CombatMode + combatToggleAction: + enabled: false + autoPopulate: false + name: action-name-combat + - type: ReplacementAccent + accent: cat + - type: Grammar + attributes: + gender: epicene + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + +- type: entity + name: corgi + suffix: Ghost + parent: MobCorgi + id: MobCorgiGhost + description: Finally, a space corgi! + components: + - type: GhostRole + name: ghost-role-information-emotional-support-name + description: ghost-role-information-emotional-support-description + makeSentient: true + allowSpeech: true + allowMovement: true + - type: GhostTakeoverAvailable + - type: CombatMode + combatToggleAction: + enabled: false + autoPopulate: false + name: action-name-combat + - type: ReplacementAccent + accent: dog + - type: Grammar + attributes: + gender: epicene + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + +- type: entity + name: corgi puppy + suffix: Ghost + parent: MobCorgiGhost + id: MobCorgiPuppyGhost + description: A little corgi! Aww... + components: + - type: Sprite + drawdepth: Mobs + sprite: Mobs/Pets/corgi.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: puppy + - type: Inventory + speciesId: puppy + templateId: pet + - type: InventorySlots + - type: DamageStateVisuals + states: + Alive: + Base: puppy + Dead: + Base: puppy_dead + - type: ReplacementAccent + accent: dog + - type: Grammar + attributes: + gender: epicene diff --git a/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml b/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml new file mode 100644 index 00000000000..20f282ca07a --- /dev/null +++ b/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml @@ -0,0 +1,24 @@ +- type: entity + name: Random Animal Spawner + suffix: Emotional Support + parent: MarkerBase + id: RandomAnimalSpawnerEmotionalSupport + components: + - type: Sprite + layers: + - state: red + - sprite: Mobs/Animals/chicken.rsi + state: icon-1 + - type: RandomSpawner + offset: 0 + prototypes: + - MobCatGhost + - MobCatCalicoGhost + - MobCatCaracalGhost + - MobCorgiGhost + chance: 1 + rarePrototypes: + - MobBingusGhost + - MobCatSpaceGhost + - MobCorgiPuppyGhost + rareChance: 0.15