diff --git a/Content.Client/IgnoredComponents.cs b/Content.Client/IgnoredComponents.cs index bc72033ad1..83f2187bf6 100644 --- a/Content.Client/IgnoredComponents.cs +++ b/Content.Client/IgnoredComponents.cs @@ -243,6 +243,8 @@ namespace Content.Client "Shovel", "ReagentTank", "UtilityAI", + "MouseAccent", + "GhostTakeoverAvailable", "GhostRoleMobSpawner", }; } diff --git a/Content.Server/GameObjects/Components/Mobs/Speech/MouseAccentComponent.cs b/Content.Server/GameObjects/Components/Mobs/Speech/MouseAccentComponent.cs new file mode 100644 index 0000000000..2862562014 --- /dev/null +++ b/Content.Server/GameObjects/Components/Mobs/Speech/MouseAccentComponent.cs @@ -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 Squeek = new List{ + "Squeak!", "Piep!", "Chuu!" + }.AsReadOnly(); + + public string Accentuate(string message) + { + return _random.Pick(Squeek); + } + } +} diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index f6d0fc5fd8..b2d47a1170 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -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 ... diff --git a/Resources/Prototypes/Entities/Clothing/Head/animals.yml b/Resources/Prototypes/Entities/Clothing/Head/animals.yml index 4405f7fce3..4ea1c92242 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/animals.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/animals.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Effects/Markers/timed_spawners.yml b/Resources/Prototypes/Entities/Effects/Markers/timed_spawners.yml index 8dafb70910..0ce439b354 100644 --- a/Resources/Prototypes/Entities/Effects/Markers/timed_spawners.yml +++ b/Resources/Prototypes/Entities/Effects/Markers/timed_spawners.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 84451c7186..271b61e75e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -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 diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/icon.png b/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/icon.png deleted file mode 100644 index acb82ac998..0000000000 Binary files a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json deleted file mode 100644 index a470e00944..0000000000 --- a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/meta.json +++ /dev/null @@ -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 - } - ] -} diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/icon.png b/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/icon.png deleted file mode 100644 index 8b61e2c277..0000000000 Binary files a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json deleted file mode 100644 index a470e00944..0000000000 --- a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/meta.json +++ /dev/null @@ -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 - } - ] -} diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/icon.png b/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/icon.png deleted file mode 100644 index bb5e161745..0000000000 Binary files a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json b/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json deleted file mode 100644 index a470e00944..0000000000 --- a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/meta.json +++ /dev/null @@ -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 - } - ] -} diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/equipped-HELMET.png b/Resources/Textures/Mobs/Animals/mouse.rsi/0-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/equipped-HELMET.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/0-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/inhand-left.png b/Resources/Textures/Mobs/Animals/mouse.rsi/0-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/inhand-left.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/0-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/inhand-right.png b/Resources/Textures/Mobs/Animals/mouse.rsi/0-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_white.rsi/inhand-right.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/0-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/equipped-HELMET.png b/Resources/Textures/Mobs/Animals/mouse.rsi/1-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/equipped-HELMET.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/1-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/inhand-left.png b/Resources/Textures/Mobs/Animals/mouse.rsi/1-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/inhand-left.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/1-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/inhand-right.png b/Resources/Textures/Mobs/Animals/mouse.rsi/1-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_brown.rsi/inhand-right.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/1-inhand-right.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/equipped-HELMET.png b/Resources/Textures/Mobs/Animals/mouse.rsi/2-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/equipped-HELMET.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/2-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/inhand-left.png b/Resources/Textures/Mobs/Animals/mouse.rsi/2-inhand-left.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/inhand-left.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/2-inhand-left.png diff --git a/Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/inhand-right.png b/Resources/Textures/Mobs/Animals/mouse.rsi/2-inhand-right.png similarity index 100% rename from Resources/Textures/Clothing/Head/Animals/mouse_gray.rsi/inhand-right.png rename to Resources/Textures/Mobs/Animals/mouse.rsi/2-inhand-right.png diff --git a/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json b/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json index 6401a8b46a..20f5439e93 100644 --- a/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json +++ b/Resources/Textures/Mobs/Animals/mouse.rsi/meta.json @@ -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 } ] }