Adds mice (#3594)
* Initial * Mmm * Adds them to map * Makes mice grindable * meta.json looking nice * Mice go squeak * Ye * E * Review * Update Content.Server/GameObjects/Components/Mobs/Speech/MouseAccentComponent.cs Co-authored-by: Paul Ritter <ritter.paul1@googlemail.com>
@@ -243,6 +243,8 @@ namespace Content.Client
|
||||
"Shovel",
|
||||
"ReagentTank",
|
||||
"UtilityAI",
|
||||
"MouseAccent",
|
||||
"GhostTakeoverAvailable",
|
||||
"GhostRoleMobSpawner",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using Robust.Shared.GameObjects;
|
||||
using System.Collections.Generic;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.IoC;
|
||||
|
||||
namespace Content.Server.GameObjects.Components.Mobs.Speech
|
||||
{
|
||||
[RegisterComponent]
|
||||
public class MouseAccentComponent : Component, IAccentComponent
|
||||
{
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
public override string Name => "MouseAccent";
|
||||
|
||||
private static readonly IReadOnlyList<string> Squeek = new List<string>{
|
||||
"Squeak!", "Piep!", "Chuu!"
|
||||
}.AsReadOnly();
|
||||
|
||||
public string Accentuate(string message)
|
||||
{
|
||||
return _random.Pick(Squeek);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40729,4 +40729,34 @@ entities:
|
||||
- pos: -36.5,4.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
- uid: 4724
|
||||
type: MouseAITimedSpawner
|
||||
components:
|
||||
- pos: -15.5,25.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
- uid: 4725
|
||||
type: MouseAITimedSpawner
|
||||
components:
|
||||
- pos: 13.5,18.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
- uid: 4726
|
||||
type: MouseAITimedSpawner
|
||||
components:
|
||||
- pos: 27.5,-1.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
- uid: 4727
|
||||
type: MouseAITimedSpawner
|
||||
components:
|
||||
- pos: -9.5,-25.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
- uid: 4728
|
||||
type: MouseAITimedSpawner
|
||||
components:
|
||||
- pos: -33.5,-11.5
|
||||
parent: 853
|
||||
type: Transform
|
||||
...
|
||||
|
||||
@@ -52,36 +52,3 @@
|
||||
sprite: Clothing/Head/Animals/monkey.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Animals/monkey.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadHatAnimalMouseBrown
|
||||
name: mouse brown
|
||||
description: This is a head of a brown mouse. Squeak!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Head/Animals/mouse_brown.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Animals/mouse_brown.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadHatAnimalMouseGray
|
||||
name: mouse gray
|
||||
description: This is a head of a grey mouse. Squeak!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Head/Animals/mouse_gray.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Animals/mouse_gray.rsi
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHeadBase
|
||||
id: ClothingHeadHatAnimalMouseWhite
|
||||
name: mouse white
|
||||
description: This is a head of a white mouse. Squeak!
|
||||
components:
|
||||
- type: Sprite
|
||||
sprite: Clothing/Head/Animals/mouse_white.rsi
|
||||
- type: Clothing
|
||||
sprite: Clothing/Head/Animals/mouse_white.rsi
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
visible: false
|
||||
sprite: Interface/Misc/markers.rsi
|
||||
state: cross_blue
|
||||
|
||||
- type: Marker
|
||||
- type: Clickable
|
||||
- type: InteractionOutline
|
||||
@@ -27,7 +26,6 @@
|
||||
visible: false
|
||||
sprite: Interface/Misc/markers.rsi
|
||||
state: spawner_ai
|
||||
|
||||
- type: TimedSpawner
|
||||
prototypes:
|
||||
- HumanMob_Spirate
|
||||
@@ -47,7 +45,6 @@
|
||||
visible: false
|
||||
sprite: Interface/Misc/markers.rsi
|
||||
state: spawner_xenoai
|
||||
|
||||
- type: TimedSpawner
|
||||
prototypes:
|
||||
- XenoMob_Content
|
||||
@@ -55,3 +52,23 @@
|
||||
intervalSeconds: 30
|
||||
minimumEntitiesSpawned: 2
|
||||
maximumEntitiesSpawned: 4
|
||||
|
||||
- type: entity
|
||||
name: Mouse AI Timed Spawner
|
||||
id: MouseAITimedSpawner
|
||||
parent: BaseTimedSpawner
|
||||
components:
|
||||
- type: Sprite
|
||||
netsync: false
|
||||
visible: false
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
state: icon-2
|
||||
- type: TimedSpawner
|
||||
prototypes:
|
||||
- MouseMob_Content
|
||||
- MouseMob1_Content
|
||||
- MouseMob2_Content
|
||||
chance: 0.75
|
||||
intervalSeconds: 100
|
||||
minimumEntitiesSpawned: 1
|
||||
maximumEntitiesSpawned: 1
|
||||
|
||||
@@ -434,3 +434,102 @@
|
||||
- type: DamageStateVisualizer
|
||||
normal: penguin
|
||||
dead: penguin_dead
|
||||
|
||||
- type: entity
|
||||
name: mouse
|
||||
parent: SimpleMobBase
|
||||
id: MouseMob_Content
|
||||
description: Squeak!
|
||||
components:
|
||||
- type: Tag
|
||||
tags:
|
||||
- Grindable
|
||||
- type: GhostTakeoverAvailable
|
||||
makeSentient: true
|
||||
name: mouse
|
||||
description: A mouse in maint.
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
layers:
|
||||
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||
state: mouse-0
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
- type: Clothing
|
||||
QuickEquip: false
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
HeldPrefix: 0
|
||||
ClothingPrefix: 0
|
||||
Slots:
|
||||
- Helmet
|
||||
- type: Physics
|
||||
bodyType: Dynamic
|
||||
mass: 10
|
||||
fixtures:
|
||||
- shape:
|
||||
!type:PhysShapeAabb
|
||||
bounds: "-0.50,-0.30,0.35,0.30"
|
||||
mask:
|
||||
- Impassable
|
||||
- VaultImpassable
|
||||
- SmallImpassable
|
||||
layer:
|
||||
- Opaque
|
||||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed : 5
|
||||
baseSprintSpeed : 5
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: DamageStateVisualizer
|
||||
normal: mouse-0
|
||||
crit: dead-0
|
||||
dead: splat-0
|
||||
# Eek! You can eat them alive for now until someone makes something that detects when
|
||||
# a mob is dead or something idk
|
||||
- type: Food
|
||||
- type: LoopingSound
|
||||
- type: SolutionContainer
|
||||
contents:
|
||||
reagents:
|
||||
- ReagentId: chem.Nutriment
|
||||
Quantity: 5
|
||||
- type: MouseAccent
|
||||
|
||||
- type: entity
|
||||
parent: MouseMob_Content
|
||||
id: MouseMob1_Content
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
layers:
|
||||
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||
state: mouse-1
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
- type: Clothing
|
||||
HeldPrefix: 1
|
||||
ClothingPrefix: 1
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: DamageStateVisualizer
|
||||
normal: mouse-1
|
||||
crit: dead-1
|
||||
dead: splat-1
|
||||
|
||||
- type: entity
|
||||
parent: MouseMob_Content
|
||||
id: MouseMob2_Content
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Mobs
|
||||
layers:
|
||||
- map: ["enum.DamageStateVisualLayers.Base"]
|
||||
state: mouse-2
|
||||
sprite: Mobs/Animals/mouse.rsi
|
||||
- type: Clothing
|
||||
HeldPrefix: 1
|
||||
ClothingPrefix: 2
|
||||
- type: Appearance
|
||||
visuals:
|
||||
- type: DamageStateVisualizer
|
||||
normal: mouse-2
|
||||
crit: dead-2
|
||||
dead: splat-2
|
||||
|
||||
|
Before Width: | Height: | Size: 236 B |
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 229 B |
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 232 B |
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "icon"
|
||||
},
|
||||
{
|
||||
"name": "equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 566 B |
|
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 492 B After Width: | Height: | Size: 492 B |
|
Before Width: | Height: | Size: 587 B After Width: | Height: | Size: 587 B |
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 508 B |
|
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
|
Before Width: | Height: | Size: 564 B After Width: | Height: | Size: 564 B |
|
Before Width: | Height: | Size: 491 B After Width: | Height: | Size: 491 B |
|
Before Width: | Height: | Size: 499 B After Width: | Height: | Size: 499 B |
@@ -1,35 +1,20 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from https://github.com/tgstation/tgstation/commit/e15c63d100db65eaaa5231133b8a2662ff439131#diff-8dd94e19fdb2ff341b57e31bce101298",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from https://github.com/tgstation/tgstation/commit/e15c63d100db65eaaa5231133b8a2662ff439131#diff-8dd94e19fdb2ff341b57e31bce101298",
|
||||
"states": [
|
||||
{
|
||||
"name": "icon-0",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "icon-0"
|
||||
},
|
||||
{
|
||||
"name": "icon-1",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "icon-1"
|
||||
},
|
||||
{
|
||||
"name": "icon-2",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "icon-2"
|
||||
},
|
||||
{
|
||||
"name": "mouse-0",
|
||||
@@ -110,52 +95,58 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "dead-0",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "dead-0"
|
||||
},
|
||||
{
|
||||
"name": "dead-1",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "dead-1"
|
||||
},
|
||||
{
|
||||
"name": "dead-2",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "dead-2"
|
||||
},
|
||||
{
|
||||
"name": "splat-0",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "splat-0"
|
||||
},
|
||||
{
|
||||
"name": "splat-1",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "splat-1"
|
||||
},
|
||||
{
|
||||
"name": "splat-2",
|
||||
"delays": [
|
||||
[
|
||||
1
|
||||
]
|
||||
]
|
||||
"name": "splat-2"
|
||||
},
|
||||
{
|
||||
"name": "0-equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "1-equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "2-equipped-HELMET",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "0-inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "1-inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "2-inhand-left",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "0-inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "1-inhand-right",
|
||||
"directions": 4
|
||||
},
|
||||
{
|
||||
"name": "2-inhand-right",
|
||||
"directions": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||