diff --git a/Resources/Locale/en-US/_Nyano/interaction/interaction-popup-component.ftl b/Resources/Locale/en-US/_Nyano/interaction/interaction-popup-component.ftl new file mode 100644 index 00000000000..9a208d75452 --- /dev/null +++ b/Resources/Locale/en-US/_Nyano/interaction/interaction-popup-component.ftl @@ -0,0 +1,4 @@ +## Petting animals + +#petting-failure-pibble = You reach out to pet {THE($target)}, and {SUBJECT($target)} lunges at you! +petting-failure-pibble = You reach out to pet {THE($target)}, but think better of it. \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index a165b054a7d..13cc993b358 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -216,6 +216,7 @@ - type: NpcFactionMember factions: - Passive + - Chicken - type: entity id: FoodEggChickenFertilized @@ -868,6 +869,7 @@ - type: NpcFactionMember factions: - Passive + - Monkey - type: GhostRole prob: 0.05 makeSentient: true @@ -2002,6 +2004,9 @@ id: MobCat description: Feline pet, very funny. components: + - type: NpcFactionMember + factions: + - Cat - type: Sprite drawdepth: Mobs sprite: Mobs/Pets/cat.rsi @@ -2076,10 +2081,15 @@ - type: entity name: space cat id: MobCatSpace - parent: MobCat + parent: SimpleSpaceSuitMobBase description: Feline pet, prepared for the worst. components: + - type: NpcFactionMember + factions: + - Cat - type: Sprite + drawdepth: Mobs + sprite: Mobs/Pets/cat.rsi layers: - map: ["enum.DamageStateVisualLayers.Base"] state: spacecat @@ -2096,21 +2106,41 @@ 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: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 15 + mask: + - MobMask + layer: + - MobLayer + - type: Inventory + speciesId: cat + templateId: pet + - type: InventorySlots + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Butcherable + spawned: + - id: FoodMeat + amount: 3 + - type: ReplacementAccent + accent: cat + - type: Grammar + attributes: + gender: epicene + - type: MobPrice + price: 200 + - type: Tag + tags: + - VimPilot - type: entity name: caracal cat diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 762f1affe48..779d130426c 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -90,6 +90,7 @@ - type: NpcFactionMember factions: - PetsNT + - Cat - type: HTN rootTask: task: SimpleHostileCompound @@ -110,6 +111,7 @@ - type: NpcFactionMember factions: - PetsNT + - Cat - type: Grammar attributes: gender: male @@ -124,6 +126,9 @@ parent: MobCatCaracal description: He out here. components: + - type: NpcFactionMember + factions: + - Cat - type: Fixtures fixtures: fix1: @@ -163,6 +168,9 @@ id: MobBingus description: Bingus my beloved... components: + - type: NpcFactionMember + factions: + - Cat - type: Sprite drawdepth: Mobs sprite: Mobs/Pets/bingus.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml index 34b14dacd59..b38483ab82d 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml @@ -56,6 +56,10 @@ - type: Speech speechSounds: Bass - type: Perishable + - type: NpcFactionMember + factions: + - NanoTrasen + - Dwarf - type: entity save: false diff --git a/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml b/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml index 861dc74b49d..0b8d19f09e9 100644 --- a/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml +++ b/Resources/Prototypes/_NF/Catalog/Fills/Crates/npc.yml @@ -1,4 +1,5 @@ - type: entity + name: Emotional support pet crate id: CrateNPCEmotionalSupport parent: CrateLivestock components: @@ -11,20 +12,56 @@ prob: 1 orGroup: MobCatGhost - id: MobCatCaracalGhost - prob: 0.15 + prob: 1 + orGroup: MobCatGhost + - id: MobBingusGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCatSpaceGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCorgiGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCorgiPuppyGhost + prob: 1 + orGroup: MobCatGhost + - id: MobChickenGhost + prob: 1 + orGroup: MobCatGhost + - id: MobPibbleGhost + prob: 0.25 + orGroup: MobCatGhost + +- type: entity + name: Emotional support pet crate + id: CrateNPCEmotionalSupportSafe # No pitbull + parent: CrateLivestock + suffix: Safe + components: + - type: StorageFill + contents: + - id: MobCatGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCatCalicoGhost + prob: 1 + orGroup: MobCatGhost + - id: MobCatCaracalGhost + prob: 1 orGroup: MobCatGhost - id: MobBingusGhost - prob: 0.15 + prob: 1 orGroup: MobCatGhost - id: MobCatSpaceGhost - prob: 0.15 + prob: 1 orGroup: MobCatGhost - id: MobCorgiGhost prob: 1 orGroup: MobCatGhost - id: MobCorgiPuppyGhost - prob: 0.15 + prob: 1 orGroup: MobCatGhost - id: MobChickenGhost - prob: 0.15 - orGroup: MobCatGhost \ No newline at end of file + prob: 1 + orGroup: MobCatGhost diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml index 0e0aa42e227..92049f27287 100644 --- a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/emotionalsupportanimals.yml @@ -32,6 +32,17 @@ tags: - CannotSuicide - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: cat + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] - type: entity name: calico cat @@ -73,41 +84,48 @@ - type: entity name: space cat suffix: Ghost - parent: MobCatGhost + parent: MobCatSpace 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: 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: Vocal + sounds: + Male: Cat + Female: Cat + Unsexed: Cat + wilhelmProbability: 0.001 + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: cat + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] - type: entity name: bingus @@ -143,6 +161,17 @@ tags: - CannotSuicide - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: cat + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] - type: entity name: corgi @@ -178,6 +207,17 @@ tags: - CannotSuicide - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: dog + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] - type: entity name: corgi puppy @@ -194,7 +234,7 @@ state: puppy - type: Inventory speciesId: puppy - templateId: pet + templateId: emotionalsupportpet - type: InventorySlots - type: DamageStateVisuals states: @@ -202,6 +242,14 @@ Base: puppy Dead: Base: puppy_dead + - type: IdExaminable + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] - type: entity name: chicken @@ -236,4 +284,58 @@ - type: Tag tags: - CannotSuicide - - DoorBumpOpener \ No newline at end of file + - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: chicken + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] + - type: Puller + needsHands: false + +- type: entity + name: pitbull + suffix: Ghost + parent: MobPibble + id: MobPibbleGhost + description: Nanny dog. Or a lab mix depending on who is asking. + 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: ReplacementAccent + accent: dog + - type: Grammar + attributes: + gender: epicene + - type: Vocal + sounds: + Male: Dog + Female: Dog + Unsexed: Dog + wilhelmProbability: 0.001 + - type: Tag + tags: + - CannotSuicide + - DoorBumpOpener + - type: IdExaminable + - type: Inventory + speciesId: dog + templateId: emotionalsupportpet + - type: Strippable + - type: UserInterface + interfaces: + - key: enum.StrippingUiKey.Key + type: StrippableBoundUserInterface + - type: Loadout + prototypes: [ MobEmotionalSupportGear ] diff --git a/Resources/Prototypes/_NF/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/simplemob.yml new file mode 100644 index 00000000000..389dd9d20bb --- /dev/null +++ b/Resources/Prototypes/_NF/Entities/Mobs/NPCs/simplemob.yml @@ -0,0 +1,62 @@ +- type: entity + save: false + abstract: true + id: SimpleSpaceSuitMobBase # for air breathers + parent: SimpleSpaceMobBase + suffix: AI + components: + - type: InputMover + - type: MobMover + - type: Hunger + thresholds: # only animals and rats are derived from this prototype so let's override it here and in rats' proto + Overfed: 100 + Okay: 50 + Peckish: 25 + Starving: 10 + Dead: 0 + baseDecayRate: 0.00925925925926 # it is okay for animals to eat and drink less than humans, but more frequently + - type: Thirst + thresholds: + OverHydrated: 200 + Okay: 150 + Thirsty: 100 + Parched: 50 + Dead: 0 + baseDecayRate: 0.04 + - type: StatusEffects + allowed: + - Stun + - KnockedDown + - SlowedDown + - Stutter + - Electrocution + - ForcedSleep + - TemporaryBlindness + - Pacified + - StaminaModifier + - type: Respirator + damage: + types: + Asphyxiation: 2 + damageRecovery: + types: + Asphyxiation: -1.0 + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 0 + currentTemperature: 310.15 + specificHeat: 42 + coldDamage: + types: + Cold : 0.1 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 0.1 #per second, scales with temperature & other constants + - type: Bloodstream + bloodMaxVolume: 150 + - type: MobPrice + price: 150 + - type: FloatingVisuals + - type: Puller + needsHands: false + diff --git a/Resources/Prototypes/_NF/InventoryTemplates/emotionalsupportpet_inventory_template.yml b/Resources/Prototypes/_NF/InventoryTemplates/emotionalsupportpet_inventory_template.yml new file mode 100644 index 00000000000..4b3e78d4ba4 --- /dev/null +++ b/Resources/Prototypes/_NF/InventoryTemplates/emotionalsupportpet_inventory_template.yml @@ -0,0 +1,42 @@ +- type: inventoryTemplate + id: emotionalsupportpet + slots: +# - name: ears +# slotTexture: ears +# slotFlags: EARS +# slotGroup: MainHotbar +# stripTime: 3 +# uiWindowPos: 1,2 +# strippingWindowPos: 1,2 +# displayName: Ears + + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 1,1 + strippingWindowPos: 1,1 + displayName: Mask + whitelist: + tags: + - PetWearable + + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: SecondHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + displayName: Suit Storage + whitelist: + components: + - GasTank + + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID diff --git a/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml b/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml deleted file mode 100644 index 95709c7fc5a..00000000000 --- a/Resources/Prototypes/_NF/Markers/Spawners/Random/emotionalsupportanimals.yml +++ /dev/null @@ -1,25 +0,0 @@ -- 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 - - MobChickenGhost - rareChance: 0.15 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..9656d44484b --- /dev/null +++ b/Resources/Prototypes/_NF/Roles/Jobs/Fun/misc_startinggear.yml @@ -0,0 +1,4 @@ +- type: startingGear + id: MobEmotionalSupportGear + equipment: + id: PassengerIDCard diff --git a/Resources/Prototypes/_NF/ai_factions.yml b/Resources/Prototypes/_NF/ai_factions.yml new file mode 100644 index 00000000000..c7b169907ff --- /dev/null +++ b/Resources/Prototypes/_NF/ai_factions.yml @@ -0,0 +1,31 @@ +- type: npcFaction + id: Pibble + hostile: + - Mouse + - Xeno + - Zombie + - SimpleHostile + - Dwarf + - Felinid + - Cat + - Chicken + - Monkey + - Mailman + +- type: npcFaction + id: Dwarf + +- type: npcFaction + id: Felinid + +- type: npcFaction + id: Mailman # Need ClothingAddFaction to work from Nyanotrasen code + +- type: npcFaction + id: Cat + +- type: npcFaction + id: Chicken + +- type: npcFaction + id: Monkey diff --git a/Resources/Prototypes/_Nyano/Datasets/Names/pitbull.yml b/Resources/Prototypes/_Nyano/Datasets/Names/pitbull.yml new file mode 100644 index 00000000000..628c600a5c4 --- /dev/null +++ b/Resources/Prototypes/_Nyano/Datasets/Names/pitbull.yml @@ -0,0 +1,34 @@ +- type: dataset + id: names_pitbull + values: + - Zeus + - Magnum + - Diesel + - Satan + - Dante + - Midas + - Blue + - Petunia + - Luna + - Bubbles + - Rainbow + - Echo + - Cuddles + - Killer + - Paisley + - Echo + - Sweetie + - Tutu + - Reaper + - Peaches + - Cujo + - Cuddles + - Lucifer + - Daisy + - Blaze + - Lady + - Franny + - Hades + - Baby + - Demon + - Trixie diff --git a/Resources/Prototypes/_Nyano/Entities/Mobs/NPCs/dogs.yml b/Resources/Prototypes/_Nyano/Entities/Mobs/NPCs/dogs.yml index 9a8fe83b385..866a23845f4 100644 --- a/Resources/Prototypes/_Nyano/Entities/Mobs/NPCs/dogs.yml +++ b/Resources/Prototypes/_Nyano/Entities/Mobs/NPCs/dogs.yml @@ -55,6 +55,10 @@ path: /Audio/Animals/small_dog_bark_happy.ogg hostileOnFail: true - type: DogVision + - type: NpcFactionMember + factions: + - PetsNT + - Pibble - type: HTN rootTask: task: SimpleHostileCompound diff --git a/Resources/Prototypes/_Nyano/Entities/Mobs/Player/felinid.yml b/Resources/Prototypes/_Nyano/Entities/Mobs/Player/felinid.yml index a15aaa333a9..6583be8eb70 100644 --- a/Resources/Prototypes/_Nyano/Entities/Mobs/Player/felinid.yml +++ b/Resources/Prototypes/_Nyano/Entities/Mobs/Player/felinid.yml @@ -31,9 +31,6 @@ - type: CameraRecoil - type: Examiner - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen - type: Felinid #since this just adds an action... - type: MailReceiver - type: InteractionPopup diff --git a/Resources/Prototypes/_Nyano/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/_Nyano/Entities/Mobs/Species/felinid.yml index 940840af5ee..5f42a13c106 100644 --- a/Resources/Prototypes/_Nyano/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/_Nyano/Entities/Mobs/Species/felinid.yml @@ -126,6 +126,10 @@ - type: Stamina - type: PseudoItem - type: Perishable + - type: NpcFactionMember + factions: + - NanoTrasen + - Felinid - type: entity save: false diff --git a/Resources/Prototypes/ai_factions.yml b/Resources/Prototypes/ai_factions.yml index 9c8f0015774..63adc7a4310 100644 --- a/Resources/Prototypes/ai_factions.yml +++ b/Resources/Prototypes/ai_factions.yml @@ -1,11 +1,11 @@ - type: npcFaction id: Dragon hostile: - - NanoTrasen - - Syndicate - - Xeno - - PetsNT - - Zombie + - NanoTrasen + - Syndicate + - Xeno + - PetsNT + - Zombie - type: npcFaction id: NanoTrasen @@ -18,7 +18,7 @@ - type: npcFaction id: Mouse hostile: - - PetsNT + - PetsNT - type: npcFaction id: Passive