* add gnomes, gnome hat, gnome gamerule, gnome voice

* inventory and hand fixed, speech half fix, hat embed, gamerule doesn't work

* fix audio, gamerule doesn't spawn correctly, need to fix dead sprite 90 degrees off

* add audio, add custom jaunt + polymorph, "fix" dead sprite

* add storage to hat, gnome fit into duffelbags

* make jaunt 2 seconds, hat store small items

* fix spawn

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* jaunt 20 seconds

* fix stupid web merge, 20 second jaunt cooldown

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* add pitch variation

* audio fixes and guidebook, make pulling need hands

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* fix hands and polymorph inventory, make storage implant unremovable

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* polymorph inventory make linter mad

* Update Resources/Prototypes/_DV/Polymorphs/polymorph.yml

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Theo <tad3@illinois.edu>

* Update Resources/Locale/en-US/_DV/abilities/psionic.ftl

Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Signed-off-by: Theo <tad3@illinois.edu>

* passive HTN and glimmer event

* fix comment

* random names

* PR Review Suggestions but it works this time

---------

Signed-off-by: Theo <rebe83a@gmail.com>
Signed-off-by: Theo <tad3@illinois.edu>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Vanessa <908648+ShepardToTheStars@users.noreply.github.com>
Co-authored-by: Vanessa <vanessalouwagie@gmail.com>
This commit is contained in:
Theo 2026-08-09 13:24:25 -05:00 committed by GitHub
parent 493db6d129
commit ed07a12d24
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 491 additions and 2 deletions

View File

@ -0,0 +1,4 @@
- files: ["gnome_scream.ogg", "gnomedeath.ogg", "gnomelaugh.ogg", "gnome1.ogg"]
license: "CC-BY-SA-4.0"
copyright: "Audio recorded by Cepelinas and edited by rebe83"
source: "https://github.com/DeltaV-Station/Delta-v/pull/6027"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -92,6 +92,7 @@ psionic-power-precognition-unknown-shuttle-disaster-evac-pod-result-message = Yo
psionic-power-precognition-syndicate-armsdealer-result-message = You see a vision of a ship lurking in the shadows, its cargo deadly. psionic-power-precognition-syndicate-armsdealer-result-message = You see a vision of a ship lurking in the shadows, its cargo deadly.
psionic-power-precognition-rift-spawn-result-message = You see a small spark of energy, quickly expanding as it tears reality apart, twisting everything around it. psionic-power-precognition-rift-spawn-result-message = You see a small spark of energy, quickly expanding as it tears reality apart, twisting everything around it.
psionic-power-precognition-asakim-spawn-result-message = You smell stale air from a cryopod opening, and the faint echo of an intelligence far away but very near. psionic-power-precognition-asakim-spawn-result-message = You smell stale air from a cryopod opening, and the faint echo of an intelligence far away but very near.
psionic-power-precognition-gnome-spawn-result-message = You hear laughter coming from the walls and quick footsteps when your back is turned.
psionic-power-precognition-pitbull-spawn-result-message = You see a vision of a hundred small creatures being torn apart by bloodthirsty beasts in a maze of steel. psionic-power-precognition-pitbull-spawn-result-message = You see a vision of a hundred small creatures being torn apart by bloodthirsty beasts in a maze of steel.
psionic-power-precognition-hitman-spawn-result-message = You see a man in a business suit, a corpse at their feet. psionic-power-precognition-hitman-spawn-result-message = You see a man in a business suit, a corpse at their feet.

View File

@ -0,0 +1,63 @@
names-gnome-dataset-1 = Fwipple
names-gnome-dataset-2 = Gerald
names-gnome-dataset-3 = Garl
names-gnome-dataset-4 = Winkler
names-gnome-dataset-5 = Clunk
names-gnome-dataset-6 = Glunch
names-gnome-dataset-7 = Feinhelt
names-gnome-dataset-8 = Fitzgerald
names-gnome-dataset-9 = Daniel
names-gnome-dataset-10 = Mel
names-gnome-dataset-11 = Chomsky
names-gnome-dataset-12 = Gont
names-gnome-dataset-13 = Fwipple
names-gnome-dataset-14 = Wort
names-gnome-dataset-15 = Lichen
names-gnome-dataset-16 = Apricot
names-gnome-dataset-17 = Chestnut
names-gnome-dataset-18 = Mucus
names-gnome-dataset-19 = Wilbur
names-gnome-dataset-20 = Harold
names-gnome-dataset-21 = Howard
names-gnome-dataset-22 = Tinkle
names-gnome-dataset-23 = Clumsy
names-gnome-dataset-24 = Tipsy
names-gnome-dataset-25 = Sleepy
names-gnome-dataset-26 = Greedy
names-gnome-dataset-27 = Hungry
names-gnome-dataset-28 = Grubby
names-gnome-dataset-29 = Sniffles
names-gnome-dataset-30 = Stubby
names-gnome-dataset-31 = Twig
names-gnome-last-dataset-1 = the Nimble
names-gnome-last-dataset-2 = the Quick
names-gnome-last-dataset-3 = the Worrywort
names-gnome-last-dataset-4 = the Glib
names-gnome-last-dataset-5 = the Stinky
names-gnome-last-dataset-6 = the Grudgeworthy
names-gnome-last-dataset-7 = the Unremarkable
names-gnome-last-dataset-8 = the Lazy
names-gnome-last-dataset-9 = the Quiet
names-gnome-last-dataset-10 = Glimmergold
names-gnome-last-dataset-11 = Rootmuncher
names-gnome-last-dataset-12 = Spoonlicker
names-gnome-last-dataset-13 = The Frantic
names-gnome-last-dataset-14 = The Fantastic
names-gnome-last-dataset-15 = the Fickle
names-gnome-last-dataset-16 = Gemjingle
names-gnome-last-dataset-17 = Daisypicker
names-gnome-last-dataset-18 = of the Frogs
names-gnome-last-dataset-19 = of the Mice
names-gnome-last-dataset-20 = of the Swamp
names-gnome-last-dataset-21 = of the Hills
names-gnome-last-dataset-22 = of the Mountains
names-gnome-last-dataset-23 = Bowllicker
names-gnome-last-dataset-24 = Potscraper
names-gnome-last-dataset-25 = the Candle Thief
names-gnome-last-dataset-26 = Meatsnatcher
names-gnome-last-dataset-27 = the Yodler
names-gnome-last-dataset-28 = the Vibrant
names-gnome-last-dataset-29 = Forksnatcher
names-gnome-last-dataset-30 = Twinesnipper
names-gnome-last-dataset-31 = Fungimuncher

View File

@ -0,0 +1,4 @@
ghost-role-information-gnome-name = Gnome
ghost-role-information-gnome-description = Steal goodies and prank naughty crew members.
gnome-round-end-name = Gnome

View File

@ -0,0 +1,17 @@
- type: entity
parent: ActionPolymorphJaunt
id: ActionPolymorphJauntGnome
name: Ethereal Jaunt
description: Jump into the Etherial plane for just a moment.
components:
- type: Magic
requiresClothes: false
requiresSpeech: false
- type: Action
useDelay: 22
icon:
sprite: Objects/Magic/magicactions.rsi
state: jaunt
- type: InstantAction
event: !type:PolymorphActionEvent
protoId: GnomeMorph

View File

@ -0,0 +1,11 @@
- type: localizedDataset
id: NamesGnome
values:
prefix: names-gnome-dataset-
count: 31
- type: localizedDataset
id: NamesGnomeLast
values:
prefix: names-gnome-last-dataset-
count: 31

View File

@ -511,6 +511,54 @@
- PetWearable - PetWearable
- CorgiWearable - CorgiWearable
- type: entity
parent: ClothingHeadBase
id: ClothingHeadHatGnome
name: gnome hat
description: For those that honor the first gnome in space, Gnome Chompsky. Still has a bit of magic that sparkles in its velvet sheen.
components:
- type: Sprite
sprite: _DV/Clothing/Head/Hats/gnomehat.rsi
- type: Clothing
sprite: _DV/Clothing/Head/Hats/gnomehat.rsi
clothingVisuals:
head:
- state: equipped
offset: "0, 0.35"
- type: EmbeddableProjectile # funny
offset: -0.15,0.0
- type: ThrowingAngle
angle: 180
- type: Fixtures
fixtures:
fix1:
shape: !type:PolygonShape
vertices:
- -0.40,-0.30
- -0.30,-0.40
- 0.40,0.30
- 0.30,0.40
density: 20
mask:
- ItemMask
restitution: 0.3
friction: 0.2
- type: Storage
grid:
- 0,0,0,1
maxItemSize: Small
- type: UserInterface
interfaces:
enum.StorageUiKey.Key:
type: StorageBoundUserInterface
- type: ContainerContainer
containers:
storagebase: !type:Container
- type: Tag
tags:
- PetWearable
- CorgiWearable
- type: entity - type: entity
parent: ClothingHeadBase parent: ClothingHeadBase
id: ClothingHeadHatSodaJerkCap id: ClothingHeadHatSodaJerkCap

View File

@ -178,6 +178,19 @@
color: "#bb4b1e" color: "#bb4b1e"
shader: unshaded shader: unshaded
- type: entity
categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner
id: SpawnPointGnome
name: gnome spawn point
components:
- type: GhostRole
name: ghost-role-information-gnome-name
description: ghost-role-information-gnome-description
rules: ghost-role-information-freeagent-rules
mindRoles:
- MindRoleGhostRoleFreeAgent
- type: entity - type: entity
categories: [ HideSpawnMenu, Spawner ] categories: [ HideSpawnMenu, Spawner ]
parent: BaseAntagSpawner parent: BaseAntagSpawner

View File

@ -0,0 +1,160 @@
- type: entity
parent: [ MobBaseAncestorNoShitmed ]
id: MobGnome
name: gnome
description: A cheery fellow. Definitely not a goblin. Or an elf.
components:
- type: Sprite
layers:
- map: ["enum.DamageStateVisualLayers.Base"]
state: gnome
sprite: _DV/Mobs/Animals/gnome.rsi
- map: ["enum.HumanoidVisualLayers.Handcuffs"]
color: "#ffffff"
sprite: Objects/Misc/handcuffs.rsi
state: body-overlay-2
visible: false
- map: [ "clownedon" ]
sprite: "Effects/creampie.rsi"
state: "creampie_human"
visible: false
- type: DamageStateVisuals
states:
Alive:
Base: gnome
Dead:
Base: dead
- type: MobState
allowedStates:
- Alive
- Dead
- type: MobThresholds
thresholds:
0: Alive
50: Dead
- type: SlowOnDamage
speedModifierThresholds:
25: 0.8
40: 0.6
- type: Deathgasp
needsCritical: false
- type: StatusEffects
allowed:
- Electrocution
- Stunned
- Flashed
- Pacified
- Addicted # Funny
- type: GhostRole
name: ghost-role-information-gnome-name
description: ghost-role-information-gnome-description
rules: ghost-role-information-freeagent-rules
makeSentient: true
allowSpeech: true
allowMovement: true
mindRoles:
- MindRoleGhostRoleFreeAgent
raffle:
settings: default
- type: GhostTakeoverAvailable
- type: Fixtures
fixtures:
fix1:
shape:
!type:PhysShapeCircle
radius: 0.2
density: 160
mask:
- SmallMobMask
layer:
- SmallMobLayer
- type: MovementSpeedModifier
baseWalkSpeed: 3
baseSprintSpeed: 5
- type: NpcFactionMember
factions:
- SimpleHostile # cats and dogs hate gnomes
- type: HTN
rootTask:
task: IdleCompound
- type: Speech
speechSounds: Gnome
- type: Emoting
- type: Vocal
sounds:
Male: GnomeSounds
Female: GnomeSounds
Unsexed: GnomeSounds
- type: RandomMetadata
nameSegments:
- NamesGnome
- NamesGnomeLast
nameFormat: name-format-standard
# abilities
- type: Psionic
- type: Jaunt
jauntAction: ActionPolymorphJauntGnome # 2 second jaunt with 20 second cooldown
- type: PsionicRegenerationPower
- type: PsionicInvisibilityPower
- type: NoSlip
- type: MeleeWeapon
soundHit:
collection: Punch
angle: 30
animation: WeaponArcFist
attackRate: 1
damage:
types:
Blunt: 5
- type: Prying
pryPowered: true
force: true
speedModifier: 1.5
useSound:
path: /Audio/Effects/glass_knock.ogg # Fairy magic
- type: Clumsy
clumsySound:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg
- type: PseudoItem
shape:
- 0,0,0,2
- type: Hands
activeHandId: Hand
hands:
Hand:
location: Left
showInHands: false # TODO: make displacement maps that just slide them down
- type: Puller # needs hands to pull
needsHands: true
- type: ComplexInteraction
- type: AutoImplant
implants:
- GnomeStorageImplant # for trinkets
- type: Thieving # for stealing said trinkets
stealthy: false
- type: Inventory
templateId: pet
speciesId: gnome
- type: Butcherable
butcheringType: knife
spawned:
- id: Ash
- id: ClothingHeadHatGnome
- type: Bloodstream
bloodReferenceSolution:
reagents:
- ReagentId: Nothing
Quantity: 60
- type: Tag
tags:
- FootstepSound
- type: entity
parent: StorageImplant
id: GnomeStorageImplant
description: This implant grants hidden storage within a person's body using bluespace technology.
categories: [ HideSpawnMenu ]
components:
- type: SubdermalImplant
implantAction: ActionOpenStorageImplant
permanent: true # only change from normal storage implant

View File

@ -0,0 +1,19 @@
- type: entity
name: jaunt
parent: EtherealJaunt
id: GnomeJaunt
suffix: Gnome
components:
- type: Sprite
sprite: Mobs/Ghosts/ghost_human.rsi # TODO: add a gnome hat to the sprite
color: "#60f766"
layers:
- state: animated
shader: unshaded
noRot: true
overrideContainerOcclusion: true
drawdepth: Ghosts
scale: 0.5, 0.5
- type: MovementSpeedModifier
baseSprintSpeed: 6.5
baseWalkSpeed: 4

View File

@ -5,6 +5,7 @@
- id: MothroachSpawn - id: MothroachSpawn
- id: XenoVents - id: XenoVents
- id: MalignRiftSpawn - id: MalignRiftSpawn
- id: GnomeSpawn
- id: PitbullMigration # FETCH ME THEIR SOULS - id: PitbullMigration # FETCH ME THEIR SOULS
- type: entityTable - type: entityTable
@ -423,7 +424,6 @@
implants: implants:
- HitmanCardImplant - HitmanCardImplant
# nt agent sleeper event # nt agent sleeper event
- type: entity - type: entity
id: NTAgentSleeper id: NTAgentSleeper
@ -464,6 +464,35 @@
- RadioImplantCentcomm - RadioImplantCentcomm
- NanolinkSubImplant - NanolinkSubImplant
# Gnomes
- type: entity
parent: BaseMidRoundAntag
id: GnomeSpawn
components:
- type: StationEvent
earliestStart: 15
minimumPlayers: 5
weight: 2
duration: null
- type: PrecognitionResult
message: psionic-power-precognition-gnome-spawn-result-message
- type: AntagSpawner
prototype: MobGnome
- type: AntagSelection
agentName: gnome-round-end-name
definitions:
- spawnerPrototype: SpawnPointGnome
min: 1
max: 2
pickPlayer: false
mindRoles:
- MindRoleGhostRoleFreeAgent
components:
- type: EmitSoundOnSpawn
sound: /Audio/Effects/bodyfall3.ogg
- type: SpawnOnTrigger
proto: EffectFlashBluespace
# NT Pest Control via Pitbulls # NT Pest Control via Pitbulls
- type: entity - type: entity
id: PitbullMigration id: PitbullMigration

View File

@ -11,6 +11,7 @@
- id: GlimmerSpawnProber - id: GlimmerSpawnProber
- id: GlimmerRevenantSpawn - id: GlimmerRevenantSpawn
- id: GlimmerMiteSpawn - id: GlimmerMiteSpawn
- id: GlimmerGnomeSpawn
- id: GlimmerRandomSentience - id: GlimmerRandomSentience
- id: GlimmerRandomAnimation - id: GlimmerRandomAnimation
- id: ThavenMoodUpset - id: ThavenMoodUpset
@ -148,6 +149,17 @@
mobPrototype: MobGlimmerMite mobPrototype: MobGlimmerMite
glimmerTier: Low # get more mites earlier on glimmerTier: Low # get more mites earlier on
- type: entity
parent: BaseGlimmerSignaturesEvent
id: GlimmerGnomeSpawn
components:
- type: GlimmerEvent
minimumGlimmer: 500
maximumGlimmer: 900
- type: GlimmerMobRule
mobPrototype: MobGnome
maxSpawns: 2
# Like upstream's event but can reoccur and tied to glimmer. # Like upstream's event but can reoccur and tied to glimmer.
- type: entity - type: entity
parent: [RandomSentience, BaseGlimmerEvent] parent: [RandomSentience, BaseGlimmerEvent]
@ -224,7 +236,6 @@
- silver - silver
- yellow - yellow
- type: entity - type: entity
id: GlimmerRestyle id: GlimmerRestyle
parent: BaseGlimmerSignaturesEvent parent: BaseGlimmerSignaturesEvent

View File

@ -7,3 +7,13 @@
transferDamage: true transferDamage: true
revertOnCrit: true revertOnCrit: true
revertOnDeath: true revertOnDeath: true
- type: polymorph
id: GnomeMorph
configuration:
entity: GnomeJaunt
cooldown: 20
forced: true
duration: 2
polymorphSound: /Audio/_DV/Voice/Gnome/gnomelaugh.ogg
inventory: Drop # drop items in hands when jaunting

View File

@ -739,6 +739,38 @@
Mew: Mew:
collection: FelinidMews collection: FelinidMews
- type: emoteSounds
id: GnomeSounds
params:
variation: 0.08
sounds:
Gulp: # Goob
path: /Audio/_Goobstation/Voice/Human/gulp.ogg
Blink:
collection: Blinks
Scream:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg
Laugh:
path: /Audio/_DV/Voice/Gnome/gnomelaugh.ogg
Sigh:
collection: MaleSigh
params:
variation: 0.125
Snore:
collection: Snores
Sneeze:
collection: MaleSneezes
Cough:
collection: MaleCoughs
Yawn:
collection: MaleYawn
Crying:
collection: MaleCry
Whistle:
collection: Whistles
DefaultDeathgasp:
path: /Audio/_DV/Voice/Gnome/gnomedeath.ogg
- type: emoteSounds - type: emoteSounds
id: MonkeySounds id: MonkeySounds
sounds: sounds:

View File

@ -33,3 +33,12 @@
collection: RubberChicken collection: RubberChicken
exclaimSound: exclaimSound:
collection: RubberChicken collection: RubberChicken
- type: speechSounds
id: Gnome
saySound:
path: /Audio/_DV/Voice/Gnome/gnome1.ogg
askSound:
path: /Audio/_DV/Voice/Gnome/gnome1.ogg
exclaimSound:
path: /Audio/_DV/Voice/Gnome/gnomescream.ogg

View File

@ -98,4 +98,22 @@
- "Technokinetic Pulse" Unleashes a burst of Technokinetic energy, disabling and destroying nearby electronics. - "Technokinetic Pulse" Unleashes a burst of Technokinetic energy, disabling and destroying nearby electronics.
- Skias have [bold]very sharp claws[/bold] that will additionally deal [bold]shadow damage[/bold] that requires Holy water to heal. - Skias have [bold]very sharp claws[/bold] that will additionally deal [bold]shadow damage[/bold] that requires Holy water to heal.
<!-- DeltaV - end Skia changes--> <!-- DeltaV - end Skia changes-->
<!-- DeltaV - start Gnome changes--># Gnomes
<Box>
<GuideEntityEmbed Entity="MobGnome"/>
</Box>
Gnomes are whimsical fairytale creatures brought into realspace by the magic of the [color=#8f63e6]Noosphere[/color].
They seek to coexist with the crew, while collecting small trinkets and treats.
- You're just a little guy! You can't shoot guns, use both hands to carry anything, and will die very quickly in a fight.
- [bold]Once you die, you cannot be revived[/bold].
- If you are injured, you may slowly regenerate with [italic]Psionic Regeneration[/italic].
- You may sneak around invisibly with [italic]Psionic Invisibility[/italic], but beware, crewmembers can hear your footsteps. People can see you if they are psionically insulated!
- Your internal storage allows you to keep your treasures, but you should find a nice place to make a home and store your trinkets.
- You have nimble hands which are capable of stealing quickly and performing pranks.
- You are able to [italic]Jaunt[/italic] into the ether for a brief moment to reposition.
- You can slowly cast a knock spell by interacting with doors (alt click by default) to open them.
- [bold]Obey fairy law![/bold] Conflicts are not solved with violence but with pranks and lessons. You should avoid being seen as much as possible. Any loser owes a debt that can be be repaid by fulfilling a request.
<!-- DeltaV - end Gnome changes-->
</Document> </Document>

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

View File

@ -0,0 +1,18 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from TGstation icons/mob/simple/garden_gnome.dmi and modified by rebe83.",
"source": "https://github.com/tgstation/tgstation/pull/72672",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

View File

@ -0,0 +1,22 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from TGstation icons/mob/simple/garden_gnome.dmi and modified by rebe83.",
"source": "https://github.com/tgstation/tgstation/pull/72672",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "gnome",
"directions": 4
},
{
"name": "dead"
}
]
}