diff --git a/Content.Client/Botany/PlantAnalyzer/PlantAnalyzerWindow.xaml.cs b/Content.Client/Botany/PlantAnalyzer/PlantAnalyzerWindow.xaml.cs index 14ce042431..8ea8b4f26b 100644 --- a/Content.Client/Botany/PlantAnalyzer/PlantAnalyzerWindow.xaml.cs +++ b/Content.Client/Botany/PlantAnalyzer/PlantAnalyzerWindow.xaml.cs @@ -190,7 +190,7 @@ public sealed partial class PlantAnalyzerWindow : FancyWindow ("gases", gases), ("potency", Loc.GetString(msg.ProduceData.Potency)), ("seedless", msg.ProduceData.Seedless), - ("firstProduce", msg.ProduceData.Produce.FirstOrDefault() ?? ""), + ("firstProduce", msg.ProduceData.Produce.FirstOrDefault().Id ?? ""), ("produce", produce), ("producePlural", producePlural), ("chemCount", msg.ProduceData.Chemicals.Count), diff --git a/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs b/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs index 97ec1fb3c4..9346694f32 100644 --- a/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/SingleMarkingPicker.xaml.cs @@ -257,7 +257,7 @@ public sealed partial class SingleMarkingPicker : BoxContainer { HorizontalExpand = true }; - selector.Color = marking.MarkingColors[i]; + //selector.Color = marking.MarkingColors[i]; selector.CurrentType = selectorType; var colorIndex = i; diff --git a/Content.Client/Lobby/UI/LobbyGui.xaml b/Content.Client/Lobby/UI/LobbyGui.xaml index 00606e2c17..2d2c6a91fd 100644 --- a/Content.Client/Lobby/UI/LobbyGui.xaml +++ b/Content.Client/Lobby/UI/LobbyGui.xaml @@ -61,6 +61,7 @@ MinWidth="200" /> + - { - _uri.OpenUri(_cfg.GetCVar(CCVars.InfoLinksForum)); - }; // Sunrise-end _escapeWindow.WikiButton.OnPressed += _ => diff --git a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml index 79f0ce75c0..dc8972970a 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml +++ b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml @@ -43,7 +43,6 @@ HorizontalExpand="True" AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}" /> - _hearts = []; private struct HeartData diff --git a/Content.Client/_Sunrise/Paint/PaintVisualizerSystem.cs b/Content.Client/_Sunrise/Paint/PaintVisualizerSystem.cs index 34a1364f14..20914e46bc 100644 --- a/Content.Client/_Sunrise/Paint/PaintVisualizerSystem.cs +++ b/Content.Client/_Sunrise/Paint/PaintVisualizerSystem.cs @@ -5,11 +5,10 @@ using Robust.Client.GameObjects; using Robust.Client.Graphics; using Robust.Shared.Prototypes; using static Robust.Client.GameObjects.SpriteComponent; -using PaintedComponent = Content.Shared._Sunrise.Paint.PaintedComponent; namespace Content.Client._Sunrise.Paint { - public sealed class PaintedVisualizerSystem : VisualizerSystem + public sealed class PaintedVisualizerSystem : VisualizerSystem { /// /// Visualizer for Paint which applies a shader and colors the entity. @@ -24,12 +23,12 @@ namespace Content.Client._Sunrise.Paint { base.Initialize(); - SubscribeLocalEvent(OnHeldVisualsUpdated); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnEquipmentVisualsUpdated); + SubscribeLocalEvent(OnHeldVisualsUpdated); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnEquipmentVisualsUpdated); } - protected override void OnAppearanceChange(EntityUid uid, PaintedComponent component, ref AppearanceChangeEvent args) + protected override void OnAppearanceChange(EntityUid uid, SprayPaintedComponent component, ref AppearanceChangeEvent args) { // ShaderPrototype sadly in Robust.Client, cannot move to shared component. Shader = _protoMan.Index(component.ShaderName).Instance(); @@ -56,7 +55,7 @@ namespace Content.Client._Sunrise.Paint } } - private void OnHeldVisualsUpdated(EntityUid uid, PaintedComponent component, HeldVisualsUpdatedEvent args) + private void OnHeldVisualsUpdated(EntityUid uid, SprayPaintedComponent component, HeldVisualsUpdatedEvent args) { if (args.RevealedLayers.Count == 0) return; @@ -74,7 +73,7 @@ namespace Content.Client._Sunrise.Paint } } - private void OnEquipmentVisualsUpdated(EntityUid uid, PaintedComponent component, EquipmentVisualsUpdatedEvent args) + private void OnEquipmentVisualsUpdated(EntityUid uid, SprayPaintedComponent component, EquipmentVisualsUpdatedEvent args) { if (args.RevealedLayers.Count == 0) return; @@ -92,7 +91,7 @@ namespace Content.Client._Sunrise.Paint } } - private void OnShutdown(EntityUid uid, PaintedComponent component, ref ComponentShutdown args) + private void OnShutdown(EntityUid uid, SprayPaintedComponent component, ref ComponentShutdown args) { if (!TryComp(uid, out SpriteComponent? sprite)) return; diff --git a/Content.Client/_Sunrise/SponsorTiers/SponsorTierEntry.xaml.cs b/Content.Client/_Sunrise/SponsorTiers/SponsorTierEntry.xaml.cs index a5309a5f75..5ca1810307 100644 --- a/Content.Client/_Sunrise/SponsorTiers/SponsorTierEntry.xaml.cs +++ b/Content.Client/_Sunrise/SponsorTiers/SponsorTierEntry.xaml.cs @@ -321,7 +321,7 @@ public sealed partial class SponsorTierEntry : Control var species = markingProto.SpeciesRestrictions is { Count: > 0 } ? markingProto.SpeciesRestrictions[0] - : SharedHumanoidAppearanceSystem.DefaultSpecies; + : (string)SharedHumanoidAppearanceSystem.DefaultSpecies; if (!_prototypeManager.TryIndex(species, out SpeciesPrototype? speciesProto)) continue; diff --git a/Content.Client/_Sunrise/UserInterface/Controls/CustomColorSelectorSliders.cs b/Content.Client/_Sunrise/UserInterface/Controls/CustomColorSelectorSliders.cs index a7951d9b57..2b93887d3a 100644 --- a/Content.Client/_Sunrise/UserInterface/Controls/CustomColorSelectorSliders.cs +++ b/Content.Client/_Sunrise/UserInterface/Controls/CustomColorSelectorSliders.cs @@ -1,4 +1,5 @@ -using Robust.Client.UserInterface; +using System.Numerics; +using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; namespace Content.Client._Sunrise.UserInterface.Controls; diff --git a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs index 0d98c6b5cf..028554908b 100644 --- a/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs +++ b/Content.Server/Arcade/SpaceVillainGame/SpaceVillainArcadeSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Advertise.EntitySystems; using Content.Shared.Advertise.Components; using Content.Shared.Arcade; using Content.Server.Advertise; -using Content.Server.Advertise.Components; using Content.Shared._Sunrise.Mood; using Content.Shared.Power; using Robust.Server.GameObjects; diff --git a/Content.Server/Bible/BibleSystem.cs b/Content.Server/Bible/BibleSystem.cs index 36c3cfd369..47ede6153c 100644 --- a/Content.Server/Bible/BibleSystem.cs +++ b/Content.Server/Bible/BibleSystem.cs @@ -68,7 +68,7 @@ namespace Content.Server.Bible { Timer.Spawn(500, () => { - _stun.TryParalyze(args.Container.Owner, TimeSpan.FromSeconds(10), true); + _stun.TryAddParalyzeDuration(args.Container.Owner, TimeSpan.FromSeconds(10)); _damageableSystem.TryChangeDamage(args.Container.Owner, component.DamageOnUnholyUse); _audio.PlayPvs(component.SizzleSoundPath, args.Container.Owner); }); diff --git a/Content.Server/Changeling/ChangelingSystem.Abilities.cs b/Content.Server/Changeling/ChangelingSystem.Abilities.cs index a1fa1a904e..df996d1ee7 100644 --- a/Content.Server/Changeling/ChangelingSystem.Abilities.cs +++ b/Content.Server/Changeling/ChangelingSystem.Abilities.cs @@ -14,7 +14,6 @@ using Content.Server.Objectives.Components; using Content.Server.Light.Components; using Content.Shared.Eye.Blinding.Systems; using Content.Shared.Eye.Blinding.Components; -using Content.Server.Flash.Components; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Stealth.Components; using Content.Shared.Damage.Components; @@ -22,6 +21,7 @@ using Content.Server.Radio.Components; using Content.Shared._Sunrise.CollectiveMind; using Content.Shared._RMC14.Xenonids.Screech; using Content.Shared.Coordinates; +using Content.Shared.Flash.Components; namespace Content.Server.Changeling; @@ -342,7 +342,7 @@ public sealed partial class ChangelingSystem : EntitySystem DoScreech(uid, comp); var power = comp.ShriekPower; - _flash.FlashArea(uid, uid, power, power * 2f * 1000f); + _flash.FlashArea(uid, uid, power, TimeSpan.FromSeconds(5)); var lookup = _lookup.GetEntitiesInRange(uid, power); var lights = GetEntityQuery(); diff --git a/Content.Server/Changeling/ChangelingSystem.cs b/Content.Server/Changeling/ChangelingSystem.cs index 546e55a97b..bf0daf9402 100644 --- a/Content.Server/Changeling/ChangelingSystem.cs +++ b/Content.Server/Changeling/ChangelingSystem.cs @@ -194,8 +194,7 @@ public sealed partial class ChangelingSystem : EntitySystem // vomit blood if (random == 1) { - if (TryComp(uid, out var status)) - _stun.TrySlowdown(uid, TimeSpan.FromSeconds(1.5f), true, 0.5f, 0.5f, status); + _stun.TryAddKnockdownDuration(uid, TimeSpan.FromSeconds(1.5f)); var solution = new Solution(); diff --git a/Content.Server/Chat/Systems/ChatSystem.Emote.cs b/Content.Server/Chat/Systems/ChatSystem.Emote.cs index 0ec0ee62d5..66f8566e5a 100644 --- a/Content.Server/Chat/Systems/ChatSystem.Emote.cs +++ b/Content.Server/Chat/Systems/ChatSystem.Emote.cs @@ -1,5 +1,6 @@ using System.Collections.Frozen; using Content.Server.Popups; +using Content.Shared._Sunrise.Animations; using Content.Shared.Chat; using Content.Shared.Chat.Prototypes; using Content.Shared.Emoting; @@ -13,8 +14,6 @@ namespace Content.Server.Chat.Systems; // emotes using emote prototype public partial class ChatSystem { - [Dependency] private readonly PopupSystem _popupSystem = default!; - private FrozenDictionary _wordEmoteDict = FrozenDictionary.Empty; protected override void OnPrototypeReload(PrototypesReloadedEventArgs obj) @@ -104,7 +103,7 @@ public partial class ChatSystem var ev = new AnimationEmoteAttemptEvent(source, emote); RaiseLocalEvent(source, ev, true); if (ev.Cancelled) - return; + return false; } // Sunrise-End diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index 499a9ec440..f2f84a73b0 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -975,7 +975,7 @@ public sealed partial class ChatSystem : SharedChatSystem return message; } - public static readonly ProtoId ChatSanitize_Accent = "chatsanitize_sunrise"; // Sunrise-Edit + public static readonly ProtoId ChatSanitizeAccent = "chatsanitize_sunrise"; // Sunrise-Edit public string SanitizeMessageReplaceWords(string message) { diff --git a/Content.Server/Clothing/Systems/OutfitSystem.cs b/Content.Server/Clothing/Systems/OutfitSystem.cs index c3fea28bcf..4214640496 100644 --- a/Content.Server/Clothing/Systems/OutfitSystem.cs +++ b/Content.Server/Clothing/Systems/OutfitSystem.cs @@ -10,6 +10,7 @@ using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; using Content.Shared.Station; +using Content.Sunrise.Interfaces.Shared; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -22,6 +23,13 @@ public sealed class OutfitSystem : EntitySystem [Dependency] private readonly HandsSystem _handSystem = default!; [Dependency] private readonly InventorySystem _invSystem = default!; [Dependency] private readonly SharedStationSpawningSystem _spawningSystem = default!; + private ISharedSponsorsManager? _sponsorsManager; // Sunrise-Sponsors + + public override void Initialize() + { + base.Initialize(); + IoCManager.Instance!.TryResolveType(out _sponsorsManager); // Sunrise-Sponsors + } public bool SetOutfit(EntityUid target, string gear, Action? onEquipped = null) { @@ -97,7 +105,17 @@ public sealed class OutfitSystem : EntitySystem { // If they don't have a loadout for the role, make a default one roleLoadout = new RoleLoadout(jobProtoId); - roleLoadout.SetDefault(profile, session, _prototypeManager); + // Sunrise-Start + string [] sponsorsPrototypes = []; + if (_sponsorsManager != null && session != null) + { + if (_sponsorsManager.TryGetPrototypes(session.UserId, out var prototypes)) + { + sponsorsPrototypes = prototypes.ToArray(); + } + } + // Sunrise-End + roleLoadout.SetDefault(profile, session, _prototypeManager, sponsorsPrototypes); } // Equip the target with the job loadout diff --git a/Content.Server/Maps/GameMapManager.cs b/Content.Server/Maps/GameMapManager.cs index 38fda51e2a..98d6443a85 100644 --- a/Content.Server/Maps/GameMapManager.cs +++ b/Content.Server/Maps/GameMapManager.cs @@ -21,7 +21,6 @@ public sealed class GameMapManager : IGameMapManager [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IResourceManager _resMan = default!; [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; [ViewVariables(VVAccess.ReadOnly)] private readonly Queue _previousMaps = new(); @@ -111,7 +110,7 @@ public sealed class GameMapManager : IGameMapManager public void AddExcludedMap(string mapId) { - if (!_cfg.GetCVar(SunriseCCVars.ExcludeMaps)) + if (!_configurationManager.GetCVar(SunriseCCVars.ExcludeMaps)) return; _excludedMaps.Add(mapId); diff --git a/Content.Server/Materials/ProduceMaterialExtractorSystem.cs b/Content.Server/Materials/ProduceMaterialExtractorSystem.cs index 25d08c7a50..1a7d2b231e 100644 --- a/Content.Server/Materials/ProduceMaterialExtractorSystem.cs +++ b/Content.Server/Materials/ProduceMaterialExtractorSystem.cs @@ -69,8 +69,8 @@ public sealed class ProduceMaterialExtractorSystem : EntitySystem if (changed == 0) { - _popup.PopupEntity(Loc.GetString("material-extractor-comp-wrongreagent", ("used", args.Used)), args.User, args.User); - return; + _popup.PopupEntity(Loc.GetString("material-extractor-comp-wrongreagent", ("used", used)), ent); + return false; } _materialStorage.TryChangeMaterialAmount(ent, ent.Comp.ExtractedMaterial, changed); diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 126a31ccbc..24143c34fb 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -273,9 +273,10 @@ public sealed partial class MechSystem : SharedMechSystem return; } - if (TryComp(args.Args.User, out var handsComponent)) - foreach (var hand in _hands.EnumerateHands(args.Args.User, handsComponent)) - _hands.DoDrop(args.Args.User, hand, true, handsComponent); + foreach (var hand in _hands.EnumerateHands(args.Args.User)) + { + _hands.DoDrop(args.Args.User, hand); + } _factionSystem.Up(args.Args.User, uid); TryInsert(uid, args.Args.User, component); diff --git a/Content.Server/Vampire/VampireSystem.Abilities.cs b/Content.Server/Vampire/VampireSystem.Abilities.cs index 3ad627747d..9a3c1674d1 100644 --- a/Content.Server/Vampire/VampireSystem.Abilities.cs +++ b/Content.Server/Vampire/VampireSystem.Abilities.cs @@ -1,7 +1,6 @@ using Content.Server.Bible.Components; using Content.Server.Body.Components; using Content.Server.Flash; -using Content.Server.Flash.Components; using Content.Server.Speech.Components; using Content.Server.Storage.Components; using Content.Server.Objectives.Components; @@ -32,6 +31,8 @@ using Robust.Shared.Containers; using Robust.Shared.Utility; using System.Collections.Frozen; using System.Diagnostics.CodeAnalysis; +using Content.Shared.Flash; +using Content.Shared.Flash.Components; namespace Content.Server.Vampire; @@ -393,7 +394,7 @@ public sealed partial class VampireSystem if (HasComp(entity)) { - _stun.TryParalyze(entity, duration ?? TimeSpan.FromSeconds(3), false); + _stun.TryAddParalyzeDuration(entity, duration ?? TimeSpan.FromSeconds(3)); _chat.TryEmoteWithoutChat(entity, _prototypeManager.Index(VampireComponent.ScreamEmoteProto), true); } @@ -414,14 +415,14 @@ public sealed partial class VampireSystem if (HasComp(target)) { - _stun.TryParalyze(vampire, duration ?? TimeSpan.FromSeconds(3), true); + _stun.TryAddParalyzeDuration(vampire, duration ?? TimeSpan.FromSeconds(3)); _chat.TryEmoteWithoutChat(vampire.Owner, _prototypeManager.Index(VampireComponent.ScreamEmoteProto), true); if (damage != null) _damageableSystem.TryChangeDamage(vampire.Owner, damage); return; } - _stun.TryParalyze(target.Value, duration ?? TimeSpan.FromSeconds(3), true); + _stun.TryAddParalyzeDuration(target.Value, duration ?? TimeSpan.FromSeconds(3)); } private void PolymorphSelf(Entity vampire, string? polymorphTarget) { @@ -532,7 +533,7 @@ public sealed partial class VampireSystem return false; var attempt = new FlashAttemptEvent(target.Value, vampire.Owner, vampire.Owner); - RaiseLocalEvent(target.Value, attempt, true); + RaiseLocalEvent(target.Value, ref attempt, true); if (attempt.Cancelled) return false; diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index 1dcfff80d7..8f2d4add27 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -43,13 +43,11 @@ namespace Content.Server.Zombies [Dependency] private readonly BloodstreamSystem _bloodstream = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly ChatSystem _chat = default!; - [Dependency] private readonly ActionsSystem _actions = default!; [Dependency] private readonly AutoEmoteSystem _autoEmote = default!; [Dependency] private readonly EmoteOnDamageSystem _emoteOnDamage = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedRoleSystem _role = default!; - [Dependency] private readonly ChatSystem _chatSystem = default!; [Dependency] private readonly ThrowingSystem _throwing = default!; [Dependency] private readonly ActionsSystem _action = default!; [Dependency] private readonly SharedStunSystem _stun = default!; @@ -109,7 +107,7 @@ namespace Content.Server.Zombies if (!_mobState.IsAlive(args.Target)) return; - _stun.TryParalyze(args.Target, TimeSpan.FromSeconds(component.ParalyzeTime), false); + _stun.TryAddParalyzeDuration(args.Target, TimeSpan.FromSeconds(component.ParalyzeTime)); _damageable.TryChangeDamage(args.Target, component.Damage, origin: args.Thrown); } @@ -197,13 +195,13 @@ namespace Content.Server.Zombies } _throwing.TryThrow(uid, direction, 7F, uid, 10F); - _chatSystem.TryEmoteWithChat(uid, "ZombieGroan"); + _chat.TryEmoteWithChat(uid, "ZombieGroan"); } // Sunnrise-End private void OnPendingMapInit(EntityUid uid, IncurableZombieComponent component, MapInitEvent args) { - _actions.AddAction(uid, ref component.Action, component.ZombifySelfActionPrototype); + _action.AddAction(uid, ref component.Action, component.ZombifySelfActionPrototype); _faction.AddFaction(uid, Faction); if (HasComp(uid) || HasComp(uid)) @@ -293,10 +291,6 @@ namespace Content.Server.Zombies private void OnStartup(EntityUid uid, ZombieComponent component, ComponentStartup args) { - if (component.EmoteSoundsId == null) - return; - _protoManager.TryIndex(component.EmoteSoundsId, out component.EmoteSounds); - // Sunnrise-Start _action.AddAction(uid, component.ActionJumpId); _action.AddAction(uid, component.ActionFlairId); diff --git a/Content.Server/_Starlight/Actions/Stasis/StasisSystem.cs b/Content.Server/_Starlight/Actions/Stasis/StasisSystem.cs index fd5312b701..694e937e48 100644 --- a/Content.Server/_Starlight/Actions/Stasis/StasisSystem.cs +++ b/Content.Server/_Starlight/Actions/Stasis/StasisSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Content.Shared._Starlight.Actions.Stasis; +using Content.Shared.Body.Components; using Robust.Shared.Player; namespace Content.Server._Starlight.Actions.Stasis; diff --git a/Content.Server/_Starlight/Medical/Limbs/LimbSystem.cs b/Content.Server/_Starlight/Medical/Limbs/LimbSystem.cs index 8b26aa867c..a37be6f1f5 100644 --- a/Content.Server/_Starlight/Medical/Limbs/LimbSystem.cs +++ b/Content.Server/_Starlight/Medical/Limbs/LimbSystem.cs @@ -21,7 +21,6 @@ public sealed partial class LimbSystem : SharedLimbSystem [Dependency] private readonly ContainerSystem _containers = default!; [Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly HandsSystem _hands = default!; - [Dependency] private readonly IPrototypeManager _prototypes = default!; [Dependency] private readonly HumanoidAppearanceSystem _humanoidAppearanceSystem = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; diff --git a/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.cs b/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.cs index bebbe308af..f909f0b343 100644 --- a/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.cs +++ b/Content.Server/_Starlight/Medical/Surgery/SurgerySystem.cs @@ -27,7 +27,6 @@ public sealed partial class SurgerySystem : SharedSurgerySystem [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; [Dependency] private readonly ContainerSystem _containers = default!; - [Dependency] private readonly StarlightEntitySystem _entitySystem = default!; private readonly List _surgeries = []; public override void Initialize() @@ -72,7 +71,7 @@ public sealed partial class SurgerySystem : SharedSurgerySystem foreach (var surgery in _surgeries) { - if (!_entitySystem.TryGetSingleton(surgery, out var surgeryEnt) + if (!_entity.TryGetSingleton(surgery, out var surgeryEnt) || !TryComp(surgeryEnt, out SurgeryComponent? surgeryComp) || (surgeryComp.Requirement.Count() > 0 && !progress.CompletedSurgeries.Any(x => surgeryComp.Requirement.Contains(x)))) continue; @@ -80,7 +79,7 @@ public sealed partial class SurgerySystem : SharedSurgerySystem var ev = new SurgeryValidEvent(body, part); var isCompleted = progress.CompletedSurgeries.Contains(surgery); - if (!progress.StartedSurgeries.Contains(surgery) + if (!progress.StartedSurgeries.Contains(surgery) && !isCompleted) { RaiseLocalEvent(surgeryEnt, ref ev); diff --git a/Content.Server/_Sunrise/Antags/Abductor/EntitySystems/AbductorSystem.Organs.cs b/Content.Server/_Sunrise/Antags/Abductor/EntitySystems/AbductorSystem.Organs.cs index 93aee9b505..93ee6e5b35 100644 --- a/Content.Server/_Sunrise/Antags/Abductor/EntitySystems/AbductorSystem.Organs.cs +++ b/Content.Server/_Sunrise/Antags/Abductor/EntitySystems/AbductorSystem.Organs.cs @@ -30,8 +30,6 @@ using Content.Server.Speech.Components; using Content.Server.Humanoid; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Coordinates; -using Discord.Rest; -using Content.Shared._Sunrise.Felinid; namespace Content.Server._Sunrise.Antags.Abductor; @@ -136,7 +134,7 @@ public sealed partial class AbductorSystem : SharedAbductorSystem case AbductorOrganType.Owo: if (curTime > victim.TransformationTime) { - if (HasComp(uid)) + if (HasComp(uid)) return; EnsureComp(uid); _popup.PopupEntity(Loc.GetString("owo-organ-transformation"), uid, PopupType.LargeCaution); diff --git a/Content.Server/_Sunrise/BloodCult/Items/Systems/BloodCultWeaponSystem.cs b/Content.Server/_Sunrise/BloodCult/Items/Systems/BloodCultWeaponSystem.cs index dd59c3b4c5..33773a1006 100644 --- a/Content.Server/_Sunrise/BloodCult/Items/Systems/BloodCultWeaponSystem.cs +++ b/Content.Server/_Sunrise/BloodCult/Items/Systems/BloodCultWeaponSystem.cs @@ -150,7 +150,7 @@ public sealed class BloodCultWeaponSystem : EntitySystem if (HasComp(args.User)) return; - _stunSystem.TryParalyze(args.User, TimeSpan.FromSeconds(component.StuhTime), true); + _stunSystem.TryAddParalyzeDuration(args.User, TimeSpan.FromSeconds(component.StuhTime)); _damageableSystem.TryChangeDamage(args.User, component.Damage, origin: uid); } } diff --git a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpearSystem.cs b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpearSystem.cs index 611ddf59d7..669d9d2a8b 100644 --- a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpearSystem.cs +++ b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpearSystem.cs @@ -120,8 +120,8 @@ public sealed class CultBloodSpearSystem : EntitySystem else { if (HasComp(args.Target)) - { - _stunSystem.TryParalyze(args.Target, TimeSpan.FromSeconds(component.StuhTime), true); + + _stunSystem.TryAddParalyzeDuration(args.Target, TimeSpan.FromSeconds(component.StuhTime)); _damageableSystem.TryChangeDamage(args.Target, component.Damage, origin: uid); _audio.PlayPvs(component.BreakSound, uid); QueueDel(uid); diff --git a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpellSystem.cs b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpellSystem.cs index f0828e2e04..4785d7b661 100644 --- a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpellSystem.cs +++ b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultBloodSpellSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Hands.Systems; using Content.Server.Popups; using Content.Shared._Sunrise.BloodCult.Components; using Content.Shared._Sunrise.BloodCult.Items; +using Content.Shared.Body.Components; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage; diff --git a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultMirrorShieldSystem.cs b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultMirrorShieldSystem.cs index cb83a28df5..22bcf71eb5 100644 --- a/Content.Server/_Sunrise/BloodCult/Items/Systems/CultMirrorShieldSystem.cs +++ b/Content.Server/_Sunrise/BloodCult/Items/Systems/CultMirrorShieldSystem.cs @@ -11,6 +11,7 @@ using Content.Shared._Sunrise.BloodCult.Components; using Content.Shared._Sunrise.BloodCult.Items; using Content.Shared._Sunrise.Events; using Content.Shared.Blocking; +using Content.Shared.Body.Events; using Content.Shared.Damage; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; diff --git a/Content.Server/_Sunrise/Boss/Systems/HellSpawnArenaSystem.cs b/Content.Server/_Sunrise/Boss/Systems/HellSpawnArenaSystem.cs index b0d757b7d3..19b54d51c0 100644 --- a/Content.Server/_Sunrise/Boss/Systems/HellSpawnArenaSystem.cs +++ b/Content.Server/_Sunrise/Boss/Systems/HellSpawnArenaSystem.cs @@ -11,6 +11,7 @@ using Content.Server.Shuttles.Systems; using Content.Server.Sunrise.Paws; using Content.Shared._Sunrise.Boss.Components; using Content.Shared._Sunrise.Boss.Systems; +using Content.Shared.Body.Events; using Content.Shared.Construction; using Content.Shared.Damage.Components; using Content.Shared.Damage.ForceSay; diff --git a/Content.Server/_Sunrise/Chat/SayWithIntervalSystem.cs b/Content.Server/_Sunrise/Chat/SayWithIntervalSystem.cs index 9c00ba4c60..3b3629fd2c 100644 --- a/Content.Server/_Sunrise/Chat/SayWithIntervalSystem.cs +++ b/Content.Server/_Sunrise/Chat/SayWithIntervalSystem.cs @@ -1,7 +1,4 @@ -using Content.Server.Advertise.Components; using Content.Server.Chat.Systems; -using Content.Server.Power.Components; -using Content.Shared.VendingMachines; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; diff --git a/Content.Server/_Sunrise/ExpCollars/ExpCollarsSystem.cs b/Content.Server/_Sunrise/ExpCollars/ExpCollarsSystem.cs index e064223dbd..db74f36853 100644 --- a/Content.Server/_Sunrise/ExpCollars/ExpCollarsSystem.cs +++ b/Content.Server/_Sunrise/ExpCollars/ExpCollarsSystem.cs @@ -12,6 +12,7 @@ using Content.Shared.Mobs; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.Tag; +using Content.Shared.Trigger.Systems; using Robust.Server.Audio; namespace Content.Server._Sunrise.ExpCollars; diff --git a/Content.Server/_Sunrise/FleshCult/FleshCultSystem.Cultist.cs b/Content.Server/_Sunrise/FleshCult/FleshCultSystem.Cultist.cs index c7bd24f45e..53ee1e0ca8 100644 --- a/Content.Server/_Sunrise/FleshCult/FleshCultSystem.Cultist.cs +++ b/Content.Server/_Sunrise/FleshCult/FleshCultSystem.Cultist.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.Atmos.Components; using Content.Server.Body.Components; -using Content.Server.Flash.Components; using Content.Server.Forensics; using Content.Server.Temperature.Components; using Content.Shared._Sunrise.NightVision.Components; @@ -9,11 +8,13 @@ using Content.Shared._Sunrise.CollectiveMind; using Content.Shared._Sunrise.FleshCult; using Content.Shared.Actions; using Content.Shared.Actions.Components; +using Content.Shared.Body.Components; using Content.Shared.Body.Part; using Content.Shared.Chemistry.Components; using Content.Shared.Cuffs.Components; using Content.Shared.Electrocution; using Content.Shared.FixedPoint; +using Content.Shared.Flash.Components; using Content.Shared.Forensics.Components; using Content.Shared.Humanoid; using Content.Shared.Interaction.Components; @@ -90,11 +91,12 @@ public sealed partial class FleshCultSystem private void HandleCriticalState(EntityUid uid, FleshCultistComponent component) { EnsureComp(uid); - foreach (var hand in _handsSystem.EnumerateHands(uid).Where(hand => hand.Container != null)) + foreach (var hand in _handsSystem.EnumerateHands(uid)) { - foreach (var entity in hand.Container!.ContainedEntities.Where(entity => !HasComp(entity))) + var item = _handsSystem.GetHeldItem((uid, null), hand); + if (HasComp(item)) { - QueueDel(entity); + QueueDel(item); _audioSystem.PlayPvs(component.SoundMutation, uid, component.SoundMutation.Params); } } @@ -214,7 +216,6 @@ public sealed partial class FleshCultSystem RemCompDeferred(uid); RemCompDeferred(uid); RemCompDeferred(uid); - RemCompDeferred(uid); } private void RemoveCollectiveMind(EntityUid uid) diff --git a/Content.Server/_Sunrise/GridDock/GridDockSystem.cs b/Content.Server/_Sunrise/GridDock/GridDockSystem.cs index 943a0d00b4..db7f2a377a 100644 --- a/Content.Server/_Sunrise/GridDock/GridDockSystem.cs +++ b/Content.Server/_Sunrise/GridDock/GridDockSystem.cs @@ -5,6 +5,7 @@ using Content.Server.Shuttles.Systems; using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Server.Station.Systems; +using Content.Shared.Station.Components; using Robust.Shared.EntitySerialization.Systems; namespace Content.Server._Sunrise.GridDock; @@ -36,7 +37,10 @@ public sealed class GridDockSystem : EntitySystem if (!TryComp(rootUid.Value.Owner, out var shuttleComp)) return; - var target = _station.GetLargestGrid(Comp(uid)); + if (!TryComp(uid, out var stationData)) + return; + + var target = _station.GetLargestGrid((uid, stationData)); if (target == null) { diff --git a/Content.Server/_Sunrise/Helpers/SunriseHelpersSystem.cs b/Content.Server/_Sunrise/Helpers/SunriseHelpersSystem.cs index 2a8542474f..23e9d968b7 100644 --- a/Content.Server/_Sunrise/Helpers/SunriseHelpersSystem.cs +++ b/Content.Server/_Sunrise/Helpers/SunriseHelpersSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Station.Components; using Content.Shared._Sunrise.Helpers; using Content.Shared.Random.Helpers; +using Content.Shared.Station.Components; using Robust.Server.GameObjects; using Robust.Shared.Collections; using Robust.Shared.Map; diff --git a/Content.Server/_Sunrise/Misc/ShiftedAsciiTableAccent/ShiftedAsciiTableAccentSystem.cs b/Content.Server/_Sunrise/Misc/ShiftedAsciiTableAccent/ShiftedAsciiTableAccentSystem.cs index 57061d001e..7cae4eface 100644 --- a/Content.Server/_Sunrise/Misc/ShiftedAsciiTableAccent/ShiftedAsciiTableAccentSystem.cs +++ b/Content.Server/_Sunrise/Misc/ShiftedAsciiTableAccent/ShiftedAsciiTableAccentSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Speech; +using Content.Shared.Speech; using Robust.Shared.Random; namespace Content.Server._Sunrise.Misc.ShiftedAsciiTableAccent; diff --git a/Content.Server/_Sunrise/Paint/PaintSystem.cs b/Content.Server/_Sunrise/Paint/PaintSystem.cs index aafdbb01f2..c90b2b740c 100644 --- a/Content.Server/_Sunrise/Paint/PaintSystem.cs +++ b/Content.Server/_Sunrise/Paint/PaintSystem.cs @@ -12,9 +12,6 @@ using Content.Shared.Verbs; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; using Robust.Shared.Utility; -using PaintComponent = Content.Shared._Sunrise.Paint.PaintComponent; -using PaintDoAfterEvent = Content.Shared._Sunrise.Paint.PaintDoAfterEvent; -using PaintedComponent = Content.Shared._Sunrise.Paint.PaintedComponent; namespace Content.Server._Sunrise.Paint; @@ -103,7 +100,7 @@ public sealed class PaintSystem : SharedPaintSystem return; } - if (HasComp(target) || HasComp(target)) + if (HasComp(target) || HasComp(target)) { _popup.PopupEntity(Loc.GetString("paint-failure-painted", ("target", args.Target)), args.User, args.User, PopupType.Medium); return; @@ -118,7 +115,7 @@ public sealed class PaintSystem : SharedPaintSystem if (TryPaint(entity, target)) { - EnsureComp(target, out PaintedComponent? paint); + EnsureComp(target, out SprayPaintedComponent? paint); EnsureComp(target); paint.Color = entity.Comp.Color; // set the target color to the color specified in the spray paint yml. @@ -137,7 +134,7 @@ public sealed class PaintSystem : SharedPaintSystem if (slotEnt == null) return; - if (HasComp(slotEnt.Value) || entity.Comp.Blacklist != null && + if (HasComp(slotEnt.Value) || entity.Comp.Blacklist != null && _whitelist.IsValid(entity.Comp.Blacklist, slotEnt.Value) || HasComp(slotEnt.Value) || @@ -145,7 +142,7 @@ public sealed class PaintSystem : SharedPaintSystem slotEnt.Value)) return; - EnsureComp(slotEnt.Value, out PaintedComponent? slotpaint); + EnsureComp(slotEnt.Value, out SprayPaintedComponent? slotpaint); EnsureComp(slotEnt.Value); slotpaint.Color = entity.Comp.Color; _appearanceSystem.SetData(slotEnt.Value, PaintVisuals.Painted, true); diff --git a/Content.Server/_Sunrise/PlanetPrison/PlanetPrisonStationSystem.cs b/Content.Server/_Sunrise/PlanetPrison/PlanetPrisonStationSystem.cs index e1ca6f47fb..7bb94beb9d 100644 --- a/Content.Server/_Sunrise/PlanetPrison/PlanetPrisonStationSystem.cs +++ b/Content.Server/_Sunrise/PlanetPrison/PlanetPrisonStationSystem.cs @@ -28,7 +28,6 @@ public sealed class PlanetPrisonStationSystem : EntitySystem [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly MapSystem _map = default!; - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly GameTicker _gameTicker = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly BiomeSystem _biomeSystem = default!; @@ -96,7 +95,7 @@ public sealed class PlanetPrisonStationSystem : EntitySystem return; } - if (!_prototypeManager.TryIndex(station, out var gameMap)) + if (!_protoManager.TryIndex(station, out var gameMap)) { _sawmill.Warning("No Prison map found, skipping setup."); return; diff --git a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs index 06f4f9edb7..21d1c82f23 100644 --- a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs +++ b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.Chat.Prototypes; using Content.Shared.Humanoid; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; namespace Content.Server._Sunrise.ReplacementVocal; @@ -13,11 +14,11 @@ namespace Content.Server._Sunrise.ReplacementVocal; public sealed partial class ReplacementVocalComponent : Component { [DataField(customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer), required: true)] - public Dictionary Vocal; + public Dictionary> Vocal; [DataField] public HashSet AddedEmotes = new(); [DataField(customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer))] - public Dictionary? PreviousVocal; + public Dictionary>? PreviousVocal; } diff --git a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalSystem.cs b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalSystem.cs index b975161c3a..3c6f6ae273 100644 --- a/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalSystem.cs +++ b/Content.Server/_Sunrise/ReplacementVocal/ReplacementVocalSystem.cs @@ -31,7 +31,10 @@ public sealed class ReplacementVocalSystem : EntitySystem LoadEmotes(uid, vocalComponent); - foreach (var emote in vocalComponent.EmoteSounds!.Sounds.Keys) + if (!_proto.TryIndex(vocalComponent.EmoteSounds, out var soundIndex)) + return; + + foreach (var emote in soundIndex.Sounds.Keys) { if (speechComponent.AllowedEmotes.Contains(emote)) continue; diff --git a/Content.Server/_Sunrise/Shuttles/CodeEquipmentSystem.cs b/Content.Server/_Sunrise/Shuttles/CodeEquipmentSystem.cs index 3be5c9fb08..dc4d584662 100644 --- a/Content.Server/_Sunrise/Shuttles/CodeEquipmentSystem.cs +++ b/Content.Server/_Sunrise/Shuttles/CodeEquipmentSystem.cs @@ -9,6 +9,7 @@ using Content.Server.Station.Components; using Content.Server.Station.Events; using Content.Server.Station.Systems; using Content.Shared.Shuttles.Components; +using Content.Shared.Station.Components; using Robust.Server.GameObjects; using Robust.Shared.EntitySerialization; using Robust.Shared.EntitySerialization.Systems; @@ -89,7 +90,10 @@ public sealed class CodeEquipmentSystem : EntitySystem if (ev.AlertLevel != comp.TargetCode) return; - var target = _station.GetLargestGrid(Comp(ev.Station)); + if (!TryComp(ev.Station, out var stationData)) + return; + + var target = _station.GetLargestGrid((ev.Station, stationData)); if (target == null) return; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/ItalianAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/ItalianAccentSystem.cs index 4b65876e73..f5ea1535be 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/ItalianAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/ItalianAccentSystem.cs @@ -3,6 +3,7 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; +using Content.Shared.Speech; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/MoldovanAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/MoldovanAccentSystem.cs index 7557ab2043..7f73486213 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/MoldovanAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/MoldovanAccentSystem.cs @@ -3,6 +3,7 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; +using Content.Shared.Speech; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/SS13AccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/SS13AccentSystem.cs index ebb32fdacf..8c01c4b6ce 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/SS13AccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/SS13AccentSystem.cs @@ -3,6 +3,7 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; +using Content.Shared.Speech; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/SwineAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/SwineAccentSystem.cs index fbbe0a4c68..a3f6525005 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/SwineAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/SwineAccentSystem.cs @@ -1,5 +1,6 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; +using Content.Shared.Speech; using Robust.Shared.Random; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/TransliterationAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/TransliterationAccentSystem.cs index bf55542494..f08a302f21 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/TransliterationAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/TransliterationAccentSystem.cs @@ -3,6 +3,8 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; +using Content.Shared.Speech; + namespace Content.Server._Sunrise.Speech.EntitySystems; public sealed class TransliterationAccentSystem : EntitySystem { @@ -116,7 +118,7 @@ public sealed class TransliterationAccentSystem : EntitySystem 'n' => 'т', 'm' => 'ь', ',' => 'б', - '`' => 'ё', + '`' => 'ё', 'Q' => 'Й', 'W' => 'Ц', 'E' => 'У', @@ -159,4 +161,4 @@ public sealed class TransliterationAccentSystem : EntitySystem { args.Message = Accentuate(args.Message); } -} \ No newline at end of file +} diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/UkrainianAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/UkrainianAccentSystem.cs index 9d348d0582..2c947c3fb2 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/UkrainianAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/UkrainianAccentSystem.cs @@ -3,6 +3,7 @@ using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; using Content.Server.Speech.Components; using Content.Server.Speech.EntitySystems; +using Content.Shared.Speech; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/Speech/EntitySystems/VulpaAccentSystem.cs b/Content.Server/_Sunrise/Speech/EntitySystems/VulpaAccentSystem.cs index 6b136303aa..7ed2cb2fba 100644 --- a/Content.Server/_Sunrise/Speech/EntitySystems/VulpaAccentSystem.cs +++ b/Content.Server/_Sunrise/Speech/EntitySystems/VulpaAccentSystem.cs @@ -1,6 +1,7 @@ using System.Text.RegularExpressions; using Content.Server._Sunrise.Speech.Components; using Content.Server.Speech; +using Content.Shared.Speech; using Robust.Shared.Random; namespace Content.Server._Sunrise.Speech.EntitySystems; diff --git a/Content.Server/_Sunrise/SplashOnTrigger/SplashOnTriggerSystem.cs b/Content.Server/_Sunrise/SplashOnTrigger/SplashOnTriggerSystem.cs index 3921cfb750..c7d5e3cdc7 100644 --- a/Content.Server/_Sunrise/SplashOnTrigger/SplashOnTriggerSystem.cs +++ b/Content.Server/_Sunrise/SplashOnTrigger/SplashOnTriggerSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Explosion.EntitySystems; using Content.Server.Fluids.EntitySystems; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; +using Content.Shared.Trigger; using JetBrains.Annotations; namespace Content.Server._Sunrise.SplashOnTrigger; diff --git a/Content.Server/_Sunrise/Tajaran/TajaranAccentSystem.cs b/Content.Server/_Sunrise/Tajaran/TajaranAccentSystem.cs index 91b47c7e78..8497cd0c4f 100644 --- a/Content.Server/_Sunrise/Tajaran/TajaranAccentSystem.cs +++ b/Content.Server/_Sunrise/Tajaran/TajaranAccentSystem.cs @@ -1,5 +1,6 @@ using System.Text.RegularExpressions; using Content.Server.Speech.Components; +using Content.Shared.Speech; using Robust.Shared.Random; namespace Content.Server.Speech.EntitySystems diff --git a/Content.Server/_Sunrise/VigersRay/VigersRaySystem.cs b/Content.Server/_Sunrise/VigersRay/VigersRaySystem.cs index fbe195e2e9..02e9e674bc 100644 --- a/Content.Server/_Sunrise/VigersRay/VigersRaySystem.cs +++ b/Content.Server/_Sunrise/VigersRay/VigersRaySystem.cs @@ -121,7 +121,7 @@ public sealed class VigersRaySystem : EntitySystem var statusEffectQuery = EntityQueryEnumerator(); while (statusEffectQuery.MoveNext(out var ent, out var comp)) { - _stunSystem.TryParalyze(ent, TimeSpan.FromSeconds(5), true); + _stunSystem.TryAddParalyzeDuration(ent, TimeSpan.FromSeconds(5)); _jittering.DoJitter(ent, TimeSpan.FromSeconds(15), true); _stuttering.DoStutter(ent, TimeSpan.FromSeconds(30), true); } diff --git a/Content.Shared/Bed/Sleep/SleepingSystem.cs b/Content.Shared/Bed/Sleep/SleepingSystem.cs index b6a2b0775b..55c6c1a3f7 100644 --- a/Content.Shared/Bed/Sleep/SleepingSystem.cs +++ b/Content.Shared/Bed/Sleep/SleepingSystem.cs @@ -18,6 +18,7 @@ using Content.Shared.Slippery; using Content.Shared.Sound; using Content.Shared.Sound.Components; using Content.Shared.Speech; +using Content.Shared.Standing; using Content.Shared.StatusEffectNew; using Content.Shared.Stunnable; using Content.Shared.Traits.Assorted; @@ -40,6 +41,7 @@ public sealed partial class SleepingSystem : EntitySystem [Dependency] private readonly SharedEmitSoundSystem _emitSound = default!; [Dependency] private readonly StatusEffectsSystem _statusEffect = default!; [Dependency] private readonly SharedStunSystem _stun = default!; + [Dependency] private readonly SharedStandingStateSystem _standing = default!; public static readonly EntProtoId SleepActionId = "ActionSleep"; public static readonly EntProtoId WakeActionId = "ActionWake"; @@ -129,7 +131,7 @@ public sealed partial class SleepingSystem : EntitySystem } _stun.TryUnstun(ent.Owner); - _stun.TryStanding(ent.Owner); + _standing.TryStandUp(ent.Owner); RemComp(ent); } diff --git a/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerLocalizationHelper.cs b/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerLocalizationHelper.cs index f2ebabbb01..bedbf3767e 100644 --- a/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerLocalizationHelper.cs +++ b/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerLocalizationHelper.cs @@ -37,7 +37,7 @@ public sealed class PlantAnalyzerLocalizationHelper return ContentLocalizationManager.FormatList(locStrings); } - public static (string Singular, string Plural) ProduceToLocalizedStrings(List ids, IPrototypeManager protMan) + public static (string Singular, string Plural) ProduceToLocalizedStrings(List ids, IPrototypeManager protMan) { if (ids.Count == 0) return ("", ""); @@ -46,7 +46,7 @@ public sealed class PlantAnalyzerLocalizationHelper List pluralStrings = []; foreach (var id in ids) { - var singular = protMan.TryIndex(id, out var prototype) ? prototype.Name : id; + var singular = protMan.TryIndex(id, out var prototype) ? prototype.Name : id.Id; var plural = Loc.GetString("plant-analyzer-produce-plural", ("thing", singular)); singularStrings.Add(singular); diff --git a/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerScannedUserMessage.cs b/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerScannedUserMessage.cs index dc038408c5..e4a7050cff 100644 --- a/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerScannedUserMessage.cs +++ b/Content.Shared/Botany/PlantAnalyzer/PlantAnalyzerScannedUserMessage.cs @@ -1,4 +1,5 @@ using Content.Shared.Atmos; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Botany.PlantAnalyzer; @@ -72,12 +73,12 @@ public sealed class PlantAnalyzerPlantData(string seedDisplayName, float health, /// Information about the output of a plant (produce and gas). /// [Serializable, NetSerializable] -public sealed class PlantAnalyzerProduceData(int yield, float potency, List chemicals, List produce, List exudeGasses, bool seedless) +public sealed class PlantAnalyzerProduceData(int yield, float potency, List chemicals, List produce, List exudeGasses, bool seedless) { public int Yield = yield; public string Potency = ObscurePotency(potency); public List Chemicals = chemicals; - public List Produce = produce; + public List Produce = produce; public List ExudeGasses = exudeGasses; public bool Seedless = seedless; diff --git a/Content.Shared/Changeling/ChangelingRoleComponent.cs b/Content.Shared/Changeling/ChangelingRoleComponent.cs deleted file mode 100644 index d2e9c1eccb..0000000000 --- a/Content.Shared/Changeling/ChangelingRoleComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -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/Chat/SharedChatSystem.cs b/Content.Shared/Chat/SharedChatSystem.cs index 81eb09694d..077cbc290d 100644 --- a/Content.Shared/Chat/SharedChatSystem.cs +++ b/Content.Shared/Chat/SharedChatSystem.cs @@ -25,11 +25,6 @@ public abstract class SharedChatSystem : EntitySystem public const char WhisperPrefix = ','; public const char DefaultChannelKey = 'р'; // Russian-Localization public const char CollectiveMindPrefix = '+'; // Sunrise-Edit - // Sunrise-TTS-Start - public const int VoiceRange = 10; // how far voice goes in world units - public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units - public const int WhisperMuffledRange = 5; // how far whisper goes at all, in world units - // Sunrise-TTS-End public const int VoiceRange = 10; // how far voice goes in world units public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units diff --git a/Content.Shared/Chemistry/Components/HyposprayComponent.cs b/Content.Shared/Chemistry/Components/HyposprayComponent.cs index 6825457109..5029993d3e 100644 --- a/Content.Shared/Chemistry/Components/HyposprayComponent.cs +++ b/Content.Shared/Chemistry/Components/HyposprayComponent.cs @@ -3,6 +3,7 @@ using Content.Shared.DoAfter; // Sunrise-Edit using Content.Shared.FixedPoint; using Robust.Shared.GameStates; using Robust.Shared.Audio; +using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Components; @@ -52,7 +53,7 @@ public sealed partial class HyposprayComponent : Component /// [DataField] public bool InjectOnly = false; - + // Sunrise-Start /// @@ -72,4 +73,4 @@ public sealed partial class HyposprayComponent : Component public sealed partial class HyposprayDoAfterEvent : SimpleDoAfterEvent { // Sunrise-End -} \ No newline at end of file +} diff --git a/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs b/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs index 75392b94e7..01898b85a8 100644 --- a/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionRegenerationComponent.cs @@ -1,5 +1,5 @@ -using Content.Server._Sunrise.SolutionRegenerationSwitcher; -using Content.Server.Chemistry.EntitySystems; +using Content.Shared._Sunrise.SolutionRegenerationSwitcher; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; diff --git a/Content.Shared/Chemistry/EntitySystems/HypospraySystem.cs b/Content.Shared/Chemistry/EntitySystems/HypospraySystem.cs index b3a2cd1848..8e4df010fe 100644 --- a/Content.Shared/Chemistry/EntitySystems/HypospraySystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/HypospraySystem.cs @@ -16,12 +16,6 @@ using Content.Shared.Timing; using Content.Shared.Verbs; using Content.Shared.Weapons.Melee.Events; using Robust.Shared.Audio.Systems; -using Content.Server.Interaction; -using Content.Server.Body.Components; -using Robust.Shared.GameStates; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Robust.Server.Audio; // Sunrise-Start using Robust.Shared.Prototypes; using Content.Shared.Chemistry.Reagent; @@ -119,7 +113,7 @@ public sealed class HypospraySystem : EntitySystem { // if target is ineligible but is a container, try to draw from the container if allowed if (entity.Comp.CanContainerDraw - && !EligibleEntity(target, EntityManager, entity) + && !EligibleEntity(target, entity.Comp) && _solutionContainers.TryGetDrawableSolution(target, out var drawableSolution, out _)) { return TryDraw(entity, target, drawableSolution.Value, user); @@ -205,18 +199,6 @@ public sealed class HypospraySystem : EntitySystem else if (target == user) msgFormat = "hypospray-component-inject-self-message"; - if (!_solutionContainers.TryGetSolution(uid, component.SolutionName, out var hypoSpraySoln, out var hypoSpraySolution) || hypoSpraySolution.Volume == 0) - { - _popup.PopupClient(Loc.GetString("hypospray-component-empty-message"), target, user); - return true; - } - - if (!_solutionContainers.TryGetInjectableSolution(target, out var targetSoln, out var targetSolution)) - { - _popup.PopupClient(Loc.GetString("hypospray-cant-inject", ("target", Identity.Entity(target, EntityManager))), target, user); - return false; - } - // Sunrise-Start if (!InjectionFailureCheck(entity, target, user, out var hypoSpraySoln, out var targetSoln, out var targetSolution, out var returnValue) || hypoSpraySoln == null @@ -301,7 +283,7 @@ public sealed class HypospraySystem : EntitySystem } } - var removedSolution = _solutionContainers.Draw(target.Owner, targetSolution, realTransferAmount); + var removedSolution = _solutionContainers.Draw(target, targetSolution, realTransferAmount); // Sunrise-End if (!_solutionContainers.TryAddSolution(soln.Value, removedSolution)) diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index 13f32c68ff..09af072381 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -31,7 +31,6 @@ namespace Content.Shared.Damage [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly SharedChemistryGuideDataSystem _chemistryGuideData = default!; [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IConfigurationManager _configurationManager = default!; private EntityQuery _appearanceQuery; private EntityQuery _damageableQuery; @@ -96,9 +95,9 @@ namespace Content.Shared.Damage Subs.CVar(_config, CCVars.PlaytestTopicalsHealModifier, value => UniversalTopicalsHealModifier = value, true); Subs.CVar(_config, CCVars.PlaytestMobDamageModifier, value => UniversalMobDamageModifier = value, true); - _configurationManager.OnValueChanged(SunriseCCVars.DamageVariance, UpdateVariance, true); // Sunrise-Edit - _configurationManager.OnValueChanged(SunriseCCVars.DamageModifier, UpdateDamageModifier, true); // Sunrise-Edit - _configurationManager.OnValueChanged(SunriseCCVars.HealModifier, UpdateHealModifier, true); // Sunrise-Edit + _config.OnValueChanged(SunriseCCVars.DamageVariance, UpdateVariance, true); // Sunrise-Edit + _config.OnValueChanged(SunriseCCVars.DamageModifier, UpdateDamageModifier, true); // Sunrise-Edit + _config.OnValueChanged(SunriseCCVars.HealModifier, UpdateHealModifier, true); // Sunrise-Edit } /// diff --git a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs index 8ec1ab3151..1beeaf64b1 100644 --- a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs +++ b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs @@ -251,7 +251,13 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance, break; } - return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new ()); + //Sunrise start + var speciesPrototype = IoCManager.Resolve().Index(species); + var newWidth = random.NextFloat(speciesPrototype.MinWidth, speciesPrototype.MaxWidth); + var newHeight = random.NextFloat(speciesPrototype.MinHeight, speciesPrototype.MaxHeight); + //Sunrise end + + return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, newEyeColor, newSkinColor, new (), MarkingEffectType.Color, null, MarkingEffectType.Color, null, newWidth, newHeight); float RandomizeColor(float channel) { @@ -346,6 +352,7 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance, // sunrise gradient end //Sunrise start + var random = IoCManager.Resolve(); var speciesPrototype = IoCManager.Resolve().Index(species); var newWidth = random.NextFloat(speciesPrototype.MinWidth, speciesPrototype.MaxWidth); var newHeight = random.NextFloat(speciesPrototype.MinHeight, speciesPrototype.MaxHeight); @@ -363,8 +370,8 @@ public sealed partial class HumanoidCharacterAppearance : ICharacterAppearance, hairExtendedColor, appearance.FacialHairMarkingEffectType, facialHairExtendedColor, - width, - height); + newWidth, + newHeight); } public bool MemberwiseEquals(ICharacterAppearance maybeOther) { diff --git a/Content.Shared/Interaction/SmartEquipSystem.cs b/Content.Shared/Interaction/SmartEquipSystem.cs index 63c2ae8f36..da79fc1e69 100644 --- a/Content.Shared/Interaction/SmartEquipSystem.cs +++ b/Content.Shared/Interaction/SmartEquipSystem.cs @@ -206,45 +206,10 @@ public sealed class SmartEquipSystem : EntitySystem _slots.TryInsertFromHand(slotItem, toInsertTo, uid, hands, excludeUserAudio: true); return; - // Sunrise-start - } else if (TryComp(slotItem, out var storage)) // case 2 (storage item): - { - switch (handItem) - { - case null when storage.Container.ContainedEntities.Count == 0: - _popup.PopupClient(emptyEquipmentSlotString, uid, uid); - return; - case null: - var removing = storage.Container.ContainedEntities[^1]; - _container.RemoveEntity(slotItem, removing); - _hands.TryPickup(uid, removing, handsComp: hands); - return; - } + } - if (!_storage.CanInsert(slotItem, handItem.Value, out var reason)) - { - if (reason != null) - _popup.PopupClient(Loc.GetString(reason), uid, uid); - - return; - // Sunrise-end - } - - // Sunrise-edit start - _hands.TryDrop(uid, hands.ActiveHand, handsComp: hands); - _storage.Insert(slotItem, handItem.Value, out var stacked, out _); - - // if the hand item stacked with the things in inventory, but there's no more space left for the rest - // of the stack, place the stack back in hand rather than dropping it on the floor - if (stacked != null && !_storage.CanInsert(slotItem, handItem.Value, out _)) - { - if (TryComp(handItem.Value, out var handStack) && handStack.Count > 0) - _hands.TryPickup(uid, handItem.Value, handsComp: hands); - } - - return; - } else if (handItem != null) // case 4 (just an item): - // Sunrise-edit-end + // case 4 (just an item): + if (handItem != null) return; if (!_inventory.CanUnequip(uid, equipmentSlot, out var inventoryReason)) diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs index bcd7727a0a..3d44351a59 100644 --- a/Content.Shared/Item/SharedItemSystem.cs +++ b/Content.Shared/Item/SharedItemSystem.cs @@ -5,12 +5,9 @@ using Content.Shared.Examine; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Storage; using JetBrains.Annotations; -using Robust.Shared.Collections; using Robust.Shared.Containers; -using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Utility; -using Content.Shared._Sunrise.Felinid; namespace Content.Shared.Item; @@ -116,10 +113,6 @@ public abstract class SharedItemSystem : EntitySystem private void AddPickupVerb(EntityUid uid, ItemComponent component, GetVerbsEvent args) { - // Sunrise-start. Предотвращаем появление стандартного верба подбора для фелинидов - if (HasComp(uid)) - return; - // Sunrise-end if (args.Hands == null || args.Using != null || !args.CanAccess || diff --git a/Content.Shared/Medical/Healing/HealingComponent.cs b/Content.Shared/Medical/Healing/HealingComponent.cs index 53358fd28d..e1823ba7dc 100644 --- a/Content.Shared/Medical/Healing/HealingComponent.cs +++ b/Content.Shared/Medical/Healing/HealingComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Chemistry.Reagent; using Content.Shared.Damage; using Content.Shared.Damage.Prototypes; using Robust.Shared.Audio; @@ -62,4 +63,12 @@ public sealed partial class HealingComponent : Component /// [DataField] public SoundSpecifier? HealingEndSound = null; + + // Sunrise-Start + [DataField] + public bool SolutionDrain = false; + + [DataField] + public List ReagentsToDrain = new(); + // Sunrise-End } diff --git a/Content.Shared/Medical/Healing/HealingSystem.cs b/Content.Shared/Medical/Healing/HealingSystem.cs index 5d6afe166a..f68eeac153 100644 --- a/Content.Shared/Medical/Healing/HealingSystem.cs +++ b/Content.Shared/Medical/Healing/HealingSystem.cs @@ -2,12 +2,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using System.Linq; -using Content.Server.Administration.Logs; -using Content.Server.Body.Components; -using Content.Server.Body.Systems; using Content.Server.Medical.Components; -using Content.Server.Popups; -using Content.Server.Stack; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; @@ -221,14 +216,14 @@ public sealed class HealingSystem : EntitySystem return false; // Starlight start - if (component.SolutionDrain && TryComp(uid, out var solutionManager)) + if (healing.Comp.SolutionDrain && TryComp(healing.Owner, out var solutionManager)) { Entity? solutionEntity = null; - if (_solutionContainerSystem.ResolveSolution(uid, "injector", ref solutionEntity, out var solution)) + if (_solutionContainerSystem.ResolveSolution(healing.Owner, "injector", ref solutionEntity, out var solution)) { - if (!solution.Contents.Any(sol => component.ReagentsToDrain.Any(req => req.Reagent == sol.Reagent && sol.Quantity >= req.Quantity))) + if (!solution.Contents.Any(sol => healing.Comp.ReagentsToDrain.Any(req => req.Reagent == sol.Reagent && sol.Quantity >= req.Quantity))) { - _popupSystem.PopupEntity(Loc.GetString("medical-item-solution-missing", ("item", uid)), uid, user); + _popupSystem.PopupEntity(Loc.GetString("medical-item-solution-missing", ("item", healing.Owner)), healing.Owner, user); return false; } } diff --git a/Content.Shared/Slippery/SlipperySystem.cs b/Content.Shared/Slippery/SlipperySystem.cs index 60fedf0236..f844a19acc 100644 --- a/Content.Shared/Slippery/SlipperySystem.cs +++ b/Content.Shared/Slippery/SlipperySystem.cs @@ -16,9 +16,11 @@ using JetBrains.Annotations; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; using Robust.Shared.Containers; +using Robust.Shared.Network; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Physics.Events; +using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -42,8 +44,7 @@ public sealed class SlipperySystem : EntitySystem // Sunrise-Start private static float _deadChance; - [ValidatePrototypeId] - private const string EmoteFallOnNeckProto = "FallOnNeck"; + private static ProtoId EmoteFallOnNeckProto = "FallOnNeck"; // Sunrise-End private EntityQuery _knockedDownQuery; diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index 597f3c3531..abf7a475a1 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -14,7 +14,6 @@ using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.Shared.Utility; using System.Linq; -using PaintedComponent = Content.Shared._Sunrise.Paint.PaintedComponent; // Sunrise-edit namespace Content.Shared.SprayPainter; diff --git a/Content.Shared/Standing/SharedStandingStateSystem.cs b/Content.Shared/Standing/SharedStandingStateSystem.cs index cbedb2d728..49c21271a7 100644 --- a/Content.Shared/Standing/SharedStandingStateSystem.cs +++ b/Content.Shared/Standing/SharedStandingStateSystem.cs @@ -111,11 +111,12 @@ public abstract class SharedStandingStateSystem : EntitySystem return; var worldRotation = _transform.GetWorldRotation(uid).ToVec(); - foreach (var hand in handsComp.Hands.Values) + foreach (var hand in handsComp.Hands.Keys) { - if (hand.HeldEntity is not { } held) + var heldEntity = _handsSystem.GetHeldItem(uid, hand); + if (heldEntity is not { } held) continue; - if (!_handsSystem.TryDrop(uid, hand, checkActionBlocker: false, handsComp: handsComp)) + if (!_handsSystem.TryDrop(uid, hand, checkActionBlocker: false)) continue; _throwing.TryThrow( @@ -188,7 +189,7 @@ public abstract class SharedStandingStateSystem : EntitySystem } var totalHands = handsComponent.Hands.Count; - var freeHands = handsComponent.CountFreeHands(); + var freeHands = _handsSystem.CountFreeHands((uid, handsComponent)); var occupiedHandsRatio = (float)(totalHands - freeHands) / totalHands; var speedModifier = baseSpeedModify * (1 - occupiedHandsRatio * 0.5f); diff --git a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs index 26e8e47f03..19441bade3 100644 --- a/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs +++ b/Content.Shared/Stunnable/SharedStunSystem.Knockdown.cs @@ -37,7 +37,6 @@ public abstract partial class SharedStunSystem [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; - [Dependency] private readonly StandingStateSystem _standingState = default!; public static readonly ProtoId KnockdownAlert = "Knockdown"; @@ -58,15 +57,11 @@ public abstract partial class SharedStunSystem SubscribeLocalEvent(OnRefreshFriction); SubscribeLocalEvent(OnKnockedTileFriction); - // DoAfter event subscriptions - SubscribeLocalEvent(OnStandDoAfter); - // Knockdown Extenders SubscribeLocalEvent(OnDamaged); // Handling Alternative Inputs SubscribeAllEvent(OnForceStandup); - SubscribeLocalEvent(OnKnockedDownAlert); CommandBinds.Builder .Bind(ContentKeyFunctions.ToggleKnockdown, InputCmdHandler.FromDelegate(HandleToggleKnockdown, handle: false)) @@ -84,7 +79,7 @@ public abstract partial class SharedStunSystem if (!knockedDown.AutoStand || knockedDown.DoAfterId.HasValue || knockedDown.NextUpdate > GameTiming.CurTime) continue; - TryStanding(uid); + _standing.TryStandUp(uid); } } @@ -101,7 +96,7 @@ public abstract partial class SharedStunSystem private void OnKnockInit(Entity entity, ref ComponentInit args) { // Other systems should handle dropping held items... - _standingState.Down(entity, true, false); + _standing.Down(entity, true, false); RefreshKnockedMovement(entity); } @@ -111,7 +106,7 @@ public abstract partial class SharedStunSystem entity.Comp.FrictionModifier = 1f; entity.Comp.SpeedModifier = 1f; - _standingState.Stand(entity); + _standing.Stand(entity); Alerts.ClearAlert(entity, KnockdownAlert); } @@ -246,40 +241,10 @@ public abstract partial class SharedStunSystem var stand = !component.DoAfterId.HasValue; SetAutoStand(playerEnt, stand); - if (!stand || !TryStanding(playerEnt)) + if (!stand || !_standing.TryStandUp(playerEnt)) CancelKnockdownDoAfter((playerEnt, component)); } - public bool TryStanding(Entity entity) - { - // If we aren't knocked down or can't be knocked down, then we did technically succeed in standing up - if (!Resolve(entity, ref entity.Comp1, ref entity.Comp2, false)) - return true; - - if (!TryStand((entity.Owner, entity.Comp1))) - return false; - - var ev = new GetStandUpTimeEvent(entity.Comp2.StandTime); - RaiseLocalEvent(entity, ref ev); - - var doAfterArgs = new DoAfterArgs(EntityManager, entity, ev.DoAfterTime, new TryStandDoAfterEvent(), entity, entity) - { - BreakOnDamage = true, - DamageThreshold = 5, - CancelDuplicate = true, - RequireCanInteract = false, - BreakOnHandChange = true - }; - - // If we try standing don't try standing again - if (!DoAfter.TryStartDoAfter(doAfterArgs, out var doAfterId)) - return false; - - entity.Comp1.DoAfterId = doAfterId.Value.Index; - DirtyField(entity, entity.Comp1, nameof(KnockedDownComponent.DoAfterId)); - return true; - } - /// /// A variant of used when we're actually trying to stand. /// Main difference is this one affects autostand datafields and also displays popups. @@ -308,130 +273,12 @@ public abstract partial class SharedStunSystem return !ev.Cancelled; } - private bool StandingBlocked(Entity entity) - { - if (!TryStand(entity)) - return true; - - if (!IntersectingStandingColliders(entity.Owner)) - return false; - - _popup.PopupClient(Loc.GetString("knockdown-component-stand-no-room"), entity, entity, PopupType.SmallCaution); - SetAutoStand(entity.Owner); - return true; - - } - private void OnForceStandup(ForceStandUpEvent msg, EntitySessionEventArgs args) { if (args.SenderSession.AttachedEntity is not {} user) return; - ForceStandUp(user); - } - - public void ForceStandUp(Entity entity) - { - if (!Resolve(entity, ref entity.Comp, false)) - return; - - // That way if we fail to stand, the game will try to stand for us when we are able to - SetAutoStand(entity, true); - - if (!HasComp(entity) || StandingBlocked((entity, entity.Comp))) - return; - - if (!_hands.TryGetEmptyHand(entity.Owner, out _)) - return; - - if (!TryForceStand(entity.Owner)) - return; - - // If we have a DoAfter, cancel it - CancelKnockdownDoAfter(entity); - // Remove Component - RemComp(entity); - - _adminLogger.Add(LogType.Stamina, LogImpact.Medium, $"{ToPrettyString(entity):user} has force stood up from knockdown."); - } - - private void OnKnockedDownAlert(Entity entity, ref KnockedDownAlertEvent args) - { - if (args.Handled) - return; - - // If we're already trying to stand, or we fail to stand try forcing it - if (!TryStanding(entity.Owner)) - ForceStandUp((entity.Owner, entity.Comp)); - - args.Handled = true; - } - - private bool TryForceStand(Entity entity) - { - // Can't force stand if no Stamina. - if (!Resolve(entity, ref entity.Comp, false)) - return false; - - var ev = new TryForceStandEvent(entity.Comp.ForceStandStamina); - RaiseLocalEvent(entity, ref ev); - - if (!Stamina.TryTakeStamina(entity, ev.Stamina, entity.Comp, visual: true)) - { - _popup.PopupClient(Loc.GetString("knockdown-component-pushup-failure"), entity, entity, PopupType.MediumCaution); - return false; - } - - _popup.PopupClient(Loc.GetString("knockdown-component-pushup-success"), entity, entity); - _audio.PlayPredicted(entity.Comp.ForceStandSuccessSound, entity.Owner, entity.Owner, AudioParams.Default.WithVariation(0.025f).WithVolume(5f)); - - return true; - } - - /// - /// Checks if standing would cause us to collide with something and potentially get stuck. - /// Returns true if we will collide with something, and false if we will not. - /// - private bool IntersectingStandingColliders(Entity entity) - { - if (!Resolve(entity, ref entity.Comp)) - return false; - - var intersecting = _physics.GetEntitiesIntersectingBody(entity, StandingStateSystem.StandingCollisionLayer, false); - - if (intersecting.Count == 0) - return false; - - var fixtureQuery = GetEntityQuery(); - var xformQuery = GetEntityQuery(); - - var ourAABB = _entityLookup.GetAABBNoContainer(entity, entity.Comp.LocalPosition, entity.Comp.LocalRotation); - - foreach (var ent in intersecting) - { - if (!fixtureQuery.TryGetComponent(ent, out var fixtures)) - continue; - - if (!xformQuery.TryComp(ent, out var xformComp)) - continue; - - var xform = new Transform(xformComp.LocalPosition, xformComp.LocalRotation); - - foreach (var fixture in fixtures.Fixtures.Values) - { - if (!fixture.Hard || (fixture.CollisionMask & StandingStateSystem.StandingCollisionLayer) != StandingStateSystem.StandingCollisionLayer) - continue; - - for (var i = 0; i < fixture.Shape.ChildCount; i++) - { - var intersection = fixture.Shape.ComputeAABB(xform, i).IntersectPercentage(ourAABB); - if (intersection > 0.1f) - return true; - } - } - } - - return false; + _standing.TryStandUp(user); } #endregion @@ -466,25 +313,6 @@ public abstract partial class SharedStunSystem #endregion - #region DoAfter - - private void OnStandDoAfter(Entity entity, ref TryStandDoAfterEvent args) - { - entity.Comp.DoAfterId = null; - - if (args.Cancelled || StandingBlocked(entity)) - { - DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.DoAfterId)); - return; - } - - RemComp(entity); - - _adminLogger.Add(LogType.Stamina, LogImpact.Medium, $"{ToPrettyString(entity):user} has stood up from knockdown."); - } - - #endregion - #region Movement and Friction private void RefreshKnockedMovement(Entity ent) diff --git a/Content.Shared/Stunnable/SharedStunSystem.cs b/Content.Shared/Stunnable/SharedStunSystem.cs index bffa1a75c4..f27bae9ee4 100644 --- a/Content.Shared/Stunnable/SharedStunSystem.cs +++ b/Content.Shared/Stunnable/SharedStunSystem.cs @@ -39,6 +39,7 @@ public abstract partial class SharedStunSystem : EntitySystem [Dependency] protected readonly SharedDoAfterSystem DoAfter = default!; [Dependency] protected readonly SharedStaminaSystem Stamina = default!; [Dependency] private readonly StatusEffectsSystem _status = default!; + [Dependency] private readonly SharedStandingStateSystem _standing = default!; public override void Initialize() { @@ -218,7 +219,7 @@ public abstract partial class SharedStunSystem : EntitySystem if (drop) { var ev = new DropHandItemsEvent(); - RaiseLocalEvent(entity, ref ev); + RaiseLocalEvent(entity, ev); } // Only update Autostand value if it's our first time being knocked down... diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs index c7428c057e..29a0495b1e 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Ballistic.cs @@ -16,7 +16,6 @@ public abstract partial class SharedGunSystem { [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; // 🌟Starlight🌟 protected virtual void InitializeBallistic() @@ -198,13 +197,13 @@ public abstract partial class SharedGunSystem { var firstAmmo = component.Entities[^1]; if (TryComp(firstAmmo, out var meta) && meta.EntityPrototype?.ID != null && - _prototypeManager.TryIndex(meta.EntityPrototype.ID, out var entity)) + ProtoManager.TryIndex(meta.EntityPrototype.ID, out var entity)) { ammoTypeName = entity.Name; } } - else if (component.UnspawnedCount > 0 && component.Proto != null && _prototypeManager.TryIndex(component.Proto, out EntityPrototype? proto)) + else if (component.UnspawnedCount > 0 && component.Proto != null && ProtoManager.TryIndex(component.Proto, out EntityPrototype? proto)) { ammoTypeName = proto.Name; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index 3a0c4d255e..f72d4f4c55 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -75,7 +75,6 @@ public abstract partial class SharedGunSystem : EntitySystem [Dependency] protected readonly ThrowingSystem ThrowingSystem = default!; [Dependency] private readonly UseDelaySystem _useDelay = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - [Dependency] private readonly SharedHandsSystem _hands = default!; private const float InteractNextFire = 0.3f; private const double SafetyNextFire = 0.5; @@ -291,7 +290,8 @@ public abstract partial class SharedGunSystem : EntitySystem gun.ShootCoordinates = toCoordinates; AttemptShoot(user, gunUid, gun); gun.ShotCounter = 0; - gun.Target = target; + if (target.HasValue) + gun.Targets = new HashSet{target.Value}; DirtyField(gunUid, gun, nameof(GunComponent.ShotCounter)); } diff --git a/Content.Shared/Zombies/ZombieComponent.cs b/Content.Shared/Zombies/ZombieComponent.cs index 9fe7378b5a..234da78eab 100644 --- a/Content.Shared/Zombies/ZombieComponent.cs +++ b/Content.Shared/Zombies/ZombieComponent.cs @@ -96,6 +96,8 @@ public sealed partial class ZombieComponent : Component [DataField("emoteId")] public ProtoId? EmoteSoundsId = "Zombie"; + public EmoteSoundsPrototype? EmoteSounds; + [DataField("nextTick", customTypeSerializer:typeof(TimeOffsetSerializer))] public TimeSpan NextTick; diff --git a/Content.Shared/_Sunrise/Animations/EmoteAnimationComponent.cs b/Content.Shared/_Sunrise/Animations/EmoteAnimationComponent.cs index 54d900aa34..7717bf7ba3 100644 --- a/Content.Shared/_Sunrise/Animations/EmoteAnimationComponent.cs +++ b/Content.Shared/_Sunrise/Animations/EmoteAnimationComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.Actions; +using Content.Shared.Chat.Prototypes; using Robust.Shared.GameStates; using Robust.Shared.Serialization; @@ -27,3 +28,17 @@ public sealed partial class EmoteActionEvent : InstantActionEvent [ViewVariables, DataField("emote", readOnly: true, required: true)] public string Emote = default!; }; + +public sealed class AnimationEmoteAttemptEvent : CancellableEntityEventArgs +{ + public AnimationEmoteAttemptEvent(EntityUid uid, EmotePrototype emote) + { + Uid = uid; + Emote = emote; + } + + public EntityUid Uid { get; } + + [ViewVariables, DataField("emote", readOnly: true, required: true)] + public EmotePrototype Emote = default!; +} diff --git a/Content.Shared/_Sunrise/BloodCult/DeconvertCultist.cs b/Content.Shared/_Sunrise/BloodCult/DeconvertCultist.cs index 9230dd2387..31c7c380f5 100644 --- a/Content.Shared/_Sunrise/BloodCult/DeconvertCultist.cs +++ b/Content.Shared/_Sunrise/BloodCult/DeconvertCultist.cs @@ -39,7 +39,7 @@ public sealed partial class DeconvertCultist : EntityEffect return; args.EntityManager.System() - .TryParalyze(uid, TimeSpan.FromSeconds(5f), true); + .TryAddParalyzeDuration(uid, TimeSpan.FromSeconds(5f)); var target = Identity.Name(uid, args.EntityManager); args.EntityManager.System() .PopupEntity(Loc.GetString("holy-water-started-converting", ("target", target)), uid); diff --git a/Content.Shared/_Sunrise/Carrying/SharedCarryingSystem.cs b/Content.Shared/_Sunrise/Carrying/SharedCarryingSystem.cs index 72ebb7fad5..ba01e091b0 100644 --- a/Content.Shared/_Sunrise/Carrying/SharedCarryingSystem.cs +++ b/Content.Shared/_Sunrise/Carrying/SharedCarryingSystem.cs @@ -26,7 +26,7 @@ using Content.Shared.Climbing.Events; using Content.Shared.Buckle.Components; using Content.Shared.Movement.Systems; using Content.Shared.Coordinates; -using Content.Shared._Sunrise.Felinid; +using Content.Shared.Hands.EntitySystems; namespace Content.Shared._Sunrise.Carrying; @@ -54,6 +54,8 @@ public sealed class SharedCarryingSystem : EntitySystem [Dependency] private readonly SharedStandingStateSystem _standingState = default!; [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly MovementSpeedModifierSystem _movementSpeed = default!; + [Dependency] private readonly SharedHandsSystem _handsSystem = default!; + public override void Initialize() { base.Initialize(); @@ -152,7 +154,7 @@ public sealed class SharedCarryingSystem : EntitySystem if (TryComp(carried, out var mobState) && mobState.CurrentState != MobState.Alive) length /= 2f; - if (length >= TimeSpan.FromSeconds(MaxCarryTime) || HasComp(carrier)) + if (length >= TimeSpan.FromSeconds(MaxCarryTime)) { _popupSystem.PopupPredicted(Loc.GetString("carry-too-heavy"), carried, carrier, PopupType.SmallCaution); return; @@ -338,10 +340,7 @@ public sealed class SharedCarryingSystem : EntitySystem if (HasComp(carrier) || HasComp(carried)) return false; - if (!TryComp(carrier, out var hands)) - return false; - - if (hands.CountFreeHands() < carriedComp.FreeHandsRequired) + if (_handsSystem.CountFreeHands(carrier) < carriedComp.FreeHandsRequired) return false; return true; diff --git a/Content.Shared/_Sunrise/Disease/SharedVaccinatorSystem.cs b/Content.Shared/_Sunrise/Disease/SharedVaccinatorSystem.cs index 4c662f1d22..77e97af965 100644 --- a/Content.Shared/_Sunrise/Disease/SharedVaccinatorSystem.cs +++ b/Content.Shared/_Sunrise/Disease/SharedVaccinatorSystem.cs @@ -22,7 +22,6 @@ namespace Content.Shared.Chemistry.EntitySystems; /// public abstract class SharedVaccinatorSystem : EntitySystem { - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -123,7 +122,7 @@ public abstract class SharedVaccinatorSystem : EntitySystem comp.MixingSoundEntity = _audio.PlayPvs(comp.MixingSound, entity, comp.MixingSound?.Params.WithLoop(true)); } catch { } - comp.MixTimeEnd = _timing.CurTime + comp.MixDuration; + comp.MixTimeEnd = _gameTiming.CurTime + comp.MixDuration; _appearance.SetData(entity, SolutionContainerMixerVisuals.Mixing, true); Dirty(uid, comp); } @@ -179,7 +178,7 @@ public abstract class SharedVaccinatorSystem : EntitySystem if (!comp.Mixing) continue; - if (_timing.CurTime < comp.MixTimeEnd) + if (_gameTiming.CurTime < comp.MixTimeEnd) continue; FinishMix((uid, comp)); diff --git a/Content.Shared/_Sunrise/Felinid/FelinidComponent.cs b/Content.Shared/_Sunrise/Felinid/FelinidComponent.cs deleted file mode 100644 index d70b3a5062..0000000000 --- a/Content.Shared/_Sunrise/Felinid/FelinidComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Content.Shared.Damage; -using Robust.Shared.Audio; -using Robust.Shared.GameStates; - -namespace Content.Shared._Sunrise.Felinid; - -[RegisterComponent, NetworkedComponent] -public sealed partial class FelinidComponent : Component -{ -} diff --git a/Content.Shared/_Sunrise/Paint/PaintRemoverSystem.cs b/Content.Shared/_Sunrise/Paint/PaintRemoverSystem.cs index b6052e039f..362267e87b 100644 --- a/Content.Shared/_Sunrise/Paint/PaintRemoverSystem.cs +++ b/Content.Shared/_Sunrise/Paint/PaintRemoverSystem.cs @@ -33,7 +33,7 @@ public sealed class PaintRemoverSystem : SharedPaintSystem if (args.Handled) return; - if (!args.CanReach || args.Target is not { Valid: true } target || !HasComp(target)) + if (!args.CanReach || args.Target is not { Valid: true } target || !HasComp(target)) return; _doAfter.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, component.CleanDelay, new PaintRemoverDoAfterEvent(), uid, args.Target, uid) @@ -54,14 +54,14 @@ public sealed class PaintRemoverSystem : SharedPaintSystem if (args.Target is not { Valid: true } target) return; - if (!TryComp(target, out PaintedComponent? paint)) + if (!TryComp(target, out SprayPaintedComponent? paint)) return; paint.Enabled = false; _audio.PlayPredicted(component.Sound, target, args.User); _popup.PopupClient(Loc.GetString("paint-removed", ("target", target)), args.User, args.User, PopupType.Medium); _appearanceSystem.SetData(target, PaintVisuals.Painted, false); - RemComp(target); + RemComp(target); Dirty(target, paint); args.Handled = true; diff --git a/Content.Shared/_Sunrise/Paint/PaintedComponent.cs b/Content.Shared/_Sunrise/Paint/PaintedComponent.cs index 023221b317..8e30bc4a0a 100644 --- a/Content.Shared/_Sunrise/Paint/PaintedComponent.cs +++ b/Content.Shared/_Sunrise/Paint/PaintedComponent.cs @@ -7,7 +7,7 @@ namespace Content.Shared._Sunrise.Paint; /// Component applied to target entity when painted. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class PaintedComponent : Component +public sealed partial class SprayPaintedComponent : Component { /// /// Color of the paint. diff --git a/Content.Shared/_Sunrise/Paint/SharedPaintSystem.cs b/Content.Shared/_Sunrise/Paint/SharedPaintSystem.cs index 3f684ce47f..a58b033f06 100644 --- a/Content.Shared/_Sunrise/Paint/SharedPaintSystem.cs +++ b/Content.Shared/_Sunrise/Paint/SharedPaintSystem.cs @@ -5,7 +5,7 @@ /// public abstract class SharedPaintSystem : EntitySystem { - public virtual void UpdateAppearance(EntityUid uid, PaintedComponent? component = null) + public virtual void UpdateAppearance(EntityUid uid, SprayPaintedComponent? component = null) { } } diff --git a/Content.Shared/_Sunrise/Radials/Systems/SharedRadialSystem.cs b/Content.Shared/_Sunrise/Radials/Systems/SharedRadialSystem.cs index 6530742492..89f437173f 100644 --- a/Content.Shared/_Sunrise/Radials/Systems/SharedRadialSystem.cs +++ b/Content.Shared/_Sunrise/Radials/Systems/SharedRadialSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.ActionBlocker; using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; using Content.Shared.Inventory.VirtualItem; using Robust.Shared.Containers; @@ -11,6 +12,7 @@ public abstract class SharedRadialSystem : EntitySystem [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; [Dependency] protected readonly SharedContainerSystem ContainerSystem = default!; + [Dependency] private readonly SharedHandsSystem _handsSystem = default!; public override void Initialize() { @@ -75,7 +77,7 @@ public abstract class SharedRadialSystem : EntitySystem EntityUid? @using = null; if (TryComp(user, out HandsComponent? hands) && (force || _actionBlockerSystem.CanUseHeldEntity(user, target))) { - @using = hands.ActiveHandEntity; + @using = _handsSystem.GetActiveItem(user); // Check whether the "Held" entity is a virtual pull entity. If yes, set that as the entity being "Used". // This allows you to do things like buckle a dragged person onto a surgery table, without click-dragging diff --git a/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs b/Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs similarity index 91% rename from Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs rename to Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs index 38a926d594..06ebb52b6e 100644 --- a/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs +++ b/Content.Shared/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs @@ -1,15 +1,14 @@ -using Content.Server.Chemistry.Components; -using Content.Server.Popups; -using Content.Shared._Sunrise.SolutionRegenerationSwitcher; +using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reagent; +using Content.Shared.Popups; -namespace Content.Server._Sunrise.SolutionRegenerationSwitcher +namespace Content.Shared._Sunrise.SolutionRegenerationSwitcher { public sealed class SolutionRegenerationSwitcherSystem : SharedSolutionRegenerationSwitcherSystem { [Dependency] private readonly SharedSolutionContainerSystem _solutionSystem = null!; - [Dependency] private readonly PopupSystem _popups = null!; + [Dependency] private readonly SharedPopupSystem _popups = null!; private ISawmill _sawmill = null!; diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml index e106f5e5c0..095304816f 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Species/felinid.yml @@ -507,7 +507,6 @@ - type: MovementSpeedModifier baseWalkSpeed: 2.5 baseSprintSpeed: 4.5 - - type: Felinid - type: Carriable - type: entity diff --git a/Resources/Prototypes/_Sunrise/Species/felinid.yml b/Resources/Prototypes/_Sunrise/Species/felinid.yml index e1fc411e4a..8d12540dc6 100644 --- a/Resources/Prototypes/_Sunrise/Species/felinid.yml +++ b/Resources/Prototypes/_Sunrise/Species/felinid.yml @@ -20,10 +20,10 @@ oldAge: 30 maxAge: 60 buttScanTexture: /Textures/_Sunrise/ButtsScans/human.png - defaultHeight: 0.80 - defaultWidth: 0.80 - maxHeight: 1 - maxWidth: 1 + defaultHeight: 1 + defaultWidth: 1 + maxHeight: 1.2 + maxWidth: 1.2 minHeight: 0.8 minWidth: 0.8