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