Parroting Parrots part 1: Help maints! SQUAWK! Maints! (#38243)

* parrots have ears. add poly

* high tech parrot functionality

* adjust times

* add accent to radio message

* don't spam everything all at once probably

* learn about the existence of prob(float)

* actually use Prob(float) correctly

* newline

* add pet spawner for poly

* move chance to talk on radio to component

* missing comment

* minor edits and doc additions

* the reviewerrrrrrr

* parrot can't learn when crit or dead

* increase default memory

* rename poly to polly

* crude way to ignore whispers. chatcode please

* This is Polly. It is set to broadcast over the engineering frequency

* add missing initialize

* add displacement map for parrot ears

* review comments - Errant

* minor things

* large rework

* fix attempting to talk when entity has no channels

* use list of active radios again to track channels

* fix bad return, some comments

* fix long learn cooldown

* minor adjustments

* use FromMinutes

* the voices told me to make these changes

* remove default reassignment

* Review changes

* remove polly's accent

* decouple radio stuff from parrotsystem

* minor stuff

* split vocalization and parroting

* minor review work

* re-add missing check

* add admin verb for clearing parrot messages

* minor action icon update

* oops

* increase icon number text size

* Admin erase parrot messages associated with players

* part 1 beck review

* add whitelist and blacklist for parrots

* Downgrade missing component error to warning

* Add comment

* add some missing comments

* Remove active radio entity tracking, use all inventory slots

* Minor changes

* small review stuff

* review radio stuff

* swap ears displacement to invisible death displacement

* remove syncsprite

* vscode why do yo have to hurt my feelings

* review changes

* use checkboth
This commit is contained in:
Crude Oil
2025-07-09 21:04:57 +02:00
committed by GitHub
parent e08e920c62
commit 9ebf6a24c4
27 changed files with 725 additions and 7 deletions

View File

@@ -151,7 +151,7 @@
- type: cargoProduct
id: LivestockParrot
icon:
sprite: Mobs/Animals/parrot.rsi
sprite: Mobs/Animals/parrot/parrot.rsi
state: parrot
product: CrateNPCParrot
cost: 3000

View File

@@ -210,7 +210,7 @@
layers:
- state: green
- state: parrot
sprite: Mobs/Animals/parrot.rsi
sprite: Mobs/Animals/parrot/parrot.rsi
- type: ConditionalSpawner
prototypes:
- MobParrot

View File

@@ -218,6 +218,21 @@
prototypes:
- MobMonkeyPunpun
- type: entity
parent: MarkerBase
id: SpawnMobPollyParrot
name: Polly the parrot Spawner
suffix: CE Pet
components:
- type: Sprite
layers:
- state: green
- state: parrot
sprite: Mobs/Animals/parrot/parrot.rsi
- type: ConditionalSpawner
prototypes:
- MobPollyParrot
- type: entity
parent: MarkerBase
id: SpawnMobPossumMorty

View File

@@ -2174,9 +2174,9 @@
# Would be cool to have some functionality for the parrot to be able to sit on stuff
- type: entity
name: parrot
parent: [ SimpleMobBase, FlyingMobBase ]
id: MobParrot
id: MobParrotBase
abstract: true
description: Infiltrates your domain, spies on you, and somehow still a cool pet.
components:
- type: MovementSpeedModifier
@@ -2187,7 +2187,7 @@
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: parrot
sprite: Mobs/Animals/parrot.rsi
sprite: Mobs/Animals/parrot/parrot.rsi
- type: Fixtures
fixtures:
fix1:
@@ -2217,7 +2217,29 @@
- type: Vocal
sounds:
Unsexed: Parrot
- type: ParrotAccent
- type: ActiveListener
- type: Vocalizer
- type: RadioVocalizer
- type: ParrotListener
- type: ParrotMemory
- type: Inventory
templateId: parrot
speciesId: parrot
# transparent displacement map to hide the headset. this should be an animated displacement map to follow the parrot
# as it bobs up and down, but this in turn needs some way to change the displacement map on inventory entities when
# the parrot dies, otherwise the visuals will be broken
displacements:
ears:
sizeMaps:
32:
sprite: Mobs/Animals/parrot/displacement.rsi
state: ears
- type: InventorySlots
- type: Strippable
- type: UserInterface
interfaces:
enum.StrippingUiKey.Key:
type: StrippableBoundUserInterface
- type: InteractionPopup
successChance: 0.6
interactSuccessString: petting-success-bird
@@ -2228,6 +2250,13 @@
- type: Bloodstream
bloodMaxVolume: 50
- type: entity
name: parrot
parent: MobParrotBase
id: MobParrot
components:
- type: ParrotAccent # regular parrots have a parrotaccent. Polly is special and does not
- type: entity
name: penguin
parent: SimpleMobBase

View File

@@ -858,3 +858,21 @@
# - type: AlwaysRevolutionaryConvertible
- type: StealTarget
stealGroup: AnimalTropico
- type: entity
name: Polly the parrot
parent: MobParrotBase
id: MobPollyParrot
description: An expert in quantum cracker theory
components:
- type: ParrotMemory
learnChance: 0.5 # polly is smarter
- type: Vocalizer
maxVocalizeInterval: 240 # polly is chattier
- type: Grammar
attributes:
proper: true
gender: male
- type: Loadout
prototypes: [ MobPollyGear ]

View File

@@ -0,0 +1,10 @@
- type: inventoryTemplate
id: parrot
slots:
- name: ears
slotTexture: ears
slotFlags: EARS
stripTime: 3
uiWindowPos: 0,2
strippingWindowPos: 0,0
displayName: Ears

View File

@@ -103,6 +103,11 @@
jumpsuit: ClothingUniformJumpsuitJacketMonkey
id: PunPunIDCard
- type: startingGear
id: MobPollyGear
equipment:
ears: ClothingHeadsetEngineering
# Emotional Support Scurret
- type: startingGear