From 2e0b11ea51aec184c0f1db40108fe32e261e8e46 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Wed, 6 Aug 2025 20:54:50 +0200 Subject: [PATCH 01/33] fix repeated scale visuals removal/ensuring (#39432) --- Content.Shared/Sprite/SharedScaleVisualsSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Shared/Sprite/SharedScaleVisualsSystem.cs b/Content.Shared/Sprite/SharedScaleVisualsSystem.cs index fd2a522cd0..408f5984b1 100644 --- a/Content.Shared/Sprite/SharedScaleVisualsSystem.cs +++ b/Content.Shared/Sprite/SharedScaleVisualsSystem.cs @@ -27,6 +27,7 @@ public abstract class SharedScaleVisualsSystem : EntitySystem protected virtual void ResetScale(Entity ent) { + _appearance.RemoveData(ent.Owner, ScaleVisuals.Scale); var ev = new ScaleEntityEvent(ent.Owner, Vector2.One); RaiseLocalEvent(ent.Owner, ref ev); } From 9872a28d7f9c877ac3368be528cb11605b444636 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Wed, 6 Aug 2025 15:01:20 -0400 Subject: [PATCH 02/33] Miscellaneous Body Decoupling (#38958) --- .../Anomaly/Effects/ClientInnerBodySystem.cs | 7 +-- .../CardboardBox/CardboardBoxSystem.cs | 10 ++-- .../Components/ActionBlocking/HandCuffTest.cs | 14 +++-- Content.Server/Body/Systems/BrainSystem.cs | 57 +++++++++---------- Content.Server/Cargo/Systems/PricingSystem.cs | 19 ++++--- .../Kitchen/EntitySystems/SharpSystem.cs | 17 +++--- Content.Server/Morgue/MorgueSystem.cs | 4 +- .../Components/InnerBodyAnomalyComponent.cs | 3 +- .../Disposal/Unit/SharedDisposalUnitSystem.cs | 4 +- .../EntityStorageLayingDownOverrideSystem.cs | 5 +- .../SharedEntityStorageSystem.cs | 3 +- .../Entities/Objects/Misc/implanters.yml | 2 +- .../Entities/Objects/Weapons/Bombs/spider.yml | 2 +- .../Weapons/Guns/Projectiles/magic.yml | 10 ++-- Resources/Prototypes/Magic/mindswap_spell.yml | 2 +- Resources/Prototypes/Magic/touch_spells.yml | 2 +- 16 files changed, 83 insertions(+), 78 deletions(-) diff --git a/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs b/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs index 15ebc8a993..d96980fb1d 100644 --- a/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs +++ b/Content.Client/Anomaly/Effects/ClientInnerBodySystem.cs @@ -1,6 +1,6 @@ using Content.Shared.Anomaly.Components; using Content.Shared.Anomaly.Effects; -using Content.Shared.Body.Components; +using Content.Shared.Humanoid; using Robust.Client.GameObjects; namespace Content.Client.Anomaly.Effects; @@ -25,9 +25,8 @@ public sealed class ClientInnerBodyAnomalySystem : SharedInnerBodyAnomalySystem var index = _sprite.LayerMapReserve((ent.Owner, sprite), ent.Comp.LayerMap); - if (TryComp(ent, out var body) && - body.Prototype is not null && - ent.Comp.SpeciesSprites.TryGetValue(body.Prototype.Value, out var speciesSprite)) + if (TryComp(ent, out var humanoidAppearance) && + ent.Comp.SpeciesSprites.TryGetValue(humanoidAppearance.Species, out var speciesSprite)) { _sprite.LayerSetSprite((ent.Owner, sprite), index, speciesSprite); } diff --git a/Content.Client/CardboardBox/CardboardBoxSystem.cs b/Content.Client/CardboardBox/CardboardBoxSystem.cs index e52ce03a76..ecebe16727 100644 --- a/Content.Client/CardboardBox/CardboardBoxSystem.cs +++ b/Content.Client/CardboardBox/CardboardBoxSystem.cs @@ -1,8 +1,8 @@ using System.Numerics; -using Content.Shared.Body.Components; using Content.Shared.CardboardBox; using Content.Shared.CardboardBox.Components; using Content.Shared.Examine; +using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; using Robust.Client.GameObjects; @@ -15,13 +15,13 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem [Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly SpriteSystem _sprite = default!; - private EntityQuery _bodyQuery; + private EntityQuery _mobStateQuery; public override void Initialize() { base.Initialize(); - _bodyQuery = GetEntityQuery(); + _mobStateQuery = GetEntityQuery(); SubscribeNetworkEvent(OnBoxEffect); } @@ -66,8 +66,8 @@ public sealed class CardboardBoxSystem : SharedCardboardBoxSystem if (!_examine.InRangeUnOccluded(sourcePos, mapPos, box.Distance, null)) continue; - // no effect for anything too exotic - if (!_bodyQuery.HasComp(mob)) + // no effect for non-mobs that have MobMover, such as mechs and vehicles. + if (!_mobStateQuery.HasComp(mob)) continue; var ent = Spawn(box.Effect, mapPos); diff --git a/Content.IntegrationTests/Tests/GameObjects/Components/ActionBlocking/HandCuffTest.cs b/Content.IntegrationTests/Tests/GameObjects/Components/ActionBlocking/HandCuffTest.cs index 2570e2246a..dae3203f9f 100644 --- a/Content.IntegrationTests/Tests/GameObjects/Components/ActionBlocking/HandCuffTest.cs +++ b/Content.IntegrationTests/Tests/GameObjects/Components/ActionBlocking/HandCuffTest.cs @@ -1,11 +1,9 @@ #nullable enable using Content.Server.Cuffs; -using Content.Shared.Body.Components; using Content.Shared.Cuffs.Components; using Content.Shared.Hands.Components; using Robust.Server.Console; using Robust.Shared.GameObjects; -using Robust.Shared.Map; namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking { @@ -22,9 +20,15 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking components: - type: Cuffable - type: Hands + hands: + hand_right: + location: Right + hand_left: + location: Left + sortedHands: + - hand_right + - hand_left - type: ComplexInteraction - - type: Body - prototype: Human - type: entity name: HandcuffsDummy @@ -47,7 +51,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking HandsComponent hands = default!; var entityManager = server.ResolveDependency(); - var mapManager = server.ResolveDependency(); var host = server.ResolveDependency(); var map = await pair.CreateTestMap(); @@ -73,7 +76,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.ActionBlocking { Assert.That(entityManager.TryGetComponent(human, out cuffed!), $"Human has no {nameof(CuffableComponent)}"); Assert.That(entityManager.TryGetComponent(human, out hands!), $"Human has no {nameof(HandsComponent)}"); - Assert.That(entityManager.TryGetComponent(human, out BodyComponent? _), $"Human has no {nameof(BodyComponent)}"); Assert.That(entityManager.TryGetComponent(cuffs, out HandcuffComponent? _), $"Handcuff has no {nameof(HandcuffComponent)}"); Assert.That(entityManager.TryGetComponent(secondCuffs, out HandcuffComponent? _), $"Second handcuffs has no {nameof(HandcuffComponent)}"); }); diff --git a/Content.Server/Body/Systems/BrainSystem.cs b/Content.Server/Body/Systems/BrainSystem.cs index 86d2cb61ff..e916849a81 100644 --- a/Content.Server/Body/Systems/BrainSystem.cs +++ b/Content.Server/Body/Systems/BrainSystem.cs @@ -1,47 +1,46 @@ using Content.Server.Body.Components; using Content.Server.Ghost.Components; -using Content.Shared.Body.Components; using Content.Shared.Body.Events; using Content.Shared.Mind; using Content.Shared.Mind.Components; +using Content.Shared.Mobs.Components; using Content.Shared.Pointing; -namespace Content.Server.Body.Systems +namespace Content.Server.Body.Systems; + +public sealed class BrainSystem : EntitySystem { - public sealed class BrainSystem : EntitySystem + [Dependency] private readonly SharedMindSystem _mindSystem = default!; + + public override void Initialize() { - [Dependency] private readonly SharedMindSystem _mindSystem = default!; + base.Initialize(); - public override void Initialize() - { - base.Initialize(); + SubscribeLocalEvent((uid, _, args) => HandleMind(args.Body, uid)); + SubscribeLocalEvent((uid, _, args) => HandleMind(uid, args.OldBody)); + SubscribeLocalEvent(OnPointAttempt); + } - SubscribeLocalEvent((uid, _, args) => HandleMind(args.Body, uid)); - SubscribeLocalEvent((uid, _, args) => HandleMind(uid, args.OldBody)); - SubscribeLocalEvent(OnPointAttempt); - } + private void HandleMind(EntityUid newEntity, EntityUid oldEntity) + { + if (TerminatingOrDeleted(newEntity) || TerminatingOrDeleted(oldEntity)) + return; - private void HandleMind(EntityUid newEntity, EntityUid oldEntity) - { - if (TerminatingOrDeleted(newEntity) || TerminatingOrDeleted(oldEntity)) - return; + EnsureComp(newEntity); + EnsureComp(oldEntity); - EnsureComp(newEntity); - EnsureComp(oldEntity); + var ghostOnMove = EnsureComp(newEntity); + ghostOnMove.MustBeDead = HasComp(newEntity); // Don't ghost living players out of their bodies. - var ghostOnMove = EnsureComp(newEntity); - if (HasComp(newEntity)) - ghostOnMove.MustBeDead = true; + if (!_mindSystem.TryGetMind(oldEntity, out var mindId, out var mind)) + return; - if (!_mindSystem.TryGetMind(oldEntity, out var mindId, out var mind)) - return; + _mindSystem.TransferTo(mindId, newEntity, mind: mind); + } - _mindSystem.TransferTo(mindId, newEntity, mind: mind); - } - - private void OnPointAttempt(Entity ent, ref PointAttemptEvent args) - { - args.Cancel(); - } + private void OnPointAttempt(Entity ent, ref PointAttemptEvent args) + { + args.Cancel(); } } + diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 5e449eb8da..24ee4ffaf2 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -90,19 +90,22 @@ public sealed class PricingSystem : EntitySystem if (args.Handled) return; - if (!TryComp(uid, out var body) || !TryComp(uid, out var state)) + if (!TryComp(uid, out var state)) { - Log.Error($"Tried to get the mob price of {ToPrettyString(uid)}, which has no {nameof(BodyComponent)} and no {nameof(MobStateComponent)}."); + Log.Error($"Tried to get the mob price of {ToPrettyString(uid)}, which has no {nameof(MobStateComponent)}."); return; } - // TODO: Better handling of missing. - var partList = _bodySystem.GetBodyChildren(uid, body).ToList(); - var totalPartsPresent = partList.Sum(_ => 1); - var totalParts = partList.Count; + var partPenalty = 0.0; + if (TryComp(uid, out var body)) + { + var partList = _bodySystem.GetBodyChildren(uid, body).ToList(); + var totalPartsPresent = partList.Sum(_ => 1); + var totalParts = partList.Count; - var partRatio = totalPartsPresent / (double) totalParts; - var partPenalty = component.Price * (1 - partRatio) * component.MissingBodyPartPenalty; + var partRatio = totalPartsPresent / (double) totalParts; + partPenalty = component.Price * (1 - partRatio) * component.MissingBodyPartPenalty; + } args.Price += (component.Price - partPenalty) * (_mobStateSystem.IsAlive(uid, state) ? 1.0 : component.DeathPenalty); } diff --git a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs index 0ba9d0990a..0275e4d1a7 100644 --- a/Content.Server/Kitchen/EntitySystems/SharpSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/SharpSystem.cs @@ -117,19 +117,18 @@ public sealed class SharpSystem : EntitySystem popupEnt = Spawn(proto, coords.Offset(_robustRandom.NextVector2(0.25f))); } - var hasBody = TryComp(args.Args.Target.Value, out var body); - // only show a big popup when butchering living things. - var popupType = PopupType.Small; - if (hasBody) - popupType = PopupType.LargeCaution; + // Meant to differentiate cutting up clothes and cutting up your boss. + var popupType = HasComp(args.Args.Target.Value) + ? PopupType.LargeCaution + : PopupType.Small; _popupSystem.PopupEntity(Loc.GetString("butcherable-knife-butchered-success", ("target", args.Args.Target.Value), ("knife", Identity.Entity(uid, EntityManager))), - popupEnt, args.Args.User, popupType); - - if (hasBody) - _bodySystem.GibBody(args.Args.Target.Value, body: body); + popupEnt, + args.Args.User, + popupType); + _bodySystem.GibBody(args.Args.Target.Value); // does nothing if ent can't be gibbed _destructibleSystem.DestroyEntity(args.Args.Target.Value); args.Handled = true; diff --git a/Content.Server/Morgue/MorgueSystem.cs b/Content.Server/Morgue/MorgueSystem.cs index a07accf777..92ed16a06b 100644 --- a/Content.Server/Morgue/MorgueSystem.cs +++ b/Content.Server/Morgue/MorgueSystem.cs @@ -1,6 +1,6 @@ using Content.Server.Storage.Components; -using Content.Shared.Body.Components; using Content.Shared.Examine; +using Content.Shared.Mobs.Components; using Content.Shared.Morgue; using Content.Shared.Morgue.Components; using Robust.Shared.Audio.Systems; @@ -59,7 +59,7 @@ public sealed class MorgueSystem : EntitySystem foreach (var ent in storage.Contents.ContainedEntities) { - if (!hasMob && HasComp(ent)) + if (!hasMob && HasComp(ent)) hasMob = true; if (HasComp(ent)) diff --git a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs index a7e07ae2b5..dfc1d561c4 100644 --- a/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs +++ b/Content.Shared/Anomaly/Components/InnerBodyAnomalyComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.Anomaly.Effects; using Content.Shared.Body.Prototypes; +using Content.Shared.Humanoid.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -62,7 +63,7 @@ public sealed partial class InnerBodyAnomalyComponent : Component /// Ability to use unique sprites for different body types /// [DataField, AutoNetworkedField] - public Dictionary, SpriteSpecifier> SpeciesSprites = new(); + public Dictionary, SpriteSpecifier> SpeciesSprites = new(); /// /// The key of the entity layer into which the sprite will be inserted diff --git a/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs index bdf8b5ba07..292cfd2b3c 100644 --- a/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs +++ b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Shared.ActionBlocker; using Content.Shared.Administration.Logs; -using Content.Shared.Body.Components; using Content.Shared.Climbing.Systems; using Content.Shared.Containers; using Content.Shared.Database; @@ -15,6 +14,7 @@ using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Item; +using Content.Shared.Mobs.Components; using Content.Shared.Movement.Events; using Content.Shared.Popups; using Content.Shared.Power; @@ -450,7 +450,7 @@ public abstract class SharedDisposalUnitSystem : EntitySystem return false; var storable = HasComp(entity); - if (!storable && !HasComp(entity)) + if (!storable && !HasComp(entity)) return false; if (_whitelistSystem.IsBlacklistPass(component.Blacklist, entity) || diff --git a/Content.Shared/Morgue/EntityStorageLayingDownOverrideSystem.cs b/Content.Shared/Morgue/EntityStorageLayingDownOverrideSystem.cs index 9341168ba3..630135f36a 100644 --- a/Content.Shared/Morgue/EntityStorageLayingDownOverrideSystem.cs +++ b/Content.Shared/Morgue/EntityStorageLayingDownOverrideSystem.cs @@ -1,4 +1,3 @@ -using Content.Shared.Body.Components; using Content.Shared.Morgue.Components; using Content.Shared.Standing; using Content.Shared.Storage.Components; @@ -20,7 +19,9 @@ public sealed class EntityStorageLayingDownOverrideSystem : EntitySystem { foreach (var ent in args.Contents) { - if (HasComp(ent) && !_standing.IsDown(ent)) + // Explicitly check for standing state component, as entities without it will return false for IsDown() + // which prevents inserting any kind of non-mobs into this container (which is unintended) + if (TryComp(ent, out var standingState) && !_standing.IsDown(ent, standingState)) args.Contents.Remove(ent); } } diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index 2b73a9349f..fd7cb87b2a 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.Verbs; using Content.Shared.Wall; using Content.Shared.Whitelist; using Content.Shared.ActionBlocker; +using Content.Shared.Mobs.Components; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.GameStates; @@ -355,7 +356,7 @@ public abstract class SharedEntityStorageSystem : EntitySystem return _whitelistSystem.IsValid(component.Whitelist, toInsert); // The inserted entity must be a mob or an item. - return HasComp(toInsert) || HasComp(toInsert); + return HasComp(toInsert) || HasComp(toInsert); } public bool TryOpenStorage(EntityUid user, EntityUid target, bool silent = false) diff --git a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml index 79432e6fc1..e1918ef5e6 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml @@ -13,7 +13,7 @@ - type: Implanter whitelist: components: - - Body # no chair microbomb + - MobState # no chair microbomb blacklist: components: - Guardian # no holoparasite macrobomb wombo combo diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/spider.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/spider.yml index d00297a723..3d7991cf0f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/spider.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/spider.yml @@ -28,7 +28,7 @@ components: - Anchorable - Item - - Body + - MobState - type: Explosive # Powerful explosion in a large radius. Will break underplating. explosionType: DemolitionCharge totalIntensity: 360 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml index 9e2b6d76c1..d1b50429f9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml @@ -93,7 +93,7 @@ disableWhenFirstOpened: true whitelist: components: - - Body + - MobState - type: LockVisuals stateLocked: cursed_door stateUnlocked: decursed_door @@ -191,7 +191,7 @@ - type: WhitelistTriggerCondition userWhitelist: components: - - Body + - MobState - type: entity id: ProjectilePolyboltMonkey @@ -205,7 +205,7 @@ - type: WhitelistTriggerCondition userWhitelist: components: - - Body + - MobState - type: entity id: ProjectilePolyboltDoor @@ -275,7 +275,7 @@ - type: WhitelistTriggerCondition userWhitelist: components: - - Body + - MobState - type: entity id: ProjectileIcicle @@ -305,4 +305,4 @@ - type: WhitelistTriggerCondition userWhitelist: components: - - Body + - MobState diff --git a/Resources/Prototypes/Magic/mindswap_spell.yml b/Resources/Prototypes/Magic/mindswap_spell.yml index 8039f12074..0a28a9683b 100644 --- a/Resources/Prototypes/Magic/mindswap_spell.yml +++ b/Resources/Prototypes/Magic/mindswap_spell.yml @@ -14,7 +14,7 @@ - type: EntityTargetAction whitelist: components: - - Body # this also allows borgs because that supercode uses Body for no reason + - MobState - PAI # intended to mindswap pAIs and AIs - StationAiCore event: !type:MindSwapSpellEvent diff --git a/Resources/Prototypes/Magic/touch_spells.yml b/Resources/Prototypes/Magic/touch_spells.yml index ba62a76421..f3b44eabb1 100644 --- a/Resources/Prototypes/Magic/touch_spells.yml +++ b/Resources/Prototypes/Magic/touch_spells.yml @@ -12,7 +12,7 @@ - type: EntityTargetAction whitelist: components: - - Body + - MobState canTargetSelf: false - type: entity From 534553dddfb0628b41cf955135d50769a7c35851 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:52:11 +0200 Subject: [PATCH 03/33] Turn some implants into triggers (#39364) Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../Forensics/Systems/ForensicsSystem.cs | 5 + .../Forensics/Systems/ForensicsSystem.cs | 16 +- .../Components/ScramImplantComponent.cs | 20 -- .../Implants/SubdermalImplantSystem.cs | 189 ------------------ .../Systems/SharedForensicsSystem.cs | 18 ++ .../Components/SubdermalImplantComponent.cs | 17 +- .../Implants/SharedSubdermalImplantSystem.cs | 3 +- .../Effects/DnaScrambleOnTriggerComponent.cs | 11 + .../Effects/RattleOnTriggerComponent.cs | 4 +- .../Effects/ScramOnTriggerComponent.cs | 25 +++ .../Effects/UncuffOnTriggerComponent.cs | 10 + .../Systems/DnaScrambleOnTriggerSystem.cs | 62 ++++++ .../Trigger/Systems/ScramOnTriggerSystem.cs | 151 ++++++++++++++ .../Trigger/Systems/UncuffOnTriggerSystem.cs | 34 ++++ Resources/Locale/en-US/implant/implant.ftl | 9 - .../en-US/triggers/rattle-on-trigger.ftl | 2 + .../en-US/triggers/scramble-on-trigger.ftl | 1 + Resources/Prototypes/Actions/types.yml | 16 +- .../Objects/Misc/subdermal_implants.yml | 30 ++- 19 files changed, 352 insertions(+), 271 deletions(-) create mode 100644 Content.Client/Forensics/Systems/ForensicsSystem.cs delete mode 100644 Content.Server/Implants/Components/ScramImplantComponent.cs create mode 100644 Content.Shared/Forensics/Systems/SharedForensicsSystem.cs create mode 100644 Content.Shared/Trigger/Components/Effects/DnaScrambleOnTriggerComponent.cs create mode 100644 Content.Shared/Trigger/Components/Effects/ScramOnTriggerComponent.cs create mode 100644 Content.Shared/Trigger/Components/Effects/UncuffOnTriggerComponent.cs create mode 100644 Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs create mode 100644 Content.Shared/Trigger/Systems/ScramOnTriggerSystem.cs create mode 100644 Content.Shared/Trigger/Systems/UncuffOnTriggerSystem.cs create mode 100644 Resources/Locale/en-US/triggers/rattle-on-trigger.ftl create mode 100644 Resources/Locale/en-US/triggers/scramble-on-trigger.ftl diff --git a/Content.Client/Forensics/Systems/ForensicsSystem.cs b/Content.Client/Forensics/Systems/ForensicsSystem.cs new file mode 100644 index 0000000000..048fff600e --- /dev/null +++ b/Content.Client/Forensics/Systems/ForensicsSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Forensics.Systems; + +namespace Content.Client.Forensics.Systems; + +public sealed class ForensicsSystem : SharedForensicsSystem; diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 9f94e39fb7..cc74c1d141 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.DoAfter; using Content.Shared.Forensics; using Content.Shared.Forensics.Components; +using Content.Shared.Forensics.Systems; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; @@ -23,7 +24,7 @@ using Content.Shared.Hands.Components; namespace Content.Server.Forensics { - public sealed class ForensicsSystem : EntitySystem + public sealed class ForensicsSystem : SharedForensicsSystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly InventorySystem _inventory = default!; @@ -317,12 +318,7 @@ namespace Content.Server.Forensics } #region Public API - - /// - /// Give the entity a new, random DNA string and call an event to notify other systems like the bloodstream that it has been changed. - /// Does nothing if it does not have the DnaComponent. - /// - public void RandomizeDNA(Entity ent) + public override void RandomizeDNA(Entity ent) { if (!Resolve(ent, ref ent.Comp, false)) return; @@ -334,11 +330,7 @@ namespace Content.Server.Forensics RaiseLocalEvent(ent.Owner, ref ev); } - /// - /// Give the entity a new, random fingerprint string. - /// Does nothing if it does not have the FingerprintComponent. - /// - public void RandomizeFingerprint(Entity ent) + public override void RandomizeFingerprint(Entity ent) { if (!Resolve(ent, ref ent.Comp, false)) return; diff --git a/Content.Server/Implants/Components/ScramImplantComponent.cs b/Content.Server/Implants/Components/ScramImplantComponent.cs deleted file mode 100644 index f3bbc9e584..0000000000 --- a/Content.Server/Implants/Components/ScramImplantComponent.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Server.Implants; -using Robust.Shared.Audio; - -namespace Content.Server.Implants.Components; - -/// -/// Randomly teleports entity when triggered. -/// -[RegisterComponent] -public sealed partial class ScramImplantComponent : Component -{ - /// - /// Up to how far to teleport the user - /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public float TeleportRadius = 100f; - - [DataField, ViewVariables(VVAccess.ReadWrite)] - public SoundSpecifier TeleportSound = new SoundPathSpecifier("/Audio/Effects/teleport_arrival.ogg"); -} diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index e2482b7b60..f0530358a6 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -1,66 +1,21 @@ -using Content.Server.Cuffs; -using Content.Server.Forensics; -using Content.Server.Humanoid; -using Content.Server.Implants.Components; using Content.Server.Store.Components; using Content.Server.Store.Systems; -using Content.Shared.Cuffs.Components; -using Content.Shared.Forensics; -using Content.Shared.Forensics.Components; -using Content.Shared.Humanoid; using Content.Shared.Implants; -using Content.Shared.Implants.Components; using Content.Shared.Interaction; -using Content.Shared.Physics; using Content.Shared.Popups; -using Content.Shared.Preferences; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Map; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Random; -using System.Numerics; -using Content.Shared.Movement.Pulling.Components; -using Content.Shared.Movement.Pulling.Systems; -using Content.Server.IdentityManagement; -using Content.Shared.DetailExaminable; using Content.Shared.Store.Components; -using Robust.Shared.Collections; -using Robust.Shared.Map.Components; namespace Content.Server.Implants; public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem { - [Dependency] private readonly CuffableSystem _cuffable = default!; - [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearance = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly StoreSystem _store = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly SharedTransformSystem _xform = default!; - [Dependency] private readonly ForensicsSystem _forensicsSystem = default!; - [Dependency] private readonly PullingSystem _pullingSystem = default!; - [Dependency] private readonly EntityLookupSystem _lookupSystem = default!; - [Dependency] private readonly SharedMapSystem _mapSystem = default!; - [Dependency] private readonly IdentitySystem _identity = default!; - - private EntityQuery _physicsQuery; - private HashSet> _targetGrids = []; - public override void Initialize() { base.Initialize(); - _physicsQuery = GetEntityQuery(); - - SubscribeLocalEvent(OnFreedomImplant); SubscribeLocalEvent>(OnStoreRelay); - SubscribeLocalEvent(OnActivateImplantEvent); - SubscribeLocalEvent(OnScramImplant); - SubscribeLocalEvent(OnDnaScramblerImplant); - } private void OnStoreRelay(EntityUid uid, StoreComponent store, ImplantRelayEvent implantRelay) @@ -85,148 +40,4 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem var msg = Loc.GetString("store-currency-inserted-implant", ("used", args.Used)); _popup.PopupEntity(msg, args.User, args.User); } - - private void OnFreedomImplant(EntityUid uid, SubdermalImplantComponent component, UseFreedomImplantEvent args) - { - if (!TryComp(component.ImplantedEntity, out var cuffs) || cuffs.Container.ContainedEntities.Count < 1) - return; - - _cuffable.Uncuff(component.ImplantedEntity.Value, cuffs.LastAddedCuffs, cuffs.LastAddedCuffs); - args.Handled = true; - } - - private void OnActivateImplantEvent(EntityUid uid, SubdermalImplantComponent component, ActivateImplantEvent args) - { - args.Handled = true; - } - - private void OnScramImplant(EntityUid uid, SubdermalImplantComponent component, UseScramImplantEvent args) - { - if (component.ImplantedEntity is not { } ent) - return; - - if (!TryComp(uid, out var implant)) - return; - - // We need stop the user from being pulled so they don't just get "attached" with whoever is pulling them. - // This can for example happen when the user is cuffed and being pulled. - if (TryComp(ent, out var pull) && _pullingSystem.IsPulled(ent, pull)) - _pullingSystem.TryStopPull(ent, pull); - - // Check if the user is pulling anything, and drop it if so - if (TryComp(ent, out var puller) && TryComp(puller.Pulling, out var pullable)) - _pullingSystem.TryStopPull(puller.Pulling.Value, pullable); - - var xform = Transform(ent); - var targetCoords = SelectRandomTileInRange(xform, implant.TeleportRadius); - - if (targetCoords != null) - { - _xform.SetCoordinates(ent, targetCoords.Value); - _audio.PlayPvs(implant.TeleportSound, ent); - args.Handled = true; - } - } - - private EntityCoordinates? SelectRandomTileInRange(TransformComponent userXform, float radius) - { - var userCoords = _xform.ToMapCoordinates(userXform.Coordinates); - _targetGrids.Clear(); - _lookupSystem.GetEntitiesInRange(userCoords, radius, _targetGrids); - Entity? targetGrid = null; - - if (_targetGrids.Count == 0) - return null; - - // Give preference to the grid the entity is currently on. - // This does not guarantee that if the probability fails that the owner's grid won't be picked. - // In reality the probability is higher and depends on the number of grids. - if (userXform.GridUid != null && TryComp(userXform.GridUid, out var gridComp)) - { - var userGrid = new Entity(userXform.GridUid.Value, gridComp); - if (_random.Prob(0.5f)) - { - _targetGrids.Remove(userGrid); - targetGrid = userGrid; - } - } - - if (targetGrid == null) - targetGrid = _random.GetRandom().PickAndTake(_targetGrids); - - EntityCoordinates? targetCoords = null; - - do - { - var valid = false; - - var range = (float) Math.Sqrt(radius); - var box = Box2.CenteredAround(userCoords.Position, new Vector2(range, range)); - var tilesInRange = _mapSystem.GetTilesEnumerator(targetGrid.Value.Owner, targetGrid.Value.Comp, box, false); - var tileList = new ValueList(); - - while (tilesInRange.MoveNext(out var tile)) - { - tileList.Add(tile.GridIndices); - } - - while (tileList.Count != 0) - { - var tile = tileList.RemoveSwap(_random.Next(tileList.Count)); - valid = true; - foreach (var entity in _mapSystem.GetAnchoredEntities(targetGrid.Value.Owner, targetGrid.Value.Comp, - tile)) - { - if (!_physicsQuery.TryGetComponent(entity, out var body)) - continue; - - if (body.BodyType != BodyType.Static || - !body.Hard || - (body.CollisionLayer & (int) CollisionGroup.MobMask) == 0) - continue; - - valid = false; - break; - } - - if (valid) - { - targetCoords = new EntityCoordinates(targetGrid.Value.Owner, - _mapSystem.TileCenterToVector(targetGrid.Value, tile)); - break; - } - } - - if (valid || _targetGrids.Count == 0) // if we don't do the check here then PickAndTake will blow up on an empty set. - break; - - targetGrid = _random.GetRandom().PickAndTake(_targetGrids); - } while (true); - - return targetCoords; - } - - private void OnDnaScramblerImplant(EntityUid uid, SubdermalImplantComponent component, UseDnaScramblerImplantEvent args) - { - if (component.ImplantedEntity is not { } ent) - return; - - if (TryComp(ent, out var humanoid)) - { - var newProfile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species); - _humanoidAppearance.LoadProfile(ent, newProfile, humanoid); - _metaData.SetEntityName(ent, newProfile.Name, raiseEvents: false); // raising events would update ID card, station record, etc. - - // If the entity has the respecive components, then scramble the dna and fingerprint strings - _forensicsSystem.RandomizeDNA(ent); - _forensicsSystem.RandomizeFingerprint(ent); - - RemComp(ent); // remove MRP+ custom description if one exists - _identity.QueueIdentityUpdate(ent); // manually queue identity update since we don't raise the event - _popup.PopupEntity(Loc.GetString("scramble-implant-activated-popup"), ent, ent); - } - - args.Handled = true; - QueueDel(uid); - } } diff --git a/Content.Shared/Forensics/Systems/SharedForensicsSystem.cs b/Content.Shared/Forensics/Systems/SharedForensicsSystem.cs new file mode 100644 index 0000000000..1220b75fff --- /dev/null +++ b/Content.Shared/Forensics/Systems/SharedForensicsSystem.cs @@ -0,0 +1,18 @@ +using Content.Shared.Forensics.Components; + +namespace Content.Shared.Forensics.Systems; + +public abstract class SharedForensicsSystem : EntitySystem +{ + /// + /// Give the entity a new, random DNA string and call an event to notify other systems like the bloodstream that it has been changed. + /// Does nothing if it does not have the DnaComponent. + /// + public virtual void RandomizeDNA(Entity ent) { } + + /// + /// Give the entity a new, random fingerprint string. + /// Does nothing if it does not have the FingerprintComponent. + /// + public virtual void RandomizeFingerprint(Entity ent) { } +} diff --git a/Content.Shared/Implants/Components/SubdermalImplantComponent.cs b/Content.Shared/Implants/Components/SubdermalImplantComponent.cs index bd0ff09678..390d113dfb 100644 --- a/Content.Shared/Implants/Components/SubdermalImplantComponent.cs +++ b/Content.Shared/Implants/Components/SubdermalImplantComponent.cs @@ -49,7 +49,7 @@ public sealed partial class SubdermalImplantComponent : Component /// [DataField] public EntityWhitelist? Blacklist; - + /// /// If set, this ProtoId is used when attempting to draw the implant instead. /// Useful if the implant is a child to another implant and you don't want to differentiate between them when drawing. @@ -66,11 +66,6 @@ public sealed partial class OpenStorageImplantEvent : InstantActionEvent } -public sealed partial class UseFreedomImplantEvent : InstantActionEvent -{ - -} - /// /// Used for triggering trigger events on the implant via action /// @@ -86,13 +81,3 @@ public sealed partial class OpenUplinkImplantEvent : InstantActionEvent { } - -public sealed partial class UseScramImplantEvent : InstantActionEvent -{ - -} - -public sealed partial class UseDnaScramblerImplantEvent : InstantActionEvent -{ - -} diff --git a/Content.Shared/Implants/SharedSubdermalImplantSystem.cs b/Content.Shared/Implants/SharedSubdermalImplantSystem.cs index 177e24ff02..4c015f1209 100644 --- a/Content.Shared/Implants/SharedSubdermalImplantSystem.cs +++ b/Content.Shared/Implants/SharedSubdermalImplantSystem.cs @@ -44,7 +44,8 @@ public abstract class SharedSubdermalImplantSystem : EntitySystem _actionsSystem.AddAction(component.ImplantedEntity.Value, ref component.Action, component.ImplantAction, uid); } - //replace micro bomb with macro bomb + // replace micro bomb with macro bomb + // TODO: this shouldn't be hardcoded here if (_container.TryGetContainer(component.ImplantedEntity.Value, ImplanterComponent.ImplantSlotId, out var implantContainer) && _tag.HasTag(uid, MacroBombTag)) { foreach (var implant in implantContainer.ContainedEntities) diff --git a/Content.Shared/Trigger/Components/Effects/DnaScrambleOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/DnaScrambleOnTriggerComponent.cs new file mode 100644 index 0000000000..1f3767b392 --- /dev/null +++ b/Content.Shared/Trigger/Components/Effects/DnaScrambleOnTriggerComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Trigger.Components.Effects; + +/// +/// Scrambles the entity's identity and DNA, turning them into a randomized humanoid of the same species. +/// If TargetUser is true the user will be scrambled instead. +/// Used for dna scrambler implants. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class DnaScrambleOnTriggerComponent : BaseXOnTriggerComponent; diff --git a/Content.Shared/Trigger/Components/Effects/RattleOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/RattleOnTriggerComponent.cs index 599a64339a..fa1175c3cb 100644 --- a/Content.Shared/Trigger/Components/Effects/RattleOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/RattleOnTriggerComponent.cs @@ -24,7 +24,7 @@ public sealed partial class RattleOnTriggerComponent : BaseXOnTriggerComponent [DataField] public Dictionary Messages = new() { - {MobState.Critical, "deathrattle-implant-critical-message"}, - {MobState.Dead, "deathrattle-implant-dead-message"} + {MobState.Critical, "rattle-on-trigger-critical-message"}, + {MobState.Dead, "rattle-on-trigger-dead-message"} }; } diff --git a/Content.Shared/Trigger/Components/Effects/ScramOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/ScramOnTriggerComponent.cs new file mode 100644 index 0000000000..bacf0f69e8 --- /dev/null +++ b/Content.Shared/Trigger/Components/Effects/ScramOnTriggerComponent.cs @@ -0,0 +1,25 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Trigger.Components.Effects; + +/// +/// Randomly teleports the entity when triggered. +/// If TargetUser is true the user will be teleported instead. +/// Used for scram implants. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ScramOnTriggerComponent : BaseXOnTriggerComponent +{ + /// + /// Up to how far to teleport the entity. + /// + [DataField, AutoNetworkedField] + public float TeleportRadius = 100f; + + /// + /// the sound to play when teleporting. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier TeleportSound = new SoundPathSpecifier("/Audio/Effects/teleport_arrival.ogg"); +} diff --git a/Content.Shared/Trigger/Components/Effects/UncuffOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/UncuffOnTriggerComponent.cs new file mode 100644 index 0000000000..770882f3e6 --- /dev/null +++ b/Content.Shared/Trigger/Components/Effects/UncuffOnTriggerComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Trigger.Components.Effects; + +/// +/// Removes a pair of handcuffs from the entity. +/// If TargetUser is true the user will be uncuffed instead. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class UncuffOnTriggerComponent : BaseXOnTriggerComponent; diff --git a/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs new file mode 100644 index 0000000000..246c6a8c7a --- /dev/null +++ b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs @@ -0,0 +1,62 @@ +using Content.Shared.DetailExaminable; +using Content.Shared.Forensics.Systems; +using Content.Shared.Humanoid; +using Content.Shared.IdentityManagement; +using Content.Shared.Preferences; +using Content.Shared.Popups; +using Content.Shared.Trigger.Components.Effects; +using Robust.Shared.Network; + +namespace Content.Shared.Trigger.Systems; + +public sealed class DnaScrambleOnTriggerSystem : EntitySystem +{ + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoidAppearance = default!; + [Dependency] private readonly SharedIdentitySystem _identity = default!; + [Dependency] private readonly SharedForensicsSystem _forensics = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly INetManager _net = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTrigger); + } + + private void OnTrigger(Entity ent, ref TriggerEvent args) + { + if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) + return; + + var target = ent.Comp.TargetUser ? args.User : ent.Owner; + + if (target == null) + return; + + if (!TryComp(target, out var humanoid)) + return; + + args.Handled = true; + + // Randomness will mispredict + // and LoadProfile causes a debug assert on the client at the moment. + if (_net.IsClient) + return; + + var newProfile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species); + _humanoidAppearance.LoadProfile(target.Value, newProfile, humanoid); + _metaData.SetEntityName(target.Value, newProfile.Name, raiseEvents: false); // raising events would update ID card, station record, etc. + + // If the entity has the respective components, then scramble the dna and fingerprint strings. + _forensics.RandomizeDNA(target.Value); + _forensics.RandomizeFingerprint(target.Value); + + RemComp(target.Value); // remove MRP+ custom description if one exists + _identity.QueueIdentityUpdate(target.Value); // manually queue identity update since we don't raise the event + + // Can't use PopupClient or PopupPredicted because the trigger might be unpredicted. + _popup.PopupEntity(Loc.GetString("scramble-on-trigger-popup"), target.Value, target.Value); + } +} diff --git a/Content.Shared/Trigger/Systems/ScramOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/ScramOnTriggerSystem.cs new file mode 100644 index 0000000000..163012cec5 --- /dev/null +++ b/Content.Shared/Trigger/Systems/ScramOnTriggerSystem.cs @@ -0,0 +1,151 @@ +using System.Numerics; +using Content.Shared.Movement.Pulling.Components; +using Content.Shared.Movement.Pulling.Systems; +using Content.Shared.Physics; +using Content.Shared.Trigger.Components.Effects; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Network; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Collections; +using Robust.Shared.Random; + +namespace Content.Shared.Trigger.Systems; + +public sealed class ScramOnTriggerSystem : EntitySystem +{ + [Dependency] private readonly PullingSystem _pulling = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly INetManager _net = default!; + + private EntityQuery _physicsQuery; + private HashSet> _targetGrids = new(); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTrigger); + + _physicsQuery = GetEntityQuery(); + } + + private void OnTrigger(Entity ent, ref TriggerEvent args) + { + if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) + return; + + var target = ent.Comp.TargetUser ? args.User : ent.Owner; + + if (target == null) + return; + + // We need stop the user from being pulled so they don't just get "attached" with whoever is pulling them. + // This can for example happen when the user is cuffed and being pulled. + if (TryComp(target, out var pull) && _pulling.IsPulled(target.Value, pull)) + _pulling.TryStopPull(ent, pull); + + // Check if the user is pulling anything, and drop it if so. + if (TryComp(target, out var puller) && TryComp(puller.Pulling, out var pullable)) + _pulling.TryStopPull(puller.Pulling.Value, pullable); + + _audio.PlayPredicted(ent.Comp.TeleportSound, ent, args.User); + + // Can't predict picking random grids and the target location might be out of PVS range. + if (_net.IsClient) + return; + + var xform = Transform(target.Value); + var targetCoords = SelectRandomTileInRange(xform, ent.Comp.TeleportRadius); + + if (targetCoords != null) + { + _transform.SetCoordinates(target.Value, targetCoords.Value); + args.Handled = true; + } + } + + private EntityCoordinates? SelectRandomTileInRange(TransformComponent userXform, float radius) + { + var userCoords = _transform.ToMapCoordinates(userXform.Coordinates); + _targetGrids.Clear(); + _lookup.GetEntitiesInRange(userCoords, radius, _targetGrids); + Entity? targetGrid = null; + + if (_targetGrids.Count == 0) + return null; + + // Give preference to the grid the entity is currently on. + // This does not guarantee that if the probability fails that the owner's grid won't be picked. + // In reality the probability is higher and depends on the number of grids. + if (userXform.GridUid != null && TryComp(userXform.GridUid, out var gridComp)) + { + var userGrid = new Entity(userXform.GridUid.Value, gridComp); + if (_random.Prob(0.5f)) + { + _targetGrids.Remove(userGrid); + targetGrid = userGrid; + } + } + + if (targetGrid == null) + targetGrid = _random.GetRandom().PickAndTake(_targetGrids); + + EntityCoordinates? targetCoords = null; + + do + { + var valid = false; + + var range = (float)Math.Sqrt(radius); + var box = Box2.CenteredAround(userCoords.Position, new Vector2(range, range)); + var tilesInRange = _map.GetTilesEnumerator(targetGrid.Value.Owner, targetGrid.Value.Comp, box, false); + var tileList = new ValueList(); + + while (tilesInRange.MoveNext(out var tile)) + { + tileList.Add(tile.GridIndices); + } + + while (tileList.Count != 0) + { + var tile = tileList.RemoveSwap(_random.Next(tileList.Count)); + valid = true; + foreach (var entity in _map.GetAnchoredEntities(targetGrid.Value.Owner, targetGrid.Value.Comp, + tile)) + { + if (!_physicsQuery.TryGetComponent(entity, out var body)) + continue; + + if (body.BodyType != BodyType.Static || + !body.Hard || + (body.CollisionLayer & (int)CollisionGroup.MobMask) == 0) + continue; + + valid = false; + break; + } + + if (valid) + { + targetCoords = new EntityCoordinates(targetGrid.Value.Owner, + _map.TileCenterToVector(targetGrid.Value, tile)); + break; + } + } + + if (valid || _targetGrids.Count == 0) // if we don't do the check here then PickAndTake will blow up on an empty set. + break; + + targetGrid = _random.GetRandom().PickAndTake(_targetGrids); + } while (true); + + return targetCoords; + } +} diff --git a/Content.Shared/Trigger/Systems/UncuffOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/UncuffOnTriggerSystem.cs new file mode 100644 index 0000000000..9b83c4cf8e --- /dev/null +++ b/Content.Shared/Trigger/Systems/UncuffOnTriggerSystem.cs @@ -0,0 +1,34 @@ +using Content.Shared.Cuffs; +using Content.Shared.Cuffs.Components; +using Content.Shared.Trigger.Components.Effects; + +namespace Content.Shared.Trigger.Systems; + +public sealed class UncuffOnTriggerSystem : EntitySystem +{ + [Dependency] private readonly SharedCuffableSystem _cuffable = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTrigger); + } + + private void OnTrigger(Entity ent, ref TriggerEvent args) + { + if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key)) + return; + + var target = ent.Comp.TargetUser ? args.User : ent.Owner; + + if (target == null) + return; + + if (!TryComp(target.Value, out var cuffs) || cuffs.Container.ContainedEntities.Count < 1) + return; + + _cuffable.Uncuff(target.Value, args.User, cuffs.LastAddedCuffs); + args.Handled = true; + } +} diff --git a/Resources/Locale/en-US/implant/implant.ftl b/Resources/Locale/en-US/implant/implant.ftl index 8cddef4c81..3f38ae443f 100644 --- a/Resources/Locale/en-US/implant/implant.ftl +++ b/Resources/Locale/en-US/implant/implant.ftl @@ -25,12 +25,3 @@ implanter-label-draw = [color=red]{$implantName}[/color] Mode: [color=white]{$modeString}[/color] implanter-contained-implant-text = [color=green]{$desc}[/color] - -## Implant Popups - -scramble-implant-activated-popup = Your appearance shifts and changes! - -## Implant Messages - -deathrattle-implant-dead-message = {$user} has died {$position}. -deathrattle-implant-critical-message = {$user} life signs critical, immediate assistance required {$position}. diff --git a/Resources/Locale/en-US/triggers/rattle-on-trigger.ftl b/Resources/Locale/en-US/triggers/rattle-on-trigger.ftl new file mode 100644 index 0000000000..3d090f1ae3 --- /dev/null +++ b/Resources/Locale/en-US/triggers/rattle-on-trigger.ftl @@ -0,0 +1,2 @@ +rattle-on-trigger-dead-message = {$user} has died {$position}. +rattle-on-trigger-critical-message = {$user} life signs critical, immediate assistance required {$position}. diff --git a/Resources/Locale/en-US/triggers/scramble-on-trigger.ftl b/Resources/Locale/en-US/triggers/scramble-on-trigger.ftl new file mode 100644 index 0000000000..1e84766032 --- /dev/null +++ b/Resources/Locale/en-US/triggers/scramble-on-trigger.ftl @@ -0,0 +1 @@ +scramble-on-trigger-popup = Your appearance shifts and changes! diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index e6587ae6b8..97435c229d 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -121,7 +121,7 @@ state: gib - type: entity - parent: BaseAction + parent: BaseImplantAction id: ActionActivateFreedomImplant name: Break Free description: Activating your freedom implant will free you from any hand restraints @@ -135,8 +135,6 @@ icon: sprite: Actions/Implants/implants.rsi state: freedom - - type: InstantAction - event: !type:UseFreedomImplantEvent - type: entity parent: BaseAction @@ -171,7 +169,7 @@ state: icon - type: entity - parent: BaseAction + parent: BaseImplantAction id: ActionActivateScramImplant name: SCRAM! description: Randomly teleports you within a large distance. @@ -186,11 +184,9 @@ icon: sprite: Structures/Specific/anomaly.rsi state: anom4 - - type: InstantAction - event: !type:UseScramImplantEvent - type: entity - parent: BaseAction + parent: BaseImplantAction id: ActionActivateDnaScramblerImplant name: Scramble DNA description: Randomly changes your name and appearance. @@ -205,8 +201,6 @@ icon: sprite: Clothing/OuterClothing/Hardsuits/lingspacesuit.rsi state: icon - - type: InstantAction - event: !type:UseDnaScramblerImplantEvent - type: entity parent: BaseAction @@ -409,12 +403,12 @@ components: - type: Action useDelay: 8 - icon: + icon: sprite: Interface/Actions/jump.rsi state: icon - type: InstantAction event: !type:GravityJumpEvent {} - + - type: entity parent: BaseToggleAction id: ActionToggleRootable diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index a369a730cf..6a4ad24664 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -135,11 +135,14 @@ description: This implant lets the user break out of hand restraints up to three times before ceasing to function anymore. categories: [ HideSpawnMenu ] components: - - type: SubdermalImplant - implantAction: ActionActivateFreedomImplant - whitelist: - components: - - Cuffable # useless if you cant be cuffed + - type: SubdermalImplant + implantAction: ActionActivateFreedomImplant + whitelist: + components: + - Cuffable # useless if you cant be cuffed + - type: TriggerOnActivateImplant + - type: UncuffOnTrigger + targetUser: true - type: entity parent: BaseSubdermalImplant @@ -198,7 +201,8 @@ - type: SubdermalImplant implantAction: ActionActivateScramImplant - type: TriggerOnActivateImplant - - type: ScramImplant + - type: ScramOnTrigger + targetUser: true - type: entity parent: BaseSubdermalImplant @@ -207,11 +211,15 @@ description: This implant lets the user randomly change their appearance and name once. categories: [ HideSpawnMenu ] components: - - type: SubdermalImplant - implantAction: ActionActivateDnaScramblerImplant - whitelist: - components: - - HumanoidAppearance # syndies cant turn hamlet into a human + - type: SubdermalImplant + implantAction: ActionActivateDnaScramblerImplant + whitelist: + components: + - HumanoidAppearance # syndies cant turn hamlet into a human + - type: TriggerOnActivateImplant + - type: DnaScrambleOnTrigger + targetUser: true + - type: DeleteOnTrigger - type: entity categories: [ HideSpawnMenu, Spawner ] From f76e3b63b73adeb461b095c73222d072379dff06 Mon Sep 17 00:00:00 2001 From: poklj Date: Wed, 6 Aug 2025 16:55:49 -0300 Subject: [PATCH 04/33] Changeling devour and transform (#34002) * Initial: Create Devour componentry, preliminary identity storage and the systems for Devouring * I have genuinely no idea what i'm doing - added the radial menu, it has nothing in it. - trying to get it to populate. the event under the event is broken, i don't know why, but apparently it's not typed right - Added a placeholder transform - oh also fixed up some devour stuff and moved some things around. * Holey moley, Transform, better devour, oh my! - Move DnaComponent into Shared because we need it for the DNA cloning - Make Transform MOSTLY work on the LAST identity devoured. - Fix some issues on devour that involved prediction, canceling and Damage exeucting (Thanks Plykiya for pointing out AttemptFrequency!) * Proper tail stealing and Damage modifier attempt Add check to add a wagging component on the Changeling if the victim's species Prototype had one. attempt to add the Damage mitigation check * MAJOR CLEANUP AND FIXES AUGH 3 DAYS!!! - Nullspaced a clone of a victim - fix audio using server virtualized Pvs (i hate this) - fix the mispredicted doafters - Clean up a wholelotta code - utilize clone systems to clone appearances - Move CloneAppearance from server to shared So we can actually access it * Examine stuff, more cleanup, Jumpsuit ripping - make rotting prevent the action - Add ripping of clothing (guh why is it also server) - add some System stuff for pushing husked corpse inspection - clean up more badcode * Doing things properly, UI sorta kinda works. - Utilize Relayed events for Devour checking - Get a UI that partially works, Says the name of identities, doesn't show their looks - Make use of the New Dynamic BUI assignment - commit the sin of no client prediction cause nullspace entities aren't networked * Got an entity for the Frontend transform Issue with the looks * Stick a camera into a fake mobs forehead - Get the UI to see the net entity in pause space by using a ViewSubscriber to get the Pvs from the initially stored identity entity - Remove all the other parts used to try to get this to work before hand * Raaaaadiallllllls also fix protection coefficents - Change FancyWindow to Radial - Fix Issue where coeffeient checking was the wrong way round * absolutely massive cleanup, no more camera in mobs - cleaned up event variables that are not needed - Removed the use of a Pause space and go back to Nullspace usage - use a PvsOverride rather than ViewSharing - Remove old commented out code and Lots of unused code * Fix "Ui elements" dying on the screen - some minor cleanup - don't start the entities that get cloned * ftl, cleanup, and fixing missing transform details - add replace functionality to TypingIndicatorSystem and BodyEmotesSystem - add placeholder sounds and functions to TransformBodyEmotes - add extra Pvs handling for later use - attributions for the funny straw sound - Sound collections for all of the sounds - various cleanups * Some extra cleanup * Fix some false assumptions about TypingIndicator - Bubbles now transfer on spawned humans rather than used humans - Clean up YET MORE CODE - make it so you can't eat yourself * Oooprs, forgot to add a Husked Corpse Loc * Missing period in the husked corpse loc * bad devour windup placeholder * Husking and WIP Lungs - Husking now will be prevented from Revival fully and will change the appearance of players * Add finalized Sprites for actions and final meta - add devour on and off sprites - add transform action sprite - Add Armblade sprite for future use - Credit obscenelytinyshark for the sprites <3 * Remove ling lungs, Entity<> everything - Remove the ling lungs stuff for now... body system is overly complicated, makes my head hurt - Switch every method to use Entity<> from Uid, Comp format * cleanup, admin logging, WIP Roles * Admin verb, Roundstart, gamerule stuff - add a Admin verb to make Changelingification easy! - Add game rule stuff for admin verb and to tell the hapless goober how to be a changeling... sorta - clean up parts to make VV easy... USE THE VERB!! * Armor Coefficent Check - Remove bespoke changeling armor check and replace it with a generic armor coefficient query. * move to UnrevivableComponent instead of husked - Move UnrevivableComponent to shared - add Analyzable and ReasonMessage to UnrevivableComponent to give granular control of the message and whether or not it shows up in the analyzer - remove the check for HuskedComponent in DefibrillatorSystem * aaaaaaa CopyComp - Some cleanup - make Vocal system shared - make VocalSystem Not make more Actions than it needs - Use some code from ChameleonProjector so we can copy components - partially ungod method the Transform system * Cleanup, Moving more things to CopyComp - TransformBodyEmotes now uses CopyComp (it's a server component so i need to tell the server to deal with it - TypingIndicatorComponent also now uses CopyComp - cleaned up old, now unused "replace" methods in favor of CopyComp - BodyEmotesSystem now has a publically accessable LoadSounds to deal with the same problem Screaming had * WIP * Devour Windup noise, ForensicsSystem cleanup * Revert VocalSystem Changes - Reverted Moving VocalSystem to shared, copy comp acomplishes it - added component.ScreamActionEntity = null; for copy comp * cleanup unneeded comments * revert an accidental line removal * Remove duplicate SharedHumanoidAppearanceSystem * Cleanup Typo's and import Forensics components for Dna * Some more forensics calls * cleanup use CopyComp for now until CopyComps * CR cleanup * Undo some SharedHumanoidAppearanceSystem changes * Confound these spaces * Some Copycomp stuff and fixing some PVS override * use the proper TryCopyComps that are merged * Change TransformMenu with RadialWithSector * All sounds done, Fix lack of typing indicator issue * Updated attributions to include used sound authors * some ftl typos and mind_role text issue * DNA, Screaming, appearance, grammar, wagging - reduced all of the above using ApplyComponentChanges - Issue still remains with bodyEmotes sticking around in the UI * Fix UI stuff, partials, entprotoid, good practices - bunch of partials added - UI now has a predicted message - EntProtoID in the admin verb - RipClothing now uses Entity - husking is now optional (off by default) for testing/till we have hivemind/when we figure out what were doing with devour - remove TransformGrammarSet * More CR stuff and documentation - Make TargetIsProtected less of a meme, with a prototype set of DamageTypes to check - Documenation everywhere - Move DevourEvents into its own file * Predicted sounds and fix the comp clone list - Made all start and stop sounds shared - Split out the rest of the events and UI stuff into subfiles - Fixed some Clone comp list issues where comments had -'s causing them to be read incorrectly * Damage cap check, Identity Shutdown cleanup, cleanup * Sound stuff (but actually this time) * Missed documentation * Missed Documentation and a EntProtoId * Remove unused dependency * Remove a nullcheck * Some dummy minplayers * CR - Husked now uses a rem/ensure * Update Actions in the Prototype * Fixup mindswap handover - cleanup and handover PVS on mindswap * Fixup Missing meta from accidental "Take-theirs" * Add the Armblade to the roundstart-role * Cleanup, CR (everything but the UI and renames) * missed a spot * missed some more whitespace * Renames * Primary constructor and a space in these trying times * User interface stuff for Slime transformation * popup prediction * Ling devour no longer makes duplicate identities - added a key to identities to the original victim - Add some extra clone settings * add guard statements to OnClones * SentOnlyToOwner additions * fix for sound stoppage error * Move Organ deleter into soon to be atomized husk * clone event inventory * mono sounds * lower sound volume * Fix networked sound warning * Clone comps thing * review * attributions * Fix clobbered changes * I'm gonna weh out - whole bunch of CR changes * fix some very buggy git * okay its fixed * address most review points * fix inventory * we hate entityuids * fix test and more cleanup * move this * fix more stuff * fix validation and rootable * Remove Quickswitch due to some UI quirks * oops left out some better explanation * remove dangling LastConsumed component fields * fix test fail * try this * cleanup cloning subscriptions, add movement speed modifier * fix slime storage * fix cloning setting inheritance * Add session information to transform admin logs * slay the integration test hydra * dwarf size * more volume tweaks * comments * improve comments and unpredict deletion due to errors when shutting down the server * fix displancement cloning --------- Co-authored-by: ScarKy0 Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../ChangelingTransformBoundUserInterface.cs | 35 +++ .../Transform/ChangelingTransformMenu.xaml | 8 + .../Transform/ChangelingTransformMenu.xaml.cs | 60 ++++ Content.Client/Cloning/CloningSystem.cs | 5 + .../Storage/Systems/StorageSystem.cs | 5 + .../Systems/AdminVerbSystem.Antags.cs | 21 +- .../Cloning/CloningSystem.Subscriptions.cs | 83 ++++-- Content.Server/Cloning/CloningSystem.cs | 13 +- .../Emoting/Components/BodyEmotesComponent.cs | 11 +- .../Emoting/Systems/BodyEmotesSystem.cs | 14 +- .../GameTicking/Rules/ChangelingRuleSystem.cs | 23 ++ .../Components/ChangelingRuleComponent.cs | 7 + .../Components/ParadoxCloneRuleComponent.cs | 2 +- .../Speech/EntitySystems/VocalSystem.cs | 20 ++ Content.Server/Wagging/WaggingSystem.cs | 10 + .../Changeling/ChangelingIdentityComponent.cs | 35 +++ .../Changeling/ChangelingIdentitySystem.cs | 180 ++++++++++++ .../Changeling/ChangelingRoleComponent.cs | 9 + .../ChangelingStoredIdentityComponent.cs | 29 ++ .../Devour/ChangelingDevourComponent.cs | 133 +++++++++ .../Devour/ChangelingDevourSystem.Events.cs | 22 ++ .../Devour/ChangelingDevourSystem.cs | 276 ++++++++++++++++++ .../Transform/ChangelingTransformComponent.cs | 54 ++++ .../ChangelingTransformSystem.Events.cs | 16 + .../Transform/ChangelingTransformSystem.UI.cs | 33 +++ .../Transform/ChangelingTransformSystem.cs | 180 ++++++++++++ Content.Shared/Cloning/SharedCloningSystem.cs | 14 + .../SharedHumanoidAppearanceSystem.cs | 26 +- .../Inventory/InventorySystem.Slots.cs | 19 ++ .../Systems/MovementSpeedModifierSystem.cs | 15 + .../Rootable/SharedRootableSystem.cs | 16 + .../Sericulture/SericultureSystem.cs | 2 +- Content.Shared/Speech/SpeechComponent.cs | 12 +- .../EntitySystems/SharedStorageSystem.cs | 59 +++- .../Audio/Effects/Changeling/attributions.yml | 19 ++ .../Changeling/changeling_transform.ogg | Bin 0 -> 58013 bytes .../Effects/Changeling/devour_consume.ogg | Bin 0 -> 109553 bytes .../Audio/Effects/Changeling/devour_suck.ogg | Bin 0 -> 295159 bytes .../Effects/Changeling/devour_windup.ogg | Bin 0 -> 36705 bytes .../Locale/en-US/administration/antag.ftl | 3 + .../Locale/en-US/changeling/changeling.ftl | 20 ++ Resources/Locale/en-US/mind/role-types.ftl | 1 + Resources/Prototypes/Antag/changeling.yml | 35 +++ .../Prototypes/Entities/Mobs/Player/clone.yml | 85 ++++-- Resources/Prototypes/GameRules/roundstart.yml | 24 ++ .../Prototypes/Roles/Antags/changeling.yml | 6 + .../Prototypes/Roles/MindRoles/mind_roles.yml | 13 + .../SoundCollections/changeling.yml | 14 + .../Actions/changeling.rsi/devour.png | Bin 0 -> 1823 bytes .../Actions/changeling.rsi/devour_on.png | Bin 0 -> 2320 bytes .../Actions/changeling.rsi/meta.json | 9 + .../Actions/changeling.rsi/transform.png | Bin 0 -> 2055 bytes 52 files changed, 1583 insertions(+), 93 deletions(-) create mode 100644 Content.Client/Changeling/Transform/ChangelingTransformBoundUserInterface.cs create mode 100644 Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml create mode 100644 Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml.cs create mode 100644 Content.Client/Cloning/CloningSystem.cs create mode 100644 Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs create mode 100644 Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs create mode 100644 Content.Shared/Changeling/ChangelingIdentityComponent.cs create mode 100644 Content.Shared/Changeling/ChangelingIdentitySystem.cs create mode 100644 Content.Shared/Changeling/ChangelingRoleComponent.cs create mode 100644 Content.Shared/Changeling/ChangelingStoredIdentityComponent.cs create mode 100644 Content.Shared/Changeling/Devour/ChangelingDevourComponent.cs create mode 100644 Content.Shared/Changeling/Devour/ChangelingDevourSystem.Events.cs create mode 100644 Content.Shared/Changeling/Devour/ChangelingDevourSystem.cs create mode 100644 Content.Shared/Changeling/Transform/ChangelingTransformComponent.cs create mode 100644 Content.Shared/Changeling/Transform/ChangelingTransformSystem.Events.cs create mode 100644 Content.Shared/Changeling/Transform/ChangelingTransformSystem.UI.cs create mode 100644 Content.Shared/Changeling/Transform/ChangelingTransformSystem.cs create mode 100644 Content.Shared/Cloning/SharedCloningSystem.cs create mode 100644 Resources/Audio/Effects/Changeling/attributions.yml create mode 100644 Resources/Audio/Effects/Changeling/changeling_transform.ogg create mode 100644 Resources/Audio/Effects/Changeling/devour_consume.ogg create mode 100644 Resources/Audio/Effects/Changeling/devour_suck.ogg create mode 100644 Resources/Audio/Effects/Changeling/devour_windup.ogg create mode 100644 Resources/Locale/en-US/changeling/changeling.ftl create mode 100644 Resources/Prototypes/Antag/changeling.yml create mode 100644 Resources/Prototypes/Roles/Antags/changeling.yml create mode 100644 Resources/Prototypes/SoundCollections/changeling.yml create mode 100644 Resources/Textures/Interface/Actions/changeling.rsi/devour.png create mode 100644 Resources/Textures/Interface/Actions/changeling.rsi/devour_on.png create mode 100644 Resources/Textures/Interface/Actions/changeling.rsi/transform.png diff --git a/Content.Client/Changeling/Transform/ChangelingTransformBoundUserInterface.cs b/Content.Client/Changeling/Transform/ChangelingTransformBoundUserInterface.cs new file mode 100644 index 0000000000..8e383bc967 --- /dev/null +++ b/Content.Client/Changeling/Transform/ChangelingTransformBoundUserInterface.cs @@ -0,0 +1,35 @@ +using Content.Shared.Changeling.Transform; +using JetBrains.Annotations; +using Robust.Client.UserInterface; + +namespace Content.Client.Changeling.Transform; + +[UsedImplicitly] +public sealed partial class ChangelingTransformBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey) +{ + private ChangelingTransformMenu? _window; + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + + _window.OnIdentitySelect += SendIdentitySelect; + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + if (state is not ChangelingTransformBoundUserInterfaceState current) + return; + + _window?.UpdateState(current); + } + + public void SendIdentitySelect(NetEntity identityId) + { + SendPredictedMessage(new ChangelingTransformIdentitySelectMessage(identityId)); + } +} diff --git a/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml b/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml new file mode 100644 index 0000000000..38ae0ec715 --- /dev/null +++ b/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml @@ -0,0 +1,8 @@ + + + + diff --git a/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml.cs b/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml.cs new file mode 100644 index 0000000000..beef9ae427 --- /dev/null +++ b/Content.Client/Changeling/Transform/ChangelingTransformMenu.xaml.cs @@ -0,0 +1,60 @@ +using System.Numerics; +using Content.Client.UserInterface.Controls; +using Content.Shared.Changeling.Transform; +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client.Changeling.Transform; + +[GenerateTypedNameReferences] +public sealed partial class ChangelingTransformMenu : RadialMenu +{ + [Dependency] private readonly IEntityManager _entity = default!; + public event Action? OnIdentitySelect; + + public ChangelingTransformMenu() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + } + + public void UpdateState(ChangelingTransformBoundUserInterfaceState state) + { + Main.DisposeAllChildren(); + foreach (var identity in state.Identites) + { + var identityUid = _entity.GetEntity(identity); + + if (!_entity.TryGetComponent(identityUid, out var metadata)) + continue; + + var identityName = metadata.EntityName; + + var button = new ChangelingTransformMenuButton() + { + StyleClasses = { "RadialMenuButton" }, + SetSize = new Vector2(64, 64), + ToolTip = identityName, + }; + + var entView = new SpriteView() + { + SetSize = new Vector2(48, 48), + VerticalAlignment = VAlignment.Center, + HorizontalAlignment = HAlignment.Center, + Stretch = SpriteView.StretchMode.Fill, + }; + entView.SetEntity(identityUid); + button.OnButtonUp += _ => + { + OnIdentitySelect?.Invoke(identity); + Close(); + }; + button.AddChild(entView); + Main.AddChild(button); + } + } +} + +public sealed class ChangelingTransformMenuButton : RadialMenuTextureButtonWithSector; diff --git a/Content.Client/Cloning/CloningSystem.cs b/Content.Client/Cloning/CloningSystem.cs new file mode 100644 index 0000000000..9bfa230295 --- /dev/null +++ b/Content.Client/Cloning/CloningSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Cloning; + +namespace Content.Client.Cloning; + +public sealed partial class CloningSystem : SharedCloningSystem; diff --git a/Content.Client/Storage/Systems/StorageSystem.cs b/Content.Client/Storage/Systems/StorageSystem.cs index bd6659de01..1a21de4b99 100644 --- a/Content.Client/Storage/Systems/StorageSystem.cs +++ b/Content.Client/Storage/Systems/StorageSystem.cs @@ -40,6 +40,11 @@ public sealed class StorageSystem : SharedStorageSystem component.MaxItemSize = state.MaxItemSize; component.Whitelist = state.Whitelist; component.Blacklist = state.Blacklist; + component.StorageInsertSound = state.StorageInsertSound; + component.StorageRemoveSound = state.StorageRemoveSound; + component.StorageOpenSound = state.StorageOpenSound; + component.StorageCloseSound = state.StorageCloseSound; + component.DefaultStorageOrientation = state.DefaultStorageOrientation; _oldStoredItems.Clear(); diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs index 672ae695bf..2b5ea90b12 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Antags.cs @@ -27,9 +27,9 @@ public sealed partial class AdminVerbSystem private static readonly EntProtoId DefaultNukeOpRule = "LoneOpsSpawn"; private static readonly EntProtoId DefaultRevsRule = "Revolutionary"; private static readonly EntProtoId DefaultThiefRule = "Thief"; - private static readonly ProtoId PirateGearId = "PirateGear"; - + private static readonly EntProtoId DefaultChangelingRule = "Changeling"; private static readonly EntProtoId ParadoxCloneRuleId = "ParadoxCloneSpawn"; + private static readonly ProtoId PirateGearId = "PirateGear"; // All antag verbs have names so invokeverb works. private void AddAntagVerbs(GetVerbsEvent args) @@ -58,7 +58,7 @@ public sealed partial class AdminVerbSystem _antag.ForceMakeAntag(targetPlayer, DefaultTraitorRule); }, Impact = LogImpact.High, - Message = string.Join(": ", traitorName, Loc.GetString("admin-verb-make-traitor")), + Message = string.Join(": ", traitorName, Loc.GetString("admin-verb-make-traitor")), }; args.Verbs.Add(traitor); @@ -153,6 +153,21 @@ public sealed partial class AdminVerbSystem }; args.Verbs.Add(thief); + var changelingName = Loc.GetString("admin-verb-text-make-changeling"); + Verb changeling = new() + { + Text = changelingName, + Category = VerbCategory.Antag, + Icon = new SpriteSpecifier.Rsi(new ResPath("/Textures/Objects/Weapons/Melee/armblade.rsi"), "icon"), + Act = () => + { + _antag.ForceMakeAntag(targetPlayer, DefaultChangelingRule); + }, + Impact = LogImpact.High, + Message = string.Join(": ", changelingName, Loc.GetString("admin-verb-make-changeling")), + }; + args.Verbs.Add(changeling); + var paradoxCloneName = Loc.GetString("admin-verb-text-make-paradox-clone"); Verb paradox = new() { diff --git a/Content.Server/Cloning/CloningSystem.Subscriptions.cs b/Content.Server/Cloning/CloningSystem.Subscriptions.cs index eba806ceb8..84ef050305 100644 --- a/Content.Server/Cloning/CloningSystem.Subscriptions.cs +++ b/Content.Server/Cloning/CloningSystem.Subscriptions.cs @@ -1,11 +1,16 @@ using Content.Server.Forensics; +using Content.Server.Speech.EntitySystems; using Content.Shared.Cloning.Events; -using Content.Shared.Clothing.Components; using Content.Shared.FixedPoint; +using Content.Shared.Inventory; using Content.Shared.Labels.Components; using Content.Shared.Labels.EntitySystems; +using Content.Shared.Movement.Components; +using Content.Shared.Movement.Systems; using Content.Shared.Paper; using Content.Shared.Stacks; +using Content.Shared.Speech.Components; +using Content.Shared.Storage; using Content.Shared.Store; using Content.Shared.Store.Components; using Robust.Shared.Prototypes; @@ -13,47 +18,58 @@ using Robust.Shared.Prototypes; namespace Content.Server.Cloning; /// -/// The part of item cloning responsible for copying over important components. -/// This is used for . -/// Anything not copied over here gets reverted to the values the item had in its prototype. +/// The part of item cloning responsible for copying over important components. /// /// -/// This method of copying items is of course not perfect as we cannot clone every single component, which would be pretty much impossible with our ECS. -/// We only consider the most important components so the paradox clone gets similar equipment. -/// This method of using subscriptions was chosen to make it easy for forks to add their own custom components that need to be copied. +/// These are all not part of their corresponding systems because we don't want systems every system to depend on a CloningSystem namespace import, which is still heavily coupled to med code. +/// TODO: Create a more generic "CopyEntity" method/event (probably in RT) that doesn't have this problem and then move all these subscriptions. /// -public sealed partial class CloningSystem : EntitySystem +public sealed partial class CloningSystem { [Dependency] private readonly SharedStackSystem _stack = default!; [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly ForensicsSystem _forensics = default!; [Dependency] private readonly PaperSystem _paper = default!; + [Dependency] private readonly VocalSystem _vocal = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnCloneStack); - SubscribeLocalEvent(OnCloneLabel); - SubscribeLocalEvent(OnClonePaper); - SubscribeLocalEvent(OnCloneForensics); - SubscribeLocalEvent(OnCloneStore); + // These are used for . + // Anything not copied over here gets reverted to the values the item had in its prototype. + // This method of copying items is of course not perfect as we cannot clone every single component, which would be pretty much impossible with our ECS. + // We only consider the most important components so the paradox clone gets similar equipment. + // This method of using subscriptions was chosen to make it easy for forks to add their own custom components that need to be copied. + SubscribeLocalEvent(OnCloneItemStack); + SubscribeLocalEvent(OnCloneItemLabel); + SubscribeLocalEvent(OnCloneItemPaper); + SubscribeLocalEvent(OnCloneItemForensics); + SubscribeLocalEvent(OnCloneItemStore); + + // These are for cloning components that cannot be cloned using CopyComp. + // Put them into CloningSettingsPrototype.EventComponents to have them be applied to the clone. + SubscribeLocalEvent(OnCloneVocal); + SubscribeLocalEvent(OnCloneStorage); + SubscribeLocalEvent(OnCloneInventory); + SubscribeLocalEvent(OnCloneInventory); } - private void OnCloneStack(Entity ent, ref CloningItemEvent args) + private void OnCloneItemStack(Entity ent, ref CloningItemEvent args) { // if the clone is a stack as well, adjust the count of the copy if (TryComp(args.CloneUid, out var cloneStackComp)) _stack.SetCount(args.CloneUid, ent.Comp.Count, cloneStackComp); } - private void OnCloneLabel(Entity ent, ref CloningItemEvent args) + private void OnCloneItemLabel(Entity ent, ref CloningItemEvent args) { // copy the label _label.Label(args.CloneUid, ent.Comp.CurrentLabel); } - private void OnClonePaper(Entity ent, ref CloningItemEvent args) + private void OnCloneItemPaper(Entity ent, ref CloningItemEvent args) { // copy the text and any stamps if (TryComp(args.CloneUid, out var clonePaperComp)) @@ -63,13 +79,13 @@ public sealed partial class CloningSystem : EntitySystem } } - private void OnCloneForensics(Entity ent, ref CloningItemEvent args) + private void OnCloneItemForensics(Entity ent, ref CloningItemEvent args) { // copy any forensics to the cloned item _forensics.CopyForensicsFrom(ent.Comp, args.CloneUid); } - private void OnCloneStore(Entity ent, ref CloningItemEvent args) + private void OnCloneItemStore(Entity ent, ref CloningItemEvent args) { // copy the current amount of currency in the store // at the moment this takes care of uplink implants and the portable nukie uplinks @@ -80,4 +96,35 @@ public sealed partial class CloningSystem : EntitySystem } } + private void OnCloneVocal(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + _vocal.CopyComponent(ent.AsNullable(), args.CloneUid); + } + + private void OnCloneStorage(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + _storage.CopyComponent(ent.AsNullable(), args.CloneUid); + } + + private void OnCloneInventory(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + _inventory.CopyComponent(ent.AsNullable(), args.CloneUid); + } + + private void OnCloneInventory(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + _movementSpeedModifier.CopyComponent(ent.AsNullable(), args.CloneUid); + } } diff --git a/Content.Server/Cloning/CloningSystem.cs b/Content.Server/Cloning/CloningSystem.cs index 97ab41e7b1..b0d62be523 100644 --- a/Content.Server/Cloning/CloningSystem.cs +++ b/Content.Server/Cloning/CloningSystem.cs @@ -24,7 +24,7 @@ namespace Content.Server.Cloning; /// System responsible for making a copy of a humanoid's body. /// For the cloning machines themselves look at CloningPodSystem, CloningConsoleSystem and MedicalScannerSystem instead. /// -public sealed partial class CloningSystem : EntitySystem +public sealed partial class CloningSystem : SharedCloningSystem { [Dependency] private readonly HumanoidAppearanceSystem _humanoidSystem = default!; [Dependency] private readonly InventorySystem _inventory = default!; @@ -84,13 +84,7 @@ public sealed partial class CloningSystem : EntitySystem return true; } - /// - /// Copy components from one entity to another based on a CloningSettingsPrototype. - /// - /// The orignal Entity to clone components from. - /// The target Entity to clone components to. - /// The clone settings prototype containing the list of components to clone. - public void CloneComponents(EntityUid original, EntityUid clone, CloningSettingsPrototype settings) + public override void CloneComponents(EntityUid original, EntityUid clone, CloningSettingsPrototype settings) { var componentsToCopy = settings.Components; var componentsToEvent = settings.EventComponents; @@ -128,7 +122,8 @@ public sealed partial class CloningSystem : EntitySystem } // If the original does not have the component, then the clone shouldn't have it either. - RemComp(clone, componentRegistration.Type); + if (!HasComp(original, componentRegistration.Type)) + RemComp(clone, componentRegistration.Type); } var cloningEv = new CloningEvent(settings, clone); diff --git a/Content.Server/Emoting/Components/BodyEmotesComponent.cs b/Content.Server/Emoting/Components/BodyEmotesComponent.cs index 3fd71def0d..d911a89ec9 100644 --- a/Content.Server/Emoting/Components/BodyEmotesComponent.cs +++ b/Content.Server/Emoting/Components/BodyEmotesComponent.cs @@ -1,6 +1,6 @@ using Content.Server.Emoting.Systems; using Content.Shared.Chat.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Prototypes; namespace Content.Server.Emoting.Components; @@ -14,11 +14,6 @@ public sealed partial class BodyEmotesComponent : Component /// /// Emote sounds prototype id for body emotes. /// - [DataField("soundsId", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string? SoundsId; - - /// - /// Loaded emote sounds prototype used for body emotes. - /// - public EmoteSoundsPrototype? Sounds; + [DataField] + public ProtoId? SoundsId; } diff --git a/Content.Server/Emoting/Systems/BodyEmotesSystem.cs b/Content.Server/Emoting/Systems/BodyEmotesSystem.cs index 594eb0ec6d..aef79f1419 100644 --- a/Content.Server/Emoting/Systems/BodyEmotesSystem.cs +++ b/Content.Server/Emoting/Systems/BodyEmotesSystem.cs @@ -14,15 +14,8 @@ public sealed class BodyEmotesSystem : EntitySystem public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnEmote); - } - private void OnStartup(EntityUid uid, BodyEmotesComponent component, ComponentStartup args) - { - if (component.SoundsId == null) - return; - _proto.TryIndex(component.SoundsId, out component.Sounds); + SubscribeLocalEvent(OnEmote); } private void OnEmote(EntityUid uid, BodyEmotesComponent component, ref EmoteEvent args) @@ -43,6 +36,9 @@ public sealed class BodyEmotesSystem : EntitySystem if (!TryComp(uid, out HandsComponent? hands) || hands.Count <= 0) return false; - return _chat.TryPlayEmoteSound(uid, component.Sounds, emote); + if (!_proto.Resolve(component.SoundsId, out var sounds)) + return false; + + return _chat.TryPlayEmoteSound(uid, sounds, emote); } } diff --git a/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs b/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs new file mode 100644 index 0000000000..a64b0e904a --- /dev/null +++ b/Content.Server/GameTicking/Rules/ChangelingRuleSystem.cs @@ -0,0 +1,23 @@ +using Content.Server.GameTicking.Rules.Components; +using Content.Server.Roles; +using Content.Shared.Changeling; + +namespace Content.Server.GameTicking.Rules; + +/// +/// Game rule system for Changelings +/// +public sealed class ChangelingRuleSystem : GameRuleSystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetBriefing); + } + + private void OnGetBriefing(Entity ent, ref GetBriefingEvent args) + { + args.Append(Loc.GetString("changeling-briefing")); + } +} diff --git a/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs new file mode 100644 index 0000000000..13891c1988 --- /dev/null +++ b/Content.Server/GameTicking/Rules/Components/ChangelingRuleComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.GameTicking.Rules.Components; + +/// +/// Gamerule component for handling a changeling antagonist. +/// +[RegisterComponent] +public sealed partial class ChangelingRuleComponent : Component; diff --git a/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs b/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs index e28a0bc35f..f1e8e41258 100644 --- a/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs +++ b/Content.Server/GameTicking/Rules/Components/ParadoxCloneRuleComponent.cs @@ -14,7 +14,7 @@ public sealed partial class ParadoxCloneRuleComponent : Component /// Cloning settings to be used. /// [DataField] - public ProtoId Settings = "Antag"; + public ProtoId Settings = "ParadoxCloningSettings"; /// /// Visual effect spawned when gibbing at round end. diff --git a/Content.Server/Speech/EntitySystems/VocalSystem.cs b/Content.Server/Speech/EntitySystems/VocalSystem.cs index fb88238288..275140ff5b 100644 --- a/Content.Server/Speech/EntitySystems/VocalSystem.cs +++ b/Content.Server/Speech/EntitySystems/VocalSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Actions; using Content.Server.Chat.Systems; using Content.Server.Speech.Components; using Content.Shared.Chat.Prototypes; +using Content.Shared.Cloning.Events; using Content.Shared.Humanoid; using Content.Shared.Speech; using Content.Shared.Speech.Components; @@ -31,6 +32,25 @@ public sealed class VocalSystem : EntitySystem SubscribeLocalEvent(OnScreamAction); } + /// + /// Copy this component's datafields from one entity to another. + /// This can't use CopyComp because of the ScreamActionEntity DataField, which should not be copied. + /// + public void CopyComponent(Entity source, EntityUid target) + { + if (!Resolve(source, ref source.Comp)) + return; + + var targetComp = EnsureComp(target); + targetComp.Sounds = source.Comp.Sounds; + targetComp.ScreamId = source.Comp.ScreamId; + targetComp.Wilhelm = source.Comp.Wilhelm; + targetComp.WilhelmProbability = source.Comp.WilhelmProbability; + LoadSounds(target, targetComp); + + Dirty(target, targetComp); + } + private void OnMapInit(EntityUid uid, VocalComponent component, MapInitEvent args) { // try to add scream action when vocal comp added diff --git a/Content.Server/Wagging/WaggingSystem.cs b/Content.Server/Wagging/WaggingSystem.cs index 7ccc19e20c..88b82a9ca5 100644 --- a/Content.Server/Wagging/WaggingSystem.cs +++ b/Content.Server/Wagging/WaggingSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Actions; using Content.Server.Humanoid; +using Content.Shared.Cloning.Events; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Mobs; @@ -26,6 +27,15 @@ public sealed class WaggingSystem : EntitySystem SubscribeLocalEvent(OnWaggingShutdown); SubscribeLocalEvent(OnWaggingToggle); SubscribeLocalEvent(OnMobStateChanged); + SubscribeLocalEvent(OnCloning); + } + + private void OnCloning(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + EnsureComp(args.CloneUid); } private void OnWaggingMapInit(EntityUid uid, WaggingComponent component, MapInitEvent args) diff --git a/Content.Shared/Changeling/ChangelingIdentityComponent.cs b/Content.Shared/Changeling/ChangelingIdentityComponent.cs new file mode 100644 index 0000000000..461315f4ce --- /dev/null +++ b/Content.Shared/Changeling/ChangelingIdentityComponent.cs @@ -0,0 +1,35 @@ +using Content.Shared.Cloning; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Changeling; + +/// +/// The storage component for Changelings, it handles the link between a changeling and its consumed identities +/// that exist on a paused map. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class ChangelingIdentityComponent : Component +{ + /// + /// The list of entities that exist on a paused map. They are paused clones of the victims that the ling has consumed, with all relevant components copied from the original. + /// + // TODO: Store a reference to the original entity as well so you cannot infinitely devour somebody. Currently very tricky due the inability to send over EntityUid if the original is ever deleted. Can be fixed by something like WeakEntityReference. + [DataField, AutoNetworkedField] + public List ConsumedIdentities = new(); + + + /// + /// The currently assumed identity. + /// + [DataField, AutoNetworkedField] + public EntityUid? CurrentIdentity; + + /// + /// The cloning settings passed to the CloningSystem, contains a list of all components to copy or have handled by their + /// respective systems. + /// + public ProtoId IdentityCloningSettings = "ChangelingCloningSettings"; + + public override bool SendOnlyToOwner => true; +} diff --git a/Content.Shared/Changeling/ChangelingIdentitySystem.cs b/Content.Shared/Changeling/ChangelingIdentitySystem.cs new file mode 100644 index 0000000000..8f704c49be --- /dev/null +++ b/Content.Shared/Changeling/ChangelingIdentitySystem.cs @@ -0,0 +1,180 @@ +using System.Numerics; +using Content.Shared.Cloning; +using Content.Shared.Humanoid; +using Content.Shared.Mind.Components; +using Content.Shared.NameModifier.EntitySystems; +using Robust.Shared.GameStates; +using Robust.Shared.Map; +using Robust.Shared.Network; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Changeling; + +public sealed class ChangelingIdentitySystem : EntitySystem +{ + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly MetaDataSystem _metaSystem = default!; + [Dependency] private readonly NameModifierSystem _nameMod = default!; + [Dependency] private readonly SharedCloningSystem _cloningSystem = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoidSystem = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly SharedPvsOverrideSystem _pvsOverrideSystem = default!; + + public MapId? PausedMapId; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnMindAdded); + SubscribeLocalEvent(OnMindRemoved); + SubscribeLocalEvent(OnStoredRemove); + } + + private void OnMindAdded(Entity ent, ref MindAddedMessage args) + { + if (!TryComp(args.Container.Owner, out var actor)) + return; + + HandOverPvsOverride(actor.PlayerSession, ent.Comp); + } + + private void OnMindRemoved(Entity ent, ref MindRemovedMessage args) + { + CleanupPvsOverride(ent, args.Container.Owner); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + // Make a backup of our current identity so we can transform back. + var clone = CloneToPausedMap(ent, ent.Owner); + ent.Comp.CurrentIdentity = clone; + } + + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + CleanupPvsOverride(ent, ent.Owner); + CleanupChangelingNullspaceIdentities(ent); + } + + private void OnStoredRemove(Entity ent, ref ComponentRemove args) + { + // The last stored identity is being deleted, we can clean up the map. + if (_net.IsServer && PausedMapId != null && Count() <= 1) + _map.QueueDeleteMap(PausedMapId.Value); + } + + /// + /// Cleanup all nullspaced Identities when the changeling no longer exists + /// + /// the changeling + public void CleanupChangelingNullspaceIdentities(Entity ent) + { + if (_net.IsClient) + return; + + foreach (var consumedIdentity in ent.Comp.ConsumedIdentities) + { + QueueDel(consumedIdentity); + } + } + + /// + /// Clone a target humanoid into nullspace and add it to the Changelings list of identities. + /// It creates a perfect copy of the target and can be used to pull components down for future use + /// + /// the Changeling + /// the targets uid + public EntityUid? CloneToPausedMap(Entity ent, EntityUid target) + { + // Don't create client side duplicate clones or a clientside map. + if (_net.IsClient) + return null; + + if (!TryComp(target, out var humanoid) + || !_prototype.Resolve(humanoid.Species, out var speciesPrototype) + || !_prototype.Resolve(ent.Comp.IdentityCloningSettings, out var settings)) + return null; + + EnsurePausedMap(); + var mob = Spawn(speciesPrototype.Prototype, new MapCoordinates(Vector2.Zero, PausedMapId!.Value)); + + var storedIdentity = EnsureComp(mob); + storedIdentity.OriginalEntity = target; // TODO: network this once we have WeakEntityReference or the autonetworking source gen is fixed + + if (TryComp(target, out var actor)) + storedIdentity.OriginalSession = actor.PlayerSession; + + _humanoidSystem.CloneAppearance(target, mob); + _cloningSystem.CloneComponents(target, mob, settings); + + var targetName = _nameMod.GetBaseName(target); + _metaSystem.SetEntityName(mob, targetName); + ent.Comp.ConsumedIdentities.Add(mob); + + Dirty(ent); + HandlePvsOverride(ent, mob); + + return mob; + } + + /// + /// Simple helper to add a PVS override to a Nullspace Identity + /// + /// + /// + private void HandlePvsOverride(EntityUid uid, EntityUid target) + { + if (!TryComp(uid, out var actor)) + return; + + _pvsOverrideSystem.AddSessionOverride(target, actor.PlayerSession); + } + + /// + /// Cleanup all Pvs Overrides for the owner of the ChangelingIdentity + /// + /// the Changeling itself + /// Who specifically to cleanup from, usually just the same owner, but in the case of a mindswap we want to clean up the victim + private void CleanupPvsOverride(Entity ent, EntityUid entityUid) + { + if (!TryComp(entityUid, out var actor)) + return; + + foreach (var identity in ent.Comp.ConsumedIdentities) + { + _pvsOverrideSystem.RemoveSessionOverride(identity, actor.PlayerSession); + } + } + + /// + /// Inform another Session of the entities stored for Transformation + /// + /// The Session you wish to inform + /// The Target storage of identities + public void HandOverPvsOverride(ICommonSession session, ChangelingIdentityComponent comp) + { + foreach (var entity in comp.ConsumedIdentities) + { + _pvsOverrideSystem.AddSessionOverride(entity, session); + } + } + + /// + /// Create a paused map for storing devoured identities as a clone of the player. + /// + private void EnsurePausedMap() + { + if (_map.MapExists(PausedMapId)) + return; + + var mapUid = _map.CreateMap(out var newMapId); + _metaSystem.SetEntityName(mapUid, "Changeling identity storage map"); + PausedMapId = newMapId; + _map.SetPaused(mapUid, true); + } +} diff --git a/Content.Shared/Changeling/ChangelingRoleComponent.cs b/Content.Shared/Changeling/ChangelingRoleComponent.cs new file mode 100644 index 0000000000..d2e9c1eccb --- /dev/null +++ b/Content.Shared/Changeling/ChangelingRoleComponent.cs @@ -0,0 +1,9 @@ +using Content.Shared.Roles; + +namespace Content.Shared.Changeling; + +/// +/// The Mindrole for Changeling Antags +/// +[RegisterComponent] +public sealed partial class ChangelingRoleComponent : BaseMindRoleComponent; diff --git a/Content.Shared/Changeling/ChangelingStoredIdentityComponent.cs b/Content.Shared/Changeling/ChangelingStoredIdentityComponent.cs new file mode 100644 index 0000000000..44583190e6 --- /dev/null +++ b/Content.Shared/Changeling/ChangelingStoredIdentityComponent.cs @@ -0,0 +1,29 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Player; + +namespace Content.Shared.Changeling; + +/// +/// Marker component for cloned identities devoured by a changeling. +/// These are stored on a paused map so that the changeling can transform into them. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ChangelingStoredIdentityComponent : Component +{ + /// + /// The original entity the identity was cloned from. + /// + /// + /// TODO: Not networked at the moment because it will create PVS errors when the original is somehow deleted. + /// Use WeakEntityReference once it's merged. + /// + [DataField] + public EntityUid? OriginalEntity; + + /// + /// The player session of the original entity, if any. + /// Used for admin logging purposes. + /// + [ViewVariables] + public ICommonSession? OriginalSession; +} diff --git a/Content.Shared/Changeling/Devour/ChangelingDevourComponent.cs b/Content.Shared/Changeling/Devour/ChangelingDevourComponent.cs new file mode 100644 index 0000000000..7798c6fec9 --- /dev/null +++ b/Content.Shared/Changeling/Devour/ChangelingDevourComponent.cs @@ -0,0 +1,133 @@ +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.FixedPoint; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Changeling.Devour; + +/// +/// Component responsible for Changelings Devour attack. Including the amount of damage +/// and how long it takes to devour someone +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +[Access(typeof(ChangelingDevourSystem))] +public sealed partial class ChangelingDevourComponent : Component +{ + /// + /// The Action for devouring + /// + [DataField] + public EntProtoId? ChangelingDevourAction = "ActionChangelingDevour"; + + /// + /// The action entity associated with devouring + /// + [DataField, AutoNetworkedField] + public EntityUid? ChangelingDevourActionEntity; + + /// + /// The whitelist of targets for devouring + /// + [DataField, AutoNetworkedField] + public EntityWhitelist? Whitelist = new() + { + Components = + [ + "MobState", + "HumanoidAppearance", + ], + }; + + /// + /// The Sound to use during consumption of a victim + /// + /// + /// 6 distance due to the default 15 being hearable all the way across PVS. Changeling is meant to be stealthy. + /// 6 still allows the sound to be hearable, but not across an entire department. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? ConsumeNoise = new SoundCollectionSpecifier("ChangelingDevourConsume", AudioParams.Default.WithMaxDistance(6)); + + /// + /// The Sound to use during the windup before consuming a victim + /// + /// + /// 6 distance due to the default 15 being hearable all the way across PVS. Changeling is meant to be stealthy. + /// 6 still allows the sound to be hearable, but not across an entire department. + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? DevourWindupNoise = new SoundCollectionSpecifier("ChangelingDevourWindup", AudioParams.Default.WithMaxDistance(6)); + + /// + /// The time between damage ticks + /// + [DataField, AutoNetworkedField] + public TimeSpan DamageTimeBetweenTicks = TimeSpan.FromSeconds(1); + + /// + /// The windup time before the changeling begins to engage in devouring the identity of a target + /// + [DataField, AutoNetworkedField] + public TimeSpan DevourWindupTime = TimeSpan.FromSeconds(2); + + /// + /// The time it takes to FULLY consume someones identity. + /// + [DataField, AutoNetworkedField] + public TimeSpan DevourConsumeTime = TimeSpan.FromSeconds(10); + + /// + /// Damage cap that a target is allowed to be caused due to IdentityConsumption + /// + [DataField, AutoNetworkedField] + public float DevourConsumeDamageCap = 350f; + + /// + /// The Currently active devour sound in the world + /// + [DataField] + public EntityUid? CurrentDevourSound; + + /// + /// The damage profile for a single tick of devour damage + /// + [DataField, AutoNetworkedField] + public DamageSpecifier DamagePerTick = new() + { + DamageDict = new Dictionary + { + { "Slash", 10}, + { "Piercing", 10 }, + { "Blunt", 5 }, + }, + }; + + /// + /// The list of protective damage types capable of preventing a devour if over the threshold + /// + [DataField, AutoNetworkedField] + public List> ProtectiveDamageTypes = new() + { + "Slash", + "Piercing", + "Blunt", + }; + + /// + /// The next Tick to deal damage on (utilized during the consumption "do-during" (a do after with an attempt event)) + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField] + public TimeSpan NextTick = TimeSpan.Zero; + + /// + /// The percentage of ANY brute damage resistance that will prevent devouring + /// + [DataField, AutoNetworkedField] + public float DevourPreventionPercentageThreshold = 0.1f; + + public override bool SendOnlyToOwner => true; +} diff --git a/Content.Shared/Changeling/Devour/ChangelingDevourSystem.Events.cs b/Content.Shared/Changeling/Devour/ChangelingDevourSystem.Events.cs new file mode 100644 index 0000000000..d063737e5c --- /dev/null +++ b/Content.Shared/Changeling/Devour/ChangelingDevourSystem.Events.cs @@ -0,0 +1,22 @@ +using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Changeling.Devour; + +/// +/// Action event for Devour, someone has initiated a devour on someone, begin to windup. +/// +public sealed partial class ChangelingDevourActionEvent : EntityTargetActionEvent; + +/// +/// A windup has either successfully been completed or has been canceled. If successful start the devouring DoAfter. +/// +[Serializable, NetSerializable] +public sealed partial class ChangelingDevourWindupDoAfterEvent : SimpleDoAfterEvent; + +/// +/// The Consumption DoAfter has either successfully been completed or was canceled. +/// +[Serializable, NetSerializable] +public sealed partial class ChangelingDevourConsumeDoAfterEvent : SimpleDoAfterEvent; diff --git a/Content.Shared/Changeling/Devour/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Devour/ChangelingDevourSystem.cs new file mode 100644 index 0000000000..83a589a8e3 --- /dev/null +++ b/Content.Shared/Changeling/Devour/ChangelingDevourSystem.cs @@ -0,0 +1,276 @@ +using Content.Shared.Actions; +using Content.Shared.Administration.Logs; +using Content.Shared.Armor; +using Content.Shared.Atmos.Rotting; +using Content.Shared.Body.Components; +using Content.Shared.Damage; +using Content.Shared.Database; +using Content.Shared.DoAfter; +using Content.Shared.Humanoid; +using Content.Shared.IdentityManagement; +using Content.Shared.Inventory; +using Content.Shared.Mobs.Systems; +using Content.Shared.Nutrition.Components; +using Content.Shared.Popups; +using Content.Shared.Storage; +using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Changeling.Devour; + +public sealed class ChangelingDevourSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly ChangelingIdentitySystem _changelingIdentitySystem = default!; + [Dependency] private readonly InventorySystem _inventorySystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly IRobustRandom _robustRandom = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnDevourAction); + SubscribeLocalEvent(OnDevourWindup); + SubscribeLocalEvent(OnDevourConsume); + SubscribeLocalEvent>(OnConsumeAttemptTick); + SubscribeLocalEvent(OnShutdown); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + _actionsSystem.AddAction(ent, ref ent.Comp.ChangelingDevourActionEntity, ent.Comp.ChangelingDevourAction); + } + + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + if (ent.Comp.ChangelingDevourActionEntity != null) + { + _actionsSystem.RemoveAction(ent.Owner, ent.Comp.ChangelingDevourActionEntity); + } + } + + //TODO: Allow doafters to have proper update loop support. Attempt events should not be doing state changes. + private void OnConsumeAttemptTick(Entity ent, + ref DoAfterAttemptEvent eventData) + { + + var curTime = _timing.CurTime; + + if (curTime < ent.Comp.NextTick) + return; + + ConsumeDamageTick(eventData.Event.Target, ent.Comp, eventData.Event.User); + ent.Comp.NextTick += ent.Comp.DamageTimeBetweenTicks; + Dirty(ent, ent.Comp); + } + + private void ConsumeDamageTick(EntityUid? target, ChangelingDevourComponent comp, EntityUid? user) + { + if (target == null) + return; + + if (!TryComp(target, out var damage)) + return; + + foreach (var damagePoints in comp.DamagePerTick.DamageDict) + { + + if (damage.Damage.DamageDict.TryGetValue(damagePoints.Key, out var val) && val > comp.DevourConsumeDamageCap) + return; + } + _damageable.TryChangeDamage(target, comp.DamagePerTick, true, true, damage, user); + } + + /// + /// Checkes if the targets outerclothing is beyond a DamageCoefficientThreshold to protect them from being devoured. + /// + /// The Targeted entity + /// Changelings Devour Component + /// Is the target Protected from the attack + private bool IsTargetProtected(EntityUid target, Entity ent) + { + var ev = new CoefficientQueryEvent(SlotFlags.OUTERCLOTHING); + + RaiseLocalEvent(target, ev); + + foreach (var compProtectiveDamageType in ent.Comp.ProtectiveDamageTypes) + { + if (!ev.DamageModifiers.Coefficients.TryGetValue(compProtectiveDamageType, out var coefficient)) + continue; + if (coefficient < 1f - ent.Comp.DevourPreventionPercentageThreshold) + return true; + } + + return false; + } + + private void OnDevourAction(Entity ent, ref ChangelingDevourActionEvent args) + { + if (args.Handled || _whitelistSystem.IsWhitelistFailOrNull(ent.Comp.Whitelist, args.Target) + || !HasComp(ent)) + return; + + args.Handled = true; + var target = args.Target; + + if (target == ent.Owner) + return; // don't eat yourself + + if (HasComp(target)) + { + _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-rotting"), args.Performer, args.Performer, PopupType.Medium); + return; + } + + if (IsTargetProtected(target, ent)) + { + _popupSystem.PopupClient(Loc.GetString("changeling-devour-attempt-failed-protected"), ent, ent, PopupType.Medium); + return; + } + + if (_net.IsServer) + { + var pvsSound = _audio.PlayPvs(ent.Comp.DevourWindupNoise, ent); + if (pvsSound != null) + ent.Comp.CurrentDevourSound = pvsSound.Value.Entity; + } + + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ent:player} started changeling devour windup against {target:player}"); + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, ent, ent.Comp.DevourWindupTime, new ChangelingDevourWindupDoAfterEvent(), ent, target: target, used: ent) + { + BreakOnMove = true, + BlockDuplicate = true, + DuplicateCondition = DuplicateConditions.None, + }); + + var selfMessage = Loc.GetString("changeling-devour-begin-windup-self", ("user", Identity.Entity(ent.Owner, EntityManager))); + var othersMessage = Loc.GetString("changeling-devour-begin-windup-others", ("user", Identity.Entity(ent.Owner, EntityManager))); + _popupSystem.PopupPredicted( + selfMessage, + othersMessage, + args.Performer, + args.Performer, + PopupType.MediumCaution); + } + + private void OnDevourWindup(Entity ent, ref ChangelingDevourWindupDoAfterEvent args) + { + var curTime = _timing.CurTime; + args.Handled = true; + + if (!EntityManager.EntityExists(ent.Comp.CurrentDevourSound)) + _audio.Stop(ent.Comp.CurrentDevourSound!); + + if (args.Cancelled) + return; + + var selfMessage = Loc.GetString("changeling-devour-begin-consume-self", ("user", Identity.Entity(ent.Owner, EntityManager))); + var othersMessage = Loc.GetString("changeling-devour-begin-consume-others", ("user", Identity.Entity(ent.Owner, EntityManager))); + _popupSystem.PopupPredicted( + selfMessage, + othersMessage, + args.User, + args.User, + PopupType.LargeCaution); + + if (_net.IsServer) + { + var pvsSound = _audio.PlayPvs(ent.Comp.ConsumeNoise, ent); + + if (pvsSound != null) + ent.Comp.CurrentDevourSound = pvsSound.Value.Entity; + } + + + ent.Comp.NextTick = curTime + ent.Comp.DamageTimeBetweenTicks; + + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner):player} began to devour {ToPrettyString(args.Target):player} identity"); + + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, + ent, + ent.Comp.DevourConsumeTime, + new ChangelingDevourConsumeDoAfterEvent(), + ent, + target: args.Target, + used: ent) + { + AttemptFrequency = AttemptFrequency.EveryTick, + BreakOnMove = true, + BlockDuplicate = true, + DuplicateCondition = DuplicateConditions.None, + }); + } + + private void OnDevourConsume(Entity ent, ref ChangelingDevourConsumeDoAfterEvent args) + { + args.Handled = true; + var target = args.Target; + + if (target == null) + return; + + if (EntityManager.EntityExists(ent.Comp.CurrentDevourSound)) + _audio.Stop(ent.Comp.CurrentDevourSound!); + + if (args.Cancelled) + return; + + if (!_mobState.IsDead((EntityUid)target)) + { + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner):player} unsuccessfully devoured {ToPrettyString(args.Target):player}'s identity"); + _popupSystem.PopupClient(Loc.GetString("changeling-devour-consume-failed-not-dead"), args.User, args.User, PopupType.Medium); + return; + } + + var selfMessage = Loc.GetString("changeling-devour-consume-complete-self", ("user", Identity.Entity(args.User, EntityManager))); + var othersMessage = Loc.GetString("changeling-devour-consume-complete-others", ("user", Identity.Entity(args.User, EntityManager))); + _popupSystem.PopupPredicted( + selfMessage, + othersMessage, + args.User, + args.User, + PopupType.LargeCaution); + + if (_mobState.IsDead(target.Value) + && TryComp(target, out var body) + && HasComp(target) + && TryComp(args.User, out var identityStorage)) + { + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner):player} successfully devoured {ToPrettyString(args.Target):player}'s identity"); + _changelingIdentitySystem.CloneToPausedMap((ent, identityStorage), target.Value); + + if (_inventorySystem.TryGetSlotEntity(target.Value, "jumpsuit", out var item) + && TryComp(item, out var butcherable)) + RipClothing(target.Value, (item.Value, butcherable)); + } + + Dirty(ent); + } + + private void RipClothing(EntityUid victim, Entity item) + { + var spawnEntities = EntitySpawnCollection.GetSpawns(item.Comp.SpawnedEntities, _robustRandom); + + foreach (var proto in spawnEntities) + { + // TODO: once predictedRandom is in, make this a Coordinate offset of 0.25f from the victims position + PredictedSpawnNextToOrDrop(proto, victim); + } + + PredictedQueueDel(item.Owner); + } +} diff --git a/Content.Shared/Changeling/Transform/ChangelingTransformComponent.cs b/Content.Shared/Changeling/Transform/ChangelingTransformComponent.cs new file mode 100644 index 0000000000..0a3b3f1985 --- /dev/null +++ b/Content.Shared/Changeling/Transform/ChangelingTransformComponent.cs @@ -0,0 +1,54 @@ +using Content.Shared.Cloning; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Changeling.Transform; + +/// +/// The component containing information about Changelings Transformation action +/// Like how long their windup is, the sounds as well as the Target Cloning settings for changing between identities +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(ChangelingTransformSystem))] +public sealed partial class ChangelingTransformComponent : Component +{ + /// + /// The action Prototype for Transforming + /// + [DataField] + public EntProtoId? ChangelingTransformAction = "ActionChangelingTransform"; + + /// + /// The Action Entity for transforming associated with this Component + /// + [DataField, AutoNetworkedField] + public EntityUid? ChangelingTransformActionEntity; + + /// + /// Time it takes to Transform + /// + [DataField, AutoNetworkedField] + public TimeSpan TransformWindup = TimeSpan.FromSeconds(5); + + /// + /// The noise used when attempting to transform + /// + [DataField, AutoNetworkedField] + public SoundSpecifier? TransformAttemptNoise = new SoundCollectionSpecifier("ChangelingTransformAttempt", AudioParams.Default.WithMaxDistance(6)); // 6 distance due to the default 15 being hearable all the way across PVS. Changeling is meant to be stealthy. 6 still allows the sound to be hearable, but not across an entire department. + + /// + /// The currently active transform in the world + /// + [DataField] + public EntityUid? CurrentTransformSound; + + /// + /// The cloning settings passed to the CloningSystem, contains a list of all components to copy or have handled by their + /// respective systems. + /// + public ProtoId TransformCloningSettings = "ChangelingCloningSettings"; + + public override bool SendOnlyToOwner => true; +} + diff --git a/Content.Shared/Changeling/Transform/ChangelingTransformSystem.Events.cs b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.Events.cs new file mode 100644 index 0000000000..cfe2a56933 --- /dev/null +++ b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.Events.cs @@ -0,0 +1,16 @@ +using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Serialization; + +namespace Content.Shared.Changeling.Transform; + +/// +/// Action event for opening the changeling transformation radial menu. +/// +public sealed partial class ChangelingTransformActionEvent : InstantActionEvent; + +/// +/// DoAfterevent used to transform a changeling into one of their stored identities. +/// +[Serializable, NetSerializable] +public sealed partial class ChangelingTransformDoAfterEvent : SimpleDoAfterEvent; diff --git a/Content.Shared/Changeling/Transform/ChangelingTransformSystem.UI.cs b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.UI.cs new file mode 100644 index 0000000000..0383867698 --- /dev/null +++ b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.UI.cs @@ -0,0 +1,33 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Changeling.Transform; + +/// +/// Send when a player selects an intentity to transform into in the radial menu. +/// +[Serializable, NetSerializable] +public sealed class ChangelingTransformIdentitySelectMessage(NetEntity targetIdentity) : BoundUserInterfaceMessage +{ + /// + /// The uid of the cloned identity. + /// + public readonly NetEntity TargetIdentity = targetIdentity; +} + +// TODO: Replace with component states. +// We are already networking the ChangelingIdentityComponent, which contains all this information, +// so we can just read it from them from the component and update the UI in an AfterAuotHandleState subscription. +[Serializable, NetSerializable] +public sealed class ChangelingTransformBoundUserInterfaceState(List identities) : BoundUserInterfaceState +{ + /// + /// The uids of the cloned identities. + /// + public readonly List Identites = identities; +} + +[Serializable, NetSerializable] +public enum TransformUI : byte +{ + Key, +} diff --git a/Content.Shared/Changeling/Transform/ChangelingTransformSystem.cs b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.cs new file mode 100644 index 0000000000..dbc5356448 --- /dev/null +++ b/Content.Shared/Changeling/Transform/ChangelingTransformSystem.cs @@ -0,0 +1,180 @@ +using Content.Shared.Actions; +using Content.Shared.Administration.Logs; +using Content.Shared.Cloning; +using Content.Shared.Database; +using Content.Shared.DoAfter; +using Content.Shared.Humanoid; +using Content.Shared.IdentityManagement; +using Content.Shared.Popups; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Changeling.Transform; + +public sealed partial class ChangelingTransformSystem : EntitySystem +{ + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedHumanoidAppearanceSystem _humanoidAppearanceSystem = default!; + [Dependency] private readonly MetaDataSystem _metaSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedCloningSystem _cloningSystem = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + private const string ChangelingBuiXmlGeneratedName = "ChangelingTransformBoundUserInterface"; + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnTransformAction); + SubscribeLocalEvent(OnSuccessfulTransform); + SubscribeLocalEvent(OnTransformSelected); + SubscribeLocalEvent(OnShutdown); + } + + private void OnMapInit(Entity ent, ref MapInitEvent init) + { + _actionsSystem.AddAction(ent, ref ent.Comp.ChangelingTransformActionEntity, ent.Comp.ChangelingTransformAction); + + var userInterfaceComp = EnsureComp(ent); + _uiSystem.SetUi((ent, userInterfaceComp), TransformUI.Key, new InterfaceData(ChangelingBuiXmlGeneratedName)); + } + + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + if (ent.Comp.ChangelingTransformActionEntity != null) + { + _actionsSystem.RemoveAction(ent.Owner, ent.Comp.ChangelingTransformActionEntity); + } + } + + private void OnTransformAction(Entity ent, + ref ChangelingTransformActionEvent args) + { + if (!TryComp(ent, out var userInterfaceComp)) + return; + + if (!TryComp(ent, out var userIdentity)) + return; + + if (!_uiSystem.IsUiOpen((ent, userInterfaceComp), TransformUI.Key, args.Performer)) + { + _uiSystem.OpenUi((ent, userInterfaceComp), TransformUI.Key, args.Performer); + + var identityData = new List(); + + foreach (var consumedIdentity in userIdentity.ConsumedIdentities) + { + identityData.Add(GetNetEntity(consumedIdentity)); + } + + _uiSystem.SetUiState((ent, userInterfaceComp), TransformUI.Key, new ChangelingTransformBoundUserInterfaceState(identityData)); + } //TODO: Can add a Else here with TransformInto and CloseUI to make a quick switch, + // issue right now is that Radials cover the Action buttons so clicking the action closes the UI (due to clicking off a radial causing it to close, even with UI) + // but pressing the number does. + } + + /// + /// Transform the changeling into another identity. + /// This can be any cloneable humanoid and doesn't have to be stored in the ChangelingIdentiyComponent, + /// so make sure to validate the target before. + /// + public void TransformInto(Entity ent, EntityUid targetIdentity) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + var selfMessage = Loc.GetString("changeling-transform-attempt-self", ("user", Identity.Entity(ent.Owner, EntityManager))); + var othersMessage = Loc.GetString("changeling-transform-attempt-others", ("user", Identity.Entity(ent.Owner, EntityManager))); + _popupSystem.PopupPredicted( + selfMessage, + othersMessage, + ent, + ent, + PopupType.MediumCaution); + + if (_net.IsServer) + ent.Comp.CurrentTransformSound = _audio.PlayPvs(ent.Comp.TransformAttemptNoise, ent)?.Entity; + + if(TryComp(targetIdentity, out var storedIdentity) && storedIdentity.OriginalSession != null) + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner):player} begun an attempt to transform into \"{Name(targetIdentity)}\" ({storedIdentity.OriginalSession:player}) "); + else + _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner):player} begun an attempt to transform into \"{Name(targetIdentity)}\""); + + var result = _doAfterSystem.TryStartDoAfter(new DoAfterArgs( + EntityManager, + ent, + ent.Comp.TransformWindup, + new ChangelingTransformDoAfterEvent(), + ent, + target: targetIdentity) + { + BreakOnMove = true, + BreakOnWeightlessMove = true, + DuplicateCondition = DuplicateConditions.None, + RequireCanInteract = false, + DistanceThreshold = null, + }); + } + + private void OnTransformSelected(Entity ent, + ref ChangelingTransformIdentitySelectMessage args) + { + _uiSystem.CloseUi(ent.Owner, TransformUI.Key, ent); + + if (!TryGetEntity(args.TargetIdentity, out var targetIdentity)) + return; + + if (!TryComp(ent, out var identity)) + return; + + if (identity.CurrentIdentity == targetIdentity) + return; // don't transform into ourselves + + if (!identity.ConsumedIdentities.Contains(targetIdentity.Value)) + return; // this identity does not belong to this player + + TransformInto(ent.AsNullable(), targetIdentity.Value); + } + + private void OnSuccessfulTransform(Entity ent, + ref ChangelingTransformDoAfterEvent args) + { + args.Handled = true; + + if (EntityManager.EntityExists(ent.Comp.CurrentTransformSound)) + _audio.Stop(ent.Comp.CurrentTransformSound); + + if (args.Cancelled) + return; + + if (!_prototype.Resolve(ent.Comp.TransformCloningSettings, out var settings)) + return; + + if (args.Target is not { } targetIdentity) + return; + + _humanoidAppearanceSystem.CloneAppearance(targetIdentity, args.User); + _cloningSystem.CloneComponents(targetIdentity, args.User, settings); + + if(TryComp(targetIdentity, out var storedIdentity) && storedIdentity.OriginalSession != null) + _adminLogger.Add(LogType.Action, LogImpact.High, $"{ToPrettyString(ent.Owner):player} successfully transformed into \"{Name(targetIdentity)}\" ({storedIdentity.OriginalSession:player})"); + else + _adminLogger.Add(LogType.Action, LogImpact.High, $"{ToPrettyString(ent.Owner):player} successfully transformed into \"{Name(targetIdentity)}\""); + _metaSystem.SetEntityName(ent, Name(targetIdentity), raiseEvents: false); + + Dirty(ent); + + if (TryComp(ent, out var identity)) // in case we ever get changelings that don't store identities + { + identity.CurrentIdentity = targetIdentity; + Dirty(ent.Owner, identity); + } + } +} diff --git a/Content.Shared/Cloning/SharedCloningSystem.cs b/Content.Shared/Cloning/SharedCloningSystem.cs new file mode 100644 index 0000000000..d8ab8a2aa1 --- /dev/null +++ b/Content.Shared/Cloning/SharedCloningSystem.cs @@ -0,0 +1,14 @@ +namespace Content.Shared.Cloning; + +public abstract partial class SharedCloningSystem : EntitySystem +{ + /// + /// Copy components from one entity to another based on a CloningSettingsPrototype. + /// + /// The orignal Entity to clone components from. + /// The target Entity to clone components to. + /// The clone settings prototype containing the list of components to clone. + public virtual void CloneComponents(EntityUid original, EntityUid clone, CloningSettingsPrototype settings) + { + } +} diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index 3d3af84a30..1df46e53d6 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -11,6 +11,7 @@ using Content.Shared.Inventory; using Content.Shared.Preferences; using Robust.Shared; using Robust.Shared.Configuration; +using Robust.Shared.Enums; using Robust.Shared.GameObjects.Components.Localization; using Robust.Shared.Network; using Robust.Shared.Player; @@ -152,16 +153,12 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem targetHumanoid.SkinColor = sourceHumanoid.SkinColor; targetHumanoid.EyeColor = sourceHumanoid.EyeColor; targetHumanoid.Age = sourceHumanoid.Age; - SetSex(target, sourceHumanoid.Sex, false, targetHumanoid); targetHumanoid.CustomBaseLayers = new(sourceHumanoid.CustomBaseLayers); targetHumanoid.MarkingSet = new(sourceHumanoid.MarkingSet); - targetHumanoid.Gender = sourceHumanoid.Gender; + SetSex(target, sourceHumanoid.Sex, false, targetHumanoid); + SetGender((target, targetHumanoid), sourceHumanoid.Gender); - if (TryComp(target, out var grammar)) - _grammarSystem.SetGender((target, grammar), sourceHumanoid.Gender); - - _identity.QueueIdentityUpdate(target); Dirty(target, targetHumanoid); } @@ -264,6 +261,23 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem Dirty(uid, humanoid); } + /// + /// Sets the gender in the entity's HumanoidAppearanceComponent and GrammarComponent. + /// + public void SetGender(Entity ent, Gender gender) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.Gender = gender; + Dirty(ent); + + if (TryComp(ent, out var grammar)) + _grammarSystem.SetGender((ent, grammar), gender); + + _identity.QueueIdentityUpdate(ent); + } + /// /// Sets the skin color of this humanoid mob. Will only affect base layers that are not custom, /// custom base layers should use instead. diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index e9fb62f2ad..09c3bbc45b 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Shared.DisplacementMap; using Content.Shared.Inventory.Events; using Content.Shared.Storage; using Robust.Shared.Containers; @@ -55,6 +56,24 @@ public partial class InventorySystem : EntitySystem return false; } + /// + /// Copy this component's datafields from one entity to another. + /// This can't use CopyComp because the template needs to be applied using the API method. + /// + public void CopyComponent(Entity source, EntityUid target) + { + if (!Resolve(source, ref source.Comp)) + return; + + var targetComp = EnsureComp(target); + targetComp.SpeciesId = source.Comp.SpeciesId; + targetComp.Displacements = new Dictionary(source.Comp.Displacements); + targetComp.FemaleDisplacements = new Dictionary(source.Comp.FemaleDisplacements); + targetComp.MaleDisplacements = new Dictionary(source.Comp.MaleDisplacements); + SetTemplateId((target, targetComp), source.Comp.TemplateId); + Dirty(target, targetComp); + } + private void OnInit(Entity ent, ref ComponentInit args) { UpdateInventoryTemplate(ent); diff --git a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs index 4584e4401a..d0faad8b50 100644 --- a/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs +++ b/Content.Shared/Movement/Systems/MovementSpeedModifierSystem.cs @@ -54,6 +54,21 @@ namespace Content.Shared.Movement.Systems RefreshMovementSpeedModifiers(entity); } + /// + /// Copy this component's datafields from one entity to another. + /// This needs to refresh the modifiers after using CopyComp. + /// + public void CopyComponent(Entity source, EntityUid target) + { + if (!Resolve(source, ref source.Comp)) + return; + + CopyComp(source, target, source.Comp); + RefreshWeightlessModifiers(target); + RefreshMovementSpeedModifiers(target); + RefreshFrictionModifiers(target); + } + public void RefreshWeightlessModifiers(EntityUid uid, MovementSpeedModifierComponent? move = null) { if (!Resolve(uid, ref move, false)) diff --git a/Content.Shared/Rootable/SharedRootableSystem.cs b/Content.Shared/Rootable/SharedRootableSystem.cs index c3deca0769..9165c3c111 100644 --- a/Content.Shared/Rootable/SharedRootableSystem.cs +++ b/Content.Shared/Rootable/SharedRootableSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Content.Shared.Actions.Components; using Content.Shared.Alert; +using Content.Shared.Cloning.Events; using Content.Shared.Coordinates; using Content.Shared.Fluids.Components; using Content.Shared.Gravity; @@ -50,6 +51,20 @@ public abstract class SharedRootableSystem : EntitySystem SubscribeLocalEvent(OnIsWeightless); SubscribeLocalEvent(OnSlipAttempt); SubscribeLocalEvent(OnRefreshMovementSpeed); + SubscribeLocalEvent(OnCloning); + } + + private void OnCloning(Entity ent, ref CloningEvent args) + { + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + return; + + var cloneComp = EnsureComp(args.CloneUid); + cloneComp.TransferRate = ent.Comp.TransferRate; + cloneComp.TransferFrequency = ent.Comp.TransferFrequency; + cloneComp.SpeedModifier = ent.Comp.SpeedModifier; + cloneComp.RootSound = ent.Comp.RootSound; + Dirty(args.CloneUid, cloneComp); } private void OnRootableMapInit(Entity entity, ref MapInitEvent args) @@ -68,6 +83,7 @@ public abstract class SharedRootableSystem : EntitySystem var actions = new Entity(entity, comp); _actions.RemoveAction(actions, entity.Comp.ActionEntity); + _alerts.ClearAlert(entity, entity.Comp.RootedAlert); } private void OnRootableToggle(Entity entity, ref ToggleActionEvent args) diff --git a/Content.Shared/Sericulture/SericultureSystem.cs b/Content.Shared/Sericulture/SericultureSystem.cs index e5942a433e..e6086e67c2 100644 --- a/Content.Shared/Sericulture/SericultureSystem.cs +++ b/Content.Shared/Sericulture/SericultureSystem.cs @@ -38,7 +38,7 @@ public abstract partial class SharedSericultureSystem : EntitySystem private void OnClone(Entity ent, ref CloningEvent args) { - if(!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) + if (!args.Settings.EventComponents.Contains(Factory.GetRegistration(ent.Comp.GetType()).Name)) return; var comp = EnsureComp(args.CloneUid); diff --git a/Content.Shared/Speech/SpeechComponent.cs b/Content.Shared/Speech/SpeechComponent.cs index 8c12fc918a..fddb41753e 100644 --- a/Content.Shared/Speech/SpeechComponent.cs +++ b/Content.Shared/Speech/SpeechComponent.cs @@ -16,29 +16,26 @@ namespace Content.Shared.Speech [Access(typeof(SpeechSystem), Friend = AccessPermissions.ReadWrite, Other = AccessPermissions.Read)] public bool Enabled = true; - [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] public ProtoId? SpeechSounds; /// /// What speech verb prototype should be used by default for displaying this entity's messages? /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] public ProtoId SpeechVerb = "Default"; /// /// What emotes allowed to use event if emote is false /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] public List> AllowedEmotes = new(); /// /// A mapping from chat suffixes loc strings to speech verb prototypes that should be conditionally used. /// For things like '?' changing to 'asks' or '!!' making text bold and changing to 'yells'. Can be overridden if necessary. /// - [DataField] + [DataField, AutoNetworkedField] public Dictionary> SuffixSpeechVerbs = new() { { "chat-speech-verb-suffix-exclamation-strong", "DefaultExclamationStrong" }, @@ -51,7 +48,6 @@ namespace Content.Shared.Speech [DataField] public AudioParams AudioParams = AudioParams.Default.WithVolume(-2f).WithRolloffFactor(4.5f); - [ViewVariables(VVAccess.ReadWrite)] [DataField] public float SoundCooldownTime { get; set; } = 0.5f; diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index f3c9055910..d2d80a632f 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -232,7 +232,14 @@ public abstract class SharedStorageSystem : EntitySystem StoredItems = storedItems, SavedLocations = component.SavedLocations, Whitelist = component.Whitelist, - Blacklist = component.Blacklist + Blacklist = component.Blacklist, + QuickInsert = component.QuickInsert, + AreaInsert = component.AreaInsert, + StorageInsertSound = component.StorageInsertSound, + StorageRemoveSound = component.StorageRemoveSound, + StorageOpenSound = component.StorageOpenSound, + StorageCloseSound = component.StorageCloseSound, + DefaultStorageOrientation = component.DefaultStorageOrientation, }; } @@ -348,6 +355,44 @@ public abstract class SharedStorageSystem : EntitySystem args.Verbs.Add(verb); } + /// + /// Copy this component's datafields from one entity to another. + /// This can't use CopyComp because we don't want to copy the references to the items inside the storage. + /// + public void CopyComponent(Entity source, EntityUid target) + { + if (!Resolve(source, ref source.Comp)) + return; + + var targetComp = EnsureComp(target); + targetComp.Grid = new List(source.Comp.Grid); + targetComp.MaxItemSize = source.Comp.MaxItemSize; + targetComp.QuickInsert = source.Comp.QuickInsert; + targetComp.QuickInsertCooldown = source.Comp.QuickInsertCooldown; + targetComp.OpenUiCooldown = source.Comp.OpenUiCooldown; + targetComp.ClickInsert = source.Comp.ClickInsert; + targetComp.OpenOnActivate = source.Comp.OpenOnActivate; + targetComp.AreaInsert = source.Comp.AreaInsert; + targetComp.AreaInsertRadius = source.Comp.AreaInsertRadius; + targetComp.Whitelist = source.Comp.Whitelist; + targetComp.Blacklist = source.Comp.Blacklist; + targetComp.StorageInsertSound = source.Comp.StorageInsertSound; + targetComp.StorageRemoveSound = source.Comp.StorageRemoveSound; + targetComp.StorageOpenSound = source.Comp.StorageOpenSound; + targetComp.StorageCloseSound = source.Comp.StorageCloseSound; + targetComp.DefaultStorageOrientation = source.Comp.DefaultStorageOrientation; + targetComp.HideStackVisualsWhenClosed = source.Comp.HideStackVisualsWhenClosed; + targetComp.SilentStorageUserTag = source.Comp.SilentStorageUserTag; + targetComp.ShowVerb = source.Comp.ShowVerb; + + UpdateOccupied((target, targetComp)); + Dirty(target, targetComp); + + var targetUI = EnsureComp(target); + + UI.SetUi((target, targetUI), StorageComponent.StorageUiKey.Key, new InterfaceData("StorageBoundUserInterface")); + } + /// /// Tries to get the storage location of an item. /// @@ -1957,15 +2002,17 @@ public abstract class SharedStorageSystem : EntitySystem protected sealed class StorageComponentState : ComponentState { public Dictionary StoredItems = new(); - public Dictionary> SavedLocations = new(); - public List Grid = new(); - public ProtoId? MaxItemSize; - public EntityWhitelist? Whitelist; - public EntityWhitelist? Blacklist; + public bool QuickInsert; + public bool AreaInsert; + public SoundSpecifier? StorageInsertSound; + public SoundSpecifier? StorageRemoveSound; + public SoundSpecifier? StorageOpenSound; + public SoundSpecifier? StorageCloseSound; + public StorageDefaultOrientation? DefaultStorageOrientation; } } diff --git a/Resources/Audio/Effects/Changeling/attributions.yml b/Resources/Audio/Effects/Changeling/attributions.yml new file mode 100644 index 0000000000..d7d7931cd6 --- /dev/null +++ b/Resources/Audio/Effects/Changeling/attributions.yml @@ -0,0 +1,19 @@ +- files: ["devour_suck.ogg"] + license: "CC0-1.0" + copyright: "4Cairnz on Freesound: June 5th 2023" + source: "https://freesound.org/people/4Cairnz/sounds/689640/" + +- files: ["devour_windup.ogg "] + license: "CC-BY-SA-3.0" + copyright: "Made by @DarkIcedCoffee on Discord for SS14, utilizing sounds from Caitlin_100, jedg and EricsSoundschmiede on freesound" + source: "https://youtu.be/iviCUO2xH_E" + +- files: ["devour_consume.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Made by @DarkIcedCoffee on Discord for SS14, utilizing sounds from jedg and reg7783 on freesound." + source: "https://youtu.be/iviCUO2xH_E" + +- files: ["changeling_transform.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Made by @DarkIcedCoffee on Discord for SS14" + source: "https://youtu.be/iviCUO2xH_E" diff --git a/Resources/Audio/Effects/Changeling/changeling_transform.ogg b/Resources/Audio/Effects/Changeling/changeling_transform.ogg new file mode 100644 index 0000000000000000000000000000000000000000..23379d246d4eee7485cfbff81996854407376880 GIT binary patch literal 58013 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 L1L#oj|G)kRv$`vW literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Changeling/devour_consume.ogg b/Resources/Audio/Effects/Changeling/devour_consume.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9d05c9f541b2f451af627b2bf5846a1069ab1e5b GIT binary patch literal 109553 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

    ojHVZSf87yQW*##~u zmQ=(E)Tjx)a#DmedR`}mH~;4bF5+^nA9=i@_)2Hhk4nCNqS$7V**F(B^-0V=KC>d1 z{BJ3glMH&(de5hRTsL}9Nv~tS1V`J&`e?KY0Zfp{)#m|!o2OW+uF+mTXwG*J{=u>s z=73V1!xBWWSS`HCLBV7CghAOp|Hvc6^Dzi+jLYJRU5~yH6)70YTRl2s3rs3IvZChM zKZ$$d!;$5e0tFo0M!1B?$TJJsJ)vQi`2)9;FDiu0ah zP==1*_fXPAykoZX@uI?-Gu2397+Jo0o9xys*Z23r??CU&HH3j1d?{y+%o5LeW=ifY ziX9Rl4EY$g8Pdobgw&yjpdQ*6TM`m+AUTNR&LxBabUWb3X8iz4 z`cIu1^);eR@-kK|B<{)rVBWIew-V;ek9{}|U9QV|yp3rHpjR=6QZYlY-e!*o)f; zg~L(vPl*dW?=jFaO#B@}Rr{1THfe_>*I}1x$h`ix;ECK{$F|!{;l1kBz?iCJ{-*ln zIezsl){~$pj&6s(---#+XOvQ+^>ELzzvZkhQZ7AHE16 z7KDYb=}bHNf#3Oy95mRsA?O3lV=X>gQXzC)p70Zm=IoqGmUMO_el*Vc4{HUN5=tV5ln0I^D4D zJza)kF!EZ{v!;YZ3V7Ic4h|U>hlhX_n|$g+ffqv@;3t2qev8;6z+5Wl?e-M4V`xOG zdG!R4JP8Z_gj52C&28pBqbs%Q0lf5z&=adWFAEXfy7Zy4br;L~i`+Uw-z#?zf8YvwRa|MHUn zw2bPh2@Y__HUY^oinA&5rR=Hk^;4RgtGaN*c?PJ$R(pr5XP^RWmq&^r$)!>#-~}vQ3E%squ%0A%HXfZ>vh+~*xt(zqc2^llQrS9YYl}}O0+rU5C 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 z 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 Lqm{FqK>1+=b$_W^ literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Changeling/devour_suck.ogg b/Resources/Audio/Effects/Changeling/devour_suck.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d756b0a55d53c59c146133f8d7001b65fae1108e GIT binary patch literal 295159 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 literal 0 HcmV?d00001 diff --git a/Resources/Audio/Effects/Changeling/devour_windup.ogg b/Resources/Audio/Effects/Changeling/devour_windup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7c81d9a076441356e875fde5cbf4248352d91718 GIT binary patch literal 36705 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 T#RT3WC^_-Uov2&$7yh9Dni4my literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/administration/antag.ftl b/Resources/Locale/en-US/administration/antag.ftl index 1433cc1dc4..161054aca2 100644 --- a/Resources/Locale/en-US/administration/antag.ftl +++ b/Resources/Locale/en-US/administration/antag.ftl @@ -7,6 +7,8 @@ admin-verb-make-pirate = Make the target into a pirate. Note this doesn't config admin-verb-make-head-rev = Make the target into a Head Revolutionary. admin-verb-make-thief = Make the target into a thief. admin-verb-make-paradox-clone = Create a Paradox Clone ghost role of the target. +admin-verb-make-changeling = Make the target into a Changeling. + admin-verb-text-make-traitor = Make Traitor admin-verb-text-make-initial-infected = Make Initial Infected @@ -16,5 +18,6 @@ admin-verb-text-make-pirate = Make Pirate admin-verb-text-make-head-rev = Make Head Rev admin-verb-text-make-thief = Make Thief admin-verb-text-make-paradox-clone = Create Paradox Clone +admin-verb-text-make-changeling = Make Changeling (WIP) admin-overlay-antag-classic = ANTAG diff --git a/Resources/Locale/en-US/changeling/changeling.ftl b/Resources/Locale/en-US/changeling/changeling.ftl new file mode 100644 index 0000000000..aa3843691a --- /dev/null +++ b/Resources/Locale/en-US/changeling/changeling.ftl @@ -0,0 +1,20 @@ +roles-antag-changeling-name = Changeling +roles-antag-changeling-objective = A intelligent predator that assumes the identities of its victims. + +changeling-role-greeting = You are a Changeling, a highly intelligent predator. Your only goal is to escape the station alive via assuming the identities of the denizens of this station. You are hungry and will not make it long without sustenance... kill, consume, hide, survive. +changeling-briefing = You are a changeling, your goal is to survive. Consume humanoids to gain biomass and utilize it to evade termination. You are able to utilize and assume the identities of those you consume to evade a grim fate. + +changeling-devour-attempt-failed-rotting = This corpse has only rotted biomass. +changeling-devour-attempt-failed-protected = This victim's biomass is protected. + +changeling-devour-begin-windup-self = Our uncanny mouth reveals itself with otherworldly hunger. +changeling-devour-begin-windup-others = { CAPITALIZE(POSS-ADJ($user)) } uncanny mouth reveals itself with otherworldly hunger. +changeling-devour-begin-consume-self = The uncanny mouth digs deep into its victim. +changeling-devour-begin-consume-others = { CAPITALIZE(POSS-ADJ($user)) } uncanny mouth digs deep into { POSS-ADJ($user) } victim. + +changeling-devour-consume-failed-not-dead = This body yet lives! We cannot consume it alive! +changeling-devour-consume-complete-self = Our uncanny mouth retreats, biomass consumed. +changeling-devour-consume-complete-others = { CAPITALIZE(POSS-ADJ($user)) } uncanny mouth retreats. + +changeling-transform-attempt-self = Our bones snap, muscles tear, one flesh becomes another. +changeling-transform-attempt-others = { CAPITALIZE(POSS-ADJ($user)) } bones snap, muscles tear, body shifts into another. diff --git a/Resources/Locale/en-US/mind/role-types.ftl b/Resources/Locale/en-US/mind/role-types.ftl index 7d568fd686..4614d20a47 100644 --- a/Resources/Locale/en-US/mind/role-types.ftl +++ b/Resources/Locale/en-US/mind/role-types.ftl @@ -33,3 +33,4 @@ role-subtype-survivor = Survivor role-subtype-subverted = Subverted role-subtype-paradox-clone = Paradox role-subtype-wizard = Wizard +role-subtype-changeling = Changeling diff --git a/Resources/Prototypes/Antag/changeling.yml b/Resources/Prototypes/Antag/changeling.yml new file mode 100644 index 0000000000..b4c8b2e3dc --- /dev/null +++ b/Resources/Prototypes/Antag/changeling.yml @@ -0,0 +1,35 @@ +- type: entity + parent: MobHuman + id: MobLing + name: Urist McLing + suffix: Non-Antag + components: + - type: ChangelingDevour + - type: ChangelingIdentity + - type: ChangelingTransform + - type: ActionGrant + actions: + - ActionRetractableItemArmBlade # Temporary addition, will inevitably be a purchasable in the bio-store + +- type: entity + id: ActionChangelingDevour + name: "[color=red]Devour[/color]" + description: Consume the essence of your victims and subsume their identity and mind into your own. + components: + - type: Action + icon: { sprite : Interface/Actions/changeling.rsi, state: "devour" } + iconOn: { sprite : Interface/Actions/changeling.rsi, state: "devour_on" } + priority: 1 + - type: TargetAction + - type: EntityTargetAction + event: !type:ChangelingDevourActionEvent + +- type: entity + id: ActionChangelingTransform + name: "[color=red]Transform[/color]" + description: Transform and assume the identities of those you have devoured. + components: + - type: Action + icon: { sprite : Interface/Actions/changeling.rsi, state: "transform" } + - type: InstantAction + event: !type:ChangelingTransformActionEvent diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index bdf741e58a..49c05ba3f1 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -1,13 +1,12 @@ # Settings for cloning bodies # If you add a new trait, job specific component or a component doing visual/examination changes for humanoids # then add it here to the correct prototype. -# The datafields of the components are only shallow copied using CopyComp. +# The datafields of the components copied using CopyComp. # Subscribe to CloningEvent instead if that is not enough. -# for basic traits etc. -# used by the random clone spawner +# for basic physical traits - type: cloningSettings - id: BaseClone + id: Body components: # general - DetailExaminable @@ -15,8 +14,9 @@ - Fingerprint - NpcFactionMember # traits - # - LegsParalyzed (you get healed) - BlackAndWhiteOverlay + - Clumsy + # - LegsParalyzed (you get healed) - LightweightDrunk - Muted - Narcolepsy @@ -26,14 +26,6 @@ - PermanentBlindness - Snoring - Unrevivable - # job specific - - BibleUser - - CommandStaff - - Clumsy - - MindShield - - MimePowers - - SpaceNinja - - Thieving # accents - Accentless - BackwardsAccent @@ -62,6 +54,30 @@ - SouthernAccent - SpanishAccent - StutteringAccent + +# for job-specific traits etc. +- type: cloningSettings + id: Special + components: + - BibleUser + - CommandStaff + - MindShield + - MimePowers + - SpaceNinja + - Thieving + +# antag roles +- type: cloningSettings + id: Antag + components: + - HeadRevolutionary + - Revolutionary + - NukeOperative + +# a full clone with all traits and items, but no antag roles +- type: cloningSettings + id: BaseClone + parent: [Body, Special] blacklist: components: - AttachedClothing # helmets, which are part of the suit @@ -69,26 +85,47 @@ - Implanter # they will spawn full again, but you already get the implant. And we can't do item slot copying yet - VirtualItem -# all antagonist roles -- type: cloningSettings - id: Antag - parent: BaseClone - components: - - HeadRevolutionary - - Revolutionary - - NukeOperative - # for cloning pods - type: cloningSettings id: CloningPod - parent: Antag + parent: [BaseClone, Antag] forceCloning: false copyEquipment: null copyInternalStorage: false copyImplants: false -# spawner +# for paradox clones +- type: cloningSettings + id: ParadoxCloningSettings + parent: [BaseClone, Antag] +# changeling identity copying +- type: cloningSettings + id: ChangelingCloningSettings + parent: Body + components: + # These are already part of the base species prototype that is spawned for the clone, + # that means we only need to copy them over when switching between species. + # So these don't need to be part of the Body settings, unless someone makes a trait that adjusts these components. + - BodyEmotes + - Fixtures + - Speech + - TypingIndicator + - ScaleVisuals # for dwarf height + eventComponents: + # these need special treatment in the event subscription + - Inventory # arachnid pockets and diona feet + - Wagging # lizard tails + - Vocal # voice sounds + - Storage # slime storage + - Rootable # diona + - Sericulture # arachnids + - MovementSpeedModifier # moths when weightless + copyEquipment: null + copyInternalStorage: false + copyImplants: false + +# spawner - type: entity id: RandomCloneSpawner name: Random Clone diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 08d088a08c..71a249ed48 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -225,6 +225,30 @@ mindRoles: - MindRoleTraitorReinforcement +- type: entity + id: Changeling + parent: BaseGameRule + components: + - type: GameRule + minPlayers: 25 + - type: AntagSelection + definitions: + - prefRoles: [ Changeling ] + max: 3 + playerRatio: 15 + briefing: + text: changeling-role-greeting + color: Red + components: + - type: ChangelingDevour + - type: ChangelingIdentity + - type: ChangelingTransform + - type: ActionGrant + actions: + - ActionRetractableItemArmBlade # Temporary addition, will inevitably be a purchasable in the bio-store + mindRoles: + - MindRoleChangeling + - type: entity id: Revolutionary parent: BaseGameRule diff --git a/Resources/Prototypes/Roles/Antags/changeling.yml b/Resources/Prototypes/Roles/Antags/changeling.yml new file mode 100644 index 0000000000..3b19c993e6 --- /dev/null +++ b/Resources/Prototypes/Roles/Antags/changeling.yml @@ -0,0 +1,6 @@ +- type: antag + id: Changeling + name: roles-antag-changeling-name + antagonist: true + setPreference: false # TODO: set this to true once Changeling exits WIP status + objective: roles-antag-changeling-objective diff --git a/Resources/Prototypes/Roles/MindRoles/mind_roles.yml b/Resources/Prototypes/Roles/MindRoles/mind_roles.yml index 79223ed67d..95d49c1b83 100644 --- a/Resources/Prototypes/Roles/MindRoles/mind_roles.yml +++ b/Resources/Prototypes/Roles/MindRoles/mind_roles.yml @@ -307,3 +307,16 @@ exclusiveAntag: true subtype: role-subtype-zombie - type: ZombieRole + +# Changeling +- type: entity + parent: BaseMindRoleAntag + id: MindRoleChangeling + name: Changeling Role + components: + - type: MindRole + antagPrototype: Changeling + exclusiveAntag: true + roleType: SoloAntagonist + subtype: role-subtype-changeling + - type: ChangelingRole diff --git a/Resources/Prototypes/SoundCollections/changeling.yml b/Resources/Prototypes/SoundCollections/changeling.yml new file mode 100644 index 0000000000..4edb07dc16 --- /dev/null +++ b/Resources/Prototypes/SoundCollections/changeling.yml @@ -0,0 +1,14 @@ +- type: soundCollection + id: ChangelingDevourConsume + files: + - /Audio/Effects/Changeling/devour_consume.ogg + +- type: soundCollection + id: ChangelingDevourWindup + files: + - /Audio/Effects/Changeling/devour_windup.ogg + +- type: soundCollection + id: ChangelingTransformAttempt + files: + - /Audio/Effects/Changeling/changeling_transform.ogg diff --git a/Resources/Textures/Interface/Actions/changeling.rsi/devour.png b/Resources/Textures/Interface/Actions/changeling.rsi/devour.png new file mode 100644 index 0000000000000000000000000000000000000000..f5acc7dceee26ababbea6ae5c03504719fd4a0cb GIT binary patch literal 1823 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 lWmrjOO-%qQ00008000000002eQ Date: Wed, 6 Aug 2025 22:14:28 +0200 Subject: [PATCH 05/33] Fix inventory flickering and missing InventoryTemplateUpdated event (#39379) * fix flickering * move InitClothing * fix this --- Content.Client/Inventory/ClientInventorySystem.cs | 8 +++++++- Content.Shared/Inventory/InventorySystem.Equip.cs | 4 ---- Content.Shared/Inventory/InventorySystem.Slots.cs | 5 ++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Content.Client/Inventory/ClientInventorySystem.cs b/Content.Client/Inventory/ClientInventorySystem.cs index 1f926b42a1..97da176ed2 100644 --- a/Content.Client/Inventory/ClientInventorySystem.cs +++ b/Content.Client/Inventory/ClientInventorySystem.cs @@ -115,6 +115,13 @@ namespace Content.Client.Inventory OnLinkInventorySlots?.Invoke(uid, component); } + protected override void OnInit(Entity ent, ref ComponentInit args) + { + base.OnInit(ent, ref args); + + _clothingVisualsSystem.InitClothing(ent.Owner, ent.Comp); + } + public override void Shutdown() { CommandBinds.Unregister(); @@ -261,7 +268,6 @@ namespace Content.Client.Inventory TryAddSlotData((ent.Owner, inventorySlots), (SlotData)slot); } - _clothingVisualsSystem.InitClothing(ent, ent.Comp); if (ent.Owner == _playerManager.LocalEntity) ReloadInventory(inventorySlots); } diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 3ed068070a..ae038b63f3 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -194,8 +194,6 @@ public abstract partial class InventorySystem if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) TriggerHandContactInteraction(target); - Dirty(target, inventory); - _movementSpeed.RefreshMovementSpeedModifiers(target); return true; @@ -487,8 +485,6 @@ public abstract partial class InventorySystem if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) TriggerHandContactInteraction(target); - Dirty(target, inventory); - _movementSpeed.RefreshMovementSpeedModifiers(target); return true; diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index 09c3bbc45b..3f0bdf10d4 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -74,7 +74,7 @@ public partial class InventorySystem : EntitySystem Dirty(target, targetComp); } - private void OnInit(Entity ent, ref ComponentInit args) + protected virtual void OnInit(Entity ent, ref ComponentInit args) { UpdateInventoryTemplate(ent); } @@ -111,6 +111,9 @@ public partial class InventorySystem : EntitySystem container.OccludesLight = false; ent.Comp.Containers[i] = container; } + + var ev = new InventoryTemplateUpdated(); + RaiseLocalEvent(ent, ref ev); } private void OnOpenSlotStorage(OpenSlotStorageNetworkMessage ev, EntitySessionEventArgs args) From dc3eb188cd61f60a41d09467b4ce4dc87aa5f5a9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 6 Aug 2025 20:15:36 +0000 Subject: [PATCH 06/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1286c1efd1..812e3565f3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: AgentSmithRadio - changes: - - message: New food crates are now available for purchase from the automated trade - station! - type: Add - - message: You can no longer use Sweetie's Pistachios to fulfill cargo's generic - fruit bounty. - type: Remove - id: 8321 - time: '2025-04-23T05:37:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33286 - author: SaphireLattice changes: - message: Steel sheets no longer have unintuitively wasteful plating placement @@ -3905,3 +3894,11 @@ id: 8833 time: '2025-08-06T16:58:07.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37363 +- author: slarticodefast + changes: + - message: Fixed inventory sprites flickering when hovering over the slot with an + item. + type: Fix + id: 8834 + time: '2025-08-06T20:14:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39379 From 66daa1e6db3cd4211d0c2d4f6cbd64dd81fc9458 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:01:49 -0400 Subject: [PATCH 07/33] Fix showvalue Ui for melee weapons (#38703) Co-authored-by: Perry Fraser Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- Content.Client/UserInterface/StatsWindow.xaml | 2 +- .../UserInterface/StatValuesCommand.cs | 44 ++++++++++++++----- .../IncreaseDamageOnWieldComponent.cs | 1 + .../en-US/commands/stat-values-command.ftl | 10 +++++ 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/Content.Client/UserInterface/StatsWindow.xaml b/Content.Client/UserInterface/StatsWindow.xaml index 9cda4e41c6..8a287b4aa7 100644 --- a/Content.Client/UserInterface/StatsWindow.xaml +++ b/Content.Client/UserInterface/StatsWindow.xaml @@ -5,7 +5,7 @@ - + diff --git a/Content.Server/UserInterface/StatValuesCommand.cs b/Content.Server/UserInterface/StatValuesCommand.cs index d64984b574..263dfa8b9e 100644 --- a/Content.Server/UserInterface/StatValuesCommand.cs +++ b/Content.Server/UserInterface/StatValuesCommand.cs @@ -6,10 +6,12 @@ using Content.Server.EUI; using Content.Server.Item; using Content.Server.Power.Components; using Content.Shared.Administration; +using Content.Shared.Damage.Prototypes; using Content.Shared.Item; using Content.Shared.Research.Prototypes; using Content.Shared.UserInterface; using Content.Shared.Weapons.Melee; +using Content.Shared.Wieldable.Components; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -170,10 +172,13 @@ public sealed class StatValuesCommand : IConsoleCommand return state; } + private static readonly ProtoId StructuralDamageType = "Structural"; + private StatValuesEuiMessage GetMelee() { var values = new List(); var meleeName = _entManager.ComponentFactory.GetComponentName(); + var increaseDamageName = _entManager.ComponentFactory.GetComponentName(); foreach (var proto in _proto.EnumeratePrototypes()) { @@ -186,26 +191,45 @@ public sealed class StatValuesCommand : IConsoleCommand var comp = (MeleeWeaponComponent) meleeComp.Component; - // TODO: Wielded damage // TODO: Esword damage + var structuralDamage = comp.Damage.DamageDict.GetValueOrDefault(StructuralDamageType); + var baseDamage = comp.Damage.GetTotal() - comp.Damage.DamageDict.GetValueOrDefault(StructuralDamageType); + + var wieldedStructuralDamage = "-"; + var wieldedDamage = "-"; + if (proto.Components.TryGetValue(increaseDamageName, out var increaseDamageComp)) + { + var comp2 = (IncreaseDamageOnWieldComponent) increaseDamageComp.Component; + + wieldedStructuralDamage = (structuralDamage + comp2.BonusDamage.DamageDict.GetValueOrDefault(StructuralDamageType)).ToString(); + wieldedDamage = (baseDamage + comp2.BonusDamage.GetTotal() - comp2.BonusDamage.DamageDict.GetValueOrDefault(StructuralDamageType)).ToString(); + } + values.Add(new[] { proto.ID, - (comp.Damage.GetTotal() * comp.AttackRate).ToString(), - comp.AttackRate.ToString(CultureInfo.CurrentCulture), - comp.Damage.GetTotal().ToString(), - comp.Range.ToString(CultureInfo.CurrentCulture), + baseDamage.ToString(), + wieldedDamage, + comp.AttackRate.ToString("0.00", CultureInfo.CurrentCulture), + (comp.AttackRate * baseDamage).Float().ToString("0.00", CultureInfo.CurrentCulture), + structuralDamage.ToString(), + wieldedStructuralDamage, }); } - var state = new StatValuesEuiMessage() + var state = new StatValuesEuiMessage { - Title = "Cargo sell prices", - Headers = new List() + Title = Loc.GetString("stat-melee-values"), + Headers = new List { - "ID", - "Price", + Loc.GetString("stat-melee-id"), + Loc.GetString("stat-melee-base-damage"), + Loc.GetString("stat-melee-wield-damage"), + Loc.GetString("stat-melee-attack-rate"), + Loc.GetString("stat-melee-dps"), + Loc.GetString("stat-melee-structural-damage"), + Loc.GetString("stat-melee-structural-wield-damage"), }, Values = values, }; diff --git a/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs b/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs index 86afe1897b..52b087c5b9 100644 --- a/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs +++ b/Content.Shared/Wieldable/Components/IncreaseDamageOnWieldComponent.cs @@ -6,5 +6,6 @@ namespace Content.Shared.Wieldable.Components; public sealed partial class IncreaseDamageOnWieldComponent : Component { [DataField("damage", required: true)] + [Access(Other = AccessPermissions.ReadExecute)] public DamageSpecifier BonusDamage = default!; } diff --git a/Resources/Locale/en-US/commands/stat-values-command.ftl b/Resources/Locale/en-US/commands/stat-values-command.ftl index 67a211adab..16b365897c 100644 --- a/Resources/Locale/en-US/commands/stat-values-command.ftl +++ b/Resources/Locale/en-US/commands/stat-values-command.ftl @@ -8,6 +8,16 @@ stat-cargo-values = Cargo sell prices stat-cargo-id = ID stat-cargo-price = Price +# Melee +stat-melee-values = Melee weapon damage +stat-melee-id = ID +stat-melee-base-damage = Base damage +stat-melee-wield-damage = Wielded damage +stat-melee-attack-rate = Attack rate +stat-melee-dps = DPS +stat-melee-structural-damage = Structure damage +stat-melee-structural-wield-damage = Wielded structure damage + # Lathe stat-lathe-values = Lathe sell prices stat-lathe-id = ID From 88a86be5004fcbd4076ff7a6fae0992d44b37641 Mon Sep 17 00:00:00 2001 From: Perry Fraser Date: Wed, 6 Aug 2025 19:17:20 -0400 Subject: [PATCH 08/33] docs: update comment on config saving in tests (#39438) --- Content.Client/Playtime/ClientsidePlaytimeTrackingManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Playtime/ClientsidePlaytimeTrackingManager.cs b/Content.Client/Playtime/ClientsidePlaytimeTrackingManager.cs index 330ff9122f..9a4f75d596 100644 --- a/Content.Client/Playtime/ClientsidePlaytimeTrackingManager.cs +++ b/Content.Client/Playtime/ClientsidePlaytimeTrackingManager.cs @@ -94,7 +94,7 @@ public sealed class ClientsidePlaytimeTrackingManager return; } - // At less than 1 minute of time diff, there's not much point, and saving regardless will brick tests + // At less than 1 minute of time diff, there's not much point // The reason this isn't checking for 0 is because TotalMinutes is fractional, rather than solely whole minutes if (timeDiffMinutes < 1) return; From 556097eed4ab312c2428b6c08ed7c68e8b9da971 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:19:26 -0700 Subject: [PATCH 09/33] Ingestion Bugfixes (#39436) Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs | 6 +++--- Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index cdd366ba50..3ac2df6508 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -249,17 +249,17 @@ public sealed partial class IngestionSystem : EntitySystem // Can we digest the specific item we're trying to eat? if (!IsDigestibleBy(args.Ingested, stomachs)) { + if (!args.Ingest) + return; + if (forceFed) - { _popup.PopupClient(Loc.GetString("ingestion-cant-digest-other", ("target", entity), ("entity", food)), entity, args.User); - } else _popup.PopupClient(Loc.GetString("ingestion-cant-digest", ("entity", food)), entity, entity); return; } - // Exit early if we're just trying to get verbs if (!args.Ingest) { diff --git a/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs b/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs index ab462557d9..588875d553 100644 --- a/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/OpenableSystem.cs @@ -121,7 +121,7 @@ public sealed partial class OpenableSystem : EntitySystem private void OnTransferAttempt(Entity ent, ref SolutionTransferAttemptEvent args) { - if (ent.Comp.Opened) + if (!ent.Comp.Opened) args.Cancel(Loc.GetString(ent.Comp.ClosedPopup, ("owner", ent.Owner))); } From 864fee5bd0c9c2402cab08b75bb8e28bc13378e5 Mon Sep 17 00:00:00 2001 From: Thinbug <101073555+Thinbug0@users.noreply.github.com> Date: Wed, 6 Aug 2025 22:51:30 -0300 Subject: [PATCH 10/33] Bloonion mutation (#33375) --- Resources/Locale/en-US/seeds/seeds.ftl | 2 + .../Objects/Consumable/Food/produce.yml | 75 ++++++++++++++++++ .../Objects/Specific/Hydroponics/seeds.yml | 10 +++ Resources/Prototypes/Hydroponics/seeds.yml | 36 +++++++++ .../Hydroponics/bloonion.rsi/dead.png | Bin 0 -> 275 bytes .../Hydroponics/bloonion.rsi/harvest.png | Bin 0 -> 528 bytes .../Hydroponics/bloonion.rsi/meta.json | 43 ++++++++++ .../bloonion.rsi/produce-inhand-left.png | Bin 0 -> 701 bytes .../bloonion.rsi/produce-inhand-right.png | Bin 0 -> 687 bytes .../Hydroponics/bloonion.rsi/produce.png | Bin 0 -> 476 bytes .../Hydroponics/bloonion.rsi/seed.png | Bin 0 -> 410 bytes .../Hydroponics/bloonion.rsi/stage-1.png | Bin 0 -> 132 bytes .../Hydroponics/bloonion.rsi/stage-2.png | Bin 0 -> 193 bytes .../Hydroponics/bloonion.rsi/stage-3.png | Bin 0 -> 284 bytes .../Hydroponics/bloonion.rsi/stage-4.png | Bin 0 -> 358 bytes 15 files changed, 166 insertions(+) create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/dead.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/harvest.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/produce-inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/produce-inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/produce.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/seed.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-1.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-2.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-3.png create mode 100644 Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-4.png diff --git a/Resources/Locale/en-US/seeds/seeds.ftl b/Resources/Locale/en-US/seeds/seeds.ftl index 1ca559db30..379f25183d 100644 --- a/Resources/Locale/en-US/seeds/seeds.ftl +++ b/Resources/Locale/en-US/seeds/seeds.ftl @@ -142,3 +142,5 @@ seeds-cherry-name = cherry seeds-cherry-display-name = cherry tree seeds-anomaly-berry-name = anomaly berry seeds-anomaly-berry-display-name = anomaly berries +seeds-bloonion-name = bloonion +seeds-bloonion-display-name = bloonion bulbs diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml index 721c2e3e38..3841dc06b0 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/produce.yml @@ -2756,3 +2756,78 @@ entries: Taco: AnomalyBerry Burger: AnomalyBerryBurger + +- type: entity + name: bloonion bulb + description: A strange floating bulb.. Nothing worth crying over. + parent: BaseStructureDynamic + id: FoodBloonion + components: + - type: Appearance + - type: Sprite + drawdepth: Items + noRot: true + sprite: Objects/Specific/Hydroponics/bloonion.rsi + state: produce + - type: Item + size: Small + sprite: Objects/Specific/Hydroponics/bloonion.rsi + heldPrefix: produce + - type: Produce + seedId: bloonion + - type: Tag + tags: + - Vegetable + - type: PotencyVisuals + - type: FlavorProfile + flavors: + - onion + - strange + - type: SolutionContainerManager + solutions: + food: + maxVol: 7 + canReact: false + reagents: + - ReagentId: Potassium + Quantity: 1 + - ReagentId: Phosphorus + Quantity: 1 + - ReagentId: Sugar + Quantity: 1 + - ReagentId: Allicin + Quantity: 4 + - type: Extractable + grindableSolutionName: food + - type: ExplodeOnTrigger + - type: Explosive + explosionType: Default + maxIntensity: 0.001 + intensitySlope: 1 + totalIntensity: 0.1 + - type: Damageable + damageContainer: Biological + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 1 + behaviors: + - !type:SpillBehavior + solution: food + - !type:TriggerBehavior + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: InteractionOutline + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.20 + position: 0, 0.35 + density: 80 + mask: + - MobMask + layer: + - MobLayer diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index 1777d8675c..ca6270ab64 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -762,3 +762,13 @@ seedId: anomalyBerry - type: Sprite sprite: Objects/Specific/Hydroponics/anomaly_berry.rsi + +- type: entity + parent: SeedBase + name: packet of bloonion seeds + id: BloonionSeeds + components: + - type: Seed + seedId: bloonion + - type: Sprite + sprite: Objects/Specific/Hydroponics/bloonion.rsi diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index 55cec210af..37e8a1beb3 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -832,6 +832,7 @@ - FoodOnion mutationPrototypes: - onionred + - bloonion lifespan: 25 maturation: 8 production: 6 @@ -1994,3 +1995,38 @@ Min: 1 Max: 2 PotencyDivisor: 40 + +- type: seed + id: bloonion + name: seeds-bloonion-name + noun: seeds-noun-seeds + displayName: seeds-bloonion-display-name + plantRsi: Objects/Specific/Hydroponics/bloonion.rsi + packetPrototype: BloonionSeeds + productPrototypes: + - FoodBloonion + lifespan: 25 + maturation: 15 + production: 3 + yield: 3 + potency: 10 + growthStages: 4 + waterConsumption: 0.60 + nutrientConsumption: 0.50 + chemicals: + Potassium: + Min: 1 + Max: 5 + PotencyDivisor: 20 + Phosphorus: + Min: 1 + Max: 5 + PotencyDivisor: 20 + Sugar: + Min: 1 + Max: 5 + PotencyDivisor: 20 + Allicin: + Min: 1 + Max: 10 + PotencyDivisor: 10 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/dead.png b/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/dead.png new file mode 100644 index 0000000000000000000000000000000000000000..eb068364b5c6a4870ad514517edccb001b453131 GIT binary patch literal 275 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 SG3@{V0000 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/seed.png b/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/seed.png new file mode 100644 index 0000000000000000000000000000000000000000..c370b26cf58d2419ade04de839811e30823e0a0c GIT binary patch literal 410 zcmV;L0cHM)P)Px$R7pfZR9J=Wlrc*KK@dh?f{J@50Yi#_#8?QyI)sqQLaZ%BTP;Ll>z`4?LR+n@ z?G*`W(%C3tk*L8-(9ID;I19ND@e=0bK#P6NaIq&Epl>%Iqi{3(EZsdA0odv+{Xh7D9 zi7*0YtZ4vLA{Ds)+IS$D&Y~=PARu~Y-RFl}G zO<${l-{1L%`zFd8`VtPK+b{I>)7Y3u1dO`XN-c47S^eRcp1)WC1n=zP?3Ci_y13Y{ z1$5huK>yn276->C!T&tBq7$I&&d9dz?QDPh_T#i8Yp&=OXeUk*`Pnw_Yjit3QLK0p zR?2yAaV0M*-n#2iIIN0thZ@C|a$Yp!rNs>fgW+HB32ljXN~yd|hX4Qo07*qoM6N<$ Ef|eP*y#N3J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-1.png b/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-1.png new file mode 100644 index 0000000000000000000000000000000000000000..283c44be21af74e140634a194b9b33b8d9489019 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}cAhSdArY;~ z2@!!m6;W)LOKQVa|$ X&I(q1eppuyG>O5})z4*}Q$iB}p#>(N literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-2.png b/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5362406d00a8496aafd5fd4c2bec9f3833c5795d GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R})t)YnArY;~ z2@lK(xg9(U4Zulf69R^#N)+*^B;c`nr2DBqu% zazB{m-ujO}{wHTYsApqiYul!h{VVF+frgilRjfPz^YA=b&bo==OpwIc0}WC}Cam+= olKvNdWLNP58V|IqA%=lr*$ZQ@bBycm0-eF&>FVdQ&MBb@0H~r!g8%>k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-3.png b/Resources/Textures/Objects/Specific/Hydroponics/bloonion.rsi/stage-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c4947b625c3d1cb1390a5f59b6b57e89b44c69f7 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}*F0SuLn2y} z6C_v{Cy4Yk1sZU%Nf-njo}h32=-=i)f6pAyQ#gDe!*-^Mapa1J4Ab_{m#nM%>o6~_ z$YkN~A5Z6+^OVQ^PYDqG>%1w_=ZOWwv&Zx0=NW*&iRbcZdwxCQZ?5^5IBD^eH3AOb z3!^7}{lCZ3T~bm)!<%2F(Nojy|HPlUp4a|MN=Qi5Px$AW1|)R9J;$U>F6XU=)mk0S1he8t}T_{XdK?+PITs^Oz{H{9&o>e<3|#23Bcq z1|d5WhKHrL{|W0t1uW!PjO^>*|Ckt<**F+}zkA5=@AprV%_2Dj(0%>#)I)~9zkV?M z`SFF}!f>AIEM!}#50Ioo#yLh3JL;wH)07*qoM6N<$ Eg3d#r1poj5 literal 0 HcmV?d00001 From 15e024fae9a4b85683cc32b775830187035dabb8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 7 Aug 2025 01:52:40 +0000 Subject: [PATCH 11/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 812e3565f3..771a7d82e6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: SaphireLattice - changes: - - message: Steel sheets no longer have unintuitively wasteful plating placement - that can be done with steel tiles instead - type: Remove - id: 8322 - time: '2025-04-23T11:08:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33443 - author: ArchRBX changes: - message: pAI's can now install a variety of useful software through their new @@ -3902,3 +3894,10 @@ id: 8834 time: '2025-08-06T20:14:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39379 +- author: Thinbug0 + changes: + - message: New onion mutation, Bloonions! floating balloon-like onions. + type: Add + id: 8835 + time: '2025-08-07T01:51:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33375 From 5444908a79265dab3f87c07e8cc1a01eea01d69a Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 7 Aug 2025 03:56:27 +0200 Subject: [PATCH 12/33] Fix title2.ogg attribution (#39435) Co-authored-by: kait --- Resources/Audio/Lobby/attributions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Audio/Lobby/attributions.yml b/Resources/Audio/Lobby/attributions.yml index ab96eb41a1..92c2e095b7 100644 --- a/Resources/Audio/Lobby/attributions.yml +++ b/Resources/Audio/Lobby/attributions.yml @@ -38,7 +38,7 @@ - files: ["title2.ogg"] license: "Custom" - copyright: "Originally composed by Jonathan Dunn for Robocop 2 Gameboy published by Ocean Software. Remixed by Eric Shumaker for his video Dilbert 3. As of October 9th, 2008 nobody owns the rights to this song and copyright action has never been taken against anyone using this song in their projects." + copyright: "Originally composed by Jonathan Dunn for RoboCop (Game Boy) published by Ocean Software. Remixed by Eric Shumaker for his video Dilbert 3. As of October 9th, 2008 nobody owns the rights to this song and copyright action has never been taken against anyone using this song in their projects." source: "https://www.youtube.com/watch?v=4o6_8Unj2mQ" - files: ["title3.ogg"] From 7e676a03b6c0803142affda8386f6599599d1ed3 Mon Sep 17 00:00:00 2001 From: Kittygyat <202250949+Kittygyat@users.noreply.github.com> Date: Thu, 7 Aug 2025 04:03:11 +0100 Subject: [PATCH 13/33] Resized baseball bats to be more realistic (#38392) * Resized baseball bats to be more realistic * Added new vertical icon for the baseball bat & incomplete variant, sprites by TiniestShark * Added requested changes * Added suggested changes for the incomplete sprite --- .../Objects/Weapons/Melee/baseball_bat.yml | 10 ++++++++++ .../Weapons/Melee/baseball_bat.rsi/meta.json | 5 ++++- .../Weapons/Melee/baseball_bat.rsi/storage.png | Bin 0 -> 281 bytes .../Weapons/Melee/incomplete_bat.rsi/meta.json | 5 ++++- .../Weapons/Melee/incomplete_bat.rsi/storage.png | Bin 0 -> 554 bytes 5 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/storage.png create mode 100644 Resources/Textures/Objects/Weapons/Melee/incomplete_bat.rsi/storage.png diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml index b09dfee840..3aa5b041f8 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/baseball_bat.yml @@ -23,6 +23,11 @@ Structural: 10 - type: Item size: Normal + shape: + - 0,0,0,3 + storedSprite: + state: storage + sprite: Objects/Weapons/Melee/baseball_bat.rsi - type: Tool qualities: - Rolling @@ -54,6 +59,11 @@ state: icon - type: Item size: Normal + shape: + - 0,0,0,3 + storedSprite: + state: storage + sprite: Objects/Weapons/Melee/incomplete_bat.rsi sprite: Objects/Weapons/Melee/incomplete_bat.rsi - type: Construction graph: WoodenBat diff --git a/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/meta.json b/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/meta.json index 6eb88a0dff..d22ea9b629 100644 --- a/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-NC-SA-3.0", - "copyright": "Taken from goonstation and modified by Swept at commit https://github.com/goonstation/goonstation/pull/3555/commits/b24eb6260647c0fcfe858268a26b6160bc50017a, wielded version by Easypoll", + "copyright": "Taken from goonstation and modified by Swept at commit https://github.com/goonstation/goonstation/pull/3555/commits/b24eb6260647c0fcfe858268a26b6160bc50017a, wielded version by Easypoll, vertical icon sprite by TiniestShark", "size": { "x": 32, "y": 32 @@ -10,6 +10,9 @@ { "name": "icon" }, + { + "name": "storage" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/storage.png b/Resources/Textures/Objects/Weapons/Melee/baseball_bat.rsi/storage.png new file mode 100644 index 0000000000000000000000000000000000000000..eac5bb8b4d87d7e1cca8acae8cc6a5c06e8f8b5d GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}mpxq^Ln2y} zQx-6=%=qxPeWUrDpGQ3UBz2}l%zL8KtMg^PjJrYL$s#uIQpPC)3s*8Q!Q7I1wl{*5l3fVi+LI1yyW9hl3n`-)&Q6Uebr-d3gIZ7y#H$iHZx~fz)(pB0zY9jal zdD_~{wAVe70z$8@`#BDT_kl*;b$?G?w{ZppUVv+}?XOTybKj)b+gkh>i0%NFH*HNh z0Iqg{(PvBMa#IS>@oO6JaRCe!fZ=;!VBO2A^&aO>Kz^Hk(H(Gj1WeHV=*AzrZ)fVh zB10zt004GLL_t(og=1u(00fxu{fDtPocY8^ju}jpSf1o8&A`CGz+kB^fZ`ZZ01LSe zKn9vJ+%V>UQbU655TF(qb-<_tMjbHffKdmGI$+cRqYfB#z^DU89Wd&EQ3p`P0oR{= sWjKEG1KB-fvH`3|Om5GZfq{Vm0I;4HA+a@L?*IS*07*qoM6N<$f|TIy?f?J) literal 0 HcmV?d00001 From ff0d45d8b0a6ea84a1a50e70368aa3f4c1b7b8e0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 7 Aug 2025 03:04:18 +0000 Subject: [PATCH 14/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 771a7d82e6..450167503e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: ArchRBX - changes: - - message: pAI's can now install a variety of useful software through their new - Software Catalog. - type: Add - - message: pAI's no longer start with a Station Map or MIDI Player, and must purchase - these through the shop. - type: Tweak - id: 8323 - time: '2025-04-23T23:55:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/36857 - author: NoElkaTheGod changes: - message: Toysword now actually looks almost like the real thing, as advertised @@ -3901,3 +3890,12 @@ id: 8835 time: '2025-08-07T01:51:30.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/33375 +- author: Kittygyat + changes: + - message: Made baseball bats 1x4 instead of 2x2 + type: Tweak + - message: New baseball bat inventory icon sprites + type: Add + id: 8836 + time: '2025-08-07T03:03:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/38392 From 2abe4a8a0244b8b514c9c1c908d11c82d2e040fe Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Thu, 7 Aug 2025 05:32:25 -0700 Subject: [PATCH 15/33] Fix Ingestion Localization Pop-ups (#39437) Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: ScarKy0 --- Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs | 5 ++++- .../Nutrition/EntitySystems/SharedDrinkSystem.cs | 6 ++++-- Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs | 8 +++++++- .../en-US/nutrition/components/ingestion-system.ftl | 3 +++ Resources/Prototypes/Nutrition/edible.yml | 3 +++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index 3ac2df6508..470747fa3f 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -466,7 +466,10 @@ public sealed partial class IngestionSystem : EntitySystem } else { - _popup.PopupClient(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors)), args.User, args.User); + _popup.PopupPredicted(Loc.GetString(edible.Message, ("food", entity.Owner), ("flavors", flavors)), + Loc.GetString(edible.OtherMessage), + args.User, + args.User); // log successful voluntary eating _adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(args.User):target} ate {ToPrettyString(entity):food}"); diff --git a/Content.Shared/Nutrition/EntitySystems/SharedDrinkSystem.cs b/Content.Shared/Nutrition/EntitySystems/SharedDrinkSystem.cs index 303d94d55f..fe804dd2e6 100644 --- a/Content.Shared/Nutrition/EntitySystems/SharedDrinkSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/SharedDrinkSystem.cs @@ -141,8 +141,10 @@ public abstract partial class SharedDrinkSystem : EntitySystem } else { - _popup.PopupClient(Loc.GetString("edible-slurp", ("flavors", flavors)), args.User, args.User); - _popup.PopupEntity(Loc.GetString("edible-slurp"), args.User, Filter.PvsExcept(args.User), true); + _popup.PopupPredicted(Loc.GetString("edible-slurp", ("flavors", flavors)), + Loc.GetString("edible-slurp-other"), + args.User, + args.User); // log successful voluntary drinking _adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(args.User):target} drank {ToPrettyString(entity.Owner):drink}"); diff --git a/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs b/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs index 0f4c23846a..2cfe900167 100644 --- a/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs +++ b/Content.Shared/Nutrition/Prototypes/EdiblePrototype.cs @@ -21,11 +21,17 @@ public sealed partial class EdiblePrototype : IPrototype public SoundSpecifier UseSound = new SoundCollectionSpecifier("eating"); ///

    - /// The localization identifier for the ingestion message. + /// The localization identifier for the user's ingestion message. /// [DataField] public LocId Message; + /// + /// The localization identifier for an observer's or "others'" ingestion message. + /// + [DataField] + public LocId OtherMessage; + /// /// Localization verb used when consuming this item. /// diff --git a/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl b/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl index 692100e61a..a82eae11e3 100644 --- a/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl +++ b/Resources/Locale/en-US/nutrition/components/ingestion-system.ftl @@ -26,9 +26,12 @@ ingestion-verb-drink = Drink # Edible Component edible-nom = Nom. {$flavors} +edible-nom-other = Nom. edible-slurp = Slurp. {$flavors} +edible-slurp-other = Slurp. edible-swallow = You swallow { THE($food) } edible-gulp = Gulp. {$flavors} +edible-gulp-other = Gulp. edible-has-used-storage = You cannot {$verb} { THE($food) } with an item stored inside. diff --git a/Resources/Prototypes/Nutrition/edible.yml b/Resources/Prototypes/Nutrition/edible.yml index 1b29bbed69..3dd11521ef 100644 --- a/Resources/Prototypes/Nutrition/edible.yml +++ b/Resources/Prototypes/Nutrition/edible.yml @@ -11,6 +11,7 @@ volume: -1 collection: eating # I think this *should* grab the sound specifier... message: edible-nom + otherMessage: edible-nom-other verb: edible-verb-food noun: edible-noun-food verbName: ingestion-verb-food @@ -26,6 +27,7 @@ volume: -2 path: /Audio/Items/drink.ogg message: edible-slurp + otherMessage: edible-slurp-other verb: edible-verb-drink noun: edible-noun-drink verbName: ingestion-verb-drink @@ -41,6 +43,7 @@ volume: -1 path: /Audio/Items/pill.ogg message: edible-swallow + otherMessage: edible-gulp-other verb: edible-verb-pill noun: edible-noun-pill verbName: ingestion-verb-food From 9b5d2ff11b8f19fafbf97d6ceab238028ca6dfeb Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Thu, 7 Aug 2025 14:38:09 +0200 Subject: [PATCH 16/33] place stored changeling identities next to each other (#39452) --- Content.Shared/Changeling/ChangelingIdentitySystem.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Changeling/ChangelingIdentitySystem.cs b/Content.Shared/Changeling/ChangelingIdentitySystem.cs index 8f704c49be..5e1fa25e4c 100644 --- a/Content.Shared/Changeling/ChangelingIdentitySystem.cs +++ b/Content.Shared/Changeling/ChangelingIdentitySystem.cs @@ -23,6 +23,7 @@ public sealed class ChangelingIdentitySystem : EntitySystem [Dependency] private readonly SharedPvsOverrideSystem _pvsOverrideSystem = default!; public MapId? PausedMapId; + private int _numberOfStoredIdentities = 0; // TODO: remove this public override void Initialize() { @@ -101,7 +102,11 @@ public sealed class ChangelingIdentitySystem : EntitySystem return null; EnsurePausedMap(); - var mob = Spawn(speciesPrototype.Prototype, new MapCoordinates(Vector2.Zero, PausedMapId!.Value)); + // TODO: Setting the spawn location is a shitty bandaid to prevent admins from crashing our servers. + // Movercontrollers and mob collisions are currently being calculated even for paused entities. + // Spawning all of them in the same spot causes severe performance problems. + // Cryopods and Polymorph have the same problem. + var mob = Spawn(speciesPrototype.Prototype, new MapCoordinates(new Vector2(2 * _numberOfStoredIdentities++, 0), PausedMapId!.Value)); var storedIdentity = EnsureComp(mob); storedIdentity.OriginalEntity = target; // TODO: network this once we have WeakEntityReference or the autonetworking source gen is fixed From ff5ce315f9d58f46da739330a9ccbc2c42a1b237 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 7 Aug 2025 16:00:35 +0200 Subject: [PATCH 17/33] Fix changeling typing indicator (#39454) init --- .../Chat/TypingIndicator/TypingIndicatorComponent.cs | 4 ++-- Resources/Prototypes/Entities/Mobs/Species/base.yml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs b/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs index f263de4913..7861da4546 100644 --- a/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs +++ b/Content.Shared/Chat/TypingIndicator/TypingIndicatorComponent.cs @@ -7,13 +7,13 @@ namespace Content.Shared.Chat.TypingIndicator; /// Show typing indicator icon when player typing text in chat box. /// Added automatically when player poses entity. ///
-[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(SharedTypingIndicatorSystem))] public sealed partial class TypingIndicatorComponent : Component { /// /// Prototype id that store all visual info about typing indicator. /// - [DataField("proto")] + [DataField("proto"), AutoNetworkedField] public ProtoId TypingIndicatorPrototype = "default"; } diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml index 9ecce3904d..8fcaef42b9 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml @@ -81,6 +81,7 @@ horizontalRotation: 90 - type: HumanoidAppearance species: Human + - type: TypingIndicator - type: SlowOnDamage speedModifierThresholds: 60: 0.7 From 5eb9dc2475909ebc7f9887dc1642ffa1ba3207df Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Thu, 7 Aug 2025 16:55:25 +0200 Subject: [PATCH 18/33] give paused maps from polymorph and cryostorage a name (#39453) --- Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs | 6 ++++-- Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs | 7 +++++-- Content.Shared/Changeling/ChangelingIdentitySystem.cs | 2 +- .../Locale/en-US/bed/cryostorage/cryogenic-storage.ftl | 2 ++ Resources/Locale/en-US/changeling/changeling.ftl | 2 ++ Resources/Locale/en-US/polymorph/polymorph.ftl | 2 ++ 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs b/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs index 1db624439a..fd24ad9774 100644 --- a/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs +++ b/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs @@ -31,7 +31,9 @@ public sealed partial class PolymorphSystem if (PausedMap != null && Exists(PausedMap)) return; - PausedMap = _map.CreateMap(); - _map.SetPaused(PausedMap.Value, true); + var mapUid = _map.CreateMap(); + _metaData.SetEntityName(mapUid, Loc.GetString("polymorph-paused-map-name")); + _map.SetPaused(mapUid, true); + PausedMap = mapUid; } } diff --git a/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs b/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs index a93f2e0618..757a707d40 100644 --- a/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs +++ b/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs @@ -25,6 +25,7 @@ public abstract class SharedCryostorageSystem : EntitySystem [Dependency] protected readonly IGameTiming Timing = default!; [Dependency] protected readonly ISharedAdminLogManager AdminLog = default!; [Dependency] protected readonly SharedMindSystem Mind = default!; + [Dependency] private readonly MetaDataSystem _meta = default!; protected EntityUid? PausedMap { get; private set; } @@ -167,8 +168,10 @@ public abstract class SharedCryostorageSystem : EntitySystem if (PausedMap != null && Exists(PausedMap)) return; - PausedMap = _map.CreateMap(); - _map.SetPaused(PausedMap.Value, true); + var mapUid = _map.CreateMap(); + _meta.SetEntityName(mapUid, Loc.GetString("cryostorage-paused-map-name")); + _map.SetPaused(mapUid, true); + PausedMap = mapUid; } public bool IsInPausedMap(Entity entity) diff --git a/Content.Shared/Changeling/ChangelingIdentitySystem.cs b/Content.Shared/Changeling/ChangelingIdentitySystem.cs index 5e1fa25e4c..f68f72f853 100644 --- a/Content.Shared/Changeling/ChangelingIdentitySystem.cs +++ b/Content.Shared/Changeling/ChangelingIdentitySystem.cs @@ -178,7 +178,7 @@ public sealed class ChangelingIdentitySystem : EntitySystem return; var mapUid = _map.CreateMap(out var newMapId); - _metaSystem.SetEntityName(mapUid, "Changeling identity storage map"); + _metaSystem.SetEntityName(mapUid, Loc.GetString("changeling-paused-map-name")); PausedMapId = newMapId; _map.SetPaused(mapUid, true); } diff --git a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl index f966f30e2d..7d2e50e772 100644 --- a/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl +++ b/Resources/Locale/en-US/bed/cryostorage/cryogenic-storage.ftl @@ -5,3 +5,5 @@ earlyleave-cryo-job-unknown = Unknown # {$entity} available for GENDER function purposes earlyleave-cryo-announcement = {$character} ({$job}) has entered cryogenic storage! earlyleave-cryo-sender = Station + +cryostorage-paused-map-name = Cryosleeper body storage map diff --git a/Resources/Locale/en-US/changeling/changeling.ftl b/Resources/Locale/en-US/changeling/changeling.ftl index aa3843691a..423cb0811e 100644 --- a/Resources/Locale/en-US/changeling/changeling.ftl +++ b/Resources/Locale/en-US/changeling/changeling.ftl @@ -18,3 +18,5 @@ changeling-devour-consume-complete-others = { CAPITALIZE(POSS-ADJ($user)) } unca changeling-transform-attempt-self = Our bones snap, muscles tear, one flesh becomes another. changeling-transform-attempt-others = { CAPITALIZE(POSS-ADJ($user)) } bones snap, muscles tear, body shifts into another. + +changeling-paused-map-name = Changeling identity storage map diff --git a/Resources/Locale/en-US/polymorph/polymorph.ftl b/Resources/Locale/en-US/polymorph/polymorph.ftl index ac78eb6bb4..2a74b0df32 100644 --- a/Resources/Locale/en-US/polymorph/polymorph.ftl +++ b/Resources/Locale/en-US/polymorph/polymorph.ftl @@ -3,3 +3,5 @@ polymorph-self-action-description = Instantly polymorph yourself into {$target}. polymorph-popup-generic = {CAPITALIZE(THE($parent))} turned into {$child}. polymorph-revert-popup-generic = {CAPITALIZE(THE($parent))} reverted back into {$child}. + +polymorph-paused-map-name = Polymorph body storage map From 9528fc4e2604554715a645469aa1b19a2ddf6b31 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 7 Aug 2025 14:56:33 +0000 Subject: [PATCH 19/33] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index fca3c513f7..908c6d0d1e 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1315,5 +1315,13 @@ Entries: id: 160 time: '2025-08-06T17:23:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39424 +- author: slarticodefast + changes: + - message: Paused maps from cryostorage and polymorphing are now named to make them + easier to find when debugging. + type: Tweak + id: 161 + time: '2025-08-07T14:55:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39453 Name: Admin Order: 2 From 3638b2f44e52dbe4e8c20812a9ea98a98b9a9c04 Mon Sep 17 00:00:00 2001 From: lolman360 <22850904+lolman360@users.noreply.github.com> Date: Fri, 8 Aug 2025 02:01:18 +1000 Subject: [PATCH 20/33] fixes items with complex shapes failing to insert sometimes (#38896) * fixes item insertion bug fixes bug where items with complex shapes would fail to insert if the item's StoredRotation wasn't a right angle * independence from StoredRotation --- Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index d2d80a632f..74c47bbb25 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -1341,7 +1341,7 @@ public abstract class SharedStorageSystem : EntitySystem Angle startAngle; if (storageEnt.Comp.DefaultStorageOrientation == null) { - startAngle = Angle.FromDegrees(-itemEnt.Comp.StoredRotation); + startAngle = Angle.Zero; } else { From 6bb7610110abd9f88134a690c864e09e9b797056 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 7 Aug 2025 16:02:25 +0000 Subject: [PATCH 21/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 450167503e..ad34cd6196 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: NoElkaTheGod - changes: - - message: Toysword now actually looks almost like the real thing, as advertised - in the description - type: Tweak - id: 8324 - time: '2025-04-24T01:21:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34199 - author: Pronana changes: - message: Moths can now eat pills @@ -3899,3 +3891,11 @@ id: 8836 time: '2025-08-07T03:03:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/38392 +- author: lolman360 + changes: + - message: Fixed certain items (like pickaxes) failing to insert into containers + that have enough space to store them, sometimes. + type: Fix + id: 8837 + time: '2025-08-07T16:01:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/38896 From c32ee100a144092a9af0a2dff6e066a4730199c3 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 7 Aug 2025 21:41:16 +0200 Subject: [PATCH 22/33] Add changeling briefing sound (#39465) * init * guh --- .../Audio/Ambience/Antag/attributions.yml | 5 +++++ .../Audio/Ambience/Antag/changeling_start.ogg | Bin 0 -> 117748 bytes Resources/Prototypes/GameRules/roundstart.yml | 1 + 3 files changed, 6 insertions(+) create mode 100644 Resources/Audio/Ambience/Antag/changeling_start.ogg diff --git a/Resources/Audio/Ambience/Antag/attributions.yml b/Resources/Audio/Ambience/Antag/attributions.yml index c0c34eb880..5418d2a204 100644 --- a/Resources/Audio/Ambience/Antag/attributions.yml +++ b/Resources/Audio/Ambience/Antag/attributions.yml @@ -26,3 +26,8 @@ license: "CC-BY-SA-3.0" copyright: "Made by @ps3moira on Discord for SS14" source: "https://www.youtube.com/watch?v=jf1sYGYVLsw" +- files: ["changeling_start.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from TG station at commit https://github.com/tgstation/tgstation/commit/436ba869ebcd0b60b63973fb7562f447ee655205" + source: "https://github.com/tgstation/tgstation/blob/master/sound/music/antag/ling_alert.ogg" + diff --git a/Resources/Audio/Ambience/Antag/changeling_start.ogg b/Resources/Audio/Ambience/Antag/changeling_start.ogg new file mode 100644 index 0000000000000000000000000000000000000000..afe654e4ded337df8860a5e3f385e8f04aca0092 GIT binary patch literal 117748 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
-*&$-CFUmJww8lt01TN=RLG^0UT_p!aI%Mop_ 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 literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index 71a249ed48..1748a4c5a3 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -239,6 +239,7 @@ briefing: text: changeling-role-greeting color: Red + sound: /Audio/Ambience/Antag/changeling_start.ogg components: - type: ChangelingDevour - type: ChangelingIdentity From 3d9e1f64a93b7937dccb88c780941f5f6a60cdbc Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:17:24 +0200 Subject: [PATCH 23/33] Disable changeling fixture cloning (#39467) init --- Resources/Prototypes/Entities/Mobs/Player/clone.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index 49c05ba3f1..907b694db9 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -108,7 +108,7 @@ # that means we only need to copy them over when switching between species. # So these don't need to be part of the Body settings, unless someone makes a trait that adjusts these components. - BodyEmotes - - Fixtures + # - Fixtures TODO: A better way to clone fixtures or a fixture fix. Currently if you devour someone on the ground and transform, you lose collision with tables as they were knocked down when they were copied. - Speech - TypingIndicator - ScaleVisuals # for dwarf height From 1374ceea4758db71c7c3cbff9d4b128f38662b82 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Fri, 8 Aug 2025 11:22:34 -0400 Subject: [PATCH 24/33] Move some Station methods into shared (#38976) --- .../UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs | 2 +- Content.Client/Station/StationSystem.cs | 33 +-- .../Tests/Station/EvacShuttleTest.cs | 2 +- .../Systems/AdminVerbSystem.Tools.cs | 4 +- .../Anomaly/AnomalySystem.Generator.cs | 4 +- .../StationCargoOrderDatabaseComponent.cs | 2 +- .../Cargo/Systems/CargoSystem.Orders.cs | 3 +- .../Cargo/Systems/CargoSystem.Telepad.cs | 2 +- Content.Server/Chat/Systems/ChatSystem.cs | 2 +- .../Commands/ContentCompletionHelper.cs | 2 +- .../CrewManifest/CrewManifestSystem.cs | 3 +- .../GameTicking/Rules/DragonRuleSystem.cs | 8 +- .../Rules/GameRuleSystem.Utility.cs | 4 +- .../GameTicking/Rules/NukeopsRuleSystem.cs | 1 + .../RoundstartStationVariationRuleSystem.cs | 5 +- .../BaseEntityReplaceVariationPassSystem.cs | 2 +- .../EntitySpawnVariationPassSystem.cs | 2 +- .../PuddleMessVariationPassSystem.cs | 2 +- .../GameTicking/Rules/ZombieRuleSystem.cs | 3 +- Content.Server/Maps/GameMapPrototype.cs | 3 +- .../Nuke/Commands/SendNukeCodesCommand.cs | 2 +- Content.Server/Nuke/NukeCodePaperSystem.cs | 2 +- Content.Server/RoundEnd/RoundEndSystem.cs | 6 +- .../Salvage/SalvageSystem.Runner.cs | 2 +- .../Shuttles/Systems/ArrivalsSystem.cs | 7 +- .../Systems/EmergencyShuttleSystem.cs | 5 +- .../Systems/ShuttleSystem.GridFill.cs | 14 +- .../EntitySystems/EventHorizonSystem.cs | 4 +- .../Station/Commands/StationCommand.cs | 6 +- .../Station/Events/StationPostInitEvent.cs | 2 +- .../Station/Systems/StationBiomeSystem.cs | 6 +- .../Station/Systems/StationNameSystem.cs | 1 + .../Station/Systems/StationSystem.cs | 154 +----------- .../StationEvents/Events/AnomalySpawnRule.cs | 6 +- .../StationEvents/Events/CargoGiftsRule.cs | 2 +- .../StationEvents/Events/MeteorSwarmSystem.cs | 3 +- .../StationEvents/Events/SpaceSpawnRule.cs | 6 +- .../Components/StationDataComponent.cs | 15 +- .../Station/SharedStationSystem.Tracker.cs | 88 +++++++ Content.Shared/Station/SharedStationSystem.cs | 219 ++++++++++++------ .../Station/StationConfig.cs | 10 +- 41 files changed, 298 insertions(+), 351 deletions(-) rename {Content.Server => Content.Shared}/Station/Components/StationDataComponent.cs (55%) create mode 100644 Content.Shared/Station/SharedStationSystem.Tracker.cs rename {Content.Server => Content.Shared}/Station/StationConfig.cs (59%) diff --git a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs index 59e0e6040b..de9ccbbf50 100644 --- a/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs +++ b/Content.Client/Administration/UI/Tabs/ObjectsTab/ObjectsTab.xaml.cs @@ -76,7 +76,7 @@ public sealed partial class ObjectsTab : Control switch (selection) { case ObjectsTabSelection.Stations: - entities.AddRange(_entityManager.EntitySysManager.GetEntitySystem().Stations); + entities.AddRange(_entityManager.EntitySysManager.GetEntitySystem().GetStationNames()); break; case ObjectsTabSelection.Grids: { diff --git a/Content.Client/Station/StationSystem.cs b/Content.Client/Station/StationSystem.cs index 5a4a1853d2..e1ccd14d7b 100644 --- a/Content.Client/Station/StationSystem.cs +++ b/Content.Client/Station/StationSystem.cs @@ -2,34 +2,5 @@ namespace Content.Client.Station; -///

-/// This handles letting the client know stations are a thing. Only really used by an admin menu. -/// -public sealed partial class StationSystem : SharedStationSystem -{ - private readonly List<(string Name, NetEntity Entity)> _stations = new(); - - /// - /// All stations that currently exist. - /// - /// - /// I'd have this just invoke an entity query, but we're on the client and the client barely knows about stations. - /// - // TODO: Stations have a global PVS override now, this can probably be changed into a query. - public IReadOnlyList<(string Name, NetEntity Entity)> Stations => _stations; - - /// - public override void Initialize() - { - base.Initialize(); - - SubscribeNetworkEvent(StationsUpdated); - } - - private void StationsUpdated(StationsUpdatedEvent ev) - { - _stations.Clear(); - // TODO this needs to be done in component states and with the Ensure() methods - _stations.AddRange(ev.Stations); - } -} +/// +public sealed partial class StationSystem : SharedStationSystem; diff --git a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs index 9e925a451a..02552669f7 100644 --- a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs +++ b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs @@ -2,9 +2,9 @@ using System.Linq; using Content.Server.GameTicking; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; -using Content.Server.Station.Components; using Content.Shared.CCVar; using Content.Shared.Shuttles.Components; +using Content.Shared.Station.Components; using Robust.Shared.GameObjects; using Robust.Shared.Map.Components; diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index 6e88d59be6..44795d1fb2 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -2,15 +2,12 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; using Content.Server.Administration.Components; -using Content.Server.Atmos; -using Content.Server.Atmos.Components; using Content.Server.Cargo.Components; using Content.Server.Doors.Systems; using Content.Server.Hands.Systems; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Stack; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.Weapons.Ranged.Systems; using Content.Shared.Access; @@ -28,6 +25,7 @@ using Content.Shared.Hands.Components; using Content.Shared.Inventory; using Content.Shared.PDA; using Content.Shared.Stacks; +using Content.Shared.Station.Components; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Components; using Robust.Server.Physics; diff --git a/Content.Server/Anomaly/AnomalySystem.Generator.cs b/Content.Server/Anomaly/AnomalySystem.Generator.cs index 1b88429204..46ad9278f8 100644 --- a/Content.Server/Anomaly/AnomalySystem.Generator.cs +++ b/Content.Server/Anomaly/AnomalySystem.Generator.cs @@ -1,6 +1,5 @@ using Content.Server.Anomaly.Components; using Content.Server.Power.EntitySystems; -using Content.Server.Station.Components; using Content.Shared.Anomaly; using Content.Shared.CCVar; using Content.Shared.Materials; @@ -164,8 +163,7 @@ public sealed partial class AnomalySystem var xform = Transform(uid); if (_station.GetStationInMap(xform.MapID) is not { } station || - !TryComp(station, out var data) || - _station.GetLargestGrid(data) is not { } grid) + _station.GetLargestGrid(station) is not { } grid) { if (xform.GridUid == null) return; diff --git a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs index 37d0f5b7d1..56401602b3 100644 --- a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs +++ b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs @@ -1,8 +1,8 @@ using System.Linq; -using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; +using Content.Shared.Station.Components; using Robust.Shared.Prototypes; namespace Content.Server.Cargo.Components; diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index 862bf1f096..febe093d98 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Cargo.Components; -using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.BUI; using Content.Shared.Cargo.Components; @@ -13,8 +12,8 @@ using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Labels.Components; using Content.Shared.Paper; +using Content.Shared.Station.Components; using JetBrains.Annotations; -using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Timing; diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index 25fb514db6..9e5c20e8c9 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -3,11 +3,11 @@ using System.Linq; using Content.Server.Cargo.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; -using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; using Content.Shared.DeviceLinking; using Content.Shared.Power; +using Content.Shared.Station.Components; using Robust.Shared.Audio; using Robust.Shared.Random; using Robust.Shared.Utility; diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index d49da57801..7ff12595d1 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -7,7 +7,6 @@ using Content.Server.Chat.Managers; using Content.Server.GameTicking; using Content.Server.Speech.EntitySystems; using Content.Server.Speech.Prototypes; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.ActionBlocker; using Content.Shared.Administration; @@ -21,6 +20,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Players; using Content.Shared.Players.RateLimiting; using Content.Shared.Radio; +using Content.Shared.Station.Components; using Content.Shared.Whitelist; using Robust.Server.Player; using Robust.Shared.Audio; diff --git a/Content.Server/Commands/ContentCompletionHelper.cs b/Content.Server/Commands/ContentCompletionHelper.cs index f843d84a62..bc80b28762 100644 --- a/Content.Server/Commands/ContentCompletionHelper.cs +++ b/Content.Server/Commands/ContentCompletionHelper.cs @@ -1,4 +1,4 @@ -using Content.Server.Station.Components; +using Content.Shared.Station.Components; using Robust.Shared.Console; namespace Content.Server.Commands; diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index d8e0858ce0..448e2fff20 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.Administration; using Content.Server.EUI; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.StationRecords; using Content.Server.StationRecords.Systems; @@ -10,12 +9,12 @@ using Content.Shared.CCVar; using Content.Shared.CrewManifest; using Content.Shared.GameTicking; using Content.Shared.Roles; +using Content.Shared.Station.Components; using Content.Shared.StationRecords; using Robust.Shared.Configuration; using Robust.Shared.Console; using Robust.Shared.Player; using Robust.Shared.Prototypes; -using Robust.Shared.Utility; namespace Content.Server.CrewManifest; diff --git a/Content.Server/GameTicking/Rules/DragonRuleSystem.cs b/Content.Server/GameTicking/Rules/DragonRuleSystem.cs index de13218568..964b248beb 100644 --- a/Content.Server/GameTicking/Rules/DragonRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/DragonRuleSystem.cs @@ -1,11 +1,8 @@ using Content.Server.Antag; -using Content.Server.Dragon; using Content.Server.GameTicking.Rules.Components; using Content.Server.Mind; using Content.Server.Roles; -using Content.Server.Station.Components; using Content.Server.Station.Systems; -using Content.Shared.CharacterInfo; using Content.Shared.Localizations; using Robust.Server.GameObjects; @@ -56,10 +53,9 @@ public sealed class DragonRuleSystem : GameRuleSystem var dragonXform = Transform(dragon); - var station = _station.GetStationInMap(dragonXform.MapID); EntityUid? stationGrid = null; - if (TryComp(station, out var stationData)) - stationGrid = _station.GetLargestGrid(stationData); + if (_station.GetStationInMap(dragonXform.MapID) is { } station) + stationGrid = _station.GetLargestGrid(station); if (stationGrid is not null) { diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs index 33ee91f8a5..cd93eae502 100644 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs +++ b/Content.Server/GameTicking/Rules/GameRuleSystem.Utility.cs @@ -1,14 +1,12 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; -using Content.Server.GameTicking.Rules.Components; using Content.Server.Station.Components; using Content.Shared.GameTicking.Components; using Content.Shared.Random.Helpers; -using Robust.Server.GameObjects; +using Content.Shared.Station.Components; using Robust.Shared.Collections; using Robust.Shared.Map; using Robust.Shared.Map.Components; -using Robust.Shared.Random; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs index f687c9dcc7..17d9e4c847 100644 --- a/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/NukeopsRuleSystem.cs @@ -24,6 +24,7 @@ using Robust.Shared.Map; using Robust.Shared.Random; using Robust.Shared.Utility; using System.Linq; +using Content.Shared.Station.Components; using Content.Shared.Store.Components; using Robust.Shared.Prototypes; diff --git a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs index 570889155b..66f0d1f22c 100644 --- a/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RoundstartStationVariationRuleSystem.cs @@ -1,11 +1,10 @@ -using System.Linq; -using Content.Server.GameTicking.Rules.Components; +using Content.Server.GameTicking.Rules.Components; using Content.Server.Shuttles.Systems; using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; using Content.Shared.Storage; -using Robust.Shared.Prototypes; using Robust.Shared.Random; namespace Content.Server.GameTicking.Rules; diff --git a/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs index 00b2546e78..1a5b97c327 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/BaseEntityReplaceVariationPassSystem.cs @@ -58,7 +58,7 @@ public abstract class BaseEntityReplaceVariationPassSystem ent, List replacements) diff --git a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs index 7247bd98aa..462c89e016 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/EntitySpawnVariationPassSystem.cs @@ -9,7 +9,7 @@ public sealed class EntitySpawnVariationPassSystem : VariationPassSystem ent, ref StationVariationPassEvent args) { - var totalTiles = Stations.GetTileCount(args.Station); + var totalTiles = Stations.GetTileCount(args.Station.AsNullable()); var dirtyMod = Random.NextGaussian(ent.Comp.TilesPerEntityAverage, ent.Comp.TilesPerEntityStdDev); var trashTiles = Math.Max((int) (totalTiles * (1 / dirtyMod)), 0); diff --git a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs index 41cdbd87f8..2895416a7f 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/PuddleMessVariationPassSystem.cs @@ -15,7 +15,7 @@ public sealed class PuddleMessVariationPassSystem : VariationPassSystem ent, ref StationVariationPassEvent args) { - var totalTiles = Stations.GetTileCount(args.Station); + var totalTiles = Stations.GetTileCount(args.Station.AsNullable()); if (!_proto.TryIndex(ent.Comp.RandomPuddleSolutionFill, out var proto)) return; diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index a38940c667..9fab98446a 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -4,7 +4,6 @@ using Content.Server.GameTicking.Rules.Components; using Content.Server.Popups; using Content.Server.Roles; using Content.Server.RoundEnd; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.Zombies; using Content.Shared.GameTicking.Components; @@ -190,7 +189,7 @@ public sealed class ZombieRuleSystem : GameRuleSystem { foreach (var station in _station.GetStationsSet()) { - if (TryComp(station, out var data) && _station.GetLargestGrid(data) is { } grid) + if (_station.GetLargestGrid(station) is { } grid) stationGrids.Add(grid); } } diff --git a/Content.Server/Maps/GameMapPrototype.cs b/Content.Server/Maps/GameMapPrototype.cs index f0f40fe06d..df9046652b 100644 --- a/Content.Server/Maps/GameMapPrototype.cs +++ b/Content.Server/Maps/GameMapPrototype.cs @@ -1,9 +1,8 @@ -using Content.Server.Station; using JetBrains.Annotations; using Robust.Shared.Prototypes; using Robust.Shared.Utility; using System.Diagnostics; -using System.Numerics; +using Content.Shared.Station; namespace Content.Server.Maps; diff --git a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs index 8ac4f95a97..e44811a835 100644 --- a/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs +++ b/Content.Server/Nuke/Commands/SendNukeCodesCommand.cs @@ -1,6 +1,6 @@ using Content.Server.Administration; -using Content.Server.Station.Components; using Content.Shared.Administration; +using Content.Shared.Station.Components; using Robust.Shared.Console; namespace Content.Server.Nuke.Commands; diff --git a/Content.Server/Nuke/NukeCodePaperSystem.cs b/Content.Server/Nuke/NukeCodePaperSystem.cs index aac2d2361d..af6751ed71 100644 --- a/Content.Server/Nuke/NukeCodePaperSystem.cs +++ b/Content.Server/Nuke/NukeCodePaperSystem.cs @@ -2,9 +2,9 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Chat.Systems; using Content.Server.Fax; using Content.Shared.Fax.Components; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.Paper; +using Content.Shared.Station.Components; using Robust.Shared.Random; using Robust.Shared.Utility; diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs index 2d4f582bfc..a464796a74 100644 --- a/Content.Server/RoundEnd/RoundEndSystem.cs +++ b/Content.Server/RoundEnd/RoundEndSystem.cs @@ -9,7 +9,6 @@ using Content.Server.GameTicking; using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Systems; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.Database; using Content.Shared.DeviceNetwork; @@ -20,6 +19,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.Station.Components; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.RoundEnd @@ -97,10 +97,10 @@ namespace Content.Server.RoundEnd ///
public EntityUid? GetStation() { - AllEntityQuery().MoveNext(out _, out _, out var data); + AllEntityQuery().MoveNext(out var uid, out _, out var data); if (data == null) return null; - var targetGrid = _stationSystem.GetLargestGrid(data); + var targetGrid = _stationSystem.GetLargestGrid((uid, data)); return targetGrid == null ? null : Transform(targetGrid.Value).MapUid; } diff --git a/Content.Server/Salvage/SalvageSystem.Runner.cs b/Content.Server/Salvage/SalvageSystem.Runner.cs index 9050db3971..ceee9c3784 100644 --- a/Content.Server/Salvage/SalvageSystem.Runner.cs +++ b/Content.Server/Salvage/SalvageSystem.Runner.cs @@ -2,7 +2,6 @@ using System.Numerics; using Content.Server.Salvage.Expeditions; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; -using Content.Server.Station.Components; using Content.Shared.Chat; using Content.Shared.Humanoid; using Content.Shared.Mobs.Components; @@ -10,6 +9,7 @@ using Content.Shared.Mobs.Systems; using Content.Shared.Salvage.Expeditions; using Content.Shared.Shuttles.Components; using Content.Shared.Localizations; +using Content.Shared.Station.Components; using Robust.Shared.Map.Components; using Robust.Shared.Player; diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs index aa1c2e6dff..20976ca019 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs @@ -11,7 +11,6 @@ using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; using Content.Server.Spawners.Components; using Content.Server.Spawners.EntitySystems; -using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Server.Station.Systems; using Content.Shared.Administration; @@ -224,7 +223,7 @@ public sealed class ArrivalsSystem : EntitySystem if (component.FirstRun) { - var station = _station.GetLargestGrid(Comp(component.Station)); + var station = _station.GetLargestGrid(component.Station); sourceMap = station == null ? null : Transform(station.Value)?.MapUid; arrivalsDelay += RoundStartFTLDuration; component.FirstRun = false; @@ -470,7 +469,7 @@ public sealed class ArrivalsSystem : EntitySystem { while (query.MoveNext(out var uid, out var comp, out var shuttle, out var xform)) { - if (comp.NextTransfer > curTime || !TryComp(comp.Station, out var data)) + if (comp.NextTransfer > curTime) continue; var tripTime = _shuttles.DefaultTravelTime + _shuttles.DefaultStartupTime; @@ -486,7 +485,7 @@ public sealed class ArrivalsSystem : EntitySystem // Go to station else { - var targetGrid = _station.GetLargestGrid(data); + var targetGrid = _station.GetLargestGrid(comp.Station); if (targetGrid != null) _shuttles.FTLToDock(uid, shuttle, targetGrid.Value); diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index 9eff1455f9..53714c846a 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -14,7 +14,6 @@ using Content.Server.RoundEnd; using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; -using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Server.Station.Systems; using Content.Shared.Access.Systems; @@ -181,7 +180,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem return; } - var targetGrid = _station.GetLargestGrid(Comp(station.Value)); + var targetGrid = _station.GetLargestGrid(station.Value); if (targetGrid == null) return; @@ -270,7 +269,7 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem return null; } - var targetGrid = _station.GetLargestGrid(Comp(stationUid)); + var targetGrid = _station.GetLargestGrid(stationUid); // UHH GOOD LUCK if (targetGrid == null) diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs index a794ee0104..2e6ebe396c 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.GridFill.cs @@ -1,9 +1,7 @@ using System.Numerics; using Content.Server.Shuttles.Components; -using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Shared.CCVar; -using Content.Shared.Salvage; using Content.Shared.Shuttles.Components; using Content.Shared.Station.Components; using Robust.Shared.Collections; @@ -62,10 +60,7 @@ public sealed partial class ShuttleSystem if (!_cfg.GetCVar(CCVars.GridFill)) return; - if (!TryComp(uid, out StationDataComponent? dataComp)) - return; - - var targetGrid = _station.GetLargestGrid(dataComp); + var targetGrid = _station.GetLargestGrid(uid); if (targetGrid == null) return; @@ -165,12 +160,7 @@ public sealed partial class ShuttleSystem if (!_cfg.GetCVar(CCVars.GridFill)) return; - if (!TryComp(uid, out var data)) - { - return; - } - - var targetGrid = _station.GetLargestGrid(data); + var targetGrid = _station.GetLargestGrid(uid); if (targetGrid == null) return; diff --git a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs index 9c69422797..7090ca77ef 100644 --- a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs @@ -1,15 +1,13 @@ using System.Numerics; using Content.Server.Administration.Logs; using Content.Server.Singularity.Events; -using Content.Server.Station.Components; using Content.Shared.Database; -using Content.Shared.Ghost; using Content.Shared.Mind.Components; using Content.Shared.Singularity.Components; using Content.Shared.Singularity.EntitySystems; +using Content.Shared.Station.Components; using Content.Shared.Tag; using Robust.Shared.Containers; -using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; diff --git a/Content.Server/Station/Commands/StationCommand.cs b/Content.Server/Station/Commands/StationCommand.cs index 8fe8c67646..f9dcb83d93 100644 --- a/Content.Server/Station/Commands/StationCommand.cs +++ b/Content.Server/Station/Commands/StationCommand.cs @@ -2,12 +2,12 @@ using System.Diagnostics; using System.Linq; using Content.Server.Administration; using Content.Server.Cargo.Systems; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Shared.Administration; +using Content.Shared.Station; +using Content.Shared.Station.Components; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Errors; -using Robust.Shared.Toolshed.Syntax; using Robust.Shared.Utility; namespace Content.Server.Station.Commands; @@ -54,7 +54,7 @@ public sealed class StationsCommand : ToolshedCommand public EntityUid? LargestGrid([PipedArgument] EntityUid input) { _station ??= GetSys(); - return _station.GetLargestGrid(Comp(input)); + return _station.GetLargestGrid(input); } [CommandImplementation("largestgrid")] diff --git a/Content.Server/Station/Events/StationPostInitEvent.cs b/Content.Server/Station/Events/StationPostInitEvent.cs index 54b8eeeb31..934d482bf2 100644 --- a/Content.Server/Station/Events/StationPostInitEvent.cs +++ b/Content.Server/Station/Events/StationPostInitEvent.cs @@ -1,4 +1,4 @@ -using Content.Server.Station.Components; +using Content.Shared.Station.Components; namespace Content.Server.Station.Events; diff --git a/Content.Server/Station/Systems/StationBiomeSystem.cs b/Content.Server/Station/Systems/StationBiomeSystem.cs index c12e2f47e4..61bc70794a 100644 --- a/Content.Server/Station/Systems/StationBiomeSystem.cs +++ b/Content.Server/Station/Systems/StationBiomeSystem.cs @@ -20,12 +20,10 @@ public sealed partial class StationBiomeSystem : EntitySystem private void OnStationPostInit(Entity map, ref StationPostInitEvent args) { - if (!TryComp(map, out StationDataComponent? dataComp)) + var station = _station.GetLargestGrid(map.Owner); + if (station == null) return; - var station = _station.GetLargestGrid(dataComp); - if (station == null) return; - var mapId = Transform(station.Value).MapID; var mapUid = _map.GetMapOrInvalid(mapId); diff --git a/Content.Server/Station/Systems/StationNameSystem.cs b/Content.Server/Station/Systems/StationNameSystem.cs index fbbf690465..ea17830a47 100644 --- a/Content.Server/Station/Systems/StationNameSystem.cs +++ b/Content.Server/Station/Systems/StationNameSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Station.Components; +using Content.Shared.Station.Components; namespace Content.Server.Station.Systems; diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index 456d3c6b80..7100c6144f 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -3,20 +3,16 @@ using Content.Server.Chat.Systems; using Content.Server.GameTicking; using Content.Server.Station.Components; using Content.Server.Station.Events; -using Content.Shared.CCVar; using Content.Shared.Station; using Content.Shared.Station.Components; using JetBrains.Annotations; -using Robust.Server.GameObjects; using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Collections; -using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; -using Robust.Shared.Random; using Robust.Shared.Utility; namespace Content.Server.Station.Systems; @@ -34,7 +30,6 @@ public sealed partial class StationSystem : SharedStationSystem [Dependency] private readonly ChatSystem _chatSystem = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly MapSystem _map = default!; [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!; private ISawmill _sawmill = default!; @@ -42,8 +37,8 @@ public sealed partial class StationSystem : SharedStationSystem private EntityQuery _gridQuery; private EntityQuery _xformQuery; - private ValueList _mapIds = new(); - private ValueList<(Box2Rotated Bounds, MapId MapId)> _gridBounds = new(); + private ValueList _mapIds; + private ValueList<(Box2Rotated Bounds, MapId MapId)> _gridBounds; /// public override void Initialize() @@ -79,6 +74,7 @@ public sealed partial class StationSystem : SharedStationSystem return; stationData.Grids.Remove(uid); + Dirty(uid, component); } public override void Shutdown() @@ -193,44 +189,6 @@ public sealed partial class StationSystem : SharedStationSystem #endregion Event handlers - /// - /// Gets the largest member grid from a station. - /// - public EntityUid? GetLargestGrid(StationDataComponent component) - { - EntityUid? largestGrid = null; - Box2 largestBounds = new Box2(); - - foreach (var gridUid in component.Grids) - { - if (!TryComp(gridUid, out var grid) || - grid.LocalAABB.Size.LengthSquared() < largestBounds.Size.LengthSquared()) - continue; - - largestBounds = grid.LocalAABB; - largestGrid = gridUid; - } - - return largestGrid; - } - - /// - /// Returns the total number of tiles contained in the station's grids. - /// - public int GetTileCount(StationDataComponent component) - { - var count = 0; - foreach (var gridUid in component.Grids) - { - if (!TryComp(gridUid, out var grid)) - continue; - - count += _map.GetAllTiles(gridUid, grid).Count(); - } - - return count; - } - /// /// Tries to retrieve a filter for everything in the station the source is on. /// @@ -384,6 +342,7 @@ public sealed partial class StationSystem : SharedStationSystem var stationMember = EnsureComp(mapGrid); stationMember.Station = station; stationData.Grids.Add(mapGrid); + Dirty(station, stationData); RaiseLocalEvent(station, new StationGridAddedEvent(mapGrid, station, false), true); @@ -407,6 +366,7 @@ public sealed partial class StationSystem : SharedStationSystem RemComp(mapGrid); stationData.Grids.Remove(mapGrid); + Dirty(station, stationData); RaiseLocalEvent(station, new StationGridRemovedEvent(mapGrid, station), true); _sawmill.Info($"Removing grid {mapGrid} from station {Name(station)} ({station})"); @@ -450,110 +410,6 @@ public sealed partial class StationSystem : SharedStationSystem QueueDel(station); } - - public EntityUid? GetOwningStation(EntityUid? entity, TransformComponent? xform = null) - { - if (entity == null) - return null; - - return GetOwningStation(entity.Value, xform); - } - - /// - /// Gets the station that "owns" the given entity (essentially, the station the grid it's on is attached to) - /// - /// Entity to find the owner of. - /// Resolve pattern, transform of the entity. - /// The owning station, if any. - /// - /// This does not remember what station an entity started on, it simply checks where it is currently located. - /// - public EntityUid? GetOwningStation(EntityUid entity, TransformComponent? xform = null) - { - if (!Resolve(entity, ref xform)) - throw new ArgumentException("Tried to use an abstract entity!", nameof(entity)); - - if (TryComp(entity, out _)) - { - // We are the station, just return ourselves. - return entity; - } - - if (TryComp(entity, out _)) - { - // We are the station, just check ourselves. - return CompOrNull(entity)?.Station; - } - - if (xform.GridUid == EntityUid.Invalid) - { - Log.Debug("Unable to get owning station - GridUid invalid."); - return null; - } - - return CompOrNull(xform.GridUid)?.Station; - } - - public List GetStations() - { - var stations = new List(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _)) - { - stations.Add(uid); - } - - return stations; - } - - public HashSet GetStationsSet() - { - var stations = new HashSet(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _)) - { - stations.Add(uid); - } - - return stations; - } - - public List<(string Name, NetEntity Entity)> GetStationNames() - { - var stations = GetStationsSet(); - var stats = new List<(string Name, NetEntity Station)>(); - - foreach (var weh in stations) - { - stats.Add((MetaData(weh).EntityName, GetNetEntity(weh))); - } - - return stats; - } - - /// - /// Returns the first station that has a grid in a certain map. - /// If the map has no stations, null is returned instead. - /// - /// - /// If there are multiple stations on a map it is probably arbitrary which one is returned. - /// - public EntityUid? GetStationInMap(MapId map) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var data)) - { - foreach (var gridUid in data.Grids) - { - if (Transform(gridUid).MapID == map) - { - return uid; - } - } - } - - return null; - } } /// diff --git a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs index 06da91e256..4c9cfd87ea 100644 --- a/Content.Server/StationEvents/Events/AnomalySpawnRule.cs +++ b/Content.Server/StationEvents/Events/AnomalySpawnRule.cs @@ -1,7 +1,7 @@ using Content.Server.Anomaly; -using Content.Server.Station.Components; using Content.Server.StationEvents.Components; -using Content.Shared.GameTicking.Components; +using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; namespace Content.Server.StationEvents.Events; @@ -31,7 +31,7 @@ public sealed class AnomalySpawnRule : StationEventSystem(chosenStation, out var stationData)) return; - var grid = StationSystem.GetLargestGrid(stationData); + var grid = StationSystem.GetLargestGrid((chosenStation.Value, stationData)); if (grid is null) return; diff --git a/Content.Server/StationEvents/Events/CargoGiftsRule.cs b/Content.Server/StationEvents/Events/CargoGiftsRule.cs index 91baf2ecad..d38de1e0d8 100644 --- a/Content.Server/StationEvents/Events/CargoGiftsRule.cs +++ b/Content.Server/StationEvents/Events/CargoGiftsRule.cs @@ -2,9 +2,9 @@ using System.Linq; using Content.Server.Cargo.Components; using Content.Server.Cargo.Systems; using Content.Server.GameTicking; -using Content.Server.Station.Components; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; using Robust.Shared.Prototypes; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs b/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs index 948fedf6fc..e1987789b6 100644 --- a/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs +++ b/Content.Server/StationEvents/Events/MeteorSwarmSystem.cs @@ -1,7 +1,6 @@ using System.Numerics; using Content.Server.Chat.Systems; using Content.Server.GameTicking.Rules; -using Content.Server.Station.Components; using Content.Server.Station.Systems; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; @@ -49,7 +48,7 @@ public sealed class MeteorSwarmSystem : GameRuleSystem return; var station = RobustRandom.Pick(_station.GetStations()); - if (_station.GetLargestGrid(Comp(station)) is not { } grid) + if (_station.GetLargestGrid(station) is not { } grid) return; var mapId = Transform(grid).MapID; diff --git a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs index 6fccaaa5cf..08e43b4c68 100644 --- a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs +++ b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs @@ -1,6 +1,4 @@ using Content.Server.Antag; -using Content.Server.GameTicking.Rules.Components; -using Content.Server.Station.Components; using Content.Server.StationEvents.Components; using Content.Shared.GameTicking.Components; using Robust.Shared.Map; @@ -32,10 +30,8 @@ public sealed class SpaceSpawnRule : StationEventSystem return; } - var stationData = Comp(station.Value); - // find a station grid - var gridUid = StationSystem.GetLargestGrid(stationData); + var gridUid = StationSystem.GetLargestGrid(station.Value); if (gridUid == null || !TryComp(gridUid, out var grid)) { Sawmill.Warning("Chosen station has no grids, cannot pick location for {ToPrettyString(uid):rule}"); diff --git a/Content.Server/Station/Components/StationDataComponent.cs b/Content.Shared/Station/Components/StationDataComponent.cs similarity index 55% rename from Content.Server/Station/Components/StationDataComponent.cs rename to Content.Shared/Station/Components/StationDataComponent.cs index d154c6936d..ef01525d31 100644 --- a/Content.Server/Station/Components/StationDataComponent.cs +++ b/Content.Shared/Station/Components/StationDataComponent.cs @@ -1,26 +1,23 @@ -using Content.Server.Shuttles.Systems; -using Content.Server.Station.Systems; -using Robust.Shared.Serialization.TypeSerializers.Implementations; -using Robust.Shared.Utility; +using Robust.Shared.GameStates; -namespace Content.Server.Station.Components; +namespace Content.Shared.Station.Components; /// /// Stores core information about a station, namely its config and associated grids. /// All station entities will have this component. /// -[RegisterComponent, Access(typeof(StationSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedStationSystem))] public sealed partial class StationDataComponent : Component { /// /// The game map prototype, if any, associated with this station. /// - [DataField("stationConfig")] - public StationConfig? StationConfig = null; + [DataField] + public StationConfig? StationConfig; /// /// List of all grids this station is part of. /// - [DataField("grids")] + [DataField, AutoNetworkedField] public HashSet Grids = new(); } diff --git a/Content.Shared/Station/SharedStationSystem.Tracker.cs b/Content.Shared/Station/SharedStationSystem.Tracker.cs new file mode 100644 index 0000000000..770420d47e --- /dev/null +++ b/Content.Shared/Station/SharedStationSystem.Tracker.cs @@ -0,0 +1,88 @@ +using Content.Shared.Station.Components; +using JetBrains.Annotations; +using Robust.Shared.Map; + +namespace Content.Shared.Station; + +public abstract partial class SharedStationSystem +{ + private void InitializeTracker() + { + SubscribeLocalEvent(OnTrackerMapInit); + SubscribeLocalEvent(OnTrackerRemove); + SubscribeLocalEvent(OnTrackerGridChanged); + SubscribeLocalEvent(OnMetaFlagRemoveAttempt); + } + + private void OnTrackerMapInit(Entity ent, ref MapInitEvent args) + { + _meta.AddFlag(ent, MetaDataFlags.ExtraTransformEvents); + UpdateStationTracker(ent.AsNullable()); + } + + private void OnTrackerRemove(Entity ent, ref ComponentRemove args) + { + _meta.RemoveFlag(ent, MetaDataFlags.ExtraTransformEvents); + } + + private void OnTrackerGridChanged(Entity ent, ref GridUidChangedEvent args) + { + UpdateStationTracker((ent, ent.Comp, args.Transform)); + } + + private void OnMetaFlagRemoveAttempt(Entity ent, ref MetaFlagRemoveAttemptEvent args) + { + if ((args.ToRemove & MetaDataFlags.ExtraTransformEvents) != 0 && + ent.Comp.LifeStage <= ComponentLifeStage.Running) + { + args.ToRemove &= ~MetaDataFlags.ExtraTransformEvents; + } + } + + /// + /// Updates the station tracker component based on entity's current location. + /// + [PublicAPI] + public void UpdateStationTracker(Entity ent) + { + if (!Resolve(ent, ref ent.Comp1)) + return; + + var xform = ent.Comp2; + + if (!_xformQuery.Resolve(ent, ref xform)) + return; + + // Entity is in nullspace or not on a grid + if (xform.MapID == MapId.Nullspace || xform.GridUid == null) + { + SetStation(ent, null); + return; + } + + // Check if the grid is part of a station + if (!_stationMemberQuery.TryGetComponent(xform.GridUid.Value, out var stationMember)) + { + SetStation(ent, null); + return; + } + + SetStation(ent, stationMember.Station); + } + + /// + /// Sets the station for a StationTrackerComponent. + /// + [PublicAPI] + public void SetStation(Entity ent, EntityUid? station) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (ent.Comp.Station == station) + return; + + ent.Comp.Station = station; + Dirty(ent); + } +} diff --git a/Content.Shared/Station/SharedStationSystem.cs b/Content.Shared/Station/SharedStationSystem.cs index c067af610d..afd2e77258 100644 --- a/Content.Shared/Station/SharedStationSystem.cs +++ b/Content.Shared/Station/SharedStationSystem.cs @@ -1,11 +1,14 @@ +using System.Linq; using Content.Shared.Station.Components; using JetBrains.Annotations; using Robust.Shared.Map; +using Robust.Shared.Map.Components; namespace Content.Shared.Station; public abstract partial class SharedStationSystem : EntitySystem { + [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly MetaDataSystem _meta = default!; private EntityQuery _xformQuery; @@ -16,96 +19,164 @@ public abstract partial class SharedStationSystem : EntitySystem { base.Initialize(); + InitializeTracker(); + _xformQuery = GetEntityQuery(); _stationMemberQuery = GetEntityQuery(); - - SubscribeLocalEvent(OnTrackerMapInit); - SubscribeLocalEvent(OnTrackerRemove); - SubscribeLocalEvent(OnTrackerGridChanged); - SubscribeLocalEvent(OnMetaFlagRemoveAttempt); - } - - private void OnTrackerMapInit(Entity ent, ref MapInitEvent args) - { - _meta.AddFlag(ent, MetaDataFlags.ExtraTransformEvents); - UpdateStationTracker(ent.AsNullable()); - } - - private void OnTrackerRemove(Entity ent, ref ComponentRemove args) - { - _meta.RemoveFlag(ent, MetaDataFlags.ExtraTransformEvents); - } - - private void OnTrackerGridChanged(Entity ent, ref GridUidChangedEvent args) - { - UpdateStationTracker((ent, ent.Comp, args.Transform)); - } - - private void OnMetaFlagRemoveAttempt(Entity ent, ref MetaFlagRemoveAttemptEvent args) - { - if ((args.ToRemove & MetaDataFlags.ExtraTransformEvents) != 0 && - ent.Comp.LifeStage <= ComponentLifeStage.Running) - { - args.ToRemove &= ~MetaDataFlags.ExtraTransformEvents; - } } /// - /// Updates the station tracker component based on entity's current location. + /// Gets the largest member grid from a station. /// - [PublicAPI] - public void UpdateStationTracker(Entity ent) - { - if (!Resolve(ent, ref ent.Comp1)) - return; - - var xform = ent.Comp2; - - if (!_xformQuery.Resolve(ent, ref xform)) - return; - - // Entity is in nullspace or not on a grid - if (xform.MapID == MapId.Nullspace || xform.GridUid == null) - { - SetStation(ent, null); - return; - } - - // Check if the grid is part of a station - if (!_stationMemberQuery.TryGetComponent(xform.GridUid.Value, out var stationMember)) - { - SetStation(ent, null); - return; - } - - SetStation(ent, stationMember.Station); - } - - /// - /// Sets the station for a StationTrackerComponent. - /// - [PublicAPI] - public void SetStation(Entity ent, EntityUid? station) + public EntityUid? GetLargestGrid(Entity ent) { if (!Resolve(ent, ref ent.Comp)) - return; + return null; - if (ent.Comp.Station == station) - return; + EntityUid? largestGrid = null; + Box2 largestBounds = new Box2(); - ent.Comp.Station = station; - Dirty(ent); + foreach (var gridUid in ent.Comp.Grids) + { + if (!TryComp(gridUid, out var grid) || + grid.LocalAABB.Size.LengthSquared() < largestBounds.Size.LengthSquared()) + continue; + + largestBounds = grid.LocalAABB; + largestGrid = gridUid; + } + + return largestGrid; } /// - /// Gets the station an entity is currently on, if any. + /// Returns the total number of tiles contained in the station's grids. /// - [PublicAPI] - public EntityUid? GetCurrentStation(Entity ent) + public int GetTileCount(Entity ent) { - if (!Resolve(ent, ref ent.Comp, logMissing: false)) + if (!Resolve(ent, ref ent.Comp)) + return 0; + + var count = 0; + foreach (var gridUid in ent.Comp.Grids) + { + if (!TryComp(gridUid, out var grid)) + continue; + + count += _map.GetAllTiles(gridUid, grid).Count(); + } + + return count; + } + + [PublicAPI] + public EntityUid? GetOwningStation(EntityUid? entity, TransformComponent? xform = null) + { + if (entity == null) return null; - return ent.Comp.Station; + return GetOwningStation(entity.Value, xform); + } + + /// + /// Gets the station that "owns" the given entity (essentially, the station the grid it's on is attached to) + /// + /// Entity to find the owner of. + /// Resolve pattern, transform of the entity. + /// The owning station, if any. + /// + /// This does not remember what station an entity started on, it simply checks where it is currently located. + /// + public EntityUid? GetOwningStation(EntityUid entity, TransformComponent? xform = null) + { + if (!Resolve(entity, ref xform)) + throw new ArgumentException("Tried to use an abstract entity!", nameof(entity)); + + if (TryComp(entity, out var stationTracker)) + { + // We have a specific station we are tracking and are tethered to. + return stationTracker.Station; + } + + if (HasComp(entity)) + { + // We are the station, just return ourselves. + return entity; + } + + if (HasComp(entity)) + { + // We are the station, just check ourselves. + return CompOrNull(entity)?.Station; + } + + if (xform.GridUid == EntityUid.Invalid) + { + Log.Debug("Unable to get owning station - GridUid invalid."); + return null; + } + + return CompOrNull(xform.GridUid)?.Station; + } + + public List GetStations() + { + var stations = new List(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + stations.Add(uid); + } + + return stations; + } + + public HashSet GetStationsSet() + { + var stations = new HashSet(); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + stations.Add(uid); + } + + return stations; + } + + public List<(string Name, NetEntity Entity)> GetStationNames() + { + var stations = GetStationsSet(); + var stats = new List<(string Name, NetEntity Station)>(); + + foreach (var weh in stations) + { + stats.Add((MetaData(weh).EntityName, GetNetEntity(weh))); + } + + return stats; + } + + /// + /// Returns the first station that has a grid in a certain map. + /// If the map has no stations, null is returned instead. + /// + /// + /// If there are multiple stations on a map it is probably arbitrary which one is returned. + /// + public EntityUid? GetStationInMap(MapId map) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var data)) + { + foreach (var gridUid in data.Grids) + { + if (Transform(gridUid).MapID == map) + { + return uid; + } + } + } + + return null; } } diff --git a/Content.Server/Station/StationConfig.cs b/Content.Shared/Station/StationConfig.cs similarity index 59% rename from Content.Server/Station/StationConfig.cs rename to Content.Shared/Station/StationConfig.cs index 8bc0caf1aa..5bdbf77422 100644 --- a/Content.Server/Station/StationConfig.cs +++ b/Content.Shared/Station/StationConfig.cs @@ -1,17 +1,15 @@ -using Content.Server.Maps.NameGenerators; -using JetBrains.Annotations; -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; -namespace Content.Server.Station; +namespace Content.Shared.Station; /// /// A config for a station. Specifies name and component modifications. /// -[DataDefinition, PublicAPI] +[DataDefinition] public sealed partial class StationConfig { [DataField("stationProto", required: true)] - public string StationPrototype = default!; + public EntProtoId StationPrototype; [DataField("components", required: true)] public ComponentRegistry StationComponentOverrides = default!; From 1d21e133602fefb5e49ba12cf2d335ec552bcfdf Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Fri, 8 Aug 2025 16:58:46 +0100 Subject: [PATCH 25/33] make objectives use yml defined mind filters (#36030) * add MindHasRole whitelist overload * add mind filters framework * add different mind filters and pools * update traitor stuff to use mind filters * line * don't duplicate kill objectives * g * gs --------- Co-authored-by: deltanedas <@deltanedas:kde.org> Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: ScarKy0 Co-authored-by: SlamBamActionman --- .../Mind/Filters/TargetObjectiveMindFilter.cs | 43 ++++++ .../Components/PickRandomHeadComponent.cs | 8 - .../Components/PickRandomPersonComponent.cs | 25 +++- .../Components/RandomTraitorAliveComponent.cs | 7 - .../RandomTraitorProgressComponent.cs | 7 - .../Systems/PickObjectiveTargetSystem.cs | 139 +----------------- .../Mind/Filters/AliveHumansPool.cs | 12 ++ .../Mind/Filters/AntagonistMindFilter.cs | 15 ++ Content.Shared/Mind/Filters/BodyMindFilter.cs | 21 +++ .../Mind/Filters/HasRoleMindFilter.cs | 22 +++ Content.Shared/Mind/Filters/IMindPool.cs | 19 +++ Content.Shared/Mind/Filters/JobMindFilter.cs | 21 +++ Content.Shared/Mind/Filters/MindFilter.cs | 32 ++++ .../Mind/Filters/ObjectiveMindFilter.cs | 25 ++++ Content.Shared/Mind/SharedMindSystem.cs | 60 +++++++- Content.Shared/Roles/SharedRoleSystem.cs | 28 +++- Resources/Prototypes/Objectives/traitor.yml | 51 ++++++- 17 files changed, 362 insertions(+), 173 deletions(-) create mode 100644 Content.Server/Mind/Filters/TargetObjectiveMindFilter.cs delete mode 100644 Content.Server/Objectives/Components/PickRandomHeadComponent.cs delete mode 100644 Content.Server/Objectives/Components/RandomTraitorAliveComponent.cs delete mode 100644 Content.Server/Objectives/Components/RandomTraitorProgressComponent.cs create mode 100644 Content.Shared/Mind/Filters/AliveHumansPool.cs create mode 100644 Content.Shared/Mind/Filters/AntagonistMindFilter.cs create mode 100644 Content.Shared/Mind/Filters/BodyMindFilter.cs create mode 100644 Content.Shared/Mind/Filters/HasRoleMindFilter.cs create mode 100644 Content.Shared/Mind/Filters/IMindPool.cs create mode 100644 Content.Shared/Mind/Filters/JobMindFilter.cs create mode 100644 Content.Shared/Mind/Filters/MindFilter.cs create mode 100644 Content.Shared/Mind/Filters/ObjectiveMindFilter.cs diff --git a/Content.Server/Mind/Filters/TargetObjectiveMindFilter.cs b/Content.Server/Mind/Filters/TargetObjectiveMindFilter.cs new file mode 100644 index 0000000000..dae8079ac1 --- /dev/null +++ b/Content.Server/Mind/Filters/TargetObjectiveMindFilter.cs @@ -0,0 +1,43 @@ +using Content.Server.Objectives.Components; +using Content.Shared.Mind; +using Content.Shared.Mind.Filters; +using Content.Shared.Whitelist; + +namespace Content.Server.Mind.Filters; + +/// +/// A mind filter that removes minds if you have an objective targeting them matching a blacklist. +/// +/// +/// Used to prevent assigning multiple kill objectives for the same person. +/// +public sealed partial class TargetObjectiveMindFilter : MindFilter +{ + /// + /// A blacklist to check objectives against, for removing a mind. + /// If null then any objective targeting it will remove minds. + /// + [DataField] + public EntityWhitelist? Blacklist; + + protected override bool ShouldRemove(Entity mind, EntityUid? excluded, IEntityManager entMan, SharedMindSystem mindSys) + { + // ignore this filter if there is no user to check + if (!entMan.TryGetComponent(excluded, out var excludedMind)) + return false; + + var whitelistSys = entMan.System(); + foreach (var objective in excludedMind.Objectives) + { + // if the player has an objective targeting this mind + if (entMan.TryGetComponent(objective, out var kill) && kill.Target == mind.Owner) + { + // remove the mind if this objective is blacklisted + if (whitelistSys.IsBlacklistPassOrNull(Blacklist, objective)) + return true; + } + } + + return false; + } +} diff --git a/Content.Server/Objectives/Components/PickRandomHeadComponent.cs b/Content.Server/Objectives/Components/PickRandomHeadComponent.cs deleted file mode 100644 index 38ed252264..0000000000 --- a/Content.Server/Objectives/Components/PickRandomHeadComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Server.Objectives.Components; - -/// -/// Sets the target for to a random head. -/// If there are no heads it will fallback to any person. -/// -[RegisterComponent] -public sealed partial class PickRandomHeadComponent : Component; diff --git a/Content.Server/Objectives/Components/PickRandomPersonComponent.cs b/Content.Server/Objectives/Components/PickRandomPersonComponent.cs index bf4135e2a9..2c864a80d4 100644 --- a/Content.Server/Objectives/Components/PickRandomPersonComponent.cs +++ b/Content.Server/Objectives/Components/PickRandomPersonComponent.cs @@ -1,7 +1,26 @@ +using Content.Server.Objectives.Systems; +using Content.Shared.Mind.Filters; + namespace Content.Server.Objectives.Components; /// -/// Sets the target for to a random person. +/// Sets the target for to a random person from a pool and filters. /// -[RegisterComponent] -public sealed partial class PickRandomPersonComponent : Component; +/// +/// Don't copy paste this for a new objective, if you need a new filter just make a new filter and set it in YAML. +/// +[RegisterComponent, Access(typeof(PickObjectiveTargetSystem))] +public sealed partial class PickRandomPersonComponent : Component +{ + /// + /// A pool to pick potential targets from. + /// + [DataField] + public IMindPool Pool = new AliveHumansPool(); + + /// + /// Filters to apply to . + /// + [DataField] + public List Filters = new(); +} diff --git a/Content.Server/Objectives/Components/RandomTraitorAliveComponent.cs b/Content.Server/Objectives/Components/RandomTraitorAliveComponent.cs deleted file mode 100644 index 1c45cb45d5..0000000000 --- a/Content.Server/Objectives/Components/RandomTraitorAliveComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Objectives.Components; - -/// -/// Sets the target for to a random traitor. -/// -[RegisterComponent] -public sealed partial class RandomTraitorAliveComponent : Component; diff --git a/Content.Server/Objectives/Components/RandomTraitorProgressComponent.cs b/Content.Server/Objectives/Components/RandomTraitorProgressComponent.cs deleted file mode 100644 index f2da9778eb..0000000000 --- a/Content.Server/Objectives/Components/RandomTraitorProgressComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Objectives.Components; - -/// -/// Sets the target for to a random traitor. -/// -[RegisterComponent] -public sealed partial class RandomTraitorProgressComponent : Component; diff --git a/Content.Server/Objectives/Systems/PickObjectiveTargetSystem.cs b/Content.Server/Objectives/Systems/PickObjectiveTargetSystem.cs index 2977e10569..0fa20c27e5 100644 --- a/Content.Server/Objectives/Systems/PickObjectiveTargetSystem.cs +++ b/Content.Server/Objectives/Systems/PickObjectiveTargetSystem.cs @@ -25,10 +25,6 @@ public sealed class PickObjectiveTargetSystem : EntitySystem SubscribeLocalEvent(OnSpecificPersonAssigned); SubscribeLocalEvent(OnRandomPersonAssigned); - SubscribeLocalEvent(OnRandomHeadAssigned); - - SubscribeLocalEvent(OnRandomTraitorProgressAssigned); - SubscribeLocalEvent(OnRandomTraitorAliveAssigned); } private void OnSpecificPersonAssigned(Entity ent, ref ObjectiveAssignedEvent args) @@ -63,7 +59,7 @@ public sealed class PickObjectiveTargetSystem : EntitySystem private void OnRandomPersonAssigned(Entity ent, ref ObjectiveAssignedEvent args) { // invalid objective prototype - if (!TryComp(ent.Owner, out var target)) + if (!TryComp(ent, out var target)) { args.Cancelled = true; return; @@ -73,140 +69,13 @@ public sealed class PickObjectiveTargetSystem : EntitySystem if (target.Target != null) return; - var allHumans = _mind.GetAliveHumans(args.MindId); - - // Can't have multiple objectives to kill the same person - foreach (var objective in args.Mind.Objectives) - { - if (HasComp(objective) && TryComp(objective, out var kill)) - { - allHumans.RemoveWhere(x => x.Owner == kill.Target); - } - } - - // no other humans to kill - if (allHumans.Count == 0) + // couldn't find a target :( + if (_mind.PickFromPool(ent.Comp.Pool, ent.Comp.Filters, args.MindId) is not {} picked) { args.Cancelled = true; return; } - _target.SetTarget(ent.Owner, _random.Pick(allHumans), target); - } - - private void OnRandomHeadAssigned(Entity ent, ref ObjectiveAssignedEvent args) - { - // invalid prototype - if (!TryComp(ent.Owner, out var target)) - { - args.Cancelled = true; - return; - } - - // target already assigned - if (target.Target != null) - return; - - // no other humans to kill - var allHumans = _mind.GetAliveHumans(args.MindId); - if (allHumans.Count == 0) - { - args.Cancelled = true; - return; - } - - var allHeads = new HashSet>(); - foreach (var person in allHumans) - { - if (TryComp(person, out var mind) && mind.OwnedEntity is { } owned && HasComp(owned)) - allHeads.Add(person); - } - - if (allHeads.Count == 0) - allHeads = allHumans; // fallback to non-head target - - _target.SetTarget(ent.Owner, _random.Pick(allHeads), target); - } - - private void OnRandomTraitorProgressAssigned(Entity ent, ref ObjectiveAssignedEvent args) - { - // invalid prototype - if (!TryComp(ent.Owner, out var target)) - { - args.Cancelled = true; - return; - } - - var traitors = _traitorRule.GetOtherTraitorMindsAliveAndConnected(args.Mind).ToHashSet(); - - // cant help anyone who is tasked with helping: - // 1. thats boring - // 2. no cyclic progress dependencies!!! - foreach (var traitor in traitors) - { - // TODO: replace this with TryComp(traitor) or something when objectives are moved out of mind - if (!TryComp(traitor.Id, out var mind)) - continue; - - foreach (var objective in mind.Objectives) - { - if (HasComp(objective)) - traitors.RemoveWhere(x => x.Mind == mind); - } - } - - // Can't have multiple objectives to help/save the same person - foreach (var objective in args.Mind.Objectives) - { - if (HasComp(objective) || HasComp(objective)) - { - if (TryComp(objective, out var help)) - { - traitors.RemoveWhere(x => x.Id == help.Target); - } - } - } - - // no more helpable traitors - if (traitors.Count == 0) - { - args.Cancelled = true; - return; - } - - _target.SetTarget(ent.Owner, _random.Pick(traitors).Id, target); - } - - private void OnRandomTraitorAliveAssigned(Entity ent, ref ObjectiveAssignedEvent args) - { - // invalid prototype - if (!TryComp(ent.Owner, out var target)) - { - args.Cancelled = true; - return; - } - - var traitors = _traitorRule.GetOtherTraitorMindsAliveAndConnected(args.Mind).ToHashSet(); - - // Can't have multiple objectives to help/save the same person - foreach (var objective in args.Mind.Objectives) - { - if (HasComp(objective) || HasComp(objective)) - { - if (TryComp(objective, out var help)) - { - traitors.RemoveWhere(x => x.Id == help.Target); - } - } - } - - // You are the first/only traitor. - if (traitors.Count == 0) - { - args.Cancelled = true; - return; - } - - _target.SetTarget(ent.Owner, _random.Pick(traitors).Id, target); + _target.SetTarget(ent, picked, target); } } diff --git a/Content.Shared/Mind/Filters/AliveHumansPool.cs b/Content.Shared/Mind/Filters/AliveHumansPool.cs new file mode 100644 index 0000000000..c8e5c55bae --- /dev/null +++ b/Content.Shared/Mind/Filters/AliveHumansPool.cs @@ -0,0 +1,12 @@ +namespace Content.Shared.Mind.Filters; + +/// +/// A mind pool that uses . +/// +public sealed partial class AliveHumansPool : IMindPool +{ + void IMindPool.FindMinds(HashSet> minds, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + mindSys.AddAliveHumans(minds, exclude); + } +} diff --git a/Content.Shared/Mind/Filters/AntagonistMindFilter.cs b/Content.Shared/Mind/Filters/AntagonistMindFilter.cs new file mode 100644 index 0000000000..d805138ac3 --- /dev/null +++ b/Content.Shared/Mind/Filters/AntagonistMindFilter.cs @@ -0,0 +1,15 @@ +using Content.Shared.Roles; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that requires minds to have an antagonist role. +/// +public sealed partial class AntagonistMindFilter : MindFilter +{ + protected override bool ShouldRemove(Entity mind, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + var roleSys = entMan.System(); + return !roleSys.MindIsAntagonist(mind); + } +} diff --git a/Content.Shared/Mind/Filters/BodyMindFilter.cs b/Content.Shared/Mind/Filters/BodyMindFilter.cs new file mode 100644 index 0000000000..334539634f --- /dev/null +++ b/Content.Shared/Mind/Filters/BodyMindFilter.cs @@ -0,0 +1,21 @@ +using Content.Shared.Whitelist; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that checks the mind's owned entity against a whitelist. +/// +public sealed partial class BodyMindFilter : MindFilter +{ + [DataField(required: true)] + public EntityWhitelist Whitelist = new(); + + protected override bool ShouldRemove(Entity ent, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + if (ent.Comp.OwnedEntity is not {} mob) + return true; + + var sys = entMan.System(); + return sys.IsWhitelistFail(Whitelist, mob); + } +} diff --git a/Content.Shared/Mind/Filters/HasRoleMindFilter.cs b/Content.Shared/Mind/Filters/HasRoleMindFilter.cs new file mode 100644 index 0000000000..22f250dd29 --- /dev/null +++ b/Content.Shared/Mind/Filters/HasRoleMindFilter.cs @@ -0,0 +1,22 @@ +using Content.Shared.Roles; +using Content.Shared.Whitelist; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that requires minds to have a role matching a whitelist. +/// +public sealed partial class HasRoleMindFilter : MindFilter +{ + /// + /// The whitelist a role must match for the mind to pass the filter. + /// + [DataField(required: true)] + public EntityWhitelist Whitelist; + + protected override bool ShouldRemove(Entity mind, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + var roleSys = entMan.System(); + return roleSys.MindHasRole(mind, Whitelist); + } +} diff --git a/Content.Shared/Mind/Filters/IMindPool.cs b/Content.Shared/Mind/Filters/IMindPool.cs new file mode 100644 index 0000000000..263d15d812 --- /dev/null +++ b/Content.Shared/Mind/Filters/IMindPool.cs @@ -0,0 +1,19 @@ +using Robust.Shared.Serialization.Manager.Attributes; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind pool that can find minds to use for objectives etc. +/// Further filtered by . +/// +[ImplicitDataDefinitionForInheritors] +public partial interface IMindPool +{ + /// + /// Add minds for this pool to a hashset. + /// The hashset gets reused and is cleared before this is called. + /// + /// The hashset to add to + /// A mind entity that must not be returned + void FindMinds(HashSet> minds, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys); +} diff --git a/Content.Shared/Mind/Filters/JobMindFilter.cs b/Content.Shared/Mind/Filters/JobMindFilter.cs new file mode 100644 index 0000000000..a6565e4d33 --- /dev/null +++ b/Content.Shared/Mind/Filters/JobMindFilter.cs @@ -0,0 +1,21 @@ +using Content.Shared.Roles; +using Content.Shared.Roles.Jobs; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that requires minds to have a specific job. +/// This uses mind roles, not ID cards. +/// +public sealed partial class JobMindFilter : MindFilter +{ + [DataField(required: true)] + public ProtoId Job; + + protected override bool ShouldRemove(Entity mind, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + var jobSys = entMan.System(); + return jobSys.MindHasJobWithId(mind, Job); + } +} diff --git a/Content.Shared/Mind/Filters/MindFilter.cs b/Content.Shared/Mind/Filters/MindFilter.cs new file mode 100644 index 0000000000..c2daf3e361 --- /dev/null +++ b/Content.Shared/Mind/Filters/MindFilter.cs @@ -0,0 +1,32 @@ +using Robust.Shared.Serialization.Manager.Attributes; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that can be used to filter out minds from a . +/// +[ImplicitDataDefinitionForInheritors] +public abstract partial class MindFilter +{ + /// + /// The actual filter function, this has to return false for minds that get removed from the pool. + /// An excluded mind will be the same one passed to . + /// + /// The mind to check + /// The same mind passed to FindMinds + protected abstract bool ShouldRemove(Entity mind, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys); + + /// + /// The high-level filter function to be used by the mind system. + /// + public bool Filter(Entity mind, EntityUid? exclude, EntityManager entMan, SharedMindSystem mindSys) + { + return ShouldRemove(mind, exclude, entMan, mindSys) ^ Inverted; + } + + /// + /// Whether to invert functionality, only keeping minds that would otherwise be removed. + /// + [DataField] + public bool Inverted; +} diff --git a/Content.Shared/Mind/Filters/ObjectiveMindFilter.cs b/Content.Shared/Mind/Filters/ObjectiveMindFilter.cs new file mode 100644 index 0000000000..2d3cf6a263 --- /dev/null +++ b/Content.Shared/Mind/Filters/ObjectiveMindFilter.cs @@ -0,0 +1,25 @@ +using Content.Shared.Whitelist; + +namespace Content.Shared.Mind.Filters; + +/// +/// A mind filter that removes minds with a blacklist objective. +/// +public sealed partial class ObjectiveMindFilter : MindFilter +{ + [DataField(required: true)] + public EntityWhitelist Blacklist = new(); + + protected override bool ShouldRemove(Entity mind, EntityUid? exclude, IEntityManager entMan, SharedMindSystem mindSys) + { + var whitelistSys = entMan.System(); + foreach (var obj in mind.Comp.Objectives) + { + // mind has a blacklisted objective, remove it from the pool + if (whitelistSys.IsBlacklistPass(Blacklist, obj)) + return true; + } + + return false; + } +} diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index 271639725f..98ff77810c 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Humanoid; using Content.Shared.Interaction.Events; using Content.Shared.Movement.Components; using Content.Shared.Mind.Components; +using Content.Shared.Mind.Filters; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; using Content.Shared.Objectives.Systems; @@ -19,6 +20,7 @@ using Content.Shared.Whitelist; using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Player; +using Robust.Shared.Random; using Robust.Shared.Utility; namespace Content.Shared.Mind; @@ -27,6 +29,7 @@ public abstract partial class SharedMindSystem : EntitySystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedObjectivesSystem _objectives = default!; [Dependency] private readonly SharedPlayerSystem _player = default!; @@ -37,6 +40,8 @@ public abstract partial class SharedMindSystem : EntitySystem [ViewVariables] protected readonly Dictionary UserMinds = new(); + private HashSet> _pickingMinds = new(); + public override void Initialize() { base.Initialize(); @@ -618,23 +623,70 @@ public abstract partial class SharedMindSystem : EntitySystem /// /// Returns a list of every living humanoid player's minds, except for a single one which is exluded. + /// A new hashset is allocated for every call, consider using instead. /// public HashSet> GetAliveHumans(EntityUid? exclude = null) { var allHumans = new HashSet>(); + AddAliveHumans(allHumans, exclude); + return allHumans; + } + + /// + /// Adds to a hashset every living humanoid player's minds, except for a single one which is exluded. + /// + public void AddAliveHumans(HashSet> allHumans, EntityUid? exclude = null) + { // HumanoidAppearanceComponent is used to prevent mice, pAIs, etc from being chosen - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var mobState, out _)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var mobState)) { // the player needs to have a mind and not be the excluded one + // the player has to be alive if (!TryGetMind(uid, out var mind, out var mindComp) || mind == exclude || !_mobState.IsAlive(uid, mobState)) continue; - allHumans.Add(new Entity(mind, mindComp)); + allHumans.Add((mind, mindComp)); } + } - return allHumans; + /// + /// Picks a random mind from a pool after applying a list of filters. + /// Returns null if no valid mind could be found. + /// + public Entity? PickFromPool(IMindPool pool, List filters, EntityUid? exclude = null) + { + _pickingMinds.Clear(); + pool.FindMinds(_pickingMinds, exclude, EntityManager, this); + FilterMinds(_pickingMinds, filters, exclude); + + if (_pickingMinds.Count == 0) + return null; + + return _random.Pick(_pickingMinds); + } + + /// + /// Filters minds from a hashset using a single . + /// + public void FilterMinds(HashSet> minds, MindFilter filter, EntityUid? exclude = null) + { + minds.RemoveWhere(mind => filter.Filter(mind, exclude, EntityManager, this)); + } + + /// + /// Filters minds from a hashset using a list of s to apply sequentially. + /// + public void FilterMinds(HashSet> minds, List filters, EntityUid? exclude = null) + { + foreach (var filter in filters) + { + // no point calling it if there are none left + if (minds.Count == 0) + break; + + FilterMinds(minds, filter, exclude); + } } /// diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index e45c5792bd..4f307d8b31 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Database; using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Roles.Jobs; +using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; @@ -19,13 +20,14 @@ namespace Content.Shared.Roles; public abstract class SharedRoleSystem : EntitySystem { - [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; - [Dependency] private readonly IPrototypeManager _prototypes = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] protected readonly ISharedPlayerManager Player = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly SharedMindSystem _minds = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + [Dependency] private readonly SharedMindSystem _minds = default!; + [Dependency] private readonly IPrototypeManager _prototypes = default!; private JobRequirementOverridePrototype? _requirementOverride; @@ -504,6 +506,20 @@ public abstract class SharedRoleSystem : EntitySystem return found; } + /// + /// Returns true if a mind has a role that matches a whitelist. + /// + public bool MindHasRole(Entity mind, EntityWhitelist whitelist) + { + foreach (var roleEnt in mind.Comp.MindRoles) + { + if (_whitelist.IsWhitelistPass(whitelist, roleEnt)) + return true; + } + + return false; + } + /// /// Finds the first mind role of a specific type on a mind entity. /// diff --git a/Resources/Prototypes/Objectives/traitor.yml b/Resources/Prototypes/Objectives/traitor.yml index 98c6b9789f..411a457961 100644 --- a/Resources/Prototypes/Objectives/traitor.yml +++ b/Resources/Prototypes/Objectives/traitor.yml @@ -91,6 +91,12 @@ - type: TargetObjective title: objective-condition-maroon-person-title - type: PickRandomPerson + filters: + # Can't have multiple objectives to kill the same person. + - !type:TargetObjectiveMindFilter + blacklist: + components: + - KillPersonCondition - type: KillPersonCondition requireMaroon: true @@ -106,7 +112,17 @@ unique: true - type: TargetObjective title: objective-condition-kill-maroon-title - - type: PickRandomHead + - type: PickRandomPerson + filters: + - !type:BodyMindFilter + whitelist: + components: + - CommandStaff + # Can't have multiple objectives to kill the same person. + - !type:TargetObjectiveMindFilter + blacklist: + components: + - KillPersonCondition - type: KillPersonCondition # don't count missing evac as killing as heads are higher profile, so you really need to do the dirty work # if ce flies a shittle to centcom you better find a way onto it @@ -124,7 +140,18 @@ difficulty: 1.75 - type: TargetObjective title: objective-condition-other-traitor-alive-title - - type: RandomTraitorAlive + - type: PickRandomPerson + filters: + - !type:HasRoleMindFilter + whitelist: + components: + - TraitorRole + # Can't have multiple objectives to help/save the same person + - !type:TargetObjectiveMindFilter + blacklist: + components: + - RandomTraitorAlive + - RandomTraitorProgress - type: entity parent: [BaseTraitorSocialObjective, BaseHelpProgressObjective] @@ -135,7 +162,25 @@ difficulty: 2.5 - type: TargetObjective title: objective-condition-other-traitor-progress-title - - type: RandomTraitorProgress + - type: PickRandomPerson + filters: + - !type:HasRoleMindFilter + whitelist: + components: + - TraitorRole + # Can't help anyone who is tasked with helping: + # 1. thats boring + # 2. no cyclic progress dependencies!!! + - !type:ObjectiveMindFilter + blacklist: + components: + - HelpProgressCondition + # Can't have multiple objectives to help/save the same person + - !type:TargetObjectiveMindFilter + blacklist: + components: + - RandomTraitorAlive + - RandomTraitorProgress # steal From c3555af82104c2258d3830c65ff498d06041be29 Mon Sep 17 00:00:00 2001 From: chromiumboy <50505512+chromiumboy@users.noreply.github.com> Date: Fri, 8 Aug 2025 13:56:01 -0500 Subject: [PATCH 26/33] Sentry turrets - Part 8: AI notifications (#35277) --- .../Chat/Systems/ChatNotificationSystem.cs | 105 ++++++++++++++++ .../Silicons/StationAi/StationAiSystem.cs | 116 +++++++++++------- .../Prototypes/ChatNotificationPrototype.cs | 74 +++++++++++ .../Components/IntellicardComponent.cs | 16 --- .../StationAi/SharedStationAiSystem.cs | 13 +- .../Turrets/StationAiTurretComponent.cs | 12 ++ .../Locale/en-US/silicons/station-ai.ftl | 2 +- .../Locale/en-US/weapons/ranged/turrets.ftl | 3 +- Resources/Prototypes/Chat/notifications.yml | 21 ++++ .../Weapons/Guns/Turrets/turrets_energy.yml | 1 + 10 files changed, 291 insertions(+), 72 deletions(-) create mode 100644 Content.Server/Chat/Systems/ChatNotificationSystem.cs create mode 100644 Content.Shared/Chat/Prototypes/ChatNotificationPrototype.cs create mode 100644 Content.Shared/Turrets/StationAiTurretComponent.cs create mode 100644 Resources/Prototypes/Chat/notifications.yml diff --git a/Content.Server/Chat/Systems/ChatNotificationSystem.cs b/Content.Server/Chat/Systems/ChatNotificationSystem.cs new file mode 100644 index 0000000000..8cd3d54e80 --- /dev/null +++ b/Content.Server/Chat/Systems/ChatNotificationSystem.cs @@ -0,0 +1,105 @@ +using Content.Server.Chat.Managers; +using Content.Shared.Chat; +using Content.Shared.Chat.Prototypes; +using Content.Shared.Mind; +using Content.Shared.Roles; +using Robust.Shared.Player; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Server.Chat.Systems; + +/// +/// This system is used to notify specific players of the occurance of predefined events. +/// +public sealed partial class ChatNotificationSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IChatManager _chats = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedRoleSystem _roles = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly ILogManager _logManager = default!; + + private ISawmill _sawmill = default!; + + // The following data does not need to be saved + + // Local cache for rate limiting chat notifications by source + // (Recipient, ChatNotification) -> Dictionary + private readonly Dictionary<(EntityUid, ProtoId), Dictionary> _chatNotificationsBySource = new(); + + // Local cache for rate limiting chat notifications by type + // (Recipient, ChatNotification) -> next allowed TOA + private readonly Dictionary<(EntityUid, ProtoId), TimeSpan> _chatNotificationsByType = new(); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnChatNotification); + + _sawmill = _logManager.GetSawmill("chatnotification"); + } + + /// + /// Triggered when the specified player recieves a chat notification event. + /// + /// The player receiving the chat notification. + /// The chat notification event + public void OnChatNotification(Entity ent, ref ChatNotificationEvent args) + { + if (!_proto.TryIndex(args.ChatNotification, out var chatNotification)) + { + _sawmill.Warning("Attempted to index ChatNotificationPrototype " + args.ChatNotification + " but the prototype does not exist."); + return; + } + + var source = args.Source; + var playerNotification = (ent, args.ChatNotification); + + // Exit without notifying the player if we received a notification before the appropriate time has elasped + + if (chatNotification.NotifyBySource) + { + if (!_chatNotificationsBySource.TryGetValue(playerNotification, out var trackedSources)) + trackedSources = new(); + + trackedSources.TryGetValue(source, out var timeSpan); + trackedSources[source] = _timing.CurTime + chatNotification.NextDelay; + + _chatNotificationsBySource[playerNotification] = trackedSources; + + if (_timing.CurTime < timeSpan) + return; + } + else + { + _chatNotificationsByType.TryGetValue(playerNotification, out var timeSpan); + _chatNotificationsByType[playerNotification] = _timing.CurTime + chatNotification.NextDelay; + + if (_timing.CurTime < timeSpan) + return; + } + + var sourceName = args.SourceNameOverride ?? Name(source); + var userName = args.UserNameOverride ?? (args.User.HasValue ? Name(args.User.Value) : string.Empty); + var targetName = Name(ent); + + var message = Loc.GetString(chatNotification.Message, ("source", sourceName), ("user", userName), ("target", targetName)); + var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", message)); + + _chats.ChatMessageToOne( + ChatChannel.Notifications, + message, + wrappedMessage, + default, + false, + ent.Comp.PlayerSession.Channel, + colorOverride: chatNotification.Color + ); + + if (chatNotification.Sound != null && _mind.TryGetMind(ent, out var mindId, out _)) + _roles.MindPlaySound(mindId, chatNotification.Sound); + } +} diff --git a/Content.Server/Silicons/StationAi/StationAiSystem.cs b/Content.Server/Silicons/StationAi/StationAiSystem.cs index 9b272a00f9..45b3dda431 100644 --- a/Content.Server/Silicons/StationAi/StationAiSystem.cs +++ b/Content.Server/Silicons/StationAi/StationAiSystem.cs @@ -1,33 +1,32 @@ -using System.Linq; -using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; -using Content.Shared.Chat; -using Content.Shared.Mind; -using Content.Shared.Roles; +using Content.Shared.Chat.Prototypes; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.Silicons.StationAi; using Content.Shared.StationAi; -using Robust.Shared.Audio; +using Content.Shared.Turrets; +using Content.Shared.Weapons.Ranged.Events; using Robust.Shared.Map.Components; using Robust.Shared.Player; +using Robust.Shared.Prototypes; using static Content.Server.Chat.Systems.ChatSystem; namespace Content.Server.Silicons.StationAi; public sealed class StationAiSystem : SharedStationAiSystem { - [Dependency] private readonly IChatManager _chats = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedTransformSystem _xforms = default!; - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedRoleSystem _roles = default!; - private readonly HashSet> _ais = new(); + private readonly HashSet> _stationAiCores = new(); + private readonly ProtoId _turretIsAttackingChatNotificationPrototype = "TurretIsAttacking"; + private readonly ProtoId _aiWireSnippedChatNotificationPrototype = "AiWireSnipped"; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnExpandICChatRecipients); + SubscribeLocalEvent(OnAmmoShot); } private void OnExpandICChatRecipients(ExpandICChatRecipientsEvent ev) @@ -61,15 +60,33 @@ public sealed class StationAiSystem : SharedStationAiSystem } } + private void OnAmmoShot(Entity ent, ref AmmoShotEvent args) + { + var xform = Transform(ent); + + if (!TryComp(xform.GridUid, out MapGridComponent? grid)) + return; + + var ais = GetStationAIs(xform.GridUid.Value); + + foreach (var ai in ais) + { + var ev = new ChatNotificationEvent(_turretIsAttackingChatNotificationPrototype, ent); + + if (TryComp(ent, out var deviceNetwork)) + ev.SourceNameOverride = Loc.GetString("station-ai-turret-component-name", ("name", Name(ent)), ("address", deviceNetwork.Address)); + + RaiseLocalEvent(ai, ref ev); + } + } + public override bool SetVisionEnabled(Entity entity, bool enabled, bool announce = false) { if (!base.SetVisionEnabled(entity, enabled, announce)) return false; if (announce) - { AnnounceSnip(entity.Owner); - } return true; } @@ -80,54 +97,59 @@ public sealed class StationAiSystem : SharedStationAiSystem return false; if (announce) - { AnnounceSnip(entity.Owner); - } return true; } - public override void AnnounceIntellicardUsage(EntityUid uid, SoundSpecifier? cue = null) + private void AnnounceSnip(EntityUid uid) { - if (!TryComp(uid, out var actor)) - return; - - var msg = Loc.GetString("ai-consciousness-download-warning"); - var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", msg)); - _chats.ChatMessageToOne(ChatChannel.Server, msg, wrappedMessage, default, false, actor.PlayerSession.Channel, colorOverride: Color.Red); - - if (cue != null && _mind.TryGetMind(uid, out var mindId, out _)) - _roles.MindPlaySound(mindId, cue); - } - - private void AnnounceSnip(EntityUid entity) - { - var xform = Transform(entity); + var xform = Transform(uid); if (!TryComp(xform.GridUid, out MapGridComponent? grid)) return; - _ais.Clear(); - _lookup.GetChildEntities(xform.GridUid.Value, _ais); - var filter = Filter.Empty(); + var ais = GetStationAIs(xform.GridUid.Value); - foreach (var ai in _ais) + foreach (var ai in ais) { - // TODO: Filter API? - if (TryComp(ai.Owner, out ActorComponent? actorComp)) - { - filter.AddPlayer(actorComp.PlayerSession); - } + if (!StationAiCanDetectWireSnipping(ai)) + continue; + + var ev = new ChatNotificationEvent(_aiWireSnippedChatNotificationPrototype, uid); + + var tile = Maps.LocalToTile(xform.GridUid.Value, grid, xform.Coordinates); + ev.SourceNameOverride = tile.ToString(); + + RaiseLocalEvent(ai, ref ev); + } + } + + private bool StationAiCanDetectWireSnipping(EntityUid uid) + { + // TODO: The ability to detect snipped AI interaction wires + // should be a MALF ability and/or a purchased upgrade rather + // than something available to the station AI by default. + // When these systems are added, add the appropriate checks here. + + return false; + } + + public HashSet GetStationAIs(EntityUid gridUid) + { + _stationAiCores.Clear(); + _lookup.GetChildEntities(gridUid, _stationAiCores); + + var hashSet = new HashSet(); + + foreach (var stationAiCore in _stationAiCores) + { + if (!TryGetHeld((stationAiCore, stationAiCore.Comp), out var insertedAi)) + continue; + + hashSet.Add(insertedAi); } - // TEST - // filter = Filter.Broadcast(); - - // No easy way to do chat notif embeds atm. - var tile = Maps.LocalToTile(xform.GridUid.Value, grid, xform.Coordinates); - var msg = Loc.GetString("ai-wire-snipped", ("coords", tile)); - - _chats.ChatMessageToMany(ChatChannel.Notifications, msg, msg, entity, false, true, filter.Recipients.Select(o => o.Channel)); - // Apparently there's no sound for this. + return hashSet; } } diff --git a/Content.Shared/Chat/Prototypes/ChatNotificationPrototype.cs b/Content.Shared/Chat/Prototypes/ChatNotificationPrototype.cs new file mode 100644 index 0000000000..58315161a5 --- /dev/null +++ b/Content.Shared/Chat/Prototypes/ChatNotificationPrototype.cs @@ -0,0 +1,74 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Chat.Prototypes; + +/// +/// A predefined notification used to warn a player of specific events. +/// +[Prototype("chatNotification")] +public sealed partial class ChatNotificationPrototype : IPrototype +{ + [ViewVariables] + [IdDataField] + public string ID { get; private set; } = default!; + + /// + /// The notification that the player receives. + /// + /// + /// Use '{$source}', '{user}', and '{target}' in the fluent message + /// to insert the source, user, and target names respectively. + /// + [DataField(required: true)] + public LocId Message = string.Empty; + + /// + /// Font color for the notification. + /// + [DataField] + public Color Color = Color.White; + + /// + /// Sound played upon receiving the notification. + /// + [DataField] + public SoundSpecifier? Sound; + + /// + /// The period during which duplicate chat notifications are blocked after a player receives one. + /// Blocked notifications will never be delivered to the player. + /// + [DataField] + public TimeSpan NextDelay = TimeSpan.FromSeconds(10.0); + + /// + /// Determines whether notification delays should be determined by the source + /// entity or by the notification prototype (i.e., individual notifications + /// vs grouping the notifications together). + /// + [DataField] + public bool NotifyBySource = false; +} + +/// +/// Raised when an specific player should be notified via a chat message of a predefined event occuring. +/// +/// The prototype used to define the chat notification. +/// The entity that the triggered the notification. +/// The entity that ultimately responsible for triggering the notification. +[ByRefEvent] +public record ChatNotificationEvent(ProtoId ChatNotification, EntityUid Source, EntityUid? User = null) +{ + /// + /// Set this variable if you want to change the name of the notification source + /// (if the name is included in the chat notification). + /// + public string? SourceNameOverride; + + /// + /// Set this variable if you wish to change the name of the user who triggered the notification + /// (if the name is included in the chat notification). + /// + public string? UserNameOverride; +} diff --git a/Content.Shared/Intellicard/Components/IntellicardComponent.cs b/Content.Shared/Intellicard/Components/IntellicardComponent.cs index e27174977f..5a299b1f80 100644 --- a/Content.Shared/Intellicard/Components/IntellicardComponent.cs +++ b/Content.Shared/Intellicard/Components/IntellicardComponent.cs @@ -20,20 +20,4 @@ public sealed partial class IntellicardComponent : Component /// [DataField, AutoNetworkedField] public int UploadTime = 3; - - /// - /// The sound that plays for the AI - /// when they are being downloaded - /// - [DataField, AutoNetworkedField] - public SoundSpecifier? WarningSound = new SoundPathSpecifier("/Audio/Misc/notice2.ogg"); - - /// - /// The delay before allowing the warning to play again in seconds. - /// - [DataField, AutoNetworkedField] - public TimeSpan WarningDelay = TimeSpan.FromSeconds(8); - - [ViewVariables] - public TimeSpan NextWarningAllowed = TimeSpan.Zero; } diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs index 265b46d24f..d76f16c446 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.ActionBlocker; using Content.Shared.Actions; using Content.Shared.Administration.Managers; +using Content.Shared.Chat.Prototypes; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.Doors.Systems; @@ -17,7 +18,6 @@ using Content.Shared.Power; using Content.Shared.Power.EntitySystems; using Content.Shared.StationAi; using Content.Shared.Verbs; -using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Map; @@ -27,8 +27,8 @@ using Robust.Shared.Physics; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Timing; -using System.Diagnostics.CodeAnalysis; using Robust.Shared.Utility; +using System.Diagnostics.CodeAnalysis; namespace Content.Shared.Silicons.StationAi; @@ -70,6 +70,7 @@ public abstract partial class SharedStationAiSystem : EntitySystem private EntityQuery _gridQuery; private static readonly EntProtoId DefaultAi = "StationAiBrain"; + private readonly ProtoId _downloadChatNotificationPrototype = "IntellicardDownload"; private const float MaxVisionMultiplier = 5f; @@ -287,10 +288,10 @@ public abstract partial class SharedStationAiSystem : EntitySystem return; } - if (TryGetHeld((args.Target.Value, targetHolder), out var held) && _timing.CurTime > intelliComp.NextWarningAllowed) + if (TryGetHeld((args.Target.Value, targetHolder), out var held)) { - intelliComp.NextWarningAllowed = _timing.CurTime + intelliComp.WarningDelay; - AnnounceIntellicardUsage(held, intelliComp.WarningSound); + var ev = new ChatNotificationEvent(_downloadChatNotificationPrototype, args.Used, args.User); + RaiseLocalEvent(held, ref ev); } var doAfterArgs = new DoAfterArgs(EntityManager, args.User, cardHasAi ? intelliComp.UploadTime : intelliComp.DownloadTime, new IntellicardDoAfterEvent(), args.Target, ent.Owner) @@ -528,8 +529,6 @@ public abstract partial class SharedStationAiSystem : EntitySystem _appearance.SetData(entity.Owner, StationAiVisualState.Key, state); } - public virtual void AnnounceIntellicardUsage(EntityUid uid, SoundSpecifier? cue = null) { } - public virtual bool SetVisionEnabled(Entity entity, bool enabled, bool announce = false) { if (entity.Comp.Enabled == enabled) diff --git a/Content.Shared/Turrets/StationAiTurretComponent.cs b/Content.Shared/Turrets/StationAiTurretComponent.cs new file mode 100644 index 0000000000..125195787e --- /dev/null +++ b/Content.Shared/Turrets/StationAiTurretComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Turrets; + +/// +/// This component designates a turret that is under the direct control of the station AI. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class StationAiTurretComponent : Component +{ + +} diff --git a/Resources/Locale/en-US/silicons/station-ai.ftl b/Resources/Locale/en-US/silicons/station-ai.ftl index 81fee66ccb..442782f9a1 100644 --- a/Resources/Locale/en-US/silicons/station-ai.ftl +++ b/Resources/Locale/en-US/silicons/station-ai.ftl @@ -1,5 +1,5 @@ # General -ai-wire-snipped = Wire has been cut at {$coords}. +ai-wire-snipped = One of your systems' wires has been cut at {$source}. wire-name-ai-vision-light = AIV wire-name-ai-act-light = AIA station-ai-takeover = AI takeover diff --git a/Resources/Locale/en-US/weapons/ranged/turrets.ftl b/Resources/Locale/en-US/weapons/ranged/turrets.ftl index 213599d926..8a21647075 100644 --- a/Resources/Locale/en-US/weapons/ranged/turrets.ftl +++ b/Resources/Locale/en-US/weapons/ranged/turrets.ftl @@ -9,4 +9,5 @@ deployable-turret-component-is-broken = The turret is heavily damaged and must b deployable-turret-component-cannot-access-wires = You can't reach the maintenance panel while the turret is active # Turret notification for station AI -station-ai-turret-is-attacking-warning = {CAPITALIZE($source)} has engaged a hostile target. \ No newline at end of file +station-ai-turret-component-name = {$name} ({$address}) +station-ai-turret-component-is-attacking-warning = {CAPITALIZE($source)} has engaged a hostile target. \ No newline at end of file diff --git a/Resources/Prototypes/Chat/notifications.yml b/Resources/Prototypes/Chat/notifications.yml new file mode 100644 index 0000000000..c1aee755c6 --- /dev/null +++ b/Resources/Prototypes/Chat/notifications.yml @@ -0,0 +1,21 @@ +- type: chatNotification + id: IntellicardDownload + message: ai-consciousness-download-warning + color: Red + sound: /Audio/Misc/notice2.ogg + nextDelay: 8 + +- type: chatNotification + id: TurretIsAttacking + message: station-ai-turret-component-is-attacking-warning + color: Orange + sound: /Audio/Misc/notice2.ogg + nextDelay: 14 + notifyBySource: true + +- type: chatNotification + id: AiWireSnipped + message: ai-wire-snipped + color: Pink + nextDelay: 12 + notifyBySource: true diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml index 077d5dc5fd..40c67c898d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Turrets/turrets_energy.yml @@ -144,6 +144,7 @@ components: - type: AccessReader access: [["StationAi"], ["ResearchDirector"]] + - type: StationAiTurret - type: TurretTargetSettings exemptAccessLevels: - Borg From 1e3cf38c2102c14cbacfccb78d5191618164d89c Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 8 Aug 2025 18:57:11 +0000 Subject: [PATCH 27/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ad34cd6196..66fbcbf7aa 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Pronana - changes: - - message: Moths can now eat pills - type: Tweak - id: 8325 - time: '2025-04-24T02:28:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/35609 - author: Coolsurf6 changes: - message: Updated more contraband items for Syndicate and Security. @@ -3899,3 +3892,11 @@ id: 8837 time: '2025-08-07T16:01:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/38896 +- author: chromiumboy + changes: + - message: The station AI will receive chat notifications when its sentry turrets + start firing upon hostile targets. + type: Add + id: 8838 + time: '2025-08-08T18:56:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35277 From ca4f6d5e8bfa82d2de2b34c8b5b460093654715f Mon Sep 17 00:00:00 2001 From: K-Dynamic <20566341+K-Dynamic@users.noreply.github.com> Date: Sat, 9 Aug 2025 07:00:41 +1200 Subject: [PATCH 28/33] Starting glasses for Captain and HoP (#35531) --- Resources/Prototypes/Roles/Jobs/CentComm/official.yml | 2 +- Resources/Prototypes/Roles/Jobs/Command/captain.yml | 2 +- Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml | 1 + Resources/Prototypes/Roles/Jobs/Fun/visitors_startinggear.yml | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Resources/Prototypes/Roles/Jobs/CentComm/official.yml b/Resources/Prototypes/Roles/Jobs/CentComm/official.yml index 68fc11b679..9c28c56002 100644 --- a/Resources/Prototypes/Roles/Jobs/CentComm/official.yml +++ b/Resources/Prototypes/Roles/Jobs/CentComm/official.yml @@ -22,7 +22,7 @@ jumpsuit: ClothingUniformJumpsuitCentcomOfficial shoes: ClothingShoesBootsCombatFilled head: ClothingHeadHatCentcom - eyes: ClothingEyesGlassesSunglasses + eyes: ClothingEyesGlassesCommand gloves: ClothingHandsGlovesColorBlack outerClothing: ClothingOuterArmorCentcommCarapace id: CentcomPDA diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index bc7aef6ab0..fa02e160a8 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -38,7 +38,7 @@ id: CaptainGear equipment: shoes: ClothingShoesBootsLaceup - eyes: ClothingEyesGlassesSunglasses + eyes: ClothingEyesGlassesCommand gloves: ClothingHandsGlovesCaptain id: CaptainPDA ears: ClothingHeadsetAltCommand diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 5bdbe47e80..7bd1ff5c52 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -66,6 +66,7 @@ gloves: ClothingHandsGlovesHop ears: ClothingHeadsetAltCommand belt: BoxFolderClipboard + eyes: ClothingEyesHudCommand storage: back: - Flash diff --git a/Resources/Prototypes/Roles/Jobs/Fun/visitors_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/visitors_startinggear.yml index d3bb481ff7..b7db27a972 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/visitors_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/visitors_startinggear.yml @@ -7,7 +7,7 @@ equipment: jumpsuit: ClothingUniformJumpsuitCaptain shoes: ClothingShoesBootsLaceup - eyes: ClothingEyesGlassesSunglasses + eyes: ClothingEyesGlassesCommand gloves: ClothingHandsGlovesCaptain head: ClothingHeadHatCaptain neck: ClothingNeckCloakCap @@ -23,7 +23,7 @@ equipment: jumpsuit: ClothingUniformJumpsuitCapFormal shoes: ClothingShoesBootsLaceup - eyes: ClothingEyesGlassesSunglasses + eyes: ClothingEyesGlassesCommand gloves: ClothingHandsGlovesCaptain head: ClothingHeadHatCapcap neck: ClothingNeckMantleCap From b60df574a6ae29c54e0a37b31606268769a8f35d Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 8 Aug 2025 19:01:48 +0000 Subject: [PATCH 29/33] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ Resources/Changelog/Changelog.yml | 15 ++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 908c6d0d1e..988b9038a7 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1323,5 +1323,12 @@ Entries: id: 161 time: '2025-08-07T14:55:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39453 +- author: K-Dynamic + changes: + - message: Centcomm Official now starts with administration glasses. + type: Tweak + id: 162 + time: '2025-08-08T19:00:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35531 Name: Admin Order: 2 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 66fbcbf7aa..0eae3d944f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Coolsurf6 - changes: - - message: Updated more contraband items for Syndicate and Security. - type: Tweak - id: 8326 - time: '2025-04-24T02:57:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/35102 - author: Beck Thompson changes: - message: You can how hide items inside cake by using a knife! Eating a cake with @@ -3900,3 +3893,11 @@ id: 8838 time: '2025-08-08T18:56:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35277 +- author: K-Dynamic + changes: + - message: Captain and Head of Personnel starts with administration glasses and + hud respectively. + type: Add + id: 8839 + time: '2025-08-08T19:00:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35531 From 49fe34f78a6cd05d6201cf9c21a61c34c42f30ad Mon Sep 17 00:00:00 2001 From: Perry Fraser Date: Fri, 8 Aug 2025 15:27:46 -0400 Subject: [PATCH 30/33] fix: fix emote wheel icons (#39481) --- .../Systems/Emotes/EmotesUIController.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs index 7652e39bfd..8d74e2efe7 100644 --- a/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs +++ b/Content.Client/UserInterface/Systems/Emotes/EmotesUIController.cs @@ -21,17 +21,20 @@ public sealed class EmotesUIController : UIController, IOnStateChanged UIManager.GetActiveUIWidgetOrNull()?.EmotesButton; private SimpleRadialMenu? _menu; - private static readonly Dictionary EmoteGroupingInfo - = new Dictionary - { - [EmoteCategory.General] = ("emote-menu-category-general", new SpriteSpecifier.Texture(new ResPath("/Textures/Clothing/Head/Soft/mimesoft.rsi/icon.png"))), - [EmoteCategory.Hands] = ("emote-menu-category-hands", new SpriteSpecifier.Texture(new ResPath("/Textures/Clothing/Hands/Gloves/latex.rsi/icon.png"))), - [EmoteCategory.Vocal] = ("emote-menu-category-vocal", new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Emotes/vocal.png"))), - }; + private static readonly Dictionary EmoteGroupingInfo = + new() + { + [EmoteCategory.General] = ("emote-menu-category-general", + new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Head/Soft/mimesoft.rsi"), "icon")), + [EmoteCategory.Hands] = ("emote-menu-category-hands", + new SpriteSpecifier.Rsi(new ResPath("/Textures/Clothing/Hands/Gloves/latex.rsi"), "icon")), + [EmoteCategory.Vocal] = ("emote-menu-category-vocal", + new SpriteSpecifier.Texture(new ResPath("/Textures/Interface/Emotes/vocal.png"))), + }; public void OnStateEntered(GameplayState state) { @@ -135,7 +138,7 @@ public sealed class EmotesUIController : UIController, IOnStateChanged(); var player = _playerManager.LocalSession?.AttachedEntity; - Dictionary> emotesByCategory = new(); + Dictionary> emotesByCategory = new(); foreach (var emote in emotePrototypes) { if(emote.Category == EmoteCategory.Invalid) From b38aba78125c4ab1714da39b279e339997401b75 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 8 Aug 2025 19:28:53 +0000 Subject: [PATCH 31/33] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0eae3d944f..718d0605c9 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Beck Thompson - changes: - - message: You can how hide items inside cake by using a knife! Eating a cake with - an item inside will do minor damage. - type: Add - id: 8327 - time: '2025-04-24T03:00:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31015 - author: RedBookcase changes: - message: Added Advanced Circular Saw as a Medical Doctor specific uplink item. @@ -3901,3 +3893,10 @@ id: 8839 time: '2025-08-08T19:00:41.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/35531 +- author: perryprog + changes: + - message: The emote radial menu now shows the correct icons for its subcategories. + type: Fix + id: 8840 + time: '2025-08-08T19:27:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39481 From 5cf8662f3c0f36289cd175fa128a3022d20801f2 Mon Sep 17 00:00:00 2001 From: M87S <147015589+M87S@users.noreply.github.com> Date: Fri, 8 Aug 2025 12:30:46 -0700 Subject: [PATCH 32/33] Remove NamesGolem (#39478) * deleted golem.ftl which contained golem names * deleted golem.yml that went along with golem.ftl --- .../Locale/en-US/datasets/names/golem.ftl | 1336 ----------------- Resources/Prototypes/Datasets/Names/golem.yml | 5 - 2 files changed, 1341 deletions(-) delete mode 100644 Resources/Locale/en-US/datasets/names/golem.ftl delete mode 100644 Resources/Prototypes/Datasets/Names/golem.yml diff --git a/Resources/Locale/en-US/datasets/names/golem.ftl b/Resources/Locale/en-US/datasets/names/golem.ftl deleted file mode 100644 index 6a91ac773a..0000000000 --- a/Resources/Locale/en-US/datasets/names/golem.ftl +++ /dev/null @@ -1,1336 +0,0 @@ -names-golem-dataset-1 = Abelsonite -names-golem-dataset-2 = Abenakiite -names-golem-dataset-3 = Abernathyite -names-golem-dataset-4 = Abhurite -names-golem-dataset-5 = Abramovite -names-golem-dataset-6 = Abswurmbachite -names-golem-dataset-7 = Acanthite -names-golem-dataset-8 = Achavalite -names-golem-dataset-9 = Actinolite -names-golem-dataset-10 = Acuminite -names-golem-dataset-11 = Adamite -names-golem-dataset-12 = Adelite -names-golem-dataset-13 = Admontite -names-golem-dataset-14 = Aegirine -names-golem-dataset-15 = Aenigmatite -names-golem-dataset-16 = Aerinite -names-golem-dataset-17 = Aerugite -names-golem-dataset-18 = Aeschynite -names-golem-dataset-19 = Afghanite -names-golem-dataset-20 = Afwillite -names-golem-dataset-21 = Agardite -names-golem-dataset-22 = Agrellite -names-golem-dataset-23 = Agrinierite -names-golem-dataset-24 = Aguilarite -names-golem-dataset-25 = Aheylite -names-golem-dataset-26 = Ahlfeldite -names-golem-dataset-27 = Aikinite -names-golem-dataset-28 = Ajoite -names-golem-dataset-29 = Akaganeite -names-golem-dataset-30 = Akatoreite -names-golem-dataset-31 = Akdalaite -names-golem-dataset-32 = Åkermanite -names-golem-dataset-33 = Akhtenskite -names-golem-dataset-34 = Akimotoite -names-golem-dataset-35 = Akrochordite -names-golem-dataset-36 = Aksaite -names-golem-dataset-37 = Aktashite -names-golem-dataset-38 = Alabandite -names-golem-dataset-39 = Alacranite -names-golem-dataset-40 = Alamosite -names-golem-dataset-41 = Alarsite -names-golem-dataset-42 = Albite -names-golem-dataset-43 = Albrechtschraufite -names-golem-dataset-44 = Aldermanite -names-golem-dataset-45 = Aleksite -names-golem-dataset-46 = Alforsite -names-golem-dataset-47 = Algodonite -names-golem-dataset-48 = Aliettite -names-golem-dataset-49 = Allabogdanite -names-golem-dataset-50 = Allactite -names-golem-dataset-51 = Allanite -names-golem-dataset-52 = Allanpringite -names-golem-dataset-53 = Allargentum -names-golem-dataset-54 = Alleghanyite -names-golem-dataset-55 = Alloclasite -names-golem-dataset-56 = Allophane -names-golem-dataset-57 = Alluaivite -names-golem-dataset-58 = Alluaudite -names-golem-dataset-59 = Almandine -names-golem-dataset-60 = Almarudite -names-golem-dataset-61 = Alsakharovite -names-golem-dataset-62 = Alstonite -names-golem-dataset-63 = Altaite -names-golem-dataset-64 = Althausite -names-golem-dataset-65 = Althupite -names-golem-dataset-66 = Altisite -names-golem-dataset-67 = Alum -names-golem-dataset-68 = Aluminite -names-golem-dataset-69 = Aluminium -names-golem-dataset-70 = Alunite -names-golem-dataset-71 = Alunogen -names-golem-dataset-72 = Amakinite -names-golem-dataset-73 = Amarantite -names-golem-dataset-74 = Amblygonite -names-golem-dataset-75 = Ameghinite -names-golem-dataset-76 = Amesite -names-golem-dataset-77 = Amicite -names-golem-dataset-78 = Amphibole -names-golem-dataset-79 = Analcime -names-golem-dataset-80 = Anandite -names-golem-dataset-81 = Anapaite -names-golem-dataset-82 = Anatase -names-golem-dataset-83 = Ancylite -names-golem-dataset-84 = Andalusite -names-golem-dataset-85 = Andersonite -names-golem-dataset-86 = Andesine -names-golem-dataset-87 = Andorite -names-golem-dataset-88 = Andradite -names-golem-dataset-89 = Andyrobertsite -names-golem-dataset-90 = Anglesite -names-golem-dataset-91 = Anhydrite -names-golem-dataset-92 = Ankerite -names-golem-dataset-93 = Annabergite -names-golem-dataset-94 = Annite -names-golem-dataset-95 = Anorthite -names-golem-dataset-96 = Anorthoclase -names-golem-dataset-97 = Antarcticite -names-golem-dataset-98 = Anthonyite -names-golem-dataset-99 = Anthophyllite -names-golem-dataset-100 = Antigorite -names-golem-dataset-101 = Antimony -names-golem-dataset-102 = Antitaenite -names-golem-dataset-103 = Antlerite -names-golem-dataset-104 = Apachite -names-golem-dataset-105 = Apatite -names-golem-dataset-106 = Aphthitalite -names-golem-dataset-107 = Apophyllite -names-golem-dataset-108 = Aragonite -names-golem-dataset-109 = Arcanite -names-golem-dataset-110 = Archerite -names-golem-dataset-111 = Arctite -names-golem-dataset-112 = Arcubisite -names-golem-dataset-113 = Ardaite -names-golem-dataset-114 = Arfvedsonite -names-golem-dataset-115 = Argentite -names-golem-dataset-116 = Argutite -names-golem-dataset-117 = Argyrodite -names-golem-dataset-118 = Armalcolite -names-golem-dataset-119 = Arsenic -names-golem-dataset-120 = Arseniosiderite -names-golem-dataset-121 = Arsenoclasite -names-golem-dataset-122 = Arsenolite -names-golem-dataset-123 = Arsenopyrite -names-golem-dataset-124 = Arthurite -names-golem-dataset-125 = Artinite -names-golem-dataset-126 = Artroeite -names-golem-dataset-127 = Ashburtonite -names-golem-dataset-128 = Ashoverite -names-golem-dataset-129 = Asisite -names-golem-dataset-130 = Astrophyllite -names-golem-dataset-131 = Atacamite -names-golem-dataset-132 = Athabascaite -names-golem-dataset-133 = Atheneite -names-golem-dataset-134 = Aubertite -names-golem-dataset-135 = Augelite -names-golem-dataset-136 = Augite -names-golem-dataset-137 = Aurichalcite -names-golem-dataset-138 = Auricupride -names-golem-dataset-139 = Aurostibite -names-golem-dataset-140 = Austinite -names-golem-dataset-141 = Autunite -names-golem-dataset-142 = Avicennite -names-golem-dataset-143 = Avogadrite -names-golem-dataset-144 = Awaruite -names-golem-dataset-145 = Axinite -names-golem-dataset-146 = Azurite -names-golem-dataset-147 = Babefphite -names-golem-dataset-148 = Babingtonite -names-golem-dataset-149 = Baddeleyite -names-golem-dataset-150 = Bakerite -names-golem-dataset-151 = Balangeroite -names-golem-dataset-152 = Banalsite -names-golem-dataset-153 = Baotite -names-golem-dataset-154 = Bararite -names-golem-dataset-155 = Barrerite -names-golem-dataset-156 = Barstowite -names-golem-dataset-157 = Baryte -names-golem-dataset-158 = Barytocalcite -names-golem-dataset-159 = Bassanite -names-golem-dataset-160 = Bastnasite -names-golem-dataset-161 = Baumhauerite -names-golem-dataset-162 = Bayldonite -names-golem-dataset-163 = Bayleyite -names-golem-dataset-164 = Bazzite -names-golem-dataset-165 = Becquerelite -names-golem-dataset-166 = Benitoite -names-golem-dataset-167 = Benstonite -names-golem-dataset-168 = Bentorite -names-golem-dataset-169 = Beraunite -names-golem-dataset-170 = Berborite -names-golem-dataset-171 = Bergenite -names-golem-dataset-172 = Berlinite -names-golem-dataset-173 = Berryite -names-golem-dataset-174 = Berthierite -names-golem-dataset-175 = Bertrandite -names-golem-dataset-176 = Beryl -names-golem-dataset-177 = Beryllonite -names-golem-dataset-178 = Beudantite -names-golem-dataset-179 = Bicchulite -names-golem-dataset-180 = Biehlite -names-golem-dataset-181 = Bilinite -names-golem-dataset-182 = Billietite -names-golem-dataset-183 = Billwiseite -names-golem-dataset-184 = Biotite -names-golem-dataset-185 = Birnessite -names-golem-dataset-186 = Bischofite -names-golem-dataset-187 = Bismite -names-golem-dataset-188 = Bismuth -names-golem-dataset-189 = Bismuthinite -names-golem-dataset-190 = Bismutite -names-golem-dataset-191 = Bityite -names-golem-dataset-192 = Bixbyite -names-golem-dataset-193 = Blodite -names-golem-dataset-194 = Blossite -names-golem-dataset-195 = Bobfergusonite -names-golem-dataset-196 = Boehmite -names-golem-dataset-197 = Boleite -names-golem-dataset-198 = Boltwoodite -names-golem-dataset-199 = Bonaccordite -names-golem-dataset-200 = Boracite -names-golem-dataset-201 = Borax -names-golem-dataset-202 = Bornite -names-golem-dataset-203 = Botallackite -names-golem-dataset-204 = Botryogen -names-golem-dataset-205 = Boulangerite -names-golem-dataset-206 = Bournonite -names-golem-dataset-207 = Boussingaultite -names-golem-dataset-208 = Bowieite -names-golem-dataset-209 = Braggite -names-golem-dataset-210 = Brassite -names-golem-dataset-211 = Braunite -names-golem-dataset-212 = Brazilianite -names-golem-dataset-213 = Breithauptite -names-golem-dataset-214 = Brewsterite -names-golem-dataset-215 = Brezinaite -names-golem-dataset-216 = Brianite -names-golem-dataset-217 = Brianyoungite -names-golem-dataset-218 = Briartite -names-golem-dataset-219 = Bridgmanite -names-golem-dataset-220 = Brochantite -names-golem-dataset-221 = Brockite -names-golem-dataset-222 = Bromargyrite -names-golem-dataset-223 = Bromellite -names-golem-dataset-224 = Bronzite -names-golem-dataset-225 = Brookite -names-golem-dataset-226 = Brownleeite -names-golem-dataset-227 = Brownmillerite -names-golem-dataset-228 = Brucite -names-golem-dataset-229 = Brushite -names-golem-dataset-230 = Buddingtonite -names-golem-dataset-231 = Bukovite -names-golem-dataset-232 = Bukovskyite -names-golem-dataset-233 = Bultfonteinite -names-golem-dataset-234 = Bunsenite -names-golem-dataset-235 = Bustamite -names-golem-dataset-236 = Bystrite -names-golem-dataset-237 = Cabalzarite -names-golem-dataset-238 = Cabriite -names-golem-dataset-239 = Cacoxenite -names-golem-dataset-240 = Cadmium -names-golem-dataset-241 = Cadmoindite -names-golem-dataset-242 = Cadmoselite -names-golem-dataset-243 = Cadwaladerite -names-golem-dataset-244 = Cafarsite -names-golem-dataset-245 = Cafetite -names-golem-dataset-246 = Cahnite -names-golem-dataset-247 = Calaverite -names-golem-dataset-248 = Calciborite -names-golem-dataset-249 = Calcite -names-golem-dataset-250 = Calderite -names-golem-dataset-251 = Caledonite -names-golem-dataset-252 = Calumetite -names-golem-dataset-253 = Campigliaite -names-golem-dataset-254 = Canavesite -names-golem-dataset-255 = Cancrinite -names-golem-dataset-256 = Canfieldite -names-golem-dataset-257 = Carletonite -names-golem-dataset-258 = Carlosruizite -names-golem-dataset-259 = Carlsbergite -names-golem-dataset-260 = Carminite -names-golem-dataset-261 = Carnallite -names-golem-dataset-262 = Carnotite -names-golem-dataset-263 = Carobbiite -names-golem-dataset-264 = Carpathite -names-golem-dataset-265 = Carpholite -names-golem-dataset-266 = Carrollite -names-golem-dataset-267 = Caryopilite -names-golem-dataset-268 = Cassiterite -names-golem-dataset-269 = Cattierite -names-golem-dataset-270 = Cavansite -names-golem-dataset-271 = Celadonite -names-golem-dataset-272 = Celestine -names-golem-dataset-273 = Celsian -names-golem-dataset-274 = Cerite -names-golem-dataset-275 = Cerium -names-golem-dataset-276 = Cerussite -names-golem-dataset-277 = Cervandonite -names-golem-dataset-278 = Cervantite -names-golem-dataset-279 = Cesanite -names-golem-dataset-280 = Cesbronite -names-golem-dataset-281 = Chabazite -names-golem-dataset-282 = Chaidamuite -names-golem-dataset-283 = Chalcanthite -names-golem-dataset-284 = Chalcocite -names-golem-dataset-285 = Chalcophyllite -names-golem-dataset-286 = Chalcopyrite -names-golem-dataset-287 = Challacolloite -names-golem-dataset-288 = Chambersite -names-golem-dataset-289 = Chamosite -names-golem-dataset-290 = Changbaiite -names-golem-dataset-291 = Chaoite -names-golem-dataset-292 = Chapmanite -names-golem-dataset-293 = Charoite -names-golem-dataset-294 = Chatkalite -names-golem-dataset-295 = Chesterite -names-golem-dataset-296 = Chibaite -names-golem-dataset-297 = Childrenite -names-golem-dataset-298 = Chlorargyrite -names-golem-dataset-299 = Chlorite -names-golem-dataset-300 = Chloritoid -names-golem-dataset-301 = Chlormayenite -names-golem-dataset-302 = Chlorocalcite -names-golem-dataset-303 = Chloroxiphite -names-golem-dataset-304 = Chondrodite -names-golem-dataset-305 = Chrisstanleyite -names-golem-dataset-306 = Christite -names-golem-dataset-307 = Chromite -names-golem-dataset-308 = Chromium -names-golem-dataset-309 = Chrysoberyl -names-golem-dataset-310 = Chrysocolla -names-golem-dataset-311 = Chrysotile -names-golem-dataset-312 = Chvaleticeite -names-golem-dataset-313 = Cinnabar -names-golem-dataset-314 = Clarkeite -names-golem-dataset-315 = Claudetite -names-golem-dataset-316 = Clausthalite -names-golem-dataset-317 = Clearcreekite -names-golem-dataset-318 = Cleusonite -names-golem-dataset-319 = Clinoclase -names-golem-dataset-320 = Clinohedrite -names-golem-dataset-321 = Clinohumite -names-golem-dataset-322 = Clinoptilolite -names-golem-dataset-323 = Clinozoisite -names-golem-dataset-324 = Clintonite -names-golem-dataset-325 = Cobaltite -names-golem-dataset-326 = Coccinite -names-golem-dataset-327 = Coconinoite -names-golem-dataset-328 = Coesite -names-golem-dataset-329 = Coffinite -names-golem-dataset-330 = Cohenite -names-golem-dataset-331 = Colemanite -names-golem-dataset-332 = Colimaite -names-golem-dataset-333 = Collinsite -names-golem-dataset-334 = Coloradoite -names-golem-dataset-335 = Columbite -names-golem-dataset-336 = Combeite -names-golem-dataset-337 = Conichalcite -names-golem-dataset-338 = Connellite -names-golem-dataset-339 = Cooperite -names-golem-dataset-340 = Copiapite -names-golem-dataset-341 = Copper -names-golem-dataset-342 = Corderoite -names-golem-dataset-343 = Cordierite -names-golem-dataset-344 = Corkite -names-golem-dataset-345 = Cornubite -names-golem-dataset-346 = Cornwallite -names-golem-dataset-347 = Corundum -names-golem-dataset-348 = Cotunnite -names-golem-dataset-349 = Covellite -names-golem-dataset-350 = Coyoteite -names-golem-dataset-351 = Creedite -names-golem-dataset-352 = Cristobalite -names-golem-dataset-353 = Crocoite -names-golem-dataset-354 = Cronstedtite -names-golem-dataset-355 = Crookesite -names-golem-dataset-356 = Crossite -names-golem-dataset-357 = Cryolite -names-golem-dataset-358 = Cryptomelane -names-golem-dataset-359 = Cubanite -names-golem-dataset-360 = Cummingtonite -names-golem-dataset-361 = Cupalite -names-golem-dataset-362 = Cuprite -names-golem-dataset-363 = Cuprosklodowskite -names-golem-dataset-364 = Cuprospinel -names-golem-dataset-365 = Curite -names-golem-dataset-366 = Cuspidine -names-golem-dataset-367 = Cyanotrichite -names-golem-dataset-368 = Cylindrite -names-golem-dataset-369 = Cymrite -names-golem-dataset-370 = Cyrilovite -names-golem-dataset-371 = Danalite -names-golem-dataset-372 = Danburite -names-golem-dataset-373 = Datolite -names-golem-dataset-374 = Daubreeite -names-golem-dataset-375 = Daubreelite -names-golem-dataset-376 = Davidite -names-golem-dataset-377 = Dawsonite -names-golem-dataset-378 = Delafossite -names-golem-dataset-379 = Delvauxite -names-golem-dataset-380 = Demesmaekerite -names-golem-dataset-381 = Derriksite -names-golem-dataset-382 = Descloizite -names-golem-dataset-383 = Devilline -names-golem-dataset-384 = Diaboleite -names-golem-dataset-385 = Diadochite -names-golem-dataset-386 = Diamond -names-golem-dataset-387 = Diaspore -names-golem-dataset-388 = Dickite -names-golem-dataset-389 = Digenite -names-golem-dataset-390 = Dimorphite -names-golem-dataset-391 = Diopside -names-golem-dataset-392 = Dioptase -names-golem-dataset-393 = Djerfisherite -names-golem-dataset-394 = Djurleite -names-golem-dataset-395 = Dmitryivanovite -names-golem-dataset-396 = Dollaseite -names-golem-dataset-397 = Dolomite -names-golem-dataset-398 = Domeykite -names-golem-dataset-399 = Donnayite -names-golem-dataset-400 = Drysdallite -names-golem-dataset-401 = Duftite -names-golem-dataset-402 = Dumortierite -names-golem-dataset-403 = Dundasite -names-golem-dataset-404 = Dypingite -names-golem-dataset-405 = Dyscrasite -names-golem-dataset-406 = Dzhalindite -names-golem-dataset-407 = Edenite -names-golem-dataset-408 = Edingtonite -names-golem-dataset-409 = Efremovite -names-golem-dataset-410 = Ekanite -names-golem-dataset-411 = Elbaite -names-golem-dataset-412 = Emmonsite -names-golem-dataset-413 = Empressite -names-golem-dataset-414 = Enargite -names-golem-dataset-415 = Enstatite -names-golem-dataset-416 = Eosphorite -names-golem-dataset-417 = Ephesite -names-golem-dataset-418 = Epidote -names-golem-dataset-419 = Epsomite -names-golem-dataset-420 = Ericssonite -names-golem-dataset-421 = Erionite -names-golem-dataset-422 = Erythrite -names-golem-dataset-423 = Eskolaite -names-golem-dataset-424 = Esperite -names-golem-dataset-425 = Ettringite -names-golem-dataset-426 = Euchroite -names-golem-dataset-427 = Euclase -names-golem-dataset-428 = Eucryptite -names-golem-dataset-429 = Eudialyte -names-golem-dataset-430 = Euxenite -names-golem-dataset-431 = Eveite -names-golem-dataset-432 = Evenkite -names-golem-dataset-433 = Eveslogite -names-golem-dataset-434 = Fabianite -names-golem-dataset-435 = Farneseite -names-golem-dataset-436 = Faujasite -names-golem-dataset-437 = Faustite -names-golem-dataset-438 = Fayalite -names-golem-dataset-439 = Feldspar -names-golem-dataset-440 = Feldspathoid -names-golem-dataset-441 = Felsobanyaite -names-golem-dataset-442 = Ferberite -names-golem-dataset-443 = Fergusonite -names-golem-dataset-444 = Feroxyhyte -names-golem-dataset-445 = Ferrierite -names-golem-dataset-446 = Ferrihydrite -names-golem-dataset-447 = Ferrimolybdite -names-golem-dataset-448 = Ferro-actinolite -names-golem-dataset-449 = Ferrogedrite -names-golem-dataset-450 = Ferrohortonolite -names-golem-dataset-451 = Ferronigerite -names-golem-dataset-452 = Ferropericlase -names-golem-dataset-453 = Ferroselite -names-golem-dataset-454 = Fettelite -names-golem-dataset-455 = Fichtelite -names-golem-dataset-456 = Fletcherite -names-golem-dataset-457 = Fluckite -names-golem-dataset-458 = Fluellite -names-golem-dataset-459 = Fluoborite -names-golem-dataset-460 = Fluocerite -names-golem-dataset-461 = Fluorapatite -names-golem-dataset-462 = Fluorapophyllite -names-golem-dataset-463 = Fluorcaphite -names-golem-dataset-464 = Fluorellestadite -names-golem-dataset-465 = Fluorite -names-golem-dataset-466 = Fluororichterite -names-golem-dataset-467 = Fornacite -names-golem-dataset-468 = Forsterite -names-golem-dataset-469 = Fougerite -names-golem-dataset-470 = Fourmarierite -names-golem-dataset-471 = Fraipontite -names-golem-dataset-472 = Francevillite -names-golem-dataset-473 = Franckeite -names-golem-dataset-474 = Frankamenite -names-golem-dataset-475 = Frankdicksonite -names-golem-dataset-476 = Frankhawthorneite -names-golem-dataset-477 = Franklinite -names-golem-dataset-478 = Franklinphilite -names-golem-dataset-479 = Freibergite -names-golem-dataset-480 = Freieslebenite -names-golem-dataset-481 = Fukuchilite -names-golem-dataset-482 = Gabrielite -names-golem-dataset-483 = Gadolinite -names-golem-dataset-484 = Gagarinite -names-golem-dataset-485 = Gahnite -names-golem-dataset-486 = Galaxite -names-golem-dataset-487 = Galena -names-golem-dataset-488 = Galkhaite -names-golem-dataset-489 = Gananite -names-golem-dataset-490 = Garnet -names-golem-dataset-491 = Gaspeite -names-golem-dataset-492 = Gatehouseite -names-golem-dataset-493 = Gaylussite -names-golem-dataset-494 = Gedrite -names-golem-dataset-495 = Geerite -names-golem-dataset-496 = Gehlenite -names-golem-dataset-497 = Geigerite -names-golem-dataset-498 = Geikielite -names-golem-dataset-499 = Geocronite -names-golem-dataset-500 = Georgerobinsonite -names-golem-dataset-501 = Germanite -names-golem-dataset-502 = Gersdorffite -names-golem-dataset-503 = Getchellite -names-golem-dataset-504 = Gibbsite -names-golem-dataset-505 = Gilalite -names-golem-dataset-506 = Gismondine -names-golem-dataset-507 = Glauberite -names-golem-dataset-508 = Glaucochroite -names-golem-dataset-509 = Glaucodot -names-golem-dataset-510 = Glauconite -names-golem-dataset-511 = Glaucophane -names-golem-dataset-512 = Gmelinite -names-golem-dataset-513 = Godovikovite -names-golem-dataset-514 = Goethite -names-golem-dataset-515 = Gold -names-golem-dataset-516 = Goldmanite -names-golem-dataset-517 = Gonnardite -names-golem-dataset-518 = Gordaite -names-golem-dataset-519 = Gormanite -names-golem-dataset-520 = Goslarite -names-golem-dataset-521 = Graftonite -names-golem-dataset-522 = Grandidierite -names-golem-dataset-523 = Grandreefite -names-golem-dataset-524 = Graphite -names-golem-dataset-525 = Gratonite -names-golem-dataset-526 = Greenalite -names-golem-dataset-527 = Greenockite -names-golem-dataset-528 = Gregoryite -names-golem-dataset-529 = Greifensteinite -names-golem-dataset-530 = Greigite -names-golem-dataset-531 = Grossite -names-golem-dataset-532 = Grossular -names-golem-dataset-533 = Groutite -names-golem-dataset-534 = Grunerite -names-golem-dataset-535 = Guettardite -names-golem-dataset-536 = Gugiaite -names-golem-dataset-537 = Guilleminite -names-golem-dataset-538 = Gunningite -names-golem-dataset-539 = Guyanaite -names-golem-dataset-540 = Gwihabaite -names-golem-dataset-541 = Gypsum -names-golem-dataset-542 = Hafnon -names-golem-dataset-543 = Hagendorfite -names-golem-dataset-544 = Haggertyite -names-golem-dataset-545 = Haidingerite -names-golem-dataset-546 = Haiweeite -names-golem-dataset-547 = Haleniusite -names-golem-dataset-548 = Halite -names-golem-dataset-549 = Halloysite -names-golem-dataset-550 = Halotrichite -names-golem-dataset-551 = Hambergite -names-golem-dataset-552 = Hanksite -names-golem-dataset-553 = Hapkeite -names-golem-dataset-554 = Hardystonite -names-golem-dataset-555 = Harmotome -names-golem-dataset-556 = Hauerite -names-golem-dataset-557 = Hausmannite -names-golem-dataset-558 = Hauyne -names-golem-dataset-559 = Hawleyite -names-golem-dataset-560 = Haxonite -names-golem-dataset-561 = Hazenite -names-golem-dataset-562 = Heazlewoodite -names-golem-dataset-563 = Hectorite -names-golem-dataset-564 = Hedenbergite -names-golem-dataset-565 = Hellyerite -names-golem-dataset-566 = Hematite -names-golem-dataset-567 = Hemihedrite -names-golem-dataset-568 = Hemimorphite -names-golem-dataset-569 = Hemusite -names-golem-dataset-570 = Herbertsmithite -names-golem-dataset-571 = Hercynite -names-golem-dataset-572 = Herderite -names-golem-dataset-573 = Hessite -names-golem-dataset-574 = Heulandite -names-golem-dataset-575 = Hexaferrum -names-golem-dataset-576 = Hiarneite -names-golem-dataset-577 = Hibonite -names-golem-dataset-578 = Hidalgoite -names-golem-dataset-579 = Hilgardite -names-golem-dataset-580 = Hisingerite -names-golem-dataset-581 = Hodgkinsonite -names-golem-dataset-582 = Hoelite -names-golem-dataset-583 = Hollandite -names-golem-dataset-584 = Holmquistite -names-golem-dataset-585 = Homilite -names-golem-dataset-586 = Hopeite -names-golem-dataset-587 = Hornblende -names-golem-dataset-588 = Howlite -names-golem-dataset-589 = Hsianghualite -names-golem-dataset-590 = Hubeite -names-golem-dataset-591 = Hubnerite -names-golem-dataset-592 = Huemulite -names-golem-dataset-593 = Humite -names-golem-dataset-594 = Huntite -names-golem-dataset-595 = Hureaulite -names-golem-dataset-596 = Hutchinsonite -names-golem-dataset-597 = Huttonite -names-golem-dataset-598 = Hydroboracite -names-golem-dataset-599 = Hydrogrossular -names-golem-dataset-600 = Hydrohalite -names-golem-dataset-601 = Hydrokenoelsmoreite -names-golem-dataset-602 = Hydromagnesite -names-golem-dataset-603 = Hydrotalcite -names-golem-dataset-604 = Hydroxylapatite -names-golem-dataset-605 = Hydrozincite -names-golem-dataset-606 = Ianbruceite -names-golem-dataset-607 = Ice -names-golem-dataset-608 = Icosahedrite -names-golem-dataset-609 = Idrialite -names-golem-dataset-610 = Ikaite -names-golem-dataset-611 = Illite -names-golem-dataset-612 = Ilmenite -names-golem-dataset-613 = Ilvaite -names-golem-dataset-614 = Imogolite -names-golem-dataset-615 = Indite -names-golem-dataset-616 = Indium -names-golem-dataset-617 = Inyoite -names-golem-dataset-618 = Iodargyrite -names-golem-dataset-619 = Iranite -names-golem-dataset-620 = Iridium -names-golem-dataset-621 = Iron -names-golem-dataset-622 = Ixiolite -names-golem-dataset-623 = Jacobsite -names-golem-dataset-624 = Jadarite -names-golem-dataset-625 = Jadeite -names-golem-dataset-626 = Jaffeite -names-golem-dataset-627 = Jalpaite -names-golem-dataset-628 = Jamesonite -names-golem-dataset-629 = Janggunite -names-golem-dataset-630 = Jarosewichite -names-golem-dataset-631 = Jarosite -names-golem-dataset-632 = Jennite -names-golem-dataset-633 = Jeremejevite -names-golem-dataset-634 = Jerrygibbsite -names-golem-dataset-635 = Jimthompsonite -names-golem-dataset-636 = Johannite -names-golem-dataset-637 = Jolliffeite -names-golem-dataset-638 = Jonesite -names-golem-dataset-639 = Jordanite -names-golem-dataset-640 = Julgoldite -names-golem-dataset-641 = Junitoite -names-golem-dataset-642 = Jurbanite -names-golem-dataset-643 = Kaatialaite -names-golem-dataset-644 = Kadyrelite -names-golem-dataset-645 = Kaersutite -names-golem-dataset-646 = Kainite -names-golem-dataset-647 = Kainosite -names-golem-dataset-648 = Kalininite -names-golem-dataset-649 = Kalinite -names-golem-dataset-650 = Kalsilite -names-golem-dataset-651 = Kamacite -names-golem-dataset-652 = Kambaldaite -names-golem-dataset-653 = Kamiokite -names-golem-dataset-654 = Kampfite -names-golem-dataset-655 = Kankite -names-golem-dataset-656 = Kanoite -names-golem-dataset-657 = Kaolinite -names-golem-dataset-658 = Karlite -names-golem-dataset-659 = Kassite -names-golem-dataset-660 = Kegelite -names-golem-dataset-661 = Keilite -names-golem-dataset-662 = Kermesite -names-golem-dataset-663 = Kernite -names-golem-dataset-664 = Kesterite -names-golem-dataset-665 = Keyite -names-golem-dataset-666 = Khatyrkite -names-golem-dataset-667 = Kieserite -names-golem-dataset-668 = Kinoite -names-golem-dataset-669 = Knebelite -names-golem-dataset-670 = Knorringite -names-golem-dataset-671 = Kobellite -names-golem-dataset-672 = Kochite -names-golem-dataset-673 = Kogarkoite -names-golem-dataset-674 = Kolbeckite -names-golem-dataset-675 = Kornerupine -names-golem-dataset-676 = Kosmochlor -names-golem-dataset-677 = Kostovite -names-golem-dataset-678 = Kottigite -names-golem-dataset-679 = Kovdorskite -names-golem-dataset-680 = Kratochv�lite -names-golem-dataset-681 = Kremersite -names-golem-dataset-682 = Krennerite -names-golem-dataset-683 = Krieselite -names-golem-dataset-684 = Krohnkite -names-golem-dataset-685 = Krotite -names-golem-dataset-686 = Krutovite -names-golem-dataset-687 = Kukharenkoite -names-golem-dataset-688 = Kuratite -names-golem-dataset-689 = Kurnakovite -names-golem-dataset-690 = Kutnohorite -names-golem-dataset-691 = Kyanite -names-golem-dataset-692 = Labradorite -names-golem-dataset-693 = Lanarkite -names-golem-dataset-694 = Langbeinite -names-golem-dataset-695 = Langite -names-golem-dataset-696 = Lansfordite -names-golem-dataset-697 = Lanthanite -names-golem-dataset-698 = Laplandite -names-golem-dataset-699 = Larnite -names-golem-dataset-700 = Laumontite -names-golem-dataset-701 = Laurionite -names-golem-dataset-702 = Laurite -names-golem-dataset-703 = Lautite -names-golem-dataset-704 = Lavendulan -names-golem-dataset-705 = Lawsonite -names-golem-dataset-706 = Lazulite -names-golem-dataset-707 = Lazurite -names-golem-dataset-708 = Lead -names-golem-dataset-709 = Leadhillite -names-golem-dataset-710 = Legrandite -names-golem-dataset-711 = Leifite -names-golem-dataset-712 = Leightonite -names-golem-dataset-713 = Lepidocrocite -names-golem-dataset-714 = Lepidolite -names-golem-dataset-715 = Letovicite -names-golem-dataset-716 = Leucite -names-golem-dataset-717 = Leucophanite -names-golem-dataset-718 = Leucophoenicite -names-golem-dataset-719 = Levyne -names-golem-dataset-720 = Libethenite -names-golem-dataset-721 = Liebigite -names-golem-dataset-722 = Linarite -names-golem-dataset-723 = Lindgrenite -names-golem-dataset-724 = Linnaeite -names-golem-dataset-725 = Lipscombite -names-golem-dataset-726 = Liroconite -names-golem-dataset-727 = Litharge -names-golem-dataset-728 = Lithiophilite -names-golem-dataset-729 = Livingstonite -names-golem-dataset-730 = Lizardite -names-golem-dataset-731 = Loellingite -names-golem-dataset-732 = Lonsdaleite -names-golem-dataset-733 = Loparite -names-golem-dataset-734 = Lopezite -names-golem-dataset-735 = Lorandite -names-golem-dataset-736 = Lorenzenite -names-golem-dataset-737 = Loveringite -names-golem-dataset-738 = Ludlamite -names-golem-dataset-739 = Ludwigite -names-golem-dataset-740 = Lulzacite -names-golem-dataset-741 = Lyonsite -names-golem-dataset-742 = Macaulayite -names-golem-dataset-743 = Macdonaldite -names-golem-dataset-744 = Mackinawite -names-golem-dataset-745 = Madocite -names-golem-dataset-746 = Magadiite -names-golem-dataset-747 = Maghemite -names-golem-dataset-748 = Magnesioferrite -names-golem-dataset-749 = Magnesiohastingsite -names-golem-dataset-750 = Magnesiopascoite -names-golem-dataset-751 = Magnesite -names-golem-dataset-752 = Magnetite -names-golem-dataset-753 = Majorite -names-golem-dataset-754 = Malachite -names-golem-dataset-755 = Malayaite -names-golem-dataset-756 = Manganite -names-golem-dataset-757 = Manganosite -names-golem-dataset-758 = Manganvesuvianite -names-golem-dataset-759 = Marcasite -names-golem-dataset-760 = Margaritasite -names-golem-dataset-761 = Margarite -names-golem-dataset-762 = Marialite -names-golem-dataset-763 = Maricite -names-golem-dataset-764 = Marrite -names-golem-dataset-765 = Marthozite -names-golem-dataset-766 = Mascagnite -names-golem-dataset-767 = Massicot -names-golem-dataset-768 = Masuyite -names-golem-dataset-769 = Matlockite -names-golem-dataset-770 = Maucherite -names-golem-dataset-771 = Mawsonite -names-golem-dataset-772 = Mckelveyite -names-golem-dataset-773 = Meionite -names-golem-dataset-774 = Melanophlogite -names-golem-dataset-775 = Melanterite -names-golem-dataset-776 = Melilite -names-golem-dataset-777 = Mellite -names-golem-dataset-778 = Melonite -names-golem-dataset-779 = Mendipite -names-golem-dataset-780 = Mendozite -names-golem-dataset-781 = Meneghinite -names-golem-dataset-782 = Mercury -names-golem-dataset-783 = Mereheadite -names-golem-dataset-784 = Merenskyite -names-golem-dataset-785 = Meridianiite -names-golem-dataset-786 = Merrillite -names-golem-dataset-787 = Mesolite -names-golem-dataset-788 = Messelite -names-golem-dataset-789 = Metacinnabar -names-golem-dataset-790 = Metatorbernite -names-golem-dataset-791 = Metazeunerite -names-golem-dataset-792 = Meyerhofferite -names-golem-dataset-793 = Miargyrite -names-golem-dataset-794 = Mica -names-golem-dataset-795 = Microcline -names-golem-dataset-796 = Microlite -names-golem-dataset-797 = Millerite -names-golem-dataset-798 = Millosevichite -names-golem-dataset-799 = Mimetite -names-golem-dataset-800 = Minium -names-golem-dataset-801 = Minnesotaite -names-golem-dataset-802 = Minyulite -names-golem-dataset-803 = Mirabilite -names-golem-dataset-804 = Mixite -names-golem-dataset-805 = Moganite -names-golem-dataset-806 = Mohite -names-golem-dataset-807 = Mohrite -names-golem-dataset-808 = Moissanite -names-golem-dataset-809 = Molybdenite -names-golem-dataset-810 = Molybdite -names-golem-dataset-811 = Monazite -names-golem-dataset-812 = Monohydrocalcite -names-golem-dataset-813 = Monticellite -names-golem-dataset-814 = Montmorillonite -names-golem-dataset-815 = Mooihoekite -names-golem-dataset-816 = Moolooite -names-golem-dataset-817 = Mordenite -names-golem-dataset-818 = Moschellandsbergite -names-golem-dataset-819 = Mosesite -names-golem-dataset-820 = Mottramite -names-golem-dataset-821 = Motukoreaite -names-golem-dataset-822 = Mullite -names-golem-dataset-823 = Mundite -names-golem-dataset-824 = Murdochite -names-golem-dataset-825 = Muscovite -names-golem-dataset-826 = Musgravite -names-golem-dataset-827 = Nabalamprophyllite -names-golem-dataset-828 = Nabesite -names-golem-dataset-829 = Nacrite -names-golem-dataset-830 = Nadorite -names-golem-dataset-831 = Nagyagite -names-golem-dataset-832 = Nahcolite -names-golem-dataset-833 = Naldrettite -names-golem-dataset-834 = Nambulite -names-golem-dataset-835 = Narsarsukite -names-golem-dataset-836 = Native copper -names-golem-dataset-837 = Natrolite -names-golem-dataset-838 = Natron -names-golem-dataset-839 = Natrophilite -names-golem-dataset-840 = Nekrasovite -names-golem-dataset-841 = Nelenite -names-golem-dataset-842 = Nenadkevichite -names-golem-dataset-843 = Nepheline -names-golem-dataset-844 = Nepouite -names-golem-dataset-845 = Neptunite -names-golem-dataset-846 = Nichromite -names-golem-dataset-847 = Nickel -names-golem-dataset-848 = Nickeline -names-golem-dataset-849 = Niedermayrite -names-golem-dataset-850 = Niningerite -names-golem-dataset-851 = Nissonite -names-golem-dataset-852 = Niter -names-golem-dataset-853 = Nitratine -names-golem-dataset-854 = Nobleite -names-golem-dataset-855 = Nontronite -names-golem-dataset-856 = Norbergite -names-golem-dataset-857 = Normandite -names-golem-dataset-858 = Northupite -names-golem-dataset-859 = Nosean -names-golem-dataset-860 = Nsutite -names-golem-dataset-861 = Nyerereite -names-golem-dataset-862 = kenite -names-golem-dataset-863 = Oldhamite -names-golem-dataset-864 = Olgite -names-golem-dataset-865 = Olivenite -names-golem-dataset-866 = Olivine -names-golem-dataset-867 = Omphacite -names-golem-dataset-868 = Ordonezite -names-golem-dataset-869 = Oregonite -names-golem-dataset-870 = Orpiment -names-golem-dataset-871 = Orthoclase -names-golem-dataset-872 = Osarizawaite -names-golem-dataset-873 = Osmium -names-golem-dataset-874 = Osumilite -names-golem-dataset-875 = Otavite -names-golem-dataset-876 = Ottrelite -names-golem-dataset-877 = Otwayite -names-golem-dataset-878 = Paakkonenite -names-golem-dataset-879 = Pabstite -names-golem-dataset-880 = Painite -names-golem-dataset-881 = Palladium -names-golem-dataset-882 = Palygorskite -names-golem-dataset-883 = Panethite -names-golem-dataset-884 = Panguite -names-golem-dataset-885 = Papagoite -names-golem-dataset-886 = Paragonite -names-golem-dataset-887 = Paralaurionite -names-golem-dataset-888 = Paramelaconite -names-golem-dataset-889 = Pararealgar -names-golem-dataset-890 = Pargasite -names-golem-dataset-891 = Parisite -names-golem-dataset-892 = Parsonsite -names-golem-dataset-893 = Partheite -names-golem-dataset-894 = Pascoite -names-golem-dataset-895 = Patronite -names-golem-dataset-896 = Paulingite -names-golem-dataset-897 = Paulscherrerite -names-golem-dataset-898 = Pearceite -names-golem-dataset-899 = Pecoraite -names-golem-dataset-900 = Pectolite -names-golem-dataset-901 = Penikisite -names-golem-dataset-902 = Penroseite -names-golem-dataset-903 = Pentagonite -names-golem-dataset-904 = Pentlandite -names-golem-dataset-905 = Perhamite -names-golem-dataset-906 = Periclase -names-golem-dataset-907 = Perite -names-golem-dataset-908 = Perovskite -names-golem-dataset-909 = Petalite -names-golem-dataset-910 = Petzite -names-golem-dataset-911 = Pezzottaite -names-golem-dataset-912 = Pharmacolite -names-golem-dataset-913 = Pharmacosiderite -names-golem-dataset-914 = Phenakite -names-golem-dataset-915 = Phillipsite -names-golem-dataset-916 = Phlogopite -names-golem-dataset-917 = Phoenicochroite -names-golem-dataset-918 = Phosgenite -names-golem-dataset-919 = Phosphophyllite -names-golem-dataset-920 = Phosphuranylite -names-golem-dataset-921 = Pickeringite -names-golem-dataset-922 = Picropharmacolite -names-golem-dataset-923 = Piemontite -names-golem-dataset-924 = Pigeonite -names-golem-dataset-925 = Pinalite -names-golem-dataset-926 = Pinnoite -names-golem-dataset-927 = Piypite -names-golem-dataset-928 = Plagioclase -names-golem-dataset-929 = Plancheite -names-golem-dataset-930 = Platinum -names-golem-dataset-931 = Plattnerite -names-golem-dataset-932 = Playfairite -names-golem-dataset-933 = Plumbogummite -names-golem-dataset-934 = Polarite -names-golem-dataset-935 = Pollucite -names-golem-dataset-936 = Polybasite -names-golem-dataset-937 = Polycrase -names-golem-dataset-938 = Polydymite -names-golem-dataset-939 = Polyhalite -names-golem-dataset-940 = Portlandite -names-golem-dataset-941 = Posnjakite -names-golem-dataset-942 = Poudretteite -names-golem-dataset-943 = Povondraite -names-golem-dataset-944 = Powellite -names-golem-dataset-945 = Prehnite -names-golem-dataset-946 = Proustite -names-golem-dataset-947 = Pseudobrookite -names-golem-dataset-948 = Pseudomalachite -names-golem-dataset-949 = Pseudowollastonite -names-golem-dataset-950 = Pumpellyite -names-golem-dataset-951 = Purpurite -names-golem-dataset-952 = Putnisite -names-golem-dataset-953 = Pyrargyrite -names-golem-dataset-954 = Pyrite -names-golem-dataset-955 = Pyrochlore -names-golem-dataset-956 = Pyrolusite -names-golem-dataset-957 = Pyromorphite -names-golem-dataset-958 = Pyrope -names-golem-dataset-959 = Pyrophanite -names-golem-dataset-960 = Pyrophyllite -names-golem-dataset-961 = Pyroxene -names-golem-dataset-962 = Pyroxferroite -names-golem-dataset-963 = Pyroxmangite -names-golem-dataset-964 = Pyrrhotite -names-golem-dataset-965 = Rambergite -names-golem-dataset-966 = Rameauite -names-golem-dataset-967 = Rammelsbergite -names-golem-dataset-968 = Rapidcreekite -names-golem-dataset-969 = Raspite -names-golem-dataset-970 = Realgar -names-golem-dataset-971 = Reidite -names-golem-dataset-972 = Reinerite -names-golem-dataset-973 = Renierite -names-golem-dataset-974 = Rheniite -names-golem-dataset-975 = Rhodium -names-golem-dataset-976 = Rhodochrosite -names-golem-dataset-977 = Rhodonite -names-golem-dataset-978 = Rhodplumsite -names-golem-dataset-979 = Rhomboclase -names-golem-dataset-980 = Richterite -names-golem-dataset-981 = Rickardite -names-golem-dataset-982 = Riebeckite -names-golem-dataset-983 = Ringwoodite -names-golem-dataset-984 = Roaldite -names-golem-dataset-985 = Robertsite -names-golem-dataset-986 = Rodalquilarite -names-golem-dataset-987 = Romanechite -names-golem-dataset-988 = Romeite -names-golem-dataset-989 = Rosasite -names-golem-dataset-990 = Roscoelite -names-golem-dataset-991 = Roselite -names-golem-dataset-992 = Rosenbergite -names-golem-dataset-993 = Rosickyite -names-golem-dataset-994 = Routhierite -names-golem-dataset-995 = Rozenite -names-golem-dataset-996 = Rubicline -names-golem-dataset-997 = Ruizite -names-golem-dataset-998 = Russellite -names-golem-dataset-999 = Ruthenium -names-golem-dataset-1000 = Rutherfordine -names-golem-dataset-1001 = Rutile -names-golem-dataset-1002 = Rynersonite -names-golem-dataset-1003 = Sabatierite -names-golem-dataset-1004 = Sabieite -names-golem-dataset-1005 = Sabinaite -names-golem-dataset-1006 = Sacrofanite -names-golem-dataset-1007 = Safflorite -names-golem-dataset-1008 = Sal Ammoniac -names-golem-dataset-1009 = Saleeite -names-golem-dataset-1010 = Saliotite -names-golem-dataset-1011 = Salzburgite -names-golem-dataset-1012 = Samarskite -names-golem-dataset-1013 = Sampleite -names-golem-dataset-1014 = Samsonite -names-golem-dataset-1015 = Samuelsonite -names-golem-dataset-1016 = Sanbornite -names-golem-dataset-1017 = Saneroite -names-golem-dataset-1018 = Sanidine -names-golem-dataset-1019 = Santabarbaraite -names-golem-dataset-1020 = Santite -names-golem-dataset-1021 = Saponite -names-golem-dataset-1022 = Sapphirine -names-golem-dataset-1023 = Sarabauite -names-golem-dataset-1024 = Sarkinite -names-golem-dataset-1025 = Sassolite -names-golem-dataset-1026 = Satterlyite -names-golem-dataset-1027 = Sauconite -names-golem-dataset-1028 = Sborgite -names-golem-dataset-1029 = Scapolite -names-golem-dataset-1030 = Schaferite -names-golem-dataset-1031 = Scheelite -names-golem-dataset-1032 = Schmiederite -names-golem-dataset-1033 = Schoepite -names-golem-dataset-1034 = Schorl -names-golem-dataset-1035 = Schreibersite -names-golem-dataset-1036 = Schreyerite -names-golem-dataset-1037 = Schrockingerite -names-golem-dataset-1038 = Schwertmannite -names-golem-dataset-1039 = Scolecite -names-golem-dataset-1040 = Scorodite -names-golem-dataset-1041 = Scorzalite -names-golem-dataset-1042 = Scrutinyite -names-golem-dataset-1043 = Seamanite -names-golem-dataset-1044 = Searlesite -names-golem-dataset-1045 = Seeligerite -names-golem-dataset-1046 = Segelerite -names-golem-dataset-1047 = Seifertite -names-golem-dataset-1048 = Sekaninaite -names-golem-dataset-1049 = Selenium -names-golem-dataset-1050 = Seligmannite -names-golem-dataset-1051 = Sellaite -names-golem-dataset-1052 = Semseyite -names-golem-dataset-1053 = Senarmontite -names-golem-dataset-1054 = Sepiolite -names-golem-dataset-1055 = Serandite -names-golem-dataset-1056 = Serendibite -names-golem-dataset-1057 = Serpentine -names-golem-dataset-1058 = Serpierite -names-golem-dataset-1059 = Sewardite -names-golem-dataset-1060 = Shandite -names-golem-dataset-1061 = Shattuckite -names-golem-dataset-1062 = Shigaite -names-golem-dataset-1063 = Shortite -names-golem-dataset-1064 = Siderite -names-golem-dataset-1065 = Siderophyllite -names-golem-dataset-1066 = Siderotil -names-golem-dataset-1067 = Siegenite -names-golem-dataset-1068 = Silicon -names-golem-dataset-1069 = Sillimanite -names-golem-dataset-1070 = Silver -names-golem-dataset-1071 = Simonellite -names-golem-dataset-1072 = Simpsonite -names-golem-dataset-1073 = Sincosite -names-golem-dataset-1074 = Sinkankasite -names-golem-dataset-1075 = Sinoite -names-golem-dataset-1076 = Skaergaardite -names-golem-dataset-1077 = Sklodowskite -names-golem-dataset-1078 = Skutterudite -names-golem-dataset-1079 = Smaltite -names-golem-dataset-1080 = Smectite -names-golem-dataset-1081 = Smithsonite -names-golem-dataset-1082 = Sodalite -names-golem-dataset-1083 = Soddyite -names-golem-dataset-1084 = Sonolite -names-golem-dataset-1085 = Sperrylite -names-golem-dataset-1086 = Spertiniite -names-golem-dataset-1087 = Spessartine -names-golem-dataset-1088 = Sphalerite -names-golem-dataset-1089 = Spherocobaltite -names-golem-dataset-1090 = Spinel -names-golem-dataset-1091 = Spodumene -names-golem-dataset-1092 = Spurrite -names-golem-dataset-1093 = Stannite -names-golem-dataset-1094 = Stannoidite -names-golem-dataset-1095 = Staurolite -names-golem-dataset-1096 = Steacyite -names-golem-dataset-1097 = Stellerite -names-golem-dataset-1098 = Stephanite -names-golem-dataset-1099 = Stercorite -names-golem-dataset-1100 = Stibarsen -names-golem-dataset-1101 = Stibiconite -names-golem-dataset-1102 = Stibiopalladinite -names-golem-dataset-1103 = Stibnite -names-golem-dataset-1104 = Stichtite -names-golem-dataset-1105 = Stilbite -names-golem-dataset-1106 = Stilleite -names-golem-dataset-1107 = Stillwaterite -names-golem-dataset-1108 = Stillwellite -names-golem-dataset-1109 = Stilpnomelane -names-golem-dataset-1110 = Stishovite -names-golem-dataset-1111 = Stolzite -names-golem-dataset-1112 = Strashimirite -names-golem-dataset-1113 = Strengite -names-golem-dataset-1114 = Stromeyerite -names-golem-dataset-1115 = Strontianite -names-golem-dataset-1116 = Struvite -names-golem-dataset-1117 = Studenitsite -names-golem-dataset-1118 = Studtite -names-golem-dataset-1119 = Stutzite -names-golem-dataset-1120 = Suanite -names-golem-dataset-1121 = Suessite -names-golem-dataset-1122 = Sugilite -names-golem-dataset-1123 = Sulfur -names-golem-dataset-1124 = Sursassite -names-golem-dataset-1125 = Susannite -names-golem-dataset-1126 = Sussexite -names-golem-dataset-1127 = Svanbergite -names-golem-dataset-1128 = Sweetite -names-golem-dataset-1129 = Switzerite -names-golem-dataset-1130 = Sylvanite -names-golem-dataset-1131 = Sylvite -names-golem-dataset-1132 = Synchysite -names-golem-dataset-1133 = Syngenite -names-golem-dataset-1134 = Taaffeite -names-golem-dataset-1135 = Tachyhydrite -names-golem-dataset-1136 = Taenite -names-golem-dataset-1137 = Talc -names-golem-dataset-1138 = Talmessite -names-golem-dataset-1139 = Talnakhite -names-golem-dataset-1140 = Tamarugite -names-golem-dataset-1141 = Tangeite -names-golem-dataset-1142 = Tantalite -names-golem-dataset-1143 = Tantite -names-golem-dataset-1144 = Tapiolite -names-golem-dataset-1145 = Taranakite -names-golem-dataset-1146 = Tarapacaite -names-golem-dataset-1147 = Tarbuttite -names-golem-dataset-1148 = Tausonite -names-golem-dataset-1149 = Teallite -names-golem-dataset-1150 = Tellurite -names-golem-dataset-1151 = Tellurium -names-golem-dataset-1152 = Tellurobismuthite -names-golem-dataset-1153 = Temagamite -names-golem-dataset-1154 = Tennantite -names-golem-dataset-1155 = Tenorite -names-golem-dataset-1156 = Tephroite -names-golem-dataset-1157 = Terlinguaite -names-golem-dataset-1158 = Teruggite -names-golem-dataset-1159 = Tetradymite -names-golem-dataset-1160 = Tetrahedrite -names-golem-dataset-1161 = Tetrataenite -names-golem-dataset-1162 = Thaumasite -names-golem-dataset-1163 = Thenardite -names-golem-dataset-1164 = Thermonatrite -names-golem-dataset-1165 = Thiospinel -names-golem-dataset-1166 = Thomasclarkite -names-golem-dataset-1167 = Thomsenolite -names-golem-dataset-1168 = Thomsonite -names-golem-dataset-1169 = Thorianite -names-golem-dataset-1170 = Thorite -names-golem-dataset-1171 = Thortveitite -names-golem-dataset-1172 = Tiemannite -names-golem-dataset-1173 = Tienshanite -names-golem-dataset-1174 = Tin -names-golem-dataset-1175 = Tinaksite -names-golem-dataset-1176 = Tincalconite -names-golem-dataset-1177 = Titanite -names-golem-dataset-1178 = Titanium -names-golem-dataset-1179 = Titanowodginite -names-golem-dataset-1180 = Tobermorite -names-golem-dataset-1181 = Todorokite -names-golem-dataset-1182 = Tokyoite -names-golem-dataset-1183 = Tongbaite -names-golem-dataset-1184 = Topaz -names-golem-dataset-1185 = Torbernite -names-golem-dataset-1186 = Tourmaline -names-golem-dataset-1187 = Tranquillityite -names-golem-dataset-1188 = Tremolite -names-golem-dataset-1189 = Trevorite -names-golem-dataset-1190 = Tridymite -names-golem-dataset-1191 = Triphylite -names-golem-dataset-1192 = Triplite -names-golem-dataset-1193 = Triploidite -names-golem-dataset-1194 = Tripuhyite -names-golem-dataset-1195 = Troilite -names-golem-dataset-1196 = Trona -names-golem-dataset-1197 = Tschermakite -names-golem-dataset-1198 = Tschermigite -names-golem-dataset-1199 = Tsumcorite -names-golem-dataset-1200 = Tsumebite -names-golem-dataset-1201 = Tugtupite -names-golem-dataset-1202 = Tungsten -names-golem-dataset-1203 = Tungstite -names-golem-dataset-1204 = Tuperssuatsiaite -names-golem-dataset-1205 = Turquoise -names-golem-dataset-1206 = Tusionite -names-golem-dataset-1207 = Tyrolite -names-golem-dataset-1208 = Tyrrellite -names-golem-dataset-1209 = Tyuyamunite -names-golem-dataset-1210 = Uchucchacuaite -names-golem-dataset-1211 = Uklonskovite -names-golem-dataset-1212 = Ulexite -names-golem-dataset-1213 = Ullmannite -names-golem-dataset-1214 = Ulrichite -names-golem-dataset-1215 = Ulvospinel -names-golem-dataset-1216 = Umangite -names-golem-dataset-1217 = Umbite -names-golem-dataset-1218 = Upalite -names-golem-dataset-1219 = Uraninite -names-golem-dataset-1220 = Uranocircite -names-golem-dataset-1221 = Uranophane -names-golem-dataset-1222 = Uranopilite -names-golem-dataset-1223 = Urea -names-golem-dataset-1224 = Uricite -names-golem-dataset-1225 = Urusovite -names-golem-dataset-1226 = Ussingite -names-golem-dataset-1227 = Utahite -names-golem-dataset-1228 = Uvarovite -names-golem-dataset-1229 = Uytenbogaardtite -names-golem-dataset-1230 = Vaesite -names-golem-dataset-1231 = Valentinite -names-golem-dataset-1232 = Valleriite -names-golem-dataset-1233 = Vanadinite -names-golem-dataset-1234 = Vanadiocarpholite -names-golem-dataset-1235 = Vanadium -names-golem-dataset-1236 = Vantasselite -names-golem-dataset-1237 = Vanuralite -names-golem-dataset-1238 = Variscite -names-golem-dataset-1239 = Vaterite -names-golem-dataset-1240 = Vauquelinite -names-golem-dataset-1241 = Vauxite -names-golem-dataset-1242 = Veatchite -names-golem-dataset-1243 = Vermiculite -names-golem-dataset-1244 = Vesuvianite -names-golem-dataset-1245 = Villiaumite -names-golem-dataset-1246 = Violarite -names-golem-dataset-1247 = Vishnevite -names-golem-dataset-1248 = Vivianite -names-golem-dataset-1249 = Vladimirite -names-golem-dataset-1250 = Vlasovite -names-golem-dataset-1251 = Volborthite -names-golem-dataset-1252 = Vulcanite -names-golem-dataset-1253 = Wadsleyite -names-golem-dataset-1254 = Wagnerite -names-golem-dataset-1255 = Wairakite -names-golem-dataset-1256 = Wakabayashilite -names-golem-dataset-1257 = Wakefieldite -names-golem-dataset-1258 = Walfordite -names-golem-dataset-1259 = Wardite -names-golem-dataset-1260 = Warikahnite -names-golem-dataset-1261 = Warwickite -names-golem-dataset-1262 = Wassonite -names-golem-dataset-1263 = Wavellite -names-golem-dataset-1264 = Weddellite -names-golem-dataset-1265 = Weeksite -names-golem-dataset-1266 = Weilite -names-golem-dataset-1267 = Weissite -names-golem-dataset-1268 = Weloganite -names-golem-dataset-1269 = Whewellite -names-golem-dataset-1270 = Whiteite -names-golem-dataset-1271 = Whitlockite -names-golem-dataset-1272 = Willemite -names-golem-dataset-1273 = Wiluite -names-golem-dataset-1274 = Witherite -names-golem-dataset-1275 = Wodginite -names-golem-dataset-1276 = Wolframite -names-golem-dataset-1277 = Wollastonite -names-golem-dataset-1278 = Woodhouseite -names-golem-dataset-1279 = Wulfenite -names-golem-dataset-1280 = Wurtzite -names-golem-dataset-1281 = Wustite -names-golem-dataset-1282 = Wyartite -names-golem-dataset-1283 = Xanthiosite -names-golem-dataset-1284 = Xanthoconite -names-golem-dataset-1285 = Xanthoxenite -names-golem-dataset-1286 = Xenophyllite -names-golem-dataset-1287 = Xenotime -names-golem-dataset-1288 = Xiangjiangite -names-golem-dataset-1289 = Xieite -names-golem-dataset-1290 = Xifengite -names-golem-dataset-1291 = Xilingolite -names-golem-dataset-1292 = Ximengite -names-golem-dataset-1293 = Xingzhongite -names-golem-dataset-1294 = Xitieshanite -names-golem-dataset-1295 = Xocolatlite -names-golem-dataset-1296 = Xocomecatlite -names-golem-dataset-1297 = Xonotlite -names-golem-dataset-1298 = Ye'elimite -names-golem-dataset-1299 = Yttrialite -names-golem-dataset-1300 = Yttropyrochlore -names-golem-dataset-1301 = Yuksporite -names-golem-dataset-1302 = Zabuyelite -names-golem-dataset-1303 = Zaccagnaite -names-golem-dataset-1304 = Zaherite -names-golem-dataset-1305 = Zairite -names-golem-dataset-1306 = Zakharovite -names-golem-dataset-1307 = Zanazziite -names-golem-dataset-1308 = Zaratite -names-golem-dataset-1309 = Zektzerite -names-golem-dataset-1310 = Zemannite -names-golem-dataset-1311 = Zeolite -names-golem-dataset-1312 = Zeunerite -names-golem-dataset-1313 = Zhanghengite -names-golem-dataset-1314 = Zharchikhite -names-golem-dataset-1315 = Zhemchuzhnikovite -names-golem-dataset-1316 = Ziesite -names-golem-dataset-1317 = Zimbabweite -names-golem-dataset-1318 = Zincite -names-golem-dataset-1319 = Zinclipscombite -names-golem-dataset-1320 = Zincmelanterite -names-golem-dataset-1321 = Zincobotryogen -names-golem-dataset-1322 = Zincochromite -names-golem-dataset-1323 = Zincolivenite -names-golem-dataset-1324 = Zinkenite -names-golem-dataset-1325 = Zinnwaldite -names-golem-dataset-1326 = Zippeite -names-golem-dataset-1327 = Zircon -names-golem-dataset-1328 = Zirconolite -names-golem-dataset-1329 = Zircophyllite -names-golem-dataset-1330 = Zirkelite -names-golem-dataset-1331 = Znucalite -names-golem-dataset-1332 = Zoisite -names-golem-dataset-1333 = Zorite -names-golem-dataset-1334 = Zunyite -names-golem-dataset-1335 = Zussmanite -names-golem-dataset-1336 = Zykaite diff --git a/Resources/Prototypes/Datasets/Names/golem.yml b/Resources/Prototypes/Datasets/Names/golem.yml deleted file mode 100644 index 52ecc30c9b..0000000000 --- a/Resources/Prototypes/Datasets/Names/golem.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: localizedDataset - id: NamesGolem - values: - prefix: names-golem-dataset- - count: 1336 From 2b8145ce8772e57478151a40f1838f52ff228ce6 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Fri, 8 Aug 2025 12:42:11 -0700 Subject: [PATCH 33/33] Cleanup Base food and drink a little (#39485) Edible base prototype convention compliance Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Entities/Objects/Consumable/Drinks/drinks.yml | 2 +- .../Entities/Objects/Consumable/Food/food_base.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index 4df720d541..ca633cdb39 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -2,9 +2,9 @@ # TODO: Find empty containers (e.g. mug, pitcher) and move to their own yml # When adding new drinks also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\drinks_glass.yml - type: entity + abstract: true parent: BaseItem id: DrinkBase - abstract: true components: - type: SolutionContainerManager solutions: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml index fedce70e79..6ba1895548 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/food_base.yml @@ -2,9 +2,9 @@ # Base component for edible food-like items # - type: entity + abstract: true parent: BaseItem id: EdibleBase - abstract: true components: - type: FlavorProfile flavors: @@ -19,9 +19,9 @@ # that should be cleaned up in space # - type: entity + abstract: true parent: EdibleBase id: FoodBase - abstract: true components: - type: SpaceGarbage @@ -30,9 +30,9 @@ # But it might in future also mean drawing with a syringe, so this is a base prototype just in case. - type: entity + abstract: true parent: FoodBase id: FoodInjectableBase - abstract: true components: - type: InjectableSolution solution: food @@ -42,8 +42,8 @@ # usable by any food that can be opened # handles appearance with states "icon" and "icon-open" - type: entity - id: FoodOpenableBase abstract: true + id: FoodOpenableBase components: - type: Appearance - type: Sprite