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