From a29d8b9fa2e55ec68ba89374dd670365bb1eeca1 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Mon, 8 Aug 2022 10:18:14 +1000 Subject: [PATCH] Carp wave spawner and dragons as an actual event (#10254) --- Content.Client/Dragon/DragonRiftComponent.cs | 9 + Content.Client/Dragon/DragonSystem.cs | 51 ++++ Content.Client/Sprite/RandomSpriteSystem.cs | 58 +++++ .../{ => Components}/DragonComponent.cs | 52 +++- .../Dragon/Components/DragonRiftComponent.cs | 40 +++ Content.Server/Dragon/DragonSystem.Rule.cs | 67 +++++ Content.Server/Dragon/DragonSystem.cs | 243 +++++++++++++++--- Content.Server/RatKing/RatKingSystem.cs | 2 - .../Components/RandomSpriteColorComponent.cs | 13 - .../Components/RandomSpriteStateComponent.cs | 10 - Content.Server/Sprite/RandomSpriteSystem.cs | 63 +++-- .../Dragon/DragonRiftComponentState.cs | 9 + .../Dragon/SharedDragonRiftComponent.cs | 19 ++ .../MovementAlwaysTouchingComponent.cs | 13 + .../MovementIgnoreGravityComponent.cs | 4 +- .../MovementSpeedModifierComponent.cs | 20 +- .../Systems/MovementIgnoreGravitySystem.cs | 7 + .../Sprite/RandomSpriteComponent.cs | 20 ++ .../Sprite/SharedRandomSpriteSystem.cs | 11 + .../Audio/Weapons/Guns/Gunshots/license.txt | 2 +- .../Weapons/Guns/Gunshots/rocket_launcher.ogg | Bin 0 -> 60734 bytes .../Locale/en-US/actions/actions/dragon.ftl | 16 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 15 +- .../Prototypes/Entities/Mobs/NPCs/bear.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/carp.yml | 231 +++++++++-------- .../Entities/Mobs/NPCs/spacetick.yml | 2 +- .../Entities/Mobs/Player/dragon.yml | 212 +++++++-------- .../Entities/Mobs/Player/guardian.yml | 216 +++++++++------- .../Objects/Consumable/Food/Baked/misc.yml | 22 +- .../Entities/Objects/Consumable/Food/egg.yml | 15 +- .../Objects/Consumable/Food/frozen.yml | 15 +- .../Entities/Objects/Consumable/Food/meat.yml | 40 +-- .../Entities/Objects/Materials/shards.yml | 20 +- .../Entities/Objects/Misc/books.yml | 34 ++- .../Entities/Objects/Tools/lighters.yml | 53 ++-- .../Entities/Objects/Tools/tools.yml | 36 +-- .../Structures/Furniture/bookshelf.yml | 24 +- .../Entities/Structures/Specific/dragon.yml | 39 +++ Resources/Prototypes/GameRules/events.yml | 11 + Resources/Prototypes/Palettes/sixteen.yml | 12 + .../Interface/Actions/carp_rift.rsi/icon.png | Bin 0 -> 10877 bytes .../Interface/Actions/carp_rift.rsi/meta.json | 21 ++ .../Carps/holo.rsi/{alive.png => base.png} | Bin .../Mobs/Aliens/Carps/holo.rsi/crit.png | Bin 1298 -> 0 bytes .../Mobs/Aliens/Carps/holo.rsi/meta.json | 24 +- .../Carps/magic.rsi/{alive.png => base.png} | Bin .../Mobs/Aliens/Carps/magic.rsi/crit.png | Bin 473 -> 0 bytes .../Mobs/Aliens/Carps/magic.rsi/meta.json | 5 +- .../Mobs/Aliens/Carps/space.rsi/alive.png | Bin 3713 -> 0 bytes .../Mobs/Aliens/Carps/space.rsi/base.png | Bin 0 -> 2913 bytes .../Mobs/Aliens/Carps/space.rsi/base_dead.png | Bin 0 -> 517 bytes .../Mobs/Aliens/Carps/space.rsi/crit.png | Bin 293 -> 0 bytes .../Mobs/Aliens/Carps/space.rsi/dead.png | Bin 294 -> 0 bytes .../Aliens/Carps/space.rsi/dead_mouth.png | Bin 0 -> 135 bytes .../Mobs/Aliens/Carps/space.rsi/meta.json | 32 ++- .../Mobs/Aliens/Carps/space.rsi/mouth.png | Bin 0 -> 590 bytes .../Mobs/Animals/chicken.rsi/note.txt | 1 - .../Textures/Mobs/Animals/duck.rsi/note.txt | 1 - .../Specific/carp_rift.rsi/icon.png | Bin 0 -> 8785 bytes .../Specific/carp_rift.rsi/meta.json | 21 ++ 60 files changed, 1264 insertions(+), 569 deletions(-) create mode 100644 Content.Client/Dragon/DragonRiftComponent.cs create mode 100644 Content.Client/Dragon/DragonSystem.cs create mode 100644 Content.Client/Sprite/RandomSpriteSystem.cs rename Content.Server/Dragon/{ => Components}/DragonComponent.cs (66%) create mode 100644 Content.Server/Dragon/Components/DragonRiftComponent.cs create mode 100644 Content.Server/Dragon/DragonSystem.Rule.cs delete mode 100644 Content.Server/Sprite/Components/RandomSpriteColorComponent.cs delete mode 100644 Content.Server/Sprite/Components/RandomSpriteStateComponent.cs create mode 100644 Content.Shared/Dragon/DragonRiftComponentState.cs create mode 100644 Content.Shared/Dragon/SharedDragonRiftComponent.cs create mode 100644 Content.Shared/Movement/Components/MovementAlwaysTouchingComponent.cs create mode 100644 Content.Shared/Sprite/RandomSpriteComponent.cs create mode 100644 Content.Shared/Sprite/SharedRandomSpriteSystem.cs create mode 100644 Resources/Audio/Weapons/Guns/Gunshots/rocket_launcher.ogg create mode 100644 Resources/Prototypes/Entities/Structures/Specific/dragon.yml create mode 100644 Resources/Textures/Interface/Actions/carp_rift.rsi/icon.png create mode 100644 Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json rename Resources/Textures/Mobs/Aliens/Carps/holo.rsi/{alive.png => base.png} (100%) delete mode 100644 Resources/Textures/Mobs/Aliens/Carps/holo.rsi/crit.png rename Resources/Textures/Mobs/Aliens/Carps/magic.rsi/{alive.png => base.png} (100%) delete mode 100644 Resources/Textures/Mobs/Aliens/Carps/magic.rsi/crit.png delete mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/alive.png create mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/base.png create mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/base_dead.png delete mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/crit.png delete mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/dead.png create mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/dead_mouth.png create mode 100644 Resources/Textures/Mobs/Aliens/Carps/space.rsi/mouth.png delete mode 100644 Resources/Textures/Mobs/Animals/chicken.rsi/note.txt delete mode 100644 Resources/Textures/Mobs/Animals/duck.rsi/note.txt create mode 100644 Resources/Textures/Structures/Specific/carp_rift.rsi/icon.png create mode 100644 Resources/Textures/Structures/Specific/carp_rift.rsi/meta.json diff --git a/Content.Client/Dragon/DragonRiftComponent.cs b/Content.Client/Dragon/DragonRiftComponent.cs new file mode 100644 index 0000000000..6aa98a66c5 --- /dev/null +++ b/Content.Client/Dragon/DragonRiftComponent.cs @@ -0,0 +1,9 @@ +using Content.Shared.Dragon; + +namespace Content.Client.Dragon; + +[RegisterComponent] +public sealed class DragonRiftComponent : SharedDragonRiftComponent +{ + +} diff --git a/Content.Client/Dragon/DragonSystem.cs b/Content.Client/Dragon/DragonSystem.cs new file mode 100644 index 0000000000..d11fac8de7 --- /dev/null +++ b/Content.Client/Dragon/DragonSystem.cs @@ -0,0 +1,51 @@ +using Content.Shared.Dragon; +using Robust.Client.GameObjects; +using Robust.Shared.GameStates; + +namespace Content.Client.Dragon; + +public sealed class DragonSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnRiftHandleState); + } + + private void OnRiftHandleState(EntityUid uid, DragonRiftComponent component, ref ComponentHandleState args) + { + if (args.Current is not DragonRiftComponentState state) + return; + + if (component.State == state.State) return; + + component.State = state.State; + TryComp(uid, out var sprite); + TryComp(uid, out var light); + + if (sprite == null && light == null) + return; + + switch (state.State) + { + case DragonRiftState.Charging: + sprite?.LayerSetColor(0, Color.FromHex("#569fff")); + + if (light != null) + light.Color = Color.FromHex("#366db5"); + break; + case DragonRiftState.AlmostFinished: + sprite?.LayerSetColor(0, Color.FromHex("#cf4cff")); + + if (light != null) + light.Color = Color.FromHex("#9e2fc1"); + break; + case DragonRiftState.Finished: + sprite?.LayerSetColor(0, Color.FromHex("#edbc36")); + + if (light != null) + light.Color = Color.FromHex("#cbaf20"); + break; + } + } +} diff --git a/Content.Client/Sprite/RandomSpriteSystem.cs b/Content.Client/Sprite/RandomSpriteSystem.cs new file mode 100644 index 0000000000..a38d543b4a --- /dev/null +++ b/Content.Client/Sprite/RandomSpriteSystem.cs @@ -0,0 +1,58 @@ +using Content.Shared.Sprite; +using Robust.Client.GameObjects; +using Robust.Shared.GameStates; +using Robust.Shared.Reflection; + +namespace Content.Client.Sprite; + +public sealed class RandomSpriteSystem : SharedRandomSpriteSystem +{ + [Dependency] private readonly IReflectionManager _reflection = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnHandleState); + } + + private void OnHandleState(EntityUid uid, RandomSpriteComponent component, ref ComponentHandleState args) + { + if (args.Current is not RandomSpriteColorComponentState state) + return; + + if (state.Selected.Equals(component.Selected)) + return; + + component.Selected.Clear(); + component.Selected.EnsureCapacity(state.Selected.Count); + + foreach (var layer in state.Selected) + { + component.Selected.Add(layer.Key, layer.Value); + } + + UpdateAppearance(uid, component); + } + + private void UpdateAppearance(EntityUid uid, RandomSpriteComponent component, SpriteComponent? sprite = null) + { + if (!Resolve(uid, ref sprite, false)) + return; + + foreach (var layer in component.Selected) + { + object key; + if (_reflection.TryParseEnumReference(layer.Key, out var @enum)) + { + key = @enum; + } + else + { + key = layer.Key; + } + + sprite.LayerSetState(key, layer.Value.State); + sprite.LayerSetColor(key, layer.Value.Color ?? Color.White); + } + } +} diff --git a/Content.Server/Dragon/DragonComponent.cs b/Content.Server/Dragon/Components/DragonComponent.cs similarity index 66% rename from Content.Server/Dragon/DragonComponent.cs rename to Content.Server/Dragon/Components/DragonComponent.cs index 941a2ccf2f..789dc81147 100644 --- a/Content.Server/Dragon/DragonComponent.cs +++ b/Content.Server/Dragon/Components/DragonComponent.cs @@ -32,11 +32,42 @@ namespace Content.Server.Dragon [DataField("devourAction")] public EntityTargetAction? DevourAction; - [DataField("spawnActionId", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string SpawnActionId = "DragonSpawn"; + /// + /// If we have active rifts. + /// + [ViewVariables, DataField("rifts")] + public List Rifts = new(); - [DataField("spawnAction")] - public InstantAction? SpawnAction; + public bool Weakened => WeakenedAccumulator > 0f; + + /// + /// When any rift is destroyed how long is the dragon weakened for + /// + [ViewVariables(VVAccess.ReadWrite), DataField("weakenedDuration")] + public float WeakenedDuration = 120f; + + /// + /// Has a rift been destroyed and the dragon in a temporary weakened state? + /// + [ViewVariables(VVAccess.ReadWrite), DataField("weakenedAccumulator")] + public float WeakenedAccumulator = 0f; + + [ViewVariables(VVAccess.ReadWrite), DataField("riftAccumulator")] + public float RiftAccumulator = 0f; + + /// + /// Maximum time the dragon can go without spawning a rift before they die. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("maxAccumulator")] public float RiftMaxAccumulator = 300f; + + /// + /// Spawns a rift which can summon more mobs. + /// + [ViewVariables, DataField("spawnRiftAction")] + public InstantAction? SpawnRiftAction; + + [ViewVariables(VVAccess.ReadWrite), DataField("riftPrototype", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string RiftPrototype = "CarpRift"; /// /// The amount of time it takes to devour something @@ -48,14 +79,7 @@ namespace Content.Server.Dragon public float StructureDevourTime = 10f; [DataField("devourTime")] - public float DevourTime = 2f; - - [DataField("spawnCount")] public int SpawnsLeft = 2; - - [DataField("maxSpawnCount")] public int MaxSpawns = 2; - - [DataField("spawnProto", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? SpawnPrototype = "MobCarpDragon"; + public float DevourTime = 3f; [ViewVariables(VVAccess.ReadWrite), DataField("soundDeath")] public SoundSpecifier? SoundDeath = new SoundPathSpecifier("/Audio/Animals/space_dragon_roar.ogg"); @@ -76,7 +100,7 @@ namespace Content.Server.Dragon public SoundSpecifier? SoundRoar = new SoundPathSpecifier("/Audio/Animals/space_dragon_roar.ogg") { - Params = AudioParams.Default.WithVolume(-3f), + Params = AudioParams.Default.WithVolume(3f), }; public CancellationTokenSource? CancelToken; @@ -103,5 +127,5 @@ namespace Content.Server.Dragon public sealed class DragonDevourActionEvent : EntityTargetActionEvent {} - public sealed class DragonSpawnActionEvent : InstantActionEvent {} + public sealed class DragonSpawnRiftActionEvent : InstantActionEvent {} } diff --git a/Content.Server/Dragon/Components/DragonRiftComponent.cs b/Content.Server/Dragon/Components/DragonRiftComponent.cs new file mode 100644 index 0000000000..3a55709778 --- /dev/null +++ b/Content.Server/Dragon/Components/DragonRiftComponent.cs @@ -0,0 +1,40 @@ +using Content.Shared.Dragon; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Server.Dragon; + +[RegisterComponent] +public sealed class DragonRiftComponent : SharedDragonRiftComponent +{ + /// + /// Dragon that spawned this rift. + /// + [ViewVariables, DataField("dragon")] public EntityUid Dragon; + + /// + /// How long the rift has been active. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("accumulator")] + public float Accumulator = 0f; + + /// + /// The maximum amount we can accumulate before becoming impervious. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("maxAccumuluator")] public float MaxAccumulator = 300f; + + /// + /// Accumulation of the spawn timer. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("spawnAccumulator")] + public float SpawnAccumulator = 60f; + + /// + /// How long it takes for a new spawn to be added. + /// + [ViewVariables(VVAccess.ReadWrite), DataField("spawnCooldown")] + public float SpawnCooldown = 60f; + + [ViewVariables(VVAccess.ReadWrite), DataField("spawn", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string SpawnPrototype = "MobCarpDragon"; +} diff --git a/Content.Server/Dragon/DragonSystem.Rule.cs b/Content.Server/Dragon/DragonSystem.Rule.cs new file mode 100644 index 0000000000..9fe7f49fba --- /dev/null +++ b/Content.Server/Dragon/DragonSystem.Rule.cs @@ -0,0 +1,67 @@ +using System.Linq; +using Content.Server.GameTicking; +using Content.Server.StationEvents.Components; +using Content.Shared.Dragon; +using Robust.Server.GameObjects; +using Robust.Shared.Random; + +namespace Content.Server.Dragon; + +public sealed partial class DragonSystem +{ + public override string Prototype => "Dragon"; + + private int RiftsMet(DragonComponent component) + { + var finished = 0; + + foreach (var rift in component.Rifts) + { + if (!TryComp(rift, out var drift) || + drift.State != DragonRiftState.Finished) + continue; + + finished++; + } + + return finished; + } + + public override void Started() + { + var spawnLocations = EntityManager.EntityQuery().ToList(); + + if (spawnLocations.Count == 0) + return; + + var location = _random.Pick(spawnLocations); + Spawn("MobDragon", location.Item2.MapPosition); + } + + public override void Ended() + { + return; + } + + private void OnRiftRoundEnd(RoundEndTextAppendEvent args) + { + if (!RuleAdded) + return; + + args.AddLine(Loc.GetString("dragon-round-end-summary")); + + foreach (var dragon in EntityQuery(true)) + { + var met = RiftsMet(dragon); + + if (TryComp(dragon.Owner, out var actor)) + { + args.AddLine(Loc.GetString("dragon-round-end-dragon-player", ("name", dragon.Owner), ("rifts", met), ("player", actor.PlayerSession))); + } + else + { + args.AddLine(Loc.GetString("dragon-round-end-dragon", ("name", dragon.Owner), ("rifts", met))); + } + } + } +} diff --git a/Content.Server/Dragon/DragonSystem.cs b/Content.Server/Dragon/DragonSystem.cs index 161f171f21..5adb70ec6c 100644 --- a/Content.Server/Dragon/DragonSystem.cs +++ b/Content.Server/Dragon/DragonSystem.cs @@ -9,15 +9,27 @@ using Content.Shared.MobState.Components; using Robust.Shared.Containers; using Robust.Shared.Player; using System.Threading; +using Content.Server.Chat.Systems; +using Content.Server.GameTicking; +using Content.Server.GameTicking.Rules; +using Content.Shared.Damage; +using Content.Shared.Dragon; +using Content.Shared.Examine; +using Content.Shared.Movement.Systems; +using Robust.Shared.GameStates; +using Robust.Shared.Random; namespace Content.Server.Dragon { - public sealed class DragonSystem : EntitySystem + public sealed partial class DragonSystem : GameRuleSystem { + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly DoAfterSystem _doAfterSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movement = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; @@ -26,13 +38,200 @@ namespace Content.Server.Dragon base.Initialize(); SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnDragonDevourComplete); SubscribeLocalEvent(OnDevourAction); - SubscribeLocalEvent(OnDragonSpawnAction); + SubscribeLocalEvent(OnDragonRift); + SubscribeLocalEvent(OnDragonMove); SubscribeLocalEvent(OnDragonStructureDevourComplete); SubscribeLocalEvent(OnDragonDevourCancelled); SubscribeLocalEvent(OnMobStateChanged); + + SubscribeLocalEvent(OnRiftShutdown); + SubscribeLocalEvent(OnRiftGetState); + SubscribeLocalEvent(OnAnchorChange); + SubscribeLocalEvent(OnRiftExamined); + + SubscribeLocalEvent(OnRiftRoundEnd); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + foreach (var comp in EntityQuery()) + { + if (comp.WeakenedAccumulator > 0f) + { + comp.WeakenedAccumulator -= frameTime; + + // No longer weakened. + if (comp.WeakenedAccumulator < 0f) + { + comp.WeakenedAccumulator = 0f; + _movement.RefreshMovementSpeedModifiers(comp.Owner); + } + } + + // At max rifts + if (comp.Rifts.Count >= 3) + { + continue; + } + + // If there's an active rift don't accumulate. + if (comp.Rifts.Count > 0) + { + var lastRift = comp.Rifts[^1]; + + if (TryComp(lastRift, out var rift) && rift.State != DragonRiftState.Finished) + { + comp.RiftAccumulator = 0f; + continue; + } + } + + comp.RiftAccumulator += frameTime; + + // Delete it, naughty dragon! + if (comp.RiftAccumulator >= comp.RiftMaxAccumulator) + { + Roar(comp); + QueueDel(comp.Owner); + } + } + + foreach (var comp in EntityQuery()) + { + if (comp.State != DragonRiftState.Finished && comp.Accumulator >= comp.MaxAccumulator) + { + // TODO: When we get autocall you can buff if the rift finishes / 3 rifts are up + // for now they just keep 3 rifts up. + + comp.Accumulator = comp.MaxAccumulator; + RemComp(comp.Owner); + comp.State = DragonRiftState.Finished; + Dirty(comp); + } + else + { + comp.Accumulator += frameTime; + } + + comp.SpawnAccumulator += frameTime; + + if (comp.State < DragonRiftState.AlmostFinished && comp.SpawnAccumulator > comp.MaxAccumulator / 2f) + { + comp.State = DragonRiftState.AlmostFinished; + Dirty(comp); + var location = Transform(comp.Owner).LocalPosition; + + _chat.DispatchGlobalAnnouncement(Loc.GetString("carp-rift-warning", ("location", location)), playSound: false, colorOverride: Color.Red); + _audioSystem.PlayGlobal("/Audio/Misc/notice1.ogg", Filter.Broadcast()); + } + + if (comp.SpawnAccumulator > comp.SpawnCooldown) + { + comp.SpawnAccumulator -= comp.SpawnCooldown; + Spawn(comp.SpawnPrototype, Transform(comp.Owner).MapPosition); + // TODO: When NPC refactor make it guard the rift. + } + } + } + + #region Rift + + private void OnRiftExamined(EntityUid uid, DragonRiftComponent component, ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("carp-rift-examine", ("percentage", MathF.Round(component.Accumulator / component.MaxAccumulator * 100)))); + } + + private void OnAnchorChange(EntityUid uid, DragonRiftComponent component, ref AnchorStateChangedEvent args) + { + if (!args.Anchored && component.State == DragonRiftState.Charging) + { + QueueDel(uid); + } + } + + private void OnRiftShutdown(EntityUid uid, DragonRiftComponent component, ComponentShutdown args) + { + if (TryComp(component.Dragon, out var dragon) && !dragon.Weakened) + { + foreach (var rift in dragon.Rifts) + { + QueueDel(rift); + } + + dragon.Rifts.Clear(); + + // We can't predict the rift being destroyed anyway so no point adding weakened to shared. + dragon.WeakenedAccumulator = dragon.WeakenedDuration; + _movement.RefreshMovementSpeedModifiers(component.Dragon); + _popupSystem.PopupEntity(Loc.GetString("carp-rift-destroyed"), component.Dragon, Filter.Entities(component.Dragon)); + } + } + + private void OnRiftGetState(EntityUid uid, DragonRiftComponent component, ref ComponentGetState args) + { + args.State = new DragonRiftComponentState() + { + State = component.State + }; + } + + private void OnDragonMove(EntityUid uid, DragonComponent component, RefreshMovementSpeedModifiersEvent args) + { + if (component.Weakened) + { + args.ModifySpeed(0.5f, 0.5f); + } + } + + private void OnDragonRift(EntityUid uid, DragonComponent component, DragonSpawnRiftActionEvent args) + { + if (component.Weakened) + { + _popupSystem.PopupEntity(Loc.GetString("carp-rift-weakened"), uid, Filter.Entities(uid)); + return; + } + + if (component.Rifts.Count >= 3) + { + _popupSystem.PopupEntity(Loc.GetString("carp-rift-max"), uid, Filter.Entities(uid)); + return; + } + + if (component.Rifts.Count > 0 && TryComp(component.Rifts[^1], out var rift) && rift.State != DragonRiftState.Finished) + { + _popupSystem.PopupEntity(Loc.GetString("carp-rift-duplicate"), uid, Filter.Entities(uid)); + return; + } + + var xform = Transform(uid); + + // Have to be on a grid fam + if (xform.GridUid == null) + { + _popupSystem.PopupEntity(Loc.GetString("carp-rift-anchor"), uid, Filter.Entities(uid)); + return; + } + + var carpUid = Spawn(component.RiftPrototype, xform.MapPosition); + component.Rifts.Add(carpUid); + Comp(carpUid).Dragon = uid; + _audioSystem.Play("/Audio/Weapons/Guns/Gunshots/rocket_launcher.ogg", Filter.Pvs(carpUid, entityManager: EntityManager), carpUid); + } + + #endregion + + private void OnShutdown(EntityUid uid, DragonComponent component, ComponentShutdown args) + { + foreach (var rift in component.Rifts) + { + QueueDel(rift); + } } private void OnMobStateChanged(EntityUid uid, DragonComponent component, MobStateChangedEvent args) @@ -59,13 +258,7 @@ namespace Content.Server.Dragon var ichorInjection = new Solution(component.DevourChem, component.DevourHealRate); //Humanoid devours allow dragon to get eggs, corpses included - if (EntityManager.HasComponent(args.Target)) - { - // Add a spawn for a consumed humanoid - component.SpawnsLeft = Math.Min(component.SpawnsLeft + 1, component.MaxSpawns); - } - //Non-humanoid mobs can only heal dragon for half the normal amount, with no additional spawn tickets - else + if (!EntityManager.HasComponent(args.Target)) { ichorInjection.ScaleSolution(0.5f); } @@ -87,10 +280,14 @@ namespace Content.Server.Dragon _audioSystem.PlayPvs(component.SoundDevour, uid, component.SoundDevour.Params); } + private void Roar(DragonComponent component) + { + if (component.SoundRoar != null) + _audioSystem.Play(component.SoundRoar, Filter.Pvs(component.Owner, 4f, EntityManager), component.Owner, component.SoundRoar.Params); + } + private void OnStartup(EntityUid uid, DragonComponent component, ComponentStartup args) { - component.SpawnsLeft = Math.Min(component.SpawnsLeft, component.MaxSpawns); - //Dragon doesn't actually chew, since he sends targets right into his stomach. //I did it mom, I added ERP content into upstream. Legally! component.DragonStomach = _containerSystem.EnsureContainer(uid, "dragon_stomach"); @@ -98,11 +295,10 @@ namespace Content.Server.Dragon if (component.DevourAction != null) _actionsSystem.AddAction(uid, component.DevourAction, null); - if (component.SpawnAction != null) - _actionsSystem.AddAction(uid, component.SpawnAction, null); + if (component.SpawnRiftAction != null) + _actionsSystem.AddAction(uid, component.SpawnRiftAction, null); - if (component.SoundRoar != null) - _audioSystem.Play(component.SoundRoar, Filter.Pvs(uid, 4f, EntityManager), uid, component.SoundRoar.Params); + Roar(component); } /// @@ -117,7 +313,6 @@ namespace Content.Server.Dragon return; } - args.Handled = true; var target = args.Target; @@ -164,22 +359,6 @@ namespace Content.Server.Dragon }); } - private void OnDragonSpawnAction(EntityUid dragonuid, DragonComponent component, DragonSpawnActionEvent args) - { - if (component.SpawnPrototype == null) - return; - - // If dragon has spawns then add one. - if (component.SpawnsLeft > 0) - { - Spawn(component.SpawnPrototype, Transform(dragonuid).Coordinates); - component.SpawnsLeft--; - return; - } - - _popupSystem.PopupEntity(Loc.GetString("dragon-spawn-action-popup-message-fail-no-eggs"), dragonuid, Filter.Entities(dragonuid)); - } - private sealed class DragonDevourComplete : EntityEventArgs { public EntityUid User { get; } diff --git a/Content.Server/RatKing/RatKingSystem.cs b/Content.Server/RatKing/RatKingSystem.cs index 530012cd7e..81176e4221 100644 --- a/Content.Server/RatKing/RatKingSystem.cs +++ b/Content.Server/RatKing/RatKingSystem.cs @@ -15,8 +15,6 @@ namespace Content.Server.RatKing { [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly ActionsSystem _action = default!; - [Dependency] private readonly DiseaseSystem _disease = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly AtmosphereSystem _atmos = default!; [Dependency] private readonly TransformSystem _xform = default!; diff --git a/Content.Server/Sprite/Components/RandomSpriteColorComponent.cs b/Content.Server/Sprite/Components/RandomSpriteColorComponent.cs deleted file mode 100644 index 84c6590534..0000000000 --- a/Content.Server/Sprite/Components/RandomSpriteColorComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Content.Server.Sprite.Components -{ - [RegisterComponent] - public sealed class RandomSpriteColorComponent : Component - { - // This should handle random states + colors for layers. - // Saame with RandomSpriteState - [DataField("selected")] public string? SelectedColor; - [DataField("state")] public string BaseState = "error"; - - [DataField("colors")] public readonly Dictionary Colors = new(); - } -} diff --git a/Content.Server/Sprite/Components/RandomSpriteStateComponent.cs b/Content.Server/Sprite/Components/RandomSpriteStateComponent.cs deleted file mode 100644 index c99637a09a..0000000000 --- a/Content.Server/Sprite/Components/RandomSpriteStateComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Sprite.Components -{ - [RegisterComponent] - public sealed class RandomSpriteStateComponent : Component - { - [DataField("spriteStates")] public List? SpriteStates; - - [DataField("spriteLayer")] public int SpriteLayer; - } -} diff --git a/Content.Server/Sprite/RandomSpriteSystem.cs b/Content.Server/Sprite/RandomSpriteSystem.cs index 45e0619ac3..78ac695258 100644 --- a/Content.Server/Sprite/RandomSpriteSystem.cs +++ b/Content.Server/Sprite/RandomSpriteSystem.cs @@ -1,46 +1,53 @@ -using Content.Server.Sprite.Components; -using Content.Shared.Random.Helpers; -using Robust.Server.GameObjects; +using System.Linq; +using Content.Shared.Decals; +using Content.Shared.Sprite; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.Sprite; -public sealed class RandomSpriteSystem: EntitySystem +public sealed class RandomSpriteSystem: SharedRandomSpriteSystem { + [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnSpriteColorStartup); - SubscribeLocalEvent(OnSpriteColorMapInit); - - SubscribeLocalEvent(OnSpriteStateMapInit); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnMapInit); } - private void OnSpriteColorStartup(EntityUid uid, RandomSpriteColorComponent component, ComponentStartup args) + private void OnMapInit(EntityUid uid, RandomSpriteComponent component, MapInitEvent args) { - UpdateColor(component); + if (component.Selected.Count > 0) + return; + + if (component.Available.Count == 0) + return; + + var group = _random.Pick(component.Available); + component.Selected.EnsureCapacity(group.Count); + + foreach (var layer in group) + { + Color? color = null; + + if (!string.IsNullOrEmpty(layer.Value.Color)) + color = _random.Pick(_prototype.Index(layer.Value.Color).Colors.Values); + + component.Selected.Add(layer.Key, (layer.Value.State, color)); + } + + Dirty(component); } - private void OnSpriteColorMapInit(EntityUid uid, RandomSpriteColorComponent component, MapInitEvent args) + private void OnGetState(EntityUid uid, RandomSpriteComponent component, ref ComponentGetState args) { - component.SelectedColor = _random.Pick(component.Colors.Keys); - UpdateColor(component); - } - - private void OnSpriteStateMapInit(EntityUid uid, RandomSpriteStateComponent component, MapInitEvent args) - { - if (component.SpriteStates == null) return; - if (!TryComp(uid, out var spriteComponent)) return; - spriteComponent.LayerSetState(component.SpriteLayer, _random.Pick(component.SpriteStates)); - } - - private void UpdateColor(RandomSpriteColorComponent component) - { - if (!TryComp(component.Owner, out var spriteComponent) || component.SelectedColor == null) return; - - spriteComponent.LayerSetState(0, component.BaseState); - spriteComponent.LayerSetColor(0, component.Colors[component.SelectedColor]); + args.State = new RandomSpriteColorComponentState() + { + Selected = component.Selected, + }; } } diff --git a/Content.Shared/Dragon/DragonRiftComponentState.cs b/Content.Shared/Dragon/DragonRiftComponentState.cs new file mode 100644 index 0000000000..e301add486 --- /dev/null +++ b/Content.Shared/Dragon/DragonRiftComponentState.cs @@ -0,0 +1,9 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Dragon; + +[Serializable, NetSerializable] +public sealed class DragonRiftComponentState : ComponentState +{ + public DragonRiftState State; +} diff --git a/Content.Shared/Dragon/SharedDragonRiftComponent.cs b/Content.Shared/Dragon/SharedDragonRiftComponent.cs new file mode 100644 index 0000000000..702e1d0667 --- /dev/null +++ b/Content.Shared/Dragon/SharedDragonRiftComponent.cs @@ -0,0 +1,19 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Dragon; + +[NetworkedComponent] +public abstract class SharedDragonRiftComponent : Component +{ + [ViewVariables, DataField("state")] + public DragonRiftState State = DragonRiftState.Charging; +} + +[Serializable, NetSerializable] +public enum DragonRiftState : byte +{ + Charging, + AlmostFinished, + Finished, +} diff --git a/Content.Shared/Movement/Components/MovementAlwaysTouchingComponent.cs b/Content.Shared/Movement/Components/MovementAlwaysTouchingComponent.cs new file mode 100644 index 0000000000..97470c19de --- /dev/null +++ b/Content.Shared/Movement/Components/MovementAlwaysTouchingComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Movement.Components; + +/// +/// Is this entity always considered to be touching a wall? +/// i.e. when weightless they're floaty but still have free movement. +/// +[RegisterComponent, NetworkedComponent] +public sealed class MovementAlwaysTouchingComponent : Component +{ + +} diff --git a/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs b/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs index 5761a7f929..0e28257d3b 100644 --- a/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs +++ b/Content.Shared/Movement/Components/MovementIgnoreGravityComponent.cs @@ -8,6 +8,9 @@ using Robust.Shared.Serialization; namespace Content.Shared.Movement.Components { + /// + /// Ignores gravity entirely. + /// [RegisterComponent, NetworkedComponent] public sealed class MovementIgnoreGravityComponent : Component { @@ -17,7 +20,6 @@ namespace Content.Shared.Movement.Components [DataField("gravityState")] public bool Weightless = false; } - [NetSerializable, Serializable] public sealed class MovementIgnoreGravityComponentState : ComponentState { diff --git a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs index b84922678b..e55c45bba5 100644 --- a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs +++ b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs @@ -56,55 +56,55 @@ namespace Content.Shared.Movement.Components /// /// Minimum speed a mob has to be moving before applying movement friction. /// - [DataField("minimumFrictionSpeed")] + [ViewVariables(VVAccess.ReadWrite), DataField("minimumFrictionSpeed")] public float MinimumFrictionSpeed = DefaultMinimumFrictionSpeed; /// /// The negative velocity applied for friction when weightless and providing inputs. /// - [DataField("weightlessFriction")] + [ViewVariables(VVAccess.ReadWrite), DataField("weightlessFriction")] public float WeightlessFriction = DefaultWeightlessFriction; /// /// The negative velocity applied for friction when weightless and not providing inputs. /// This is essentially how much their speed decreases per second. /// - [DataField("weightlessFrictionNoInput")] + [ViewVariables(VVAccess.ReadWrite), DataField("weightlessFrictionNoInput")] public float WeightlessFrictionNoInput = DefaultWeightlessFrictionNoInput; /// /// The movement speed modifier applied to a mob's total input velocity when weightless. /// - [DataField("weightlessModifier")] + [ViewVariables(VVAccess.ReadWrite), DataField("weightlessModifier")] public float WeightlessModifier = DefaultWeightlessModifier; /// /// The acceleration applied to mobs when moving and weightless. /// - [DataField("weightlessAcceleration")] + [ViewVariables(VVAccess.ReadWrite), DataField("weightlessAcceleration")] public float WeightlessAcceleration = DefaultWeightlessAcceleration; /// /// The acceleration applied to mobs when moving. /// - [DataField("acceleration")] + [ViewVariables(VVAccess.ReadWrite), DataField("acceleration")] public float Acceleration = DefaultAcceleration; /// /// The negative velocity applied for friction. /// - [DataField("friction")] + [ViewVariables(VVAccess.ReadWrite), DataField("friction")] public float Friction = DefaultFriction; /// /// The negative velocity applied for friction. /// - [DataField("frictionNoInput")] public float? FrictionNoInput = null; + [ViewVariables(VVAccess.ReadWrite), DataField("frictionNoInput")] public float? FrictionNoInput = null; - [DataField("baseWalkSpeed")] + [ViewVariables(VVAccess.ReadWrite), DataField("baseWalkSpeed")] public float BaseWalkSpeed { get; set; } = DefaultBaseWalkSpeed; - [DataField("baseSprintSpeed")] + [ViewVariables(VVAccess.ReadWrite), DataField("baseSprintSpeed")] public float BaseSprintSpeed { get; set; } = DefaultBaseSprintSpeed; [ViewVariables] diff --git a/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs b/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs index 4ea0e08b97..52cdf219e5 100644 --- a/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs +++ b/Content.Shared/Movement/Systems/MovementIgnoreGravitySystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Movement.Components; +using Content.Shared.Movement.Events; using Robust.Shared.GameStates; namespace Content.Shared.Movement.Systems; @@ -9,6 +10,12 @@ public sealed class MovementIgnoreGravitySystem : EntitySystem { SubscribeLocalEvent(GetState); SubscribeLocalEvent(HandleState); + SubscribeLocalEvent(OnWeightless); + } + + private void OnWeightless(EntityUid uid, MovementAlwaysTouchingComponent component, ref CanWeightlessMoveEvent args) + { + args.CanMove = true; } private void HandleState(EntityUid uid, MovementIgnoreGravityComponent component, ref ComponentHandleState args) diff --git a/Content.Shared/Sprite/RandomSpriteComponent.cs b/Content.Shared/Sprite/RandomSpriteComponent.cs new file mode 100644 index 0000000000..d511b2b123 --- /dev/null +++ b/Content.Shared/Sprite/RandomSpriteComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Sprite; + +[RegisterComponent, NetworkedComponent] +public sealed class RandomSpriteComponent : Component +{ + /// + /// Available colors based on group, parsed layer enum, state, and color. + /// Stored as a list so we can have groups of random sprites (e.g. tech_base + tech_flare for holoparasite) + /// + [ViewVariables(VVAccess.ReadWrite), DataField("available")] + public List> Available = new(); + + /// + /// Selected colors + /// + [ViewVariables(VVAccess.ReadWrite), DataField("selected")] + public Dictionary Selected = new(); +} diff --git a/Content.Shared/Sprite/SharedRandomSpriteSystem.cs b/Content.Shared/Sprite/SharedRandomSpriteSystem.cs new file mode 100644 index 0000000000..4d9958093e --- /dev/null +++ b/Content.Shared/Sprite/SharedRandomSpriteSystem.cs @@ -0,0 +1,11 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Sprite; + +public abstract class SharedRandomSpriteSystem : EntitySystem {} + +[Serializable, NetSerializable] +public sealed class RandomSpriteColorComponentState : ComponentState +{ + public Dictionary Selected = default!; +} diff --git a/Resources/Audio/Weapons/Guns/Gunshots/license.txt b/Resources/Audio/Weapons/Guns/Gunshots/license.txt index 238c8056c4..6487f71076 100644 --- a/Resources/Audio/Weapons/Guns/Gunshots/license.txt +++ b/Resources/Audio/Weapons/Guns/Gunshots/license.txt @@ -1,5 +1,5 @@ atreides.ogg, c-20r.ogg, flaregun.ogg, mateba.ogg, minigun.ogg, mk58.ogg were taken from https://gitlab.com/cmdevs/colonial-warfare/-/tree/32cb5892413243cc74bb2d11df8e3085f8ef1164/sound/weapons They are licensed under CC-BY-SA 3.0 -taser2.ogg and kinetic_accel.ogg were taken from https://github.com/tgstation/tgstation/tree/88d7dbfc105fbf40284d7b7c4587f8d23c0ac3ac +rocket_launcher.ogg and taser2.ogg and kinetic_accel.ogg were taken from https://github.com/tgstation/tgstation/tree/88d7dbfc105fbf40284d7b7c4587f8d23c0ac3ac It is licensed under CC-BY-SA 3.0 \ No newline at end of file diff --git a/Resources/Audio/Weapons/Guns/Gunshots/rocket_launcher.ogg b/Resources/Audio/Weapons/Guns/Gunshots/rocket_launcher.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e671fbff156e42601d5f4152f178439c5a285f6f GIT binary patch literal 60734 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json b/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json new file mode 100644 index 0000000000..2567d69886 --- /dev/null +++ b/Resources/Textures/Interface/Actions/carp_rift.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/19da0cee1869bad0186d54d6bcd8a55ed30b9db6/icons/obj/carp_rift.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Aliens/Carps/holo.rsi/alive.png b/Resources/Textures/Mobs/Aliens/Carps/holo.rsi/base.png similarity index 100% rename from Resources/Textures/Mobs/Aliens/Carps/holo.rsi/alive.png rename to Resources/Textures/Mobs/Aliens/Carps/holo.rsi/base.png diff --git a/Resources/Textures/Mobs/Aliens/Carps/holo.rsi/crit.png b/Resources/Textures/Mobs/Aliens/Carps/holo.rsi/crit.png deleted file mode 100644 index 2a00379bafa4035f02ed2926020ad19088132d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1298 zcmZ8gdo(W?B zsfKjg&>4o=~*<9AD`G{>}%`WZyp>MdSv+Z%M=r%2XbVK!Cpuls6SHy2&3a5{m|0!G zOiw~f&HU@?=Z9&aEqKPTzvKqfmIU`9EAOeeQM3-nq{?Y@kSlgHuFZ1PJ-TbA5du*F zk@t|9BYz)p-nV*UV?4GU zR?+L0&(WYl-C$2b%~Be>q!fGiP@iV%tyFOH64y2~{=v@lapoP!r?By8p?vaP85*54 z7Rtql$sUCu9pYd*HZwN~^?eif@M(RDR50T@=;AhBnOMxn3#s#Gon)%Lpy6!lOVHuM z-0g)ow1YLqhXV0L+kpJp0n?3G+2nOOQ||R3{ZHSal>UV6XA^Aw%;ijlS8;|+75h6k z_z&;fBNiO2N#_q#h>5ug8z3gQ3HL~Fvm~**PgA`i7=`(F&L5d*(-_*+UW7gHWvN$E z!wFu*9%2?6Y5`ZYfb-ba?=9+gJ2OR4Gr2RFGN*w(yEyEn5Q1<*d6et-3OKgE+we+s4%eDj;_bRZkX;Mxxp&^|Fwx9(cFXWi;k1s3VrYMa~uB zzUkJe#Vh$`4#C^k=P$-k>NY? z5D{OnY(svF2%|v+O0M~wG+TBavg;!0Yy>*}c0_?Kn0?z68S0-kGA&^HdOd{-o^_SJ zHU(W%4?R}BV`G4vr$aY3U^KA*)mn|3N8C@+UYfX~1v*v931TIjSO&rt;nh@KEFE%t zZ}egdg>dX7V7IcIBJ+F{sex^(sHCS>fJyU+kqwkO*7kYC%nQjm=W0yu2{2i2I)iXM vnuCsdGz1TPx$lSxEDR9J=Wm9b94Fc60Skjhe}Oof3gJVCnm30Qan)Rh(SET}7M#S?U4VME=M zCt%4!x)7<7B`XZqldrCwHeHY^|BI7eegAjo*ao7aqW)RQIg_Re9Y2@)yc~l8q^YY? zBl)?b_|5k)pwUp{Jf*QVG=AO!0J>#s|G)dqD;IDOt%PBdWedEuK%sz{qUWcqKhMj? z`X23ol&p*^UTvu>l@8BaJF&+M-Fr(AM*(Dt=h<$YXTbBuZ^nSDExqR{0EO&{rO8xQ&Rr>#-KLzYF$D53 zrWnWfw&7Hv<7yiNd~9u;W3nQ*TMXbUM9$+Kum|9p*XHn;l@Odz8vB+&cEWdTCn0k= z!FLSjo-VlZ72yTAACti`+P?e1r&BJfg9=Z*-9j*D-Ht;mi;9Yhx+whtnU23j&Ya4< P00000NkvXXu0mjfSeMqB diff --git a/Resources/Textures/Mobs/Aliens/Carps/magic.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/magic.rsi/meta.json index c35dd71e41..cf70ff589b 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/magic.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/magic.rsi/meta.json @@ -14,10 +14,7 @@ "name": "dead" }, { - "name": "crit" - }, - { - "name": "alive", + "name": "base", "directions": 4, "delays": [ [ diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/alive.png b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/alive.png deleted file mode 100644 index de6b4c960bb05f431a47c411ad70ae3908cf1fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3713 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 diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/base.png b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc0960efafe1d02b7f607f28b708b6606e1bbaa GIT binary patch literal 2913 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/base_dead.png b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/base_dead.png new file mode 100644 index 0000000000000000000000000000000000000000..faf6d1be60543d1937e4b333753fc9a8bc7d08ed GIT binary patch literal 517 zcmV+g0{Z=lP)xBftnS0t^BOf}r4Yk|dLV z0g$HlI3P}^lbPRaHXi|X0@%ju_1d(z+s(AT@8efIpU?9D7;BOZ*a;v@jNsB3g7M{Y zQLgK%#bQy8HR*Uf7TfK%jQP@>Om8J~3 zTCGg`dc7(YXfmb%%d=Ap&}7;abUK|H^Z9(0P@1-7z;ZKdm}gm5Yvy^L zavVpU&u7!emZ1W194n1O0mC{o7(uhyOf8qoa@^i)niC8yZwqz5-z$C0hheBRjBy}9 zBm>J*VUB&2Tf*TSFmtZAA<{IhRN`m#5 zFf)v4FFxoH)mxIj$tQMhL&N_iOa6cU{JDYQ|JUj#kANz37J+bk^?Y&Wk@&;>F zzke^_adQbitn=)gj^ShGzNKR9U6~QJo9eHuc)odA=avIElkQg)U0L??+C#N!1HP(V j4_e#ae=Do6T`l^ont9TqH-6PXr!siD`njxgN@xNA2&{x! diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/dead.png b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/dead.png deleted file mode 100644 index 87cdf63757e6796fff7228b069acaf1b76bd738e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jP7LeL$-D$|6a#!hT>m#5 zFf)v4FFxoH)mxIj$tQMhL&N_iOa6cU{JDYQKQlAuk5DmhpknTlAirRS|8P)SR(lmF zJjc_;F~p+x?Zn%BhYdKK4f~dA{{MfF)l2`?EzjzEF{Umu?Jf!5nwdV#Tz2NK;N*ti z5*w%F*)%R}ytqrk#@}6Zs^dy+*`keFBG>*so0@iQ=|c|-)6TYi^8<2hn>^0___!(U zF z;uumf=j}yDUIqmo7DtaC*Y;l!W^imdKI;Vst04=2?5C8xG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/meta.json index a45b246fc8..4539505970 100644 --- a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/meta.json @@ -11,13 +11,39 @@ "name": "icon" }, { - "name": "dead" + "name": "mouth", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2 + ] + ] }, { - "name": "crit" + "name": "dead_mouth" }, { - "name": "alive", + "name": "base_dead" + }, + { + "name": "base", "directions": 4, "delays": [ [ diff --git a/Resources/Textures/Mobs/Aliens/Carps/space.rsi/mouth.png b/Resources/Textures/Mobs/Aliens/Carps/space.rsi/mouth.png new file mode 100644 index 0000000000000000000000000000000000000000..8e504f91aed2c63c5c74b315df335976d7da6bf1 GIT binary patch literal 590 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 R!PF@ZFwim9F3@xe{~wl%8Mpud literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Specific/carp_rift.rsi/meta.json b/Resources/Textures/Structures/Specific/carp_rift.rsi/meta.json new file mode 100644 index 0000000000..2567d69886 --- /dev/null +++ b/Resources/Textures/Structures/Specific/carp_rift.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/19da0cee1869bad0186d54d6bcd8a55ed30b9db6/icons/obj/carp_rift.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon", + "delays": [ + [ + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} \ No newline at end of file