From: deltanedas <39013340+deltanedas@users.noreply.github.com>
Date: Thu, 7 Dec 2023 01:24:33 +0000 (+0000)
Subject: nar'sie fake (#20299)
X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=88119c6469b3808a6723bd74725dcbb517be00c3;p=space-station-14.git
nar'sie fake (#20299)
* import narsie sprite
* narsie_rises audio
* rename SmokeDissipateSpawnComponent to SpawnOnDespawnComponent
* add AnnounceOnSpawn system
* oop
* NAR'SIE HAS RISEN
* suffix
* base prototype, changes
* fix
* mapinit
* downscale
* new toys
* singuloose
* still not fix
* honki sprite
* add honki spawn animation
* revert spawnondespawn change
* really revert
* use LocId for announceonspawn
---------
Co-authored-by: deltanedas <@deltanedas:kde.org>
---
diff --git a/Content.Server/Chat/AnnounceOnSpawnComponent.cs b/Content.Server/Chat/AnnounceOnSpawnComponent.cs
new file mode 100644
index 0000000000..ad7c558ef4
--- /dev/null
+++ b/Content.Server/Chat/AnnounceOnSpawnComponent.cs
@@ -0,0 +1,36 @@
+using Content.Server.Chat.Systems;
+using Robust.Shared.Audio;
+using Robust.Shared.Maths;
+
+namespace Content.Server.Chat;
+
+///
+/// Dispatches an announcement to everyone when the entity is mapinit'd.
+///
+[RegisterComponent, Access(typeof(AnnounceOnSpawnSystem))]
+public sealed partial class AnnounceOnSpawnComponent : Component
+{
+ ///
+ /// Locale id of the announcement message.
+ ///
+ [DataField(required: true)]
+ public LocId Message = string.Empty;
+
+ ///
+ /// Locale id of the announcement's sender, defaults to Central Command.
+ ///
+ [DataField]
+ public LocId? Sender;
+
+ ///
+ /// Sound override for the announcement.
+ ///
+ [DataField]
+ public SoundSpecifier? Sound;
+
+ ///
+ /// Color override for the announcement.
+ ///
+ [DataField]
+ public Color? Color;
+}
diff --git a/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs b/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs
new file mode 100644
index 0000000000..0f0365e56b
--- /dev/null
+++ b/Content.Server/Chat/Systems/AnnounceOnSpawnSystem.cs
@@ -0,0 +1,22 @@
+using Content.Server.Chat;
+
+namespace Content.Server.Chat.Systems;
+
+public sealed class AnnounceOnSpawnSystem : EntitySystem
+{
+ [Dependency] private readonly ChatSystem _chat = default!;
+
+ public override void Initialize()
+ {
+ base.Initialize();
+
+ SubscribeLocalEvent(OnInit);
+ }
+
+ private void OnInit(EntityUid uid, AnnounceOnSpawnComponent comp, MapInitEvent args)
+ {
+ var message = Loc.GetString(comp.Message);
+ var sender = comp.Sender != null ? Loc.GetString(comp.Sender) : "Central Command";
+ _chat.DispatchGlobalAnnouncement(message, sender, playSound: true, comp.Sound, comp.Color);
+ }
+}
diff --git a/Resources/Audio/Misc/attributions.yml b/Resources/Audio/Misc/attributions.yml
index 591c27553c..29cab4382a 100644
--- a/Resources/Audio/Misc/attributions.yml
+++ b/Resources/Audio/Misc/attributions.yml
@@ -8,6 +8,11 @@
copyright: "Taken from TG station."
source: "https://github.com/tgstation/tgstation/blob/b02b93ce2ab891164511a973493cdf951b4120f7/sound/effects/ninja_greeting.ogg"
+- files: ["narsie_rises.ogg"]
+ license: "CC-BY-SA-3.0"
+ copyright: "Taken from TG station."
+ source: "https://github.com/tgstation/tgstation/blob/b44fcdedfb7c7d8425bd75b9caf71644a86375d1/sound/creatures/narsie_rises.ogg"
+
- files: ["epsilon.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Made by dj-34 (https://github.com/dj-34)"
@@ -26,4 +31,4 @@
- files: ["bluealert.ogg"]
license: "CC-BY-SA-3.0"
copyright: "Taken from Citadel Station 13"
- source: "https://github.com/Skyrat-SS13/Skyrat13/commit/2d4f2d1b489590b559e4073f41b126cef56f4c50"
\ No newline at end of file
+ source: "https://github.com/Skyrat-SS13/Skyrat13/commit/2d4f2d1b489590b559e4073f41b126cef56f4c50"
diff --git a/Resources/Audio/Misc/narsie_rises.ogg b/Resources/Audio/Misc/narsie_rises.ogg
new file mode 100644
index 0000000000..ccd10cf115
Binary files /dev/null and b/Resources/Audio/Misc/narsie_rises.ogg differ
diff --git a/Resources/Locale/en-US/narsie/narsie.ftl b/Resources/Locale/en-US/narsie/narsie.ftl
new file mode 100644
index 0000000000..dc4ed810f6
--- /dev/null
+++ b/Resources/Locale/en-US/narsie/narsie.ftl
@@ -0,0 +1,2 @@
+narsie-has-risen = NAR'SIE HAS RISEN
+narsie-has-risen-sender = ???
diff --git a/Resources/Prototypes/Entities/Mobs/Player/narsie.yml b/Resources/Prototypes/Entities/Mobs/Player/narsie.yml
new file mode 100644
index 0000000000..7030572cf4
--- /dev/null
+++ b/Resources/Prototypes/Entities/Mobs/Player/narsie.yml
@@ -0,0 +1,99 @@
+- type: entity
+ abstract: true
+ id: MobNarsieBase
+ name: Nar'Sie
+ description: Your mind begins to bubble and ooze as it tries to comprehend what it sees.
+ components:
+ - type: Sprite
+ sprite: Mobs/Demons/narsie.rsi
+ drawdepth: Ghosts
+ scale: 2.0,2.0
+ layers:
+ - state: narsie
+ shader: unshaded
+
+# spawn animation, spawns actual narsie when it ends
+- type: entity
+ parent: MobNarsieBase
+ id: MobNarsieSpawn
+ suffix: Spawn
+ components:
+ - type: Sprite
+ layers:
+ - state: spawn
+ shader: unshaded
+ # spawn animation lasts 3.5 seconds
+ - type: TimedDespawn
+ lifetime: 3.5
+ - type: SpawnOnDespawn
+ prototype: MobNarsie
+
+- type: entity
+ parent: [MobNarsieBase, BaseMob]
+ id: MobNarsie
+ components:
+ - type: AnnounceOnSpawn
+ message: narsie-has-risen
+ sender: narsie-has-risen-sender
+ sound:
+ path: /Audio/Misc/narsie_rises.ogg
+ color: red
+ - type: CargoSellBlacklist
+ # big nar'sie needs to see the universe
+ - type: ContentEye
+ maxZoom: 2.0,2.0
+ - type: Fixtures
+ fixtures:
+ EventHorizonCollider:
+ shape:
+ !type:PhysShapeCircle
+ radius: 5
+ hard: false
+ restitution: 0.8
+ density: 99999
+ mask:
+ - AllMask
+ layer:
+ - AllMask
+ EventHorizonConsumer:
+ shape:
+ !type:PhysShapeCircle
+ radius: 5
+ hard: false
+ mask:
+ - AllMask
+ layer:
+ - AllMask
+ - type: Input
+ context: "ghost"
+ - type: MovementIgnoreGravity
+ # narnar hears all
+ - type: IntrinsicRadioReceiver
+ - type: ActiveRadio
+ channels:
+ - Binary
+ - Common
+ - Command
+ - CentCom
+ - Engineering
+ - Medical
+ - Science
+ - Security
+ - Service
+ - Supply
+ - Syndicate
+ globalReceive: true
+ - type: Physics
+ bodyType: Dynamic
+ bodyStatus: InAir
+ - type: CanMoveInAir
+ # singulose components
+ - type: EventHorizon
+ radius: 5
+ canBreachContainment: true
+ - type: GravityWell
+ baseRadialAcceleration: 6
+ maxRange: 8
+ - type: WarpPoint
+ follow: true
+ location: Nar'Sie
diff --git a/Resources/Textures/Mobs/Demons/honkmother.rsi/honkmother.png b/Resources/Textures/Mobs/Demons/honkmother.rsi/honkmother.png
new file mode 100644
index 0000000000..922f2207dc
Binary files /dev/null and b/Resources/Textures/Mobs/Demons/honkmother.rsi/honkmother.png differ
diff --git a/Resources/Textures/Mobs/Demons/honkmother.rsi/meta.json b/Resources/Textures/Mobs/Demons/honkmother.rsi/meta.json
new file mode 100644
index 0000000000..cdc51860cd
--- /dev/null
+++ b/Resources/Textures/Mobs/Demons/honkmother.rsi/meta.json
@@ -0,0 +1,40 @@
+{
+ "version": 1,
+ "size": {
+ "x": 201,
+ "y": 192
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Created by Alekshhh for SS14.",
+ "states": [
+ {
+ "name": "honkmother",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "spawn",
+ "delays": [
+ [
+ 0.3,
+ 1,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.2,
+ 0.3
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/Mobs/Demons/honkmother.rsi/spawn.png b/Resources/Textures/Mobs/Demons/honkmother.rsi/spawn.png
new file mode 100644
index 0000000000..bbef24fa95
Binary files /dev/null and b/Resources/Textures/Mobs/Demons/honkmother.rsi/spawn.png differ
diff --git a/Resources/Textures/Mobs/Demons/narsie.rsi/meta.json b/Resources/Textures/Mobs/Demons/narsie.rsi/meta.json
new file mode 100644
index 0000000000..61fcea8ab5
--- /dev/null
+++ b/Resources/Textures/Mobs/Demons/narsie.rsi/meta.json
@@ -0,0 +1,57 @@
+{
+ "version": 1,
+ "size": {
+ "x": 252,
+ "y": 266
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/b44fcdedfb7c7d8425bd75b9caf71644a86375d1/icons/obj/antags/cult/narsie.dmi",
+ "states": [
+ {
+ "name": "narsie",
+ "delays": [
+ [
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1
+ ]
+ ]
+ },
+ {
+ "name": "spawn",
+ "delays": [
+ [
+ 0.3,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.1,
+ 0.2
+ ]
+ ]
+ }
+ ]
+}
diff --git a/Resources/Textures/Mobs/Demons/narsie.rsi/narsie.png b/Resources/Textures/Mobs/Demons/narsie.rsi/narsie.png
new file mode 100644
index 0000000000..ca9e9ec0cb
Binary files /dev/null and b/Resources/Textures/Mobs/Demons/narsie.rsi/narsie.png differ
diff --git a/Resources/Textures/Mobs/Demons/narsie.rsi/spawn.png b/Resources/Textures/Mobs/Demons/narsie.rsi/spawn.png
new file mode 100644
index 0000000000..c3d9cdb9fc
Binary files /dev/null and b/Resources/Textures/Mobs/Demons/narsie.rsi/spawn.png differ