я устал, смена окончена
This commit is contained in:
parent
939076ff99
commit
fb4ef153c8
86 changed files with 217 additions and 420 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@
|
|||
MinWidth="200" />
|
||||
</BoxContainer>
|
||||
</controls:StripeBack>
|
||||
<RichTextLabel Name="PlaytimeComment" Visible="False" Access="Public" HorizontalAlignment="Center" />
|
||||
</BoxContainer>
|
||||
</PanelContainer>
|
||||
<BoxContainer Orientation="Vertical" SeparationOverride="4" Name="VoteContainer"
|
||||
|
|
|
|||
|
|
@ -106,11 +106,6 @@ public sealed class EscapeUIController : UIController, IOnStateEntered<GameplayS
|
|||
{
|
||||
_uri.OpenUri(_cfg.GetCVar(SunriseCCVars.InfoLinksDonate));
|
||||
};
|
||||
|
||||
_escapeWindow.ForumButton.OnPressed += _ =>
|
||||
{
|
||||
_uri.OpenUri(_cfg.GetCVar(CCVars.InfoLinksForum));
|
||||
};
|
||||
// Sunrise-end
|
||||
|
||||
_escapeWindow.WikiButton.OnPressed += _ =>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@
|
|||
HorizontalExpand="True"
|
||||
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
|
||||
/>
|
||||
<!-- not needed because of new emote ui system
|
||||
<ui:MenuButton
|
||||
Name="EmotesButton"
|
||||
Access="Internal"
|
||||
|
|
@ -54,7 +53,6 @@
|
|||
HorizontalExpand="True"
|
||||
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
|
||||
/>
|
||||
-->
|
||||
<ui:MenuButton
|
||||
Name="CraftingButton"
|
||||
Access="Internal"
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ namespace Content.Client._Sunrise.MarkingEffectsClient;
|
|||
public static class MarkingEffectShaders
|
||||
{
|
||||
|
||||
public static Robust.Shared.Maths.Vector3 ColorToVec(Color col)
|
||||
public static Vector3 ColorToVec(Color col)
|
||||
{
|
||||
return new Robust.Shared.Maths.Vector3(col.R, col.G, col.B);
|
||||
return new Vector3(col.R, col.G, col.B);
|
||||
}
|
||||
|
||||
public static void ApplyShaderParams(this ShaderInstance instance, MarkingEffect color, Vector2 texScale)
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public sealed class LoveVisionOverlay : Overlay
|
|||
private readonly Robust.Client.Graphics.Texture _heartTexture;
|
||||
private const string HeartTexturePath = "/Textures/_Sunrise/Interface/LoveVision/hearts.png";
|
||||
|
||||
private readonly Robust.Shared.Maths.Vector3 _gradientColor = new(1.0f, 0.3f, 0.7f); // Розово-фиолетовый
|
||||
private readonly Vector3 _gradientColor = new(1.0f, 0.3f, 0.7f); // Розово-фиолетовый
|
||||
private readonly List<HeartData> _hearts = [];
|
||||
|
||||
private struct HeartData
|
||||
|
|
|
|||
|
|
@ -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<PaintedComponent>
|
||||
public sealed class PaintedVisualizerSystem : VisualizerSystem<SprayPaintedComponent>
|
||||
{
|
||||
/// <summary>
|
||||
/// Visualizer for Paint which applies a shader and colors the entity.
|
||||
|
|
@ -24,12 +23,12 @@ namespace Content.Client._Sunrise.Paint
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PaintedComponent, HeldVisualsUpdatedEvent>(OnHeldVisualsUpdated);
|
||||
SubscribeLocalEvent<PaintedComponent, ComponentShutdown>(OnShutdown);
|
||||
SubscribeLocalEvent<PaintedComponent, EquipmentVisualsUpdatedEvent>(OnEquipmentVisualsUpdated);
|
||||
SubscribeLocalEvent<SprayPaintedComponent, HeldVisualsUpdatedEvent>(OnHeldVisualsUpdated);
|
||||
SubscribeLocalEvent<SprayPaintedComponent, ComponentShutdown>(OnShutdown);
|
||||
SubscribeLocalEvent<SprayPaintedComponent, EquipmentVisualsUpdatedEvent>(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<ShaderPrototype>(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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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<PoweredLightComponent>();
|
||||
|
|
|
|||
|
|
@ -194,8 +194,7 @@ public sealed partial class ChangelingSystem : EntitySystem
|
|||
// vomit blood
|
||||
if (random == 1)
|
||||
{
|
||||
if (TryComp<StatusEffectsComponent>(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();
|
||||
|
||||
|
|
|
|||
|
|
@ -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<string, EmotePrototype> _wordEmoteDict = FrozenDictionary<string, EmotePrototype>.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
|
||||
|
||||
|
|
|
|||
|
|
@ -975,7 +975,7 @@ public sealed partial class ChatSystem : SharedChatSystem
|
|||
return message;
|
||||
}
|
||||
|
||||
public static readonly ProtoId<ReplacementAccentPrototype> ChatSanitize_Accent = "chatsanitize_sunrise"; // Sunrise-Edit
|
||||
public static readonly ProtoId<ReplacementAccentPrototype> ChatSanitizeAccent = "chatsanitize_sunrise"; // Sunrise-Edit
|
||||
|
||||
public string SanitizeMessageReplaceWords(string message)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<EntityUid, EntityUid>? 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
|
||||
|
|
|
|||
|
|
@ -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<string> _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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -273,9 +273,10 @@ public sealed partial class MechSystem : SharedMechSystem
|
|||
return;
|
||||
}
|
||||
|
||||
if (TryComp<HandsComponent>(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);
|
||||
|
|
|
|||
|
|
@ -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<HumanoidAppearanceComponent>(entity))
|
||||
{
|
||||
_stun.TryParalyze(entity, duration ?? TimeSpan.FromSeconds(3), false);
|
||||
_stun.TryAddParalyzeDuration(entity, duration ?? TimeSpan.FromSeconds(3));
|
||||
_chat.TryEmoteWithoutChat(entity, _prototypeManager.Index<EmotePrototype>(VampireComponent.ScreamEmoteProto), true);
|
||||
}
|
||||
|
||||
|
|
@ -414,14 +415,14 @@ public sealed partial class VampireSystem
|
|||
|
||||
if (HasComp<BibleUserComponent>(target))
|
||||
{
|
||||
_stun.TryParalyze(vampire, duration ?? TimeSpan.FromSeconds(3), true);
|
||||
_stun.TryAddParalyzeDuration(vampire, duration ?? TimeSpan.FromSeconds(3));
|
||||
_chat.TryEmoteWithoutChat(vampire.Owner, _prototypeManager.Index<EmotePrototype>(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<VampireComponent> 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;
|
||||
|
|
|
|||
|
|
@ -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<ZombieComponent>(uid) || HasComp<ZombieImmuneComponent>(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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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!;
|
||||
|
|
|
|||
|
|
@ -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<EntProtoId> _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);
|
||||
|
|
|
|||
|
|
@ -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<FelinidComponent>(uid))
|
||||
if (HasComp<OwOAccentComponent>(uid))
|
||||
return;
|
||||
EnsureComp<AbductorOwoTransformatedComponent>(uid);
|
||||
_popup.PopupEntity(Loc.GetString("owo-organ-transformation"), uid, PopupType.LargeCaution);
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ public sealed class BloodCultWeaponSystem : EntitySystem
|
|||
if (HasComp<BloodCultistComponent>(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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,8 +120,8 @@ public sealed class CultBloodSpearSystem : EntitySystem
|
|||
else
|
||||
{
|
||||
if (HasComp<MobStateComponent>(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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<CuffableComponent>(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<FleshHandModComponent>(entity)))
|
||||
var item = _handsSystem.GetHeldItem((uid, null), hand);
|
||||
if (HasComp<FleshHandModComponent>(item))
|
||||
{
|
||||
QueueDel(entity);
|
||||
QueueDel(item);
|
||||
_audioSystem.PlayPvs(component.SoundMutation, uid, component.SoundMutation.Params);
|
||||
}
|
||||
}
|
||||
|
|
@ -214,7 +216,6 @@ public sealed partial class FleshCultSystem
|
|||
RemCompDeferred<FlashImmunityComponent>(uid);
|
||||
RemCompDeferred<RespiratorImmunityComponent>(uid);
|
||||
RemCompDeferred<PressureImmunityComponent>(uid);
|
||||
RemCompDeferred<FlashImmunityComponent>(uid);
|
||||
}
|
||||
|
||||
private void RemoveCollectiveMind(EntityUid uid)
|
||||
|
|
|
|||
|
|
@ -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<ShuttleComponent>(rootUid.Value.Owner, out var shuttleComp))
|
||||
return;
|
||||
|
||||
var target = _station.GetLargestGrid(Comp<StationDataComponent>(uid));
|
||||
if (!TryComp<StationDataComponent>(uid, out var stationData))
|
||||
return;
|
||||
|
||||
var target = _station.GetLargestGrid((uid, stationData));
|
||||
|
||||
if (target == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Server.Speech;
|
||||
using Content.Shared.Speech;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._Sunrise.Misc.ShiftedAsciiTableAccent;
|
||||
|
|
|
|||
|
|
@ -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<PaintedComponent>(target) || HasComp<RandomSpriteComponent>(target))
|
||||
if (HasComp<SprayPaintedComponent>(target) || HasComp<RandomSpriteComponent>(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<PaintedComponent>(target, out PaintedComponent? paint);
|
||||
EnsureComp<SprayPaintedComponent>(target, out SprayPaintedComponent? paint);
|
||||
EnsureComp<AppearanceComponent>(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<PaintedComponent>(slotEnt.Value) || entity.Comp.Blacklist != null &&
|
||||
if (HasComp<SprayPaintedComponent>(slotEnt.Value) || entity.Comp.Blacklist != null &&
|
||||
_whitelist.IsValid(entity.Comp.Blacklist,
|
||||
slotEnt.Value)
|
||||
|| HasComp<RandomSpriteComponent>(slotEnt.Value) ||
|
||||
|
|
@ -145,7 +142,7 @@ public sealed class PaintSystem : SharedPaintSystem
|
|||
slotEnt.Value))
|
||||
return;
|
||||
|
||||
EnsureComp<PaintedComponent>(slotEnt.Value, out PaintedComponent? slotpaint);
|
||||
EnsureComp<SprayPaintedComponent>(slotEnt.Value, out SprayPaintedComponent? slotpaint);
|
||||
EnsureComp<AppearanceComponent>(slotEnt.Value);
|
||||
slotpaint.Color = entity.Comp.Color;
|
||||
_appearanceSystem.SetData(slotEnt.Value, PaintVisuals.Painted, true);
|
||||
|
|
|
|||
|
|
@ -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<GameMapPrototype>(station, out var gameMap))
|
||||
if (!_protoManager.TryIndex<GameMapPrototype>(station, out var gameMap))
|
||||
{
|
||||
_sawmill.Warning("No Prison map found, skipping setup.");
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -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<Sex, EmoteSoundsPrototype>), required: true)]
|
||||
public Dictionary<Sex, string> Vocal;
|
||||
public Dictionary<Sex, ProtoId<EmoteSoundsPrototype>> Vocal;
|
||||
|
||||
[DataField]
|
||||
public HashSet<string> AddedEmotes = new();
|
||||
|
||||
[DataField(customTypeSerializer: typeof(PrototypeIdValueDictionarySerializer<Sex, EmoteSoundsPrototype>))]
|
||||
public Dictionary<Sex, string>? PreviousVocal;
|
||||
public Dictionary<Sex, ProtoId<EmoteSoundsPrototype>>? PreviousVocal;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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<StationDataComponent>(ev.Station));
|
||||
if (!TryComp<StationDataComponent>(ev.Station, out var stationData))
|
||||
return;
|
||||
|
||||
var target = _station.GetLargestGrid((ev.Station, stationData));
|
||||
|
||||
if (target == null)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ public sealed class VigersRaySystem : EntitySystem
|
|||
var statusEffectQuery = EntityQueryEnumerator<StatusEffectsComponent>();
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SpamEmitSoundComponent>(ent);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public sealed class PlantAnalyzerLocalizationHelper
|
|||
return ContentLocalizationManager.FormatList(locStrings);
|
||||
}
|
||||
|
||||
public static (string Singular, string Plural) ProduceToLocalizedStrings(List<string> ids, IPrototypeManager protMan)
|
||||
public static (string Singular, string Plural) ProduceToLocalizedStrings(List<EntProtoId> ids, IPrototypeManager protMan)
|
||||
{
|
||||
if (ids.Count == 0)
|
||||
return ("", "");
|
||||
|
|
@ -46,7 +46,7 @@ public sealed class PlantAnalyzerLocalizationHelper
|
|||
List<string> pluralStrings = [];
|
||||
foreach (var id in ids)
|
||||
{
|
||||
var singular = protMan.TryIndex<EntityPrototype>(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);
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class PlantAnalyzerProduceData(int yield, float potency, List<string> chemicals, List<string> produce, List<Gas> exudeGasses, bool seedless)
|
||||
public sealed class PlantAnalyzerProduceData(int yield, float potency, List<string> chemicals, List<EntProtoId> produce, List<Gas> exudeGasses, bool seedless)
|
||||
{
|
||||
public int Yield = yield;
|
||||
public string Potency = ObscurePotency(potency);
|
||||
public List<string> Chemicals = chemicals;
|
||||
public List<string> Produce = produce;
|
||||
public List<EntProtoId> Produce = produce;
|
||||
public List<Gas> ExudeGasses = exudeGasses;
|
||||
public bool Seedless = seedless;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
using Content.Shared.Roles;
|
||||
|
||||
namespace Content.Shared.Changeling;
|
||||
|
||||
/// <summary>
|
||||
/// The Mindrole for Changeling Antags
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class ChangelingRoleComponent : BaseMindRoleComponent;
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
|||
/// </summary>
|
||||
[DataField]
|
||||
public bool InjectOnly = false;
|
||||
|
||||
|
||||
// Sunrise-Start
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -72,4 +73,4 @@ public sealed partial class HyposprayComponent : Component
|
|||
public sealed partial class HyposprayDoAfterEvent : SimpleDoAfterEvent
|
||||
{
|
||||
// Sunrise-End
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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<AppearanceComponent> _appearanceQuery;
|
||||
private EntityQuery<DamageableComponent> _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
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -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<IPrototypeManager>().Index<SpeciesPrototype>(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<IRobustRandom>();
|
||||
var speciesPrototype = IoCManager.Resolve<IPrototypeManager>().Index<SpeciesPrototype>(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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -206,45 +206,10 @@ public sealed class SmartEquipSystem : EntitySystem
|
|||
|
||||
_slots.TryInsertFromHand(slotItem, toInsertTo, uid, hands, excludeUserAudio: true);
|
||||
return;
|
||||
// Sunrise-start
|
||||
} else if (TryComp<StorageComponent>(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<StackComponent>(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))
|
||||
|
|
|
|||
|
|
@ -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<InteractionVerb> args)
|
||||
{
|
||||
// Sunrise-start. Предотвращаем появление стандартного верба подбора для фелинидов
|
||||
if (HasComp<FelinidComponent>(uid))
|
||||
return;
|
||||
// Sunrise-end
|
||||
if (args.Hands == null ||
|
||||
args.Using != null ||
|
||||
!args.CanAccess ||
|
||||
|
|
|
|||
|
|
@ -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
|
|||
/// </summary>
|
||||
[DataField]
|
||||
public SoundSpecifier? HealingEndSound = null;
|
||||
|
||||
// Sunrise-Start
|
||||
[DataField]
|
||||
public bool SolutionDrain = false;
|
||||
|
||||
[DataField]
|
||||
public List<ReagentQuantity> ReagentsToDrain = new();
|
||||
// Sunrise-End
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<SolutionContainerManagerComponent>(uid, out var solutionManager))
|
||||
if (healing.Comp.SolutionDrain && TryComp<SolutionContainerManagerComponent>(healing.Owner, out var solutionManager))
|
||||
{
|
||||
Entity<SolutionComponent>? 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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<EmotePrototype>]
|
||||
private const string EmoteFallOnNeckProto = "FallOnNeck";
|
||||
private static ProtoId<EmotePrototype> EmoteFallOnNeckProto = "FallOnNeck";
|
||||
// Sunrise-End
|
||||
|
||||
private EntityQuery<KnockedDownComponent> _knockedDownQuery;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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<AlertPrototype> KnockdownAlert = "Knockdown";
|
||||
|
||||
|
|
@ -58,15 +57,11 @@ public abstract partial class SharedStunSystem
|
|||
SubscribeLocalEvent<KnockedDownComponent, RefreshFrictionModifiersEvent>(OnRefreshFriction);
|
||||
SubscribeLocalEvent<KnockedDownComponent, TileFrictionEvent>(OnKnockedTileFriction);
|
||||
|
||||
// DoAfter event subscriptions
|
||||
SubscribeLocalEvent<KnockedDownComponent, TryStandDoAfterEvent>(OnStandDoAfter);
|
||||
|
||||
// Knockdown Extenders
|
||||
SubscribeLocalEvent<KnockedDownComponent, DamageChangedEvent>(OnDamaged);
|
||||
|
||||
// Handling Alternative Inputs
|
||||
SubscribeAllEvent<ForceStandUpEvent>(OnForceStandup);
|
||||
SubscribeLocalEvent<KnockedDownComponent, KnockedDownAlertEvent>(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<KnockedDownComponent> 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<KnockedDownComponent?, StandingStateComponent?> 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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// A variant of <see cref="CanStand"/> 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<KnockedDownComponent> 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<KnockedDownComponent?> 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<StandingStateComponent>(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<KnockedDownComponent>(entity);
|
||||
|
||||
_adminLogger.Add(LogType.Stamina, LogImpact.Medium, $"{ToPrettyString(entity):user} has force stood up from knockdown.");
|
||||
}
|
||||
|
||||
private void OnKnockedDownAlert(Entity<KnockedDownComponent> 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<StaminaComponent?> 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;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
private bool IntersectingStandingColliders(Entity<TransformComponent?> 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<FixturesComponent>();
|
||||
var xformQuery = GetEntityQuery<TransformComponent>();
|
||||
|
||||
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<KnockedDownComponent> entity, ref TryStandDoAfterEvent args)
|
||||
{
|
||||
entity.Comp.DoAfterId = null;
|
||||
|
||||
if (args.Cancelled || StandingBlocked(entity))
|
||||
{
|
||||
DirtyField(entity, entity.Comp, nameof(KnockedDownComponent.DoAfterId));
|
||||
return;
|
||||
}
|
||||
|
||||
RemComp<KnockedDownComponent>(entity);
|
||||
|
||||
_adminLogger.Add(LogType.Stamina, LogImpact.Medium, $"{ToPrettyString(entity):user} has stood up from knockdown.");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Movement and Friction
|
||||
|
||||
private void RefreshKnockedMovement(Entity<KnockedDownComponent> ent)
|
||||
|
|
|
|||
|
|
@ -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...
|
||||
|
|
|
|||
|
|
@ -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<MetaDataComponent>(firstAmmo, out var meta) && meta.EntityPrototype?.ID != null &&
|
||||
_prototypeManager.TryIndex<EntityPrototype>(meta.EntityPrototype.ID, out var entity))
|
||||
ProtoManager.TryIndex<EntityPrototype>(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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<EntityUid>{target.Value};
|
||||
DirtyField(gunUid, gun, nameof(GunComponent.ShotCounter));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ public sealed partial class ZombieComponent : Component
|
|||
[DataField("emoteId")]
|
||||
public ProtoId<EmoteSoundsPrototype>? EmoteSoundsId = "Zombie";
|
||||
|
||||
public EmoteSoundsPrototype? EmoteSounds;
|
||||
|
||||
[DataField("nextTick", customTypeSerializer:typeof(TimeOffsetSerializer))]
|
||||
public TimeSpan NextTick;
|
||||
|
||||
|
|
|
|||
|
|
@ -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!;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public sealed partial class DeconvertCultist : EntityEffect
|
|||
return;
|
||||
|
||||
args.EntityManager.System<SharedStunSystem>()
|
||||
.TryParalyze(uid, TimeSpan.FromSeconds(5f), true);
|
||||
.TryAddParalyzeDuration(uid, TimeSpan.FromSeconds(5f));
|
||||
var target = Identity.Name(uid, args.EntityManager);
|
||||
args.EntityManager.System<SharedPopupSystem>()
|
||||
.PopupEntity(Loc.GetString("holy-water-started-converting", ("target", target)), uid);
|
||||
|
|
|
|||
|
|
@ -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<MobStateComponent>(carried, out var mobState) && mobState.CurrentState != MobState.Alive)
|
||||
length /= 2f;
|
||||
|
||||
if (length >= TimeSpan.FromSeconds(MaxCarryTime) || HasComp<FelinidComponent>(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<BeingCarriedComponent>(carrier) || HasComp<BeingCarriedComponent>(carried))
|
||||
return false;
|
||||
|
||||
if (!TryComp<HandsComponent>(carrier, out var hands))
|
||||
return false;
|
||||
|
||||
if (hands.CountFreeHands() < carriedComp.FreeHandsRequired)
|
||||
if (_handsSystem.CountFreeHands(carrier) < carriedComp.FreeHandsRequired)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ namespace Content.Shared.Chemistry.EntitySystems;
|
|||
/// </summary>
|
||||
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));
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ public sealed class PaintRemoverSystem : SharedPaintSystem
|
|||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!args.CanReach || args.Target is not { Valid: true } target || !HasComp<PaintedComponent>(target))
|
||||
if (!args.CanReach || args.Target is not { Valid: true } target || !HasComp<SprayPaintedComponent>(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<PaintedComponent>(target);
|
||||
RemComp<SprayPaintedComponent>(target);
|
||||
Dirty(target, paint);
|
||||
|
||||
args.Handled = true;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace Content.Shared._Sunrise.Paint;
|
|||
/// Component applied to target entity when painted.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
public sealed partial class PaintedComponent : Component
|
||||
public sealed partial class SprayPaintedComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Color of the paint.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
/// </summary>
|
||||
public abstract class SharedPaintSystem : EntitySystem
|
||||
{
|
||||
public virtual void UpdateAppearance(EntityUid uid, PaintedComponent? component = null)
|
||||
public virtual void UpdateAppearance(EntityUid uid, SprayPaintedComponent? component = null)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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!;
|
||||
|
||||
|
|
@ -507,7 +507,6 @@
|
|||
- type: MovementSpeedModifier
|
||||
baseWalkSpeed: 2.5
|
||||
baseSprintSpeed: 4.5
|
||||
- type: Felinid
|
||||
- type: Carriable
|
||||
|
||||
- type: entity
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue