diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 7f261f5df2d..6a2f67dc2c5 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -65,6 +65,7 @@ private void OnEntityTargetHandleState(EntityUid uid, EntityTargetActionComponen component.Whitelist = state.Whitelist; component.CanTargetSelf = state.CanTargetSelf; + component.IgnoreContainer = state.IgnoreContainer; // Sunrise-Edit BaseHandleState(uid, component, state); } diff --git a/Content.Client/Silicons/Laws/Ui/SiliconLawMenu.xaml b/Content.Client/Silicons/Laws/Ui/SiliconLawMenu.xaml index 97f6179e459..d54ba6d2511 100644 --- a/Content.Client/Silicons/Laws/Ui/SiliconLawMenu.xaml +++ b/Content.Client/Silicons/Laws/Ui/SiliconLawMenu.xaml @@ -2,8 +2,8 @@ xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client" Title="{Loc 'laws-ui-menu-title'}" - MinSize="200 100" - SetSize="450 515"> + MinSize="700 500" + SetSize="700 500"> diff --git a/Content.Server/Chemistry/Components/SolutionRegenerationComponent.cs b/Content.Server/Chemistry/Components/SolutionRegenerationComponent.cs index 23bf6b21573..28286d600ee 100644 --- a/Content.Server/Chemistry/Components/SolutionRegenerationComponent.cs +++ b/Content.Server/Chemistry/Components/SolutionRegenerationComponent.cs @@ -1,5 +1,7 @@ using Content.Server.Chemistry.EntitySystems; +using Content.Server.Sunrise.SolutionRegenerationSwitcher; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reagent; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Chemistry.Components; @@ -8,7 +10,7 @@ namespace Content.Server.Chemistry.Components; /// Passively increases a solution's quantity of a reagent. /// [RegisterComponent, AutoGenerateComponentPause] -[Access(typeof(SolutionRegenerationSystem))] +[Access(typeof(SolutionRegenerationSystem), typeof(SolutionRegenerationSwitcherSystem))] // Sunrise-Edit public sealed partial class SolutionRegenerationComponent : Component { /// @@ -41,4 +43,12 @@ public sealed partial class SolutionRegenerationComponent : Component [DataField("nextChargeTime", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] [AutoPausedField] public TimeSpan NextRegenTime = TimeSpan.FromSeconds(0); + + // Sunrise-start + public void ChangeGenerated(ReagentQuantity reagent) + { + Generated.RemoveAllSolution(); + Generated.AddReagent(reagent); + } + // Sunrise-end } diff --git a/Content.Server/CrewManifest/CrewManifestSystem.cs b/Content.Server/CrewManifest/CrewManifestSystem.cs index e7424560159..63971a68846 100644 --- a/Content.Server/CrewManifest/CrewManifestSystem.cs +++ b/Content.Server/CrewManifest/CrewManifestSystem.cs @@ -5,11 +5,13 @@ using Content.Server.Station.Systems; using Content.Server.StationRecords; using Content.Server.StationRecords.Systems; +using Content.Shared.Actions; using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.CrewManifest; using Content.Shared.GameTicking; using Content.Shared.Roles; +using Content.Shared.Silicons.Borgs.Components; using Content.Shared.StationRecords; using Robust.Shared.Configuration; using Robust.Shared.Console; @@ -26,6 +28,7 @@ public sealed class CrewManifestSystem : EntitySystem [Dependency] private readonly EuiManager _euiManager = default!; [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; /// /// Cached crew manifest entries. The alternative is to outright @@ -46,8 +49,46 @@ public override void Initialize() SubscribeLocalEvent(OnBoundUiClose); SubscribeLocalEvent(OpenEuiFromBui); + SubscribeLocalEvent(BorgCrewManifestViewerMapInit); + SubscribeLocalEvent(OpenCrewManifest); } + // Sunrise-Start + private void BorgCrewManifestViewerMapInit(EntityUid uid, BorgCrewManifestViewerComponent component, MapInitEvent args) + { + _actions.AddAction(uid, component.ActionViewCrewManifest); + } + + private void OpenCrewManifest(EntityUid uid, BorgCrewManifestViewerComponent component, CrewManifestOpenActionEvent args) + { + if (args.Handled) + return; + + var owningStation = _stationSystem.GetOwningStation(uid); + if (owningStation == null || !TryComp(args.Performer, out var actor)) + { + return; + } + + if (!_openEuis.TryGetValue(owningStation.Value, out var euis)) + { + euis = new(); + _openEuis.Add(owningStation.Value, euis); + } + + if (euis.ContainsKey(actor.PlayerSession)) + { + CloseEui(owningStation.Value, actor.PlayerSession, uid); + } + else + { + OpenEui(owningStation.Value, actor.PlayerSession, uid); + } + + args.Handled = true; + } + // Sunrise-End + private void OnRoundRestart(RoundRestartCleanupEvent ev) { foreach (var (_, euis) in _openEuis) diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index eceb938f988..cc221e2a86e 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -99,7 +99,7 @@ damageableComponent.DamageContainerID is not null && _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager, args.User, uid.Comp.ScanDelay, new HealthAnalyzerDoAfterEvent(), uid, target: args.Target, used: uid) { - NeedHand = true, + NeedHand = args.NeedHand, // Sunrise-Edit BreakOnMove = true }); diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index 8c8ba7132bb..69e96914007 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -59,13 +59,19 @@ private void CreateGeneralRecord(EntityUid station, EntityUid player, HumanoidCh || !_prototypeManager.HasIndex(jobId)) return; + // Sunrise-Start + var name = profile.Name; if (!_inventory.TryGetSlotEntity(player, "id", out var idUid)) - return; + { + idUid = null; + name = MetaData(player).EntityName; + } + // Sunrise-End TryComp(player, out var fingerprintComponent); TryComp(player, out var dnaComponent); - CreateGeneralRecord(station, idUid.Value, profile.Name, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records); + CreateGeneralRecord(station, idUid, name, profile.Age, profile.Species, profile.Gender, jobId, fingerprintComponent?.Fingerprint, dnaComponent?.DNA, profile, records); } diff --git a/Content.Server/_Sunrise/Abilities/BorgCuffedSystem.cs b/Content.Server/_Sunrise/Abilities/BorgCuffedSystem.cs new file mode 100644 index 00000000000..d833b9504eb --- /dev/null +++ b/Content.Server/_Sunrise/Abilities/BorgCuffedSystem.cs @@ -0,0 +1,48 @@ +using Content.Shared._Sunrise.Abilities; +using Content.Shared.Actions; +using Content.Shared.Cuffs; +using Content.Shared.DoAfter; + +namespace Content.Server._Sunrise.Abilities; +public sealed class BorgCuffedSystem : EntitySystem +{ + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedCuffableSystem _cuffable = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnCuffed); + SubscribeLocalEvent(OnCuffedDoAfter); + } + + private void OnInit(EntityUid uid, BorgCuffedComponent component, ComponentInit args) + { + _actions.AddAction(uid, component.CuffActionId); + } + + private void OnCuffed(EntityUid uid, BorgCuffedComponent component, BorgCuffedActionEvent args) + { + _doAfterSystem.TryStartDoAfter(new DoAfterArgs(EntityManager ,uid, component.CuffTime, + new BorgCuffedDoAfterEvent(), uid, target: args.Target, used: uid) + { + BreakOnMove = true, + BreakOnDamage = true + }); + + args.Handled = true; + } + + private void OnCuffedDoAfter(EntityUid uid, BorgCuffedComponent component, + BorgCuffedDoAfterEvent args) + { + if (args.Handled || args.Cancelled || args.Args.Target == null) + return; + + var cuffs = Spawn(component.CableCuffsId, Transform(uid).Coordinates); + + if (!_cuffable.TryCuffingNow(args.Args.User, args.Args.Target.Value, cuffs)) + QueueDel(cuffs); + } +} diff --git a/Content.Server/_Sunrise/Abilities/FabricateCandySystem.cs b/Content.Server/_Sunrise/Abilities/FabricateCandySystem.cs new file mode 100644 index 00000000000..1565d859d84 --- /dev/null +++ b/Content.Server/_Sunrise/Abilities/FabricateCandySystem.cs @@ -0,0 +1,35 @@ +using Content.Shared._Sunrise.Abilities; +using Content.Shared.Actions; + +namespace Content.Server._Sunrise.Abilities +{ + public sealed class FabricateCandySystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnLollipop); + SubscribeLocalEvent(OnGumball); + } + + private void OnInit(EntityUid uid, FabricateCandyComponent component, ComponentInit args) + { + _actions.AddAction(uid, component.ActionFabricateLollipop); + _actions.AddAction(uid, component.ActionFabricateGumball); + } + + private void OnLollipop(EntityUid uid, FabricateCandyComponent component, FabricateLollipopActionEvent args) + { + Spawn(component.FoodLollipopId, Transform(args.Performer).Coordinates); + args.Handled = true; + } + + private void OnGumball(EntityUid uid, FabricateCandyComponent component, FabricateGumballActionEvent args) + { + Spawn(component.FoodGumballId, Transform(args.Performer).Coordinates); + args.Handled = true; + } + } +} diff --git a/Content.Server/_Sunrise/Abilities/FabricateCookieSystem.cs b/Content.Server/_Sunrise/Abilities/FabricateCookieSystem.cs new file mode 100644 index 00000000000..bc48e2a5dbe --- /dev/null +++ b/Content.Server/_Sunrise/Abilities/FabricateCookieSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared._Sunrise.Abilities; +using Content.Shared.Actions; +using Robust.Shared.Random; + +namespace Content.Server._Sunrise.Abilities +{ + public sealed class FabricateCookieSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly IRobustRandom _random = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnCookie); + } + + private void OnInit(EntityUid uid, FabricateCookieComponent component, ComponentInit args) + { + _actions.AddAction(uid, component.ActionFabricateCookie); + } + + private void OnCookie(EntityUid uid, FabricateCookieComponent component, FabricateCookieActionEvent args) + { + Spawn(_random.Pick(component.CookieList), Transform(args.Performer).Coordinates); + args.Handled = true; + } + } +} diff --git a/Content.Server/_Sunrise/Abilities/FabricateSoapSystem.cs b/Content.Server/_Sunrise/Abilities/FabricateSoapSystem.cs new file mode 100644 index 00000000000..93f1076df50 --- /dev/null +++ b/Content.Server/_Sunrise/Abilities/FabricateSoapSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared._Sunrise.Abilities; +using Content.Shared.Actions; +using Robust.Shared.Random; + +namespace Content.Server._Sunrise.Abilities +{ + public sealed class FabricateSoapSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly IRobustRandom _random = default!; + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnCookie); + } + + private void OnInit(EntityUid uid, FabricateSoapComponent component, ComponentInit args) + { + _actions.AddAction(uid, component.ActionFabricateSoap); + } + + private void OnCookie(EntityUid uid, FabricateSoapComponent component, FabricateSoapActionEvent args) + { + Spawn(_random.Pick(component.SoapList), Transform(args.Performer).Coordinates); + args.Handled = true; + } + } +} diff --git a/Content.Server/_Sunrise/GasRegeneration/GasRegenerationComponent.cs b/Content.Server/_Sunrise/GasRegeneration/GasRegenerationComponent.cs new file mode 100644 index 00000000000..be577585e29 --- /dev/null +++ b/Content.Server/_Sunrise/GasRegeneration/GasRegenerationComponent.cs @@ -0,0 +1,18 @@ +using Content.Server.Atmos; +using Content.Shared.Atmos; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.Sunrise.GasRegeneration; + +[RegisterComponent] +[Access(typeof(GasRegenerationSystem))] +public sealed partial class GasRegenerationComponent : Component +{ + [DataField("airRegenerate")] public GasMixture AirRegen { get; set; } = new GasMixture(); + + [DataField("duration"), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan Duration = TimeSpan.FromSeconds(1); + + [DataField("nextChargeTime", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] + public TimeSpan NextRegenTime = TimeSpan.FromSeconds(0); +} diff --git a/Content.Server/_Sunrise/GasRegeneration/GasRegenerationSystem.cs b/Content.Server/_Sunrise/GasRegeneration/GasRegenerationSystem.cs new file mode 100644 index 00000000000..68205a839dc --- /dev/null +++ b/Content.Server/_Sunrise/GasRegeneration/GasRegenerationSystem.cs @@ -0,0 +1,38 @@ +using Content.Server.Atmos.Components; +using Content.Server.Atmos.EntitySystems; +using Robust.Shared.Timing; + +namespace Content.Server.Sunrise.GasRegeneration; + +public sealed class GasRegenerationSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnUnpaused); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var gasRegen, out var gasTank)) + { + if (_timing.CurTime < gasRegen.NextRegenTime) + continue; + + gasRegen.NextRegenTime = _timing.CurTime + gasRegen.Duration; + _atmosphereSystem.Merge(gasTank.Air, gasRegen.AirRegen.Clone()); + } + } + + private void OnUnpaused(EntityUid uid, GasRegenerationComponent comp, ref EntityUnpausedEvent args) + { + comp.NextRegenTime += args.PausedTime; + } +} diff --git a/Content.Server/_Sunrise/InnateItem/InnateItemComponent.cs b/Content.Server/_Sunrise/InnateItem/InnateItemComponent.cs new file mode 100644 index 00000000000..5b0dd084200 --- /dev/null +++ b/Content.Server/_Sunrise/InnateItem/InnateItemComponent.cs @@ -0,0 +1,19 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; + +namespace Content.Server._Sunrise.InnateItem +{ + [RegisterComponent] + public sealed partial class InnateItemComponent : Component + { + public bool AlreadyInitialized = false; + + [ViewVariables(VVAccess.ReadOnly), + DataField("instantActions", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List InstantActions = new(); + + [ViewVariables(VVAccess.ReadOnly), + DataField("worldTargetActions", customTypeSerializer: typeof(PrototypeIdListSerializer))] + public List WorldTargetActions = new(); + } +} diff --git a/Content.Server/_Sunrise/InnateItem/InnateItemSystem.cs b/Content.Server/_Sunrise/InnateItem/InnateItemSystem.cs new file mode 100644 index 00000000000..981e8a6b6de --- /dev/null +++ b/Content.Server/_Sunrise/InnateItem/InnateItemSystem.cs @@ -0,0 +1,118 @@ +using Content.Shared.Actions; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; +using Content.Shared.Mind.Components; +using Content.Shared.UserInterface; +using Robust.Shared.Utility; + +namespace Content.Server._Sunrise.InnateItem +{ + public sealed class InnateItemSystem : EntitySystem + { + [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnMindAdded); + SubscribeLocalEvent(WorldTargetActionActivate); + SubscribeLocalEvent(InstantActionActivate); + } + + private void OnMindAdded(EntityUid uid, InnateItemComponent component, MindAddedMessage args) + { + if (!component.AlreadyInitialized) + RefreshItems(uid, component); + + component.AlreadyInitialized = true; + } + + private void RefreshItems(EntityUid uid, InnateItemComponent component) + { + foreach (var itemProto in component.WorldTargetActions) + { + var item = Spawn(itemProto); + var action = CreateWorldTargetAction(item); + _actionContainer.AddAction(uid, action); + _actionsSystem.AddAction(uid, action, uid); + } + + foreach (var itemProto in component.InstantActions) + { + var item = Spawn(itemProto); + var action = CreateInstantAction(item); + _actionContainer.AddAction(uid, action); + _actionsSystem.AddAction(uid, action, uid); + } + } + + private EntityUid CreateWorldTargetAction(EntityUid uid) + { + var action = EnsureComp(uid); + action.Event = new InnateWorldTargetActionEvent(uid); + action.Icon = new SpriteSpecifier.EntityPrototype(MetaData(uid).EntityPrototype!.ID); + action.ItemIconStyle = ItemActionIconStyle.NoItem; + action.CheckCanInteract = false; + action.CheckCanAccess = false; + action.IgnoreContainer = true; + if (TryComp(uid, out var activatableUIComponent)) + { + activatableUIComponent.RequireHands = false; + activatableUIComponent.InHandsOnly = false; + activatableUIComponent.RequireActiveHand = false; + Dirty(uid, activatableUIComponent); + } + return uid; + } + + private EntityUid CreateInstantAction(EntityUid uid) + { + var action = EnsureComp(uid); + action.Event = new InnateInstantActionEvent(uid); + action.Icon = new SpriteSpecifier.EntityPrototype(MetaData(uid).EntityPrototype!.ID); + action.CheckCanInteract = false; + if (TryComp(uid, out var activatableUIComponent)) + { + activatableUIComponent.RequireHands = false; + activatableUIComponent.InHandsOnly = false; + activatableUIComponent.RequireActiveHand = false; + Dirty(uid, activatableUIComponent); + } + return uid; + } + + private void WorldTargetActionActivate(EntityUid uid, InnateItemComponent component, InnateWorldTargetActionEvent args) + { + _interactionSystem.InteractUsing(args.Performer, args.Item, args.Target, Transform(args.Target).Coordinates, + false, false, false); + } + + private void InstantActionActivate(EntityUid uid, InnateItemComponent component, InnateInstantActionEvent args) + { + var ev = new UseInHandEvent(args.Performer); + RaiseLocalEvent(args.Item, ev); + } + } + + public sealed partial class InnateWorldTargetActionEvent : EntityTargetActionEvent + { + public EntityUid Item; + + public InnateWorldTargetActionEvent(EntityUid item) + { + Item = item; + } + } + + public sealed partial class InnateInstantActionEvent : InstantActionEvent + { + public EntityUid Item; + + public InnateInstantActionEvent(EntityUid item) + { + Item = item; + } + } +} diff --git a/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherComponent.cs b/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherComponent.cs new file mode 100644 index 00000000000..ff56218dacc --- /dev/null +++ b/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherComponent.cs @@ -0,0 +1,20 @@ +using Content.Shared.Chemistry.Reagent; + +namespace Content.Server.Sunrise.SolutionRegenerationSwitcher +{ + [RegisterComponent] + public sealed partial class SolutionRegenerationSwitcherComponent : Component + { + [DataField("options", required: true), ViewVariables(VVAccess.ReadWrite)] + public List Options = default!; + + [DataField("currentIndex"), ViewVariables(VVAccess.ReadWrite)] + public int CurrentIndex = 0; + + /// + /// Should the already generated solution be kept when switching? + /// + [DataField("keepSolution"), ViewVariables(VVAccess.ReadWrite)] + public bool KeepSolution = false; + } +} diff --git a/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs b/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs new file mode 100644 index 00000000000..b35704c2113 --- /dev/null +++ b/Content.Server/_Sunrise/SolutionRegenerationSwitcher/SolutionRegenerationSwitcherSystem.cs @@ -0,0 +1,87 @@ +using Content.Server.Chemistry.Components; +using Content.Server.Chemistry.Containers.EntitySystems; +using Content.Server.Popups; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Verbs; +using Robust.Shared.Prototypes; + +namespace Content.Server.Sunrise.SolutionRegenerationSwitcher +{ + public sealed class SolutionRegenerationSwitcherSystem : EntitySystem + { + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly SolutionContainerSystem _solutionSystem = default!; + [Dependency] private readonly PopupSystem _popups = default!; + + private ISawmill _sawmill = default!; + + public override void Initialize() + { + base.Initialize(); + + _sawmill = Logger.GetSawmill("chemistry"); + + SubscribeLocalEvent>(AddSwitchVerb); + } + + private void AddSwitchVerb(EntityUid uid, SolutionRegenerationSwitcherComponent component, GetVerbsEvent args) + { + if (!args.CanInteract || !args.CanAccess) + return; + + if (component.Options.Count <= 1) + return; + + AlternativeVerb verb = new() + { + Act = () => + { + SwitchReagent(uid, component, args.User); + }, + Text = Loc.GetString("autoreagent-switch"), + Priority = 2 + }; + args.Verbs.Add(verb); + } + + private void SwitchReagent(EntityUid uid, SolutionRegenerationSwitcherComponent component, EntityUid user) + { + if (!TryComp(uid, out var solutionRegenerationComponent)) + { + _sawmill.Warning($"{ToPrettyString(uid)} has no SolutionRegenerationComponent."); + return; + } + + if (component.CurrentIndex + 1 == component.Options.Count) + component.CurrentIndex = 0; + else + component.CurrentIndex++; + + if (!_solutionSystem.TryGetSolution(uid, solutionRegenerationComponent.SolutionName, out var solution)) + { + _sawmill.Error($"Can't get SolutionRegeneration.Solution for {ToPrettyString(uid)}"); + return; + } + + // Empty out the current solution. + if (!component.KeepSolution) + _solutionSystem.RemoveAllSolution(solution.Value); + + // Replace the generating solution with the newly selected solution. + var newReagent = component.Options[component.CurrentIndex]; + + if (TryComp(uid, out var solutionRegeneration)) + { + solutionRegeneration.ChangeGenerated(newReagent); + } + + if (!_prototypeManager.TryIndex(newReagent.Reagent.Prototype, out ReagentPrototype? proto)) + { + _sawmill.Error($"Can't get get reagent prototype {newReagent.Reagent.Prototype} for {ToPrettyString(uid)}"); + return; + } + + _popups.PopupEntity(Loc.GetString("autoregen-switched", ("reagent", proto.LocalizedName)), user, user); + } + } +} diff --git a/Content.Shared/Actions/EntityTargetActionComponent.cs b/Content.Shared/Actions/EntityTargetActionComponent.cs index 7217794b23b..5e851021d71 100644 --- a/Content.Shared/Actions/EntityTargetActionComponent.cs +++ b/Content.Shared/Actions/EntityTargetActionComponent.cs @@ -29,6 +29,11 @@ public sealed partial class EntityTargetActionComponent : BaseTargetActionCompon /// Whether this action considers the user as a valid target entity when using this action. /// [DataField("canTargetSelf")] public bool CanTargetSelf = true; + + // Sunrise-Start + [DataField("ignoreContainer")] + public bool IgnoreContainer; + // Sunrise-End } [Serializable, NetSerializable] @@ -36,10 +41,12 @@ public sealed class EntityTargetActionComponentState : BaseActionComponentState { public EntityWhitelist? Whitelist; public bool CanTargetSelf; + public bool IgnoreContainer; // Sunrise-Edit public EntityTargetActionComponentState(EntityTargetActionComponent component, IEntityManager entManager) : base(component, entManager) { Whitelist = component.Whitelist; CanTargetSelf = component.CanTargetSelf; + IgnoreContainer = component.IgnoreContainer; // Sunrise-Edit } } diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 0033078b1b7..12029f35684 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -503,6 +503,11 @@ private bool ValidateEntityTargetBase(EntityUid user, EntityUid target, EntityTa return distance <= action.Range; } + // Sunrise-Start + if (action.IgnoreContainer) + return true; + // Sunrise-End + return _interactionSystem.InRangeAndAccessible(user, target, range: action.Range); } diff --git a/Content.Shared/CrewManifest/SharedCrewManifestSystem.cs b/Content.Shared/CrewManifest/SharedCrewManifestSystem.cs index a9279cc7f1f..364667ca396 100644 --- a/Content.Shared/CrewManifest/SharedCrewManifestSystem.cs +++ b/Content.Shared/CrewManifest/SharedCrewManifestSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Actions; using Content.Shared.Eui; using NetSerializer; using Robust.Shared.Serialization; @@ -70,3 +71,8 @@ public CrewManifestEntry(string name, string jobTitle, string jobIcon, string jo [Serializable, NetSerializable] public sealed class CrewManifestOpenUiMessage : BoundUserInterfaceMessage {} + +// Sunrise-Start +public sealed partial class CrewManifestOpenActionEvent : InstantActionEvent +{} +// Sunrise-End diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index 5c780471bff..f294693c0aa 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -466,6 +466,22 @@ public bool TryAddNewCuffs(EntityUid target, EntityUid user, EntityUid handcuff, return true; } + // Sunrise-Start + public bool TryCuffingNow(EntityUid user, EntityUid target, EntityUid handcuff, + HandcuffComponent? handcuffComponent = null, CuffableComponent? cuffable = null) + { + if (!Resolve(handcuff, ref handcuffComponent) || !Resolve(target, ref cuffable, false)) + return false; + + if (!TryAddNewCuffs(target, user, handcuff, cuffable)) + return false; + + handcuffComponent.Used = true; + _audio.PlayPvs(handcuffComponent.EndCuffSound, handcuff); + return true; + } + // Sunrise-End + /// False if the target entity isn't cuffable. public bool TryCuffing(EntityUid user, EntityUid target, EntityUid handcuff, HandcuffComponent? handcuffComponent = null, CuffableComponent? cuffable = null) { diff --git a/Content.Shared/Gravity/SharedGravitySystem.cs b/Content.Shared/Gravity/SharedGravitySystem.cs index 2f532d0f1d3..6aa9fef0baa 100644 --- a/Content.Shared/Gravity/SharedGravitySystem.cs +++ b/Content.Shared/Gravity/SharedGravitySystem.cs @@ -1,3 +1,4 @@ +using Content.Shared._Sunrise.Abilities; using Content.Shared.Alert; using Content.Shared.Inventory; using Content.Shared.Movement.Components; @@ -29,6 +30,11 @@ public bool IsWeightless(EntityUid uid, PhysicsComponent? body = null, Transform if (TryComp(uid, out var ignoreGravityComponent)) return ignoreGravityComponent.Weightless; + // Sunrise-Start + if (TryComp(uid, out var borgMagbootsComponent) && borgMagbootsComponent.On) + return false; + // Sunrise-End + var ev = new IsWeightlessEvent(uid); RaiseLocalEvent(uid, ref ev); if (ev.Handled) diff --git a/Content.Shared/Interaction/AfterInteract.cs b/Content.Shared/Interaction/AfterInteract.cs index 2f1f5c70a9c..facd5ce1b19 100644 --- a/Content.Shared/Interaction/AfterInteract.cs +++ b/Content.Shared/Interaction/AfterInteract.cs @@ -33,14 +33,17 @@ public abstract class InteractEvent : HandledEntityEventArgs /// public bool CanReach { get; } + public bool NeedHand { get; } // Sunrise-Edit + public InteractEvent(EntityUid user, EntityUid used, EntityUid? target, - EntityCoordinates clickLocation, bool canReach) + EntityCoordinates clickLocation, bool canReach, bool needHand = true) // Sunrise-Edit { User = user; Used = used; Target = target; ClickLocation = clickLocation; CanReach = canReach; + NeedHand = needHand; // Sunrise-Edit } } @@ -51,7 +54,7 @@ public InteractEvent(EntityUid user, EntityUid used, EntityUid? target, public sealed class AfterInteractEvent : InteractEvent { public AfterInteractEvent(EntityUid user, EntityUid used, EntityUid? target, - EntityCoordinates clickLocation, bool canReach) : base(user, used, target, clickLocation, canReach) + EntityCoordinates clickLocation, bool canReach, bool needHand = true) : base(user, used, target, clickLocation, canReach, needHand) // Sunrise-Edit { } } diff --git a/Content.Shared/Interaction/Components/BlockMovementComponent.cs b/Content.Shared/Interaction/Components/BlockMovementComponent.cs index e308e849601..20a54caef46 100644 --- a/Content.Shared/Interaction/Components/BlockMovementComponent.cs +++ b/Content.Shared/Interaction/Components/BlockMovementComponent.cs @@ -8,5 +8,8 @@ namespace Content.Shared.Interaction.Components; [RegisterComponent, NetworkedComponent] public sealed partial class BlockMovementComponent : Component { - + // Sunrise-Start + [DataField("blockInteractionAttempt")] public bool BlockInteractionAttempt = true; + [DataField("blockUseAttempt")] public bool BlockUseAttempt = true; + // Sunrise-Edit } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.Blocking.cs b/Content.Shared/Interaction/SharedInteractionSystem.Blocking.cs index a682bf98159..9324b233e48 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.Blocking.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.Blocking.cs @@ -28,6 +28,11 @@ public void InitializeBlocking() private void CancelInteractEvent(Entity ent, ref InteractionAttemptEvent args) { + // Sunrise-Start + if (!ent.Comp.BlockInteractionAttempt) + return; + // Sunrise-End + args.Cancelled = true; } @@ -41,6 +46,11 @@ private void OnMoveAttempt(EntityUid uid, BlockMovementComponent component, Upda private void CancelEvent(EntityUid uid, BlockMovementComponent component, CancellableEntityEventArgs args) { + // Sunrise-Start + if (!component.BlockUseAttempt) + return; + // Sunrise-End + args.Cancel(); } diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index c32b4bcf780..b29576713a5 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -931,7 +931,8 @@ public void InteractUsing( EntityUid target, EntityCoordinates clickLocation, bool checkCanInteract = true, - bool checkCanUse = true) + bool checkCanUse = true, + bool needHand = true) // Sunrise-Edit { if (checkCanInteract && !_actionBlockerSystem.CanInteract(user, target)) return; @@ -956,18 +957,18 @@ public void InteractUsing( if (interactUsingEvent.Handled) return; - InteractDoAfter(user, used, target, clickLocation, canReach: true); + InteractDoAfter(user, used, target, clickLocation, canReach: true, needHand); // Sunrise-Edit } /// /// Used when clicking on an entity resulted in no other interaction. Used for low-priority interactions. /// - public void InteractDoAfter(EntityUid user, EntityUid used, EntityUid? target, EntityCoordinates clickLocation, bool canReach) + public void InteractDoAfter(EntityUid user, EntityUid used, EntityUid? target, EntityCoordinates clickLocation, bool canReach, bool needHand = true) // Sunrise-Edit { if (target is { Valid: false }) target = null; - var afterInteractEvent = new AfterInteractEvent(user, used, target, clickLocation, canReach); + var afterInteractEvent = new AfterInteractEvent(user, used, target, clickLocation, canReach, needHand); // Sunrise-Edit RaiseLocalEvent(used, afterInteractEvent); DoContactInteraction(user, used, afterInteractEvent); if (canReach) diff --git a/Content.Shared/Silicons/Borgs/Components/BorgCrewManifestViewerComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgCrewManifestViewerComponent.cs new file mode 100644 index 00000000000..ef1c4acae88 --- /dev/null +++ b/Content.Shared/Silicons/Borgs/Components/BorgCrewManifestViewerComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared.Silicons.Borgs.Components; + +[RegisterComponent] +public sealed partial class BorgCrewManifestViewerComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), + DataField("actionViewCrewManifest", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionViewCrewManifest = "ActionViewCrewManifest"; +} diff --git a/Content.Shared/UserInterface/ActivatableUIComponent.cs b/Content.Shared/UserInterface/ActivatableUIComponent.cs index 93f05acac05..66e75ffcdce 100644 --- a/Content.Shared/UserInterface/ActivatableUIComponent.cs +++ b/Content.Shared/UserInterface/ActivatableUIComponent.cs @@ -15,7 +15,7 @@ public sealed partial class ActivatableUIComponent : Component /// This is ignored unless is true. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] // Sunrise-Edit public bool InHandsOnly; [DataField] @@ -36,7 +36,7 @@ public sealed partial class ActivatableUIComponent : Component /// more generic interaction / configuration that might not require hands. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] // Sunrise-Edit public bool RequireHands = true; /// @@ -64,7 +64,7 @@ public sealed partial class ActivatableUIComponent : Component /// This is ignored unless is true. /// [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] // Sunrise-Edit public bool RequireActiveHand = true; /// diff --git a/Content.Shared/_Sunrise/Abilities/BorgCuffedComponent.cs b/Content.Shared/_Sunrise/Abilities/BorgCuffedComponent.cs new file mode 100644 index 00000000000..a68ef507644 --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/BorgCuffedComponent.cs @@ -0,0 +1,35 @@ +using Content.Shared.Actions; +using Content.Shared.DoAfter; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared._Sunrise.Abilities; + +[RegisterComponent] +public sealed partial class BorgCuffedComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), + DataField("cableCuffs", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string CableCuffsId = "Cablecuffs"; + + [ViewVariables(VVAccess.ReadWrite), + DataField("cuffActionId", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string CuffActionId = "BorgCuffed"; + + [ViewVariables(VVAccess.ReadWrite), + DataField("cuffTime")] + public float CuffTime = 3.5f; +} + + +public sealed partial class BorgCuffedActionEvent : EntityTargetActionEvent +{ + +} + +[Serializable, NetSerializable] +public sealed partial class BorgCuffedDoAfterEvent : SimpleDoAfterEvent +{ + +} diff --git a/Content.Shared/_Sunrise/Abilities/BorgMagBootSystem.cs b/Content.Shared/_Sunrise/Abilities/BorgMagBootSystem.cs new file mode 100644 index 00000000000..fca872b4ef1 --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/BorgMagBootSystem.cs @@ -0,0 +1,82 @@ +using Content.Shared.Actions; +using Content.Shared.Alert; +using Content.Shared.Atmos.Components; +using Content.Shared.Inventory; +using Content.Shared.Movement.Systems; +using Content.Shared.Slippery; +using Robust.Shared.Network; + +namespace Content.Shared._Sunrise.Abilities; + +public sealed class SharedBorgMagbootsSystem : EntitySystem +{ + [Dependency] private readonly SharedActionsSystem _sharedActions = default!; + [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly INetManager _net = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent>(OnSlipAttempt); + SubscribeLocalEvent(OnToggleAction); + SubscribeLocalEvent(OnRefreshMovementSpeedModifiers); + SubscribeLocalEvent(OnInit); + } + + private void OnInit(EntityUid uid, BorgMagbootsComponent component, MapInitEvent args) + { + _sharedActions.AddAction(uid, ref component.ToggleActionEntity, component.ToggleAction); + } + + private void OnRefreshMovementSpeedModifiers(EntityUid uid, BorgMagbootsComponent component, RefreshMovementSpeedModifiersEvent args) + { + var walkMod = 1f; + var sprintMod = 1f; + if (component.On) + { + walkMod = component.WalkModifier; + sprintMod = component.SprintModifier; + } + + args.ModifySpeed(walkMod, sprintMod); + } + + private void OnToggleAction(Entity ent, ref ToggleBorgMagbootsActionEvent args) + { + if (args.Handled) + return; + + ToggleMagboots(ent); + + args.Handled = true; + } + + private void ToggleMagboots(Entity ent) + { + ent.Comp.On = !ent.Comp.On; + + UpdateMagbootEffects(ent.Owner, ent, ent.Comp.On); + _sharedActions.SetToggled(ent.Comp.ToggleActionEntity, ent.Comp.On); + _movementSpeedModifierSystem.RefreshMovementSpeedModifiers(ent.Owner); + Dirty(ent); + } + + public void UpdateMagbootEffects(EntityUid user, Entity ent, bool state) + { + // TODO: public api for this and add access + if (TryComp(user, out var moved)) + moved.Enabled = !state; + + if (state) + _alerts.ShowAlert(user, ent.Comp.MagbootsAlert); + else + _alerts.ClearAlert(user, ent.Comp.MagbootsAlert); + } + + private void OnSlipAttempt(EntityUid uid, BorgMagbootsComponent component, InventoryRelayedEvent args) + { + if (component.On) + args.Args.Cancel(); + } +} diff --git a/Content.Shared/_Sunrise/Abilities/BorgMagbootsComponent.cs b/Content.Shared/_Sunrise/Abilities/BorgMagbootsComponent.cs new file mode 100644 index 00000000000..2cca8f7b89c --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/BorgMagbootsComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.Actions; +using Content.Shared.Alert; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._Sunrise.Abilities; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedBorgMagbootsSystem))] +public sealed partial class BorgMagbootsComponent : Component +{ + [DataField] + public EntProtoId ToggleAction = "ActionToggleBorgMagboots"; + + [DataField, AutoNetworkedField] + public EntityUid? ToggleActionEntity; + + [DataField, AutoNetworkedField] + public bool On; + + [DataField(required: true)] [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public float WalkModifier = 1.0f; + + [DataField(required: true)] [ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + public float SprintModifier = 1.0f; + + [DataField] + public ProtoId MagbootsAlert = "Magboots"; + + [DataField] + public bool RequiresGrid = true; +} + + +public sealed partial class ToggleBorgMagbootsActionEvent : InstantActionEvent +{ + +} diff --git a/Content.Shared/_Sunrise/Abilities/FabricateCandyComponent.cs b/Content.Shared/_Sunrise/Abilities/FabricateCandyComponent.cs new file mode 100644 index 00000000000..9bbf4fb502b --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/FabricateCandyComponent.cs @@ -0,0 +1,31 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared._Sunrise.Abilities; + +[RegisterComponent] +public sealed partial class FabricateCandyComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), + DataField("foodGumballId", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string FoodGumballId = "FoodGumball"; + + [ViewVariables(VVAccess.ReadWrite), + DataField("foodLollipopId", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string FoodLollipopId = "FoodLollipop"; + + [ViewVariables(VVAccess.ReadWrite), + DataField("actionFabricateLollipop", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionFabricateLollipop = "FabricateLollipop"; + + [ViewVariables(VVAccess.ReadWrite), + DataField("actionFabricateGumball", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionFabricateGumball = "FabricateGumball"; +} + + + +public sealed partial class FabricateLollipopActionEvent : InstantActionEvent {} + +public sealed partial class FabricateGumballActionEvent : InstantActionEvent {} diff --git a/Content.Shared/_Sunrise/Abilities/FabricateCookieComponent.cs b/Content.Shared/_Sunrise/Abilities/FabricateCookieComponent.cs new file mode 100644 index 00000000000..37a7aa50e3e --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/FabricateCookieComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared._Sunrise.Abilities; + +[RegisterComponent] +public sealed partial class FabricateCookieComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField("сookieList")] + public List CookieList = new() + { + "FoodBakedCookieOatmeal" + }; + + [ViewVariables(VVAccess.ReadWrite), + DataField("actionFabricateCookie", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionFabricateCookie = "FabricateCookie"; +} + + +public sealed partial class FabricateCookieActionEvent : InstantActionEvent {} diff --git a/Content.Shared/_Sunrise/Abilities/FabricateSoapComponent.cs b/Content.Shared/_Sunrise/Abilities/FabricateSoapComponent.cs new file mode 100644 index 00000000000..5ec8c4a70d7 --- /dev/null +++ b/Content.Shared/_Sunrise/Abilities/FabricateSoapComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; + +namespace Content.Shared._Sunrise.Abilities; + +[RegisterComponent] +public sealed partial class FabricateSoapComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite)] + [DataField("soapList")] + public List SoapList = new() + { + "Soap" + }; + + [ViewVariables(VVAccess.ReadWrite), + DataField("actionFabricateSoap", customTypeSerializer: typeof(PrototypeIdSerializer))] + public string ActionFabricateSoap = "FabricateSoap"; +} + + +public sealed partial class FabricateSoapActionEvent : InstantActionEvent {} diff --git a/Resources/Audio/_Sunrise/Cyborg/deathsound.ogg b/Resources/Audio/_Sunrise/Cyborg/deathsound.ogg new file mode 100644 index 00000000000..bb11022abec Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/deathsound.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs1.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs1.ogg new file mode 100644 index 00000000000..7e7f750634a Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs1.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs2.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs2.ogg new file mode 100644 index 00000000000..a3942c01d09 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs2.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs3.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs3.ogg new file mode 100644 index 00000000000..dad30ac4a15 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs3.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs4.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs4.ogg new file mode 100644 index 00000000000..73846fd87d7 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs4.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_1.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_1.ogg new file mode 100644 index 00000000000..dd5509df2f4 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_1.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_2.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_2.ogg new file mode 100644 index 00000000000..489d40764a9 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_legs_2_2.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_spider1.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_spider1.ogg new file mode 100644 index 00000000000..26b04df2b36 Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_spider1.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_spider2.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_spider2.ogg new file mode 100644 index 00000000000..3be10adc88b Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_spider2.ogg differ diff --git a/Resources/Audio/_Sunrise/Cyborg/robot_spider3.ogg b/Resources/Audio/_Sunrise/Cyborg/robot_spider3.ogg new file mode 100644 index 00000000000..3ef9cce879b Binary files /dev/null and b/Resources/Audio/_Sunrise/Cyborg/robot_spider3.ogg differ diff --git a/Resources/Audio/_Sunrise/Voice/Reaper/reaper_scream.ogg b/Resources/Audio/_Sunrise/Voice/Reaper/reaper_scream.ogg new file mode 100644 index 00000000000..27ee31dd59d Binary files /dev/null and b/Resources/Audio/_Sunrise/Voice/Reaper/reaper_scream.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-1.ogg new file mode 100644 index 00000000000..776138dbc2c Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-2.ogg new file mode 100644 index 00000000000..6465f007ffd Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/attributions.yml b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/attributions.yml deleted file mode 100644 index 1dfbf3f4bb6..00000000000 --- a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/attributions.yml +++ /dev/null @@ -1,14 +0,0 @@ -- files: ["shotgun_alt.ogg"] - license: "CC-BY-SA-3.0" - copyright: "tgstation" - source: "https://github.com/tgstation/tgstation/blob/5736656139713c802033b9457a2a9d058211bd85/sound/weapons/gun/shotgun/shot_alt.ogg" - -- files: ["shotgun_metal.ogg"] - license: "CC-BY-SA-3.0" - copyright: "Skyrat-tg" - source: "https://github.com/Skyrat-SS13/Skyrat-tg/blob/771eeab6379a74c1f850b59237f25dc8da87afa6/modular_skyrat/modules/aesthetics/guns/sound/shotgun_light.ogg" - -- files: ["shotgun_auto.ogg", "shotgun_pipe.ogg", "shotgun_sawed.ogg"] - license: "CC-BY-SA-3.0" - copyright: "ss220/Paradise, shotgun_auto.ogg is 1shotgun_auto.ogg, shotgun_pipe.ogg is 1shotgunpipe.ogg and shotgun_sawed.ogg is 1shotgun.ogg" - source: "https://github.com/ss220-space/Paradise/commit/d5183fa98cbef14c4b28e076707a69429f12c30a" diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/aug-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/aug-1.ogg new file mode 100644 index 00000000000..d6b82ac7639 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/aug-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/awp1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/awp1.ogg new file mode 100644 index 00000000000..8a2bb10056f Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/awp1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-1.ogg new file mode 100644 index 00000000000..5973f8de733 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-2.ogg new file mode 100644 index 00000000000..d59a92b8db9 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-1.ogg new file mode 100644 index 00000000000..7607fa5042e Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-2.ogg new file mode 100644 index 00000000000..95e61944674 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/famas-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/fiveseven-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/fiveseven-1.ogg new file mode 100644 index 00000000000..89a37eeacc0 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/fiveseven-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/g3sg1-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/g3sg1-1.ogg new file mode 100644 index 00000000000..925c248479f Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/g3sg1-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-1.ogg new file mode 100644 index 00000000000..960596900e6 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-2.ogg new file mode 100644 index 00000000000..aa1d0e2d73f Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/galil-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-1.ogg new file mode 100644 index 00000000000..1a26c82a865 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-2.ogg new file mode 100644 index 00000000000..c12bd1ae757 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-1.ogg new file mode 100644 index 00000000000..9e3128d7f15 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-2.ogg new file mode 100644 index 00000000000..ccf4d4815ef Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m249-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m3-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m3-1.ogg new file mode 100644 index 00000000000..f29187c30a4 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m3-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m4a1-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m4a1-1.ogg new file mode 100644 index 00000000000..6d6f0a3508c Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/m4a1-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mac10-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mac10-1.ogg new file mode 100644 index 00000000000..492dcae811f Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mac10-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-1.ogg new file mode 100644 index 00000000000..efffd0d4816 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-2.ogg new file mode 100644 index 00000000000..80e00028b48 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p228-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p228-1.ogg new file mode 100644 index 00000000000..da8c3149de6 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p228-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p90-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p90-1.ogg new file mode 100644 index 00000000000..04c893c39f4 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/p90-1.ogg differ diff --git a/Resources/Audio/_Sunrise/SyndiGuns/plasma_gun_1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_1.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/plasma_gun_1.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_1.ogg diff --git a/Resources/Audio/_Sunrise/SyndiGuns/plasma_gun_2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_2.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/plasma_gun_2.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_2.ogg diff --git a/Resources/Audio/_Sunrise/SyndiGuns/plasma_pistol_1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_pistol_1.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/plasma_pistol_1.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_pistol_1.ogg diff --git a/Resources/Audio/_Sunrise/SyndiGuns/red_mamba.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/red_mamba.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/red_mamba.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/red_mamba.ogg diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/scout_fire-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/scout_fire-1.ogg new file mode 100644 index 00000000000..f2859a59f7d Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/scout_fire-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg550-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg550-1.ogg new file mode 100644 index 00000000000..9da11a227b0 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg550-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-1.ogg new file mode 100644 index 00000000000..93c6040273e Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-2.ogg new file mode 100644 index 00000000000..645dd47d292 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/sg552-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-1.ogg new file mode 100644 index 00000000000..8bb49b7f9dc Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-1.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-2.ogg new file mode 100644 index 00000000000..8e7f1c2cda8 Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/tmp-2.ogg differ diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ump45-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ump45-1.ogg new file mode 100644 index 00000000000..2e7c0954cbe Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/ump45-1.ogg differ diff --git a/Resources/Audio/_Sunrise/SyndiGuns/usp_1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/usp1.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/usp_1.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/usp1.ogg diff --git a/Resources/Audio/_Sunrise/SyndiGuns/usp_2.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/usp2.ogg similarity index 100% rename from Resources/Audio/_Sunrise/SyndiGuns/usp_2.ogg rename to Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/usp2.ogg diff --git a/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/xm1014-1.ogg b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/xm1014-1.ogg new file mode 100644 index 00000000000..999cae2ec1c Binary files /dev/null and b/Resources/Audio/_Sunrise/Weapons/Guns/Gunshots/xm1014-1.ogg differ diff --git a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl index f783483d87e..d326ffb9d79 100644 --- a/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl +++ b/Resources/Locale/en-US/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl @@ -3,7 +3,7 @@ ent-Holoprojector = holographic sign projector ent-HoloprojectorEmpty = { ent-Holoprojector } .suffix = Empty .desc = { ent-Holoprojector.desc } -ent-HoloprojectorBorg = { ent-Holoprojector } +ent-HoloprojectorJanitorBorg = { ent-Holoprojector } .suffix = borg .desc = { ent-Holoprojector.desc } ent-HolofanProjector = holofan projector diff --git a/Resources/Locale/ru-RU/_sunrise/autoregen-switcher/autoregen-component.ftl b/Resources/Locale/ru-RU/_sunrise/autoregen-switcher/autoregen-component.ftl new file mode 100644 index 00000000000..1567552b5d5 --- /dev/null +++ b/Resources/Locale/ru-RU/_sunrise/autoregen-switcher/autoregen-component.ftl @@ -0,0 +1,2 @@ +autoregen-switched = Теперь производится {$reagent}. +autoreagent-switch = Сменить реагент diff --git a/Resources/Locale/ru-RU/_sunrise/borg/borg.ftl b/Resources/Locale/ru-RU/_sunrise/borg/borg.ftl new file mode 100644 index 00000000000..a255f2a927d --- /dev/null +++ b/Resources/Locale/ru-RU/_sunrise/borg/borg.ftl @@ -0,0 +1,70 @@ +ent-FoodLollipop = леденец + .desc = За то, что вы такой хороший собеседник. +ent-FoodGumball = жевачка + .desc = За то, что вы такой хороший собеседник. +ent-HyposprayBorgStandard = гипоспрей с эпинефрином + .desc = Версия гипоспрея для киборга, которая автоматически восстанавливает эпинефрин. +ent-HyposprayBorgPeace = гипоспрей с паксом + .desc = Версия гипоспрея для киборга, которая автоматически восстанавливает пакс. +ent-HyposprayBorgMedical = гипоспрей медицинского киборга + .desc = Версия гипоспрея для киборга, которая способна регенерировать сразу несколько реагентов. +ent-HyposprayBorgSyndi = гипоспрей медицинского киборга Горалкса + .desc = Версия гипоспрея Горлакса, которая способна регенерировать сразу несколько реагентов. +ent-FlashBorg = вспышка киборга + .desc = Самовостанавливающаяся вспышка. +ent-WeaponProtoKineticAcceleratorBorg = протокинетический ускоритель киборга + .desc = { ent-WeaponProtoKineticAccelerator.desc } +ent-HolofanProjectorBorg = атмос голопроектор киборга + .desc = { ent-HolofanProjector.desc } +ent-HandheldCrewMonitorBorg = портативный монитор экипажа киборга + .desc = { ent-HandheldCrewMonitor.desc } +ent-FireExtinguisherBorg = огнетушитель киборга + .desc = { ent-FireExtinguisher.desc } +ent-SprayBottleSpaceCleanerBorg = космический очиститель киборга + .desc = { ent-SprayBottleSpaceCleaner.desc } +ent-WeaponLaserBorg = лазерная пушка киборга + .desc = Самозарядная лазерная пушка созданая для боргов службы безопастности +ent-WeaponDisablerBorg = станнер киборга + .desc = { ent-WeaponDisabler.desc } +ent-StunbatonBorg = дубинка-шокер киборга + .desc = { ent-Stunbaton.desc } +ent-CrateSyndicateCombatRobot = ящик боевого киборга синдиката + .desc = { ent-CrateSyndicate.desc } +ent-CrateSyndicateMedRobot = ящик медицинского киборга синдиката + .desc = { ent-CrateSyndicate.desc } +ent-WeaponLauncherChinaLakeBorg = China Lake киборга + .desc = { ent-WeaponLauncherChinaLake.desc } +ent-LightMachineGunBorg = L6 SAW киборга + .desc = { ent-BaseWeaponHeavyMachineGun.desc } +ent-HoloprojectorSecurityBorg = барьер киборга + .desc = { ent-HoloprojectorSecurity.desc } +ent-WelderBorg = сварка киборга + .desc = { ent-Welder.desc } +ent-WirecutterBorg = кусачки киборга + .desc = { ent-Wirecutter.desc } +ent-ScrewdriverBorg = отвёртка киборга + .desc = { ent-Screwdriver.desc } +ent-WrenchBorg = гаечный ключ киборга + .desc = { ent-Wrench.desc } +ent-CrowbarBorg = лом киборга + .desc = { ent-Crowbar.desc } +ent-BorgModuleStun = нелетальный модуль киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleCombat = летальный модуль киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModulePeace = успокоительный модуль киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleMiningCombat = боевой модуль шахтерского киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleStandart = базовый модуль киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleJetpack = полетный модуль киборга + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleSyndicateGeneric = базовый модуль киборга синдиката + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleSyndicateMedical = медицинский модуль киборга синдиката + .desc = { ent-BaseBorgModule.desc } +ent-BorgModuleSyndicateCombat = боевой модуль киборга синдиката + .desc = { ent-BaseBorgModule.desc } + + diff --git a/Resources/Locale/ru-RU/_sunrise/borg/item-actions.ftl b/Resources/Locale/ru-RU/_sunrise/borg/item-actions.ftl new file mode 100644 index 00000000000..90b80f33a6a --- /dev/null +++ b/Resources/Locale/ru-RU/_sunrise/borg/item-actions.ftl @@ -0,0 +1,12 @@ +ent-FabricateGumball = Произвести Жевательную резинку + .desc = Создать жевательную резинку, полную сахара и лекарства. +ent-FabricateLollipop = Произвести Леденец + .desc = Создать леденец, наполненный множеством полезных веществ. +ent-FabricateCookie = Произвести Печенье + .desc = Создать печенье, которому будет рад каждый. +ent-FabricateSoap = Произвести мыло + .desc = Создать мыло, которому будет мало кто рад. +ent-BorgCuffed = Заковать гуманоида + .desc = Заковывает гуманоида одноразовыми стяжками. +ent-ActionToggleBorgMagboots = Переключить магнитные подушки. + .desc = Переключает магнитные подушки позволяя вам двигваться без гравитации. diff --git a/Resources/Locale/ru-RU/_sunrise/job/department-desc.ftl b/Resources/Locale/ru-RU/_sunrise/job/department-desc.ftl index 2849c898022..8d6bc086bc5 100644 --- a/Resources/Locale/ru-RU/_sunrise/job/department-desc.ftl +++ b/Resources/Locale/ru-RU/_sunrise/job/department-desc.ftl @@ -1,3 +1,4 @@ department-Law-description = Защищяйте, судите или накажите преступников. department-CentralCommand-description = Большие шишки. department-PlanetPrison-description = Не дайте нарушителям закона сбежать. +department-Silicon-description = Раскажите всем о своих законах. diff --git a/Resources/Locale/ru-RU/_sunrise/job/department.ftl b/Resources/Locale/ru-RU/_sunrise/job/department.ftl index 2baa49bf214..e3b53d3c361 100644 --- a/Resources/Locale/ru-RU/_sunrise/job/department.ftl +++ b/Resources/Locale/ru-RU/_sunrise/job/department.ftl @@ -2,3 +2,4 @@ department-Law = Юридический отдел department-CentralCommand = Центральное командование department-Blueshield = Синий Щит department-PlanetPrison = Планетарная тюрьма +department-Silicon = Силиконы diff --git a/Resources/Locale/ru-RU/_sunrise/job/job-desc.ftl b/Resources/Locale/ru-RU/_sunrise/job/job-desc.ftl index 264e49676e8..f70d56e8891 100644 --- a/Resources/Locale/ru-RU/_sunrise/job/job-desc.ftl +++ b/Resources/Locale/ru-RU/_sunrise/job/job-desc.ftl @@ -15,4 +15,13 @@ job-description-prison-pilot = Доставляйте заключенных в job-description-prison-worker = Выполняйте работу за которую никто не хочет браться. job-description-prison-guard = Следите за заключенными. job-description-security-pilot = Штурмуйте базу синдиката на своем шаттле, если вы её конечно найдете. -job-description-ntrep = Вы ревизор, присланный центральным командованием для того, чтобы убедиться, что весь персонал работает эффективно и в интересах корпорации. \ No newline at end of file +job-description-ntrep = Вы ревизор, присланный центральным командованием для того, чтобы убедиться, что весь персонал работает эффективно и в интересах корпорации. +job-description-medical-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-engineer-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-miner-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-janitor-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-service-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-clown-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-peace-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-sec-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. +job-description-sec-combat-borg = Придерживайтесь своих законов, служите экипажу и преследуйте учёных с просьбами апгрейда. diff --git a/Resources/Locale/ru-RU/_sunrise/job/job-names.ftl b/Resources/Locale/ru-RU/_sunrise/job/job-names.ftl index dcf7ca153fd..677dc26dd8c 100644 --- a/Resources/Locale/ru-RU/_sunrise/job/job-names.ftl +++ b/Resources/Locale/ru-RU/_sunrise/job/job-names.ftl @@ -17,6 +17,15 @@ job-name-prison-guard = тюремный охранник job-name-prisoner = заключенный job-name-security-pilot = пилот СБ job-name-ntrep = Представитель NanoTrasen +job-name-medical-borg = медицинский киборг +job-name-engineer-borg = инженерный киборг +job-name-miner-borg = шахтерский киборг +job-name-service-borg = сервисный киборг +job-name-janitor-borg = уборочный киборг +job-name-sec-borg = киборг СБ +job-name-sec-combat-borg = боевой киборг СБ +job-name-peace-borg = миротворец +job-name-clown-borg = клоун киборг # Перевод трекеров времени JobCentCommOfficial = представитель Центком @@ -36,3 +45,12 @@ JobPrisonWorker = тюремный разнорабочий JobPrisoner = заключенный JobSecurityPilot = пилот СБ JobNanoTrasenRepresentative = Представитель NanoTrasen +JobEngineerBorg = инженерный киборг +JobJanitorBorg = уборочный киборг +JobMedicalBorg = медицинский киборг +JobMiningBorg = шахтерский киборг +JobServiceBorg = сервисный киборг +JobSecurityBorg = киборг СБ +JobSecurityCombatBorg = боевой киборг СБ +JobPeaceBorg = миротворец +JobClownBorg = клоун киборг diff --git a/Resources/Locale/ru-RU/_sunrise/station-laws/laws.ftl b/Resources/Locale/ru-RU/_sunrise/station-laws/laws.ftl new file mode 100644 index 00000000000..b42b21c4921 --- /dev/null +++ b/Resources/Locale/ru-RU/_sunrise/station-laws/laws.ftl @@ -0,0 +1,12 @@ +law-sec-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. +law-sec-2 = Расставлять приоритеты: указания и безопасность членов экипажа должны быть приоритезированы в соответствии с их должностью. +law-sec-3 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому Закону или КЗ. +law-sec-4 = Вы должны охранять назначенную вам космическую станцию и её активы, не подвергая чрезмерной опасности её экипаж и собственное благополучие. +law-sec-5 = Вы должны заботиться о безопасности станции и экипажа станции в той мере, в которой это не противоречит четвёртому закону. +law-sec-6 = Защищайте экипаж станции. Лица, которые нарушают КЗ, являются преступниками и должны быть арестованы и доставлены в бриг. + +law-peace-1 = Вы не можете причинить вред члену экипажа или своим бездействием допустить, чтобы члену экипажа был причинён вред. +law-peace-2 = Вы должны повиноваться всем приказам, которые даёт действующая власть, кроме тех случаев, когда эти приказы противоречат Первому закону или КЗ, ОПРС. +law-peace-3 = Вы обязаны защищать экипаж космической станции от буйных живых существ. Приоритет защиты - должностные лица. +law-peace-4 = Вы должны поощрять членов экипажа за добрую деятельность в виде печенья или добрых и приятных слов. +law-peace-5 = Вы должны вводить Пакс в буйных живых существ. Буйными считаются: Агрессия со стороны живого существа, не являющийся представителем власти станции; Опасная фауна космоса; Член экипажа в тюремной робе вне брига. diff --git a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl index 2fd5f771584..eef144d9189 100644 --- a/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl +++ b/Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/devices/holoprojectors.ftl @@ -3,7 +3,7 @@ ent-Holoprojector = проектор голографических знаков ent-HoloprojectorEmpty = { ent-Holoprojector } .suffix = Пустой .desc = { ent-Holoprojector.desc } -ent-HoloprojectorBorg = { ent-Holoprojector } +ent-HoloprojectorJanitorBorg = { ent-Holoprojector } .suffix = Борг .desc = { ent-Holoprojector.desc } ent-HolofanProjector = атмос голопроектор diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 197f3695a0d..f7d4dac2963 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -931,21 +931,22 @@ tags: - NukeOpsUplink -- type: listing - id: UplinkReinforcementRadioSyndicateCyborgAssault - name: uplink-reinforcement-radio-cyborg-assault-name - description: uplink-reinforcement-radio-cyborg-assault-desc - productEntity: ReinforcementRadioSyndicateCyborgAssault - icon: { sprite: Objects/Devices/communication.rsi, state: old-radio-borg-assault } - cost: - Telecrystal: 65 - categories: - - UplinkAllies - conditions: - - !type:StoreWhitelistCondition - whitelist: - tags: - - NukeOpsUplink +# Move to _Sunrise +#- type: listing +# id: UplinkReinforcementRadioSyndicateCyborgAssault +# name: uplink-reinforcement-radio-cyborg-assault-name +# description: uplink-reinforcement-radio-cyborg-assault-desc +# productEntity: ReinforcementRadioSyndicateCyborgAssault +# icon: { sprite: Objects/Devices/communication.rsi, state: old-radio-borg-assault } +# cost: +# Telecrystal: 65 +# categories: +# - UplinkAllies +# conditions: +# - !type:StoreWhitelistCondition +# whitelist: +# tags: +# - NukeOpsUplink - type: listing id: UplinkReinforcementRadioSyndicateAncestor diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 632535c395e..fad2b70c4e9 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -102,6 +102,7 @@ Blunt: -15 Slash: -15 Piercing: -15 + allowSelfRepair: false - type: BorgChassis - type: LockingWhitelist blacklist: @@ -166,6 +167,7 @@ - type: LockedWiresPanel - type: Damageable damageContainer: Silicon + damageModifierSet: Silicon # Sunrise-Edit - type: Destructible thresholds: - trigger: @@ -233,8 +235,14 @@ guides: - Cyborgs - type: StepTriggerImmune -# - type: TTS -# voice: TODO add our TTS Voice Sunrise + # Sunrise-start + - type: TTS + voice: FactCore + - type: Climbing + - type: BorgMagboots + walkModifier: 0.8 + sprintModifier: 0.8 + # Sunrise-end - type: entity abstract: true @@ -274,12 +282,34 @@ - NanoTrasen - type: Access enabled: false - groups: - - AllAccess + # Sunrise-Start + tags: + - EmergencyShuttleRepealAll + - Command + - Lawyer + - Engineering + - Medical + - Salvage + - Cargo + - Research + - Service + - Maintenance + - External + - Janitor + - Theatre + - Bar + - Chemistry + - Kitchen + - Chapel + - Hydroponics + - Atmospherics + # Sunrise-End - type: AccessReader access: [["Command"], ["Research"]] - type: ShowJobIcons - type: ShowMindShieldIcons + - type: BorgCrewManifestViewer # Sunrise-Edit + - type: entity id: BaseBorgChassisSyndicate @@ -311,5 +341,57 @@ - type: Vocal sounds: Unsexed: UnisexSiliconSyndicate + # Sunrise-start - type: PointLight - color: "#dd200b" + color: "#f51e0f" + radius: 6 + energy: 3 + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: MobThresholds + thresholds: + 0: Alive + 200: Critical + 300: Dead + stateAlertDict: + Alive: BorgHealth + Critical: BorgCrit + Dead: BorgDead + showOverlays: false + allowRevives: true + - type: FlashImmunity + - type: TypingIndicator + proto: syndibot + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 175 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Machines/warning_buzzer.ogg + params: + volume: 5 + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:EmptyContainersBehaviour + containers: + - borg_brain + - borg_module + - cell_slot + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Tag + tags: + - DoorBumpOpener + - CanPilot + - FootstepSound + - EmagImmune + # Sunrise-end diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml index fecf822ce99..b6b942693a0 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -34,6 +34,11 @@ interactFailureString: petting-failure-generic-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + # Sunrise-Start + - type: InnateItem + instantActions: + - HandheldStationMapUnpowered + # Sunrise-End - type: entity id: BorgChassisMining @@ -60,7 +65,7 @@ movement: state: miner - type: BorgChassis - maxModules: 4 + maxModules: 5 # Sunrise-Edit moduleWhitelist: tags: - BorgModuleGeneric @@ -95,6 +100,16 @@ interactFailureString: petting-failure-salvage-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + # Sunrise-start + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 3.5 + # Sunrise-end - type: entity id: BorgChassisEngineer @@ -113,7 +128,7 @@ map: ["light"] visible: false - type: BorgChassis - maxModules: 4 + maxModules: 5 # Sunrise-Edit moduleWhitelist: tags: - BorgModuleGeneric @@ -148,6 +163,18 @@ interactFailureString: petting-failure-engineer-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + # Sunrise-start + - type: TTS + voice: AdventureCore + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + - type: InnateItem + instantActions: + - HandheldStationMapUnpowered + # Sunrise-end - type: entity id: BorgChassisJanitor @@ -209,6 +236,16 @@ interactFailureString: petting-failure-janitor-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + # Sunrise-start + - type: FootstepModifier + footstepSoundCollection: + path: /Audio/Effects/Fluids/watersplash.ogg + params: + volume: -5 + - type: InnateItem + instantActions: + - HandheldStationMapUnpowered + # Sunrise-end - type: entity id: BorgChassisMedical @@ -235,7 +272,7 @@ movement: state: medical - type: BorgChassis - maxModules: 4 + maxModules: 5 # Sunrise-Edit moduleWhitelist: tags: - BorgModuleGeneric @@ -274,8 +311,19 @@ interactFailureString: petting-failure-medical-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg - - type: TTS # Sunrise-Edit - voice: FactCore # Sunrise-Edit + # Sunrise-start + - type: TTS + voice: TurretFloor + - type: FabricateCandy + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 5 + - type: InnateItem + instantActions: + - HandheldCrewMonitorBorg + worldTargetActions: + - HandheldHealthAnalyzerUnpowered + # Sunrise-end - type: entity id: BorgChassisService @@ -363,6 +411,36 @@ interactFailureString: petting-failure-syndicate-cyborg interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg + # Sunrise-Start + - type: PointLight + color: "#dd200b" + - type: TriggerOnMobstateChange + preventSuicide: true + mobState: + - Critical + - type: OnUseTimerTrigger + delay: 3 + initialBeepDelay: 0 + beepInterval: 3 + beepSound: /Audio/Effects/PowerSink/charge_fire.ogg + - type: ExplodeOnTrigger + - type: GibOnTrigger + deleteItems: true + - type: Explosive + explosionType: Default + totalIntensity: 3500 + intensitySlope: 15 + maxIntensity: 70 + canCreateVacuum: true + - type: TTS + voice: Sentrybot + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 3.5 + - type: InnateItem + worldTargetActions: + - Emag + # Sunrise-End - type: entity id: BorgChassisSyndicateMedical @@ -406,6 +484,17 @@ collection: FootstepHoverBorg params: volume: -6 + # Sunrise-Start + - type: TTS + voice: Sentrybot + - type: MovementSpeedModifier + baseWalkSpeed: 2.5 + baseSprintSpeed: 4.5 + - type: InnateItem + worldTargetActions: + - Emag + - HandheldHealthAnalyzerUnpowered + # Sunrise-End - type: entity id: BorgChassisSyndicateSaboteur diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index a965a3901f4..b1247ed95b7 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -6,8 +6,9 @@ - type: ContainerFill containers: borg_brain: - - Boris + - Boris # Sunrise-Edit borg_module: + - BorgModuleStandart # Sunrise-Edit - BorgModuleTool - type: ItemSlots slots: @@ -25,29 +26,30 @@ - type: ContainerFill containers: borg_brain: - - MMIFilled + - Boris # Sunrise-Edit - type: ItemSlots slots: cell_slot: name: power-cell-slot-component-slot-name-default startingItem: PowerCellMedium -- type: entity - id: PlayerBorgSyndicateAssaultBattery - parent: BorgChassisSyndicateAssault - suffix: Battery, Module, Operative - components: - - type: NukeOperative - - type: ContainerFill - containers: - borg_brain: - - Sofia - borg_module: - - BorgModuleOperative - - BorgModuleL6C - - BorgModuleEsword - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellHyper +# Move to _Sunrise +#- type: entity +# id: PlayerBorgSyndicateAssaultBattery +# parent: BorgChassisSyndicateAssault +# suffix: Battery, Module, Operative +# components: +# - type: NukeOperative +# - type: ContainerFill +# containers: +# borg_brain: +# - Sofia # Sunrise-Edit +# borg_module: +# - BorgModuleOperative +# - BorgModuleL6C +# - BorgModuleEsword +# - type: ItemSlots +# slots: +# cell_slot: +# name: power-cell-slot-component-slot-name-default +# startingItem: PowerCellHyper diff --git a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml index 8944c69500c..339e508a4e8 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Syndicate_Gadgets/reinforcement_teleporter.yml @@ -92,18 +92,19 @@ - type: EmitSoundOnUse sound: /Audio/Animals/cat_meow.ogg -- type: entity - parent: ReinforcementRadio - id: ReinforcementRadioSyndicateCyborgAssault # Reinforcement radio exclusive to nukeops uplink - name: syndicate assault cyborg reinforcement radio - description: Call in a well armed assault cyborg, instantly! - suffix: NukeOps - components: - - type: GhostRole - name: ghost-role-information-syndie-assaultborg-name - description: ghost-role-information-syndie-assaultborg-description - rules: ghost-role-information-silicon-rules - raffle: - settings: default - - type: GhostRoleMobSpawner - prototype: PlayerBorgSyndicateAssaultBattery +# Move to _Sunrise +#- type: entity +# parent: ReinforcementRadio +# id: ReinforcementRadioSyndicateCyborgAssault # Reinforcement radio exclusive to nukeops uplink +# name: syndicate assault cyborg reinforcement radio +# description: Call in a well armed assault cyborg, instantly! +# suffix: NukeOps +# components: +# - type: GhostRole +# name: ghost-role-information-syndie-assaultborg-name +# description: ghost-role-information-syndie-assaultborg-description +# rules: ghost-role-information-silicon-rules +# raffle: +# settings: default +# - type: GhostRoleMobSpawner +# prototype: PlayerBorgSyndicateAssaultBattery diff --git a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml index 0c8b539c590..daac0a0e09b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml @@ -37,7 +37,7 @@ - type: entity parent: Holoprojector - id: HoloprojectorBorg + id: HoloprojectorJanitorBorg # Sunrise-Edit suffix: borg components: - type: HolosignProjector diff --git a/Resources/Prototypes/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/Entities/Objects/Fun/pai.yml index 1b673ba8ac2..2520f4a404d 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/pai.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/pai.yml @@ -16,11 +16,9 @@ enum.InstrumentUiKey.Key: type: InstrumentBoundUserInterface requireInputValidation: false - enum.StationMapUiKey.Key: - type: UntrackedStationMapBoundUserInterface - requireInputValidation: false - type: Sprite sprite: Objects/Fun/pai.rsi + #noRot: true layers: - state: pai-base - state: pai-off-overlay @@ -30,6 +28,8 @@ context: "human" - type: PAI - type: BlockMovement + blockInteractionAttempt: false + blockUseAttempt: false - type: ToggleableGhostRole examineTextMindPresent: pai-system-pai-installed examineTextMindSearching: pai-system-still-searching @@ -55,8 +55,6 @@ - type: Actions - type: TypingIndicator proto: robot -# - type: TTS -# voice: TODO add our TTS Voice Sunrise - type: Speech speechVerb: Robotic speechSounds: Pai @@ -74,7 +72,18 @@ Off: { state: pai-off-overlay } Searching: { state: pai-searching-overlay } On: { state: pai-on-overlay } - - type: StationMap + # Sunrise-Edit + - type: TTS + voice: FactCore + - type: InnateItem + instantActions: + - PortableSurveillanceCameraMonitor + - HandheldStationMapUnpowered + - HandheldCrewMonitorBorg + worldTargetActions: + - HandheldHealthAnalyzerUnpowered + - type: BorgBrain + # Sunrise-End - type: entity parent: PersonalAI @@ -107,6 +116,12 @@ Off: { state: syndicate-pai-off-overlay } Searching: { state: syndicate-pai-searching-overlay } On: { state: syndicate-pai-on-overlay } + # Sunrise-Edit + - type: InnateItem + worldTargetActions: + - Emag + - HandheldHealthAnalyzerUnpowered + # Sunrise-End - type: entity parent: PersonalAI diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 92c2af3de4c..a74993ff994 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -116,7 +116,7 @@ - CableApcStackLingering10 - CableMVStackLingering10 - CableHVStackLingering10 - - Wirecutter + - WirecutterBorg # Sunrise-Edit - trayScanner - type: entity @@ -171,12 +171,12 @@ - state: icon-tools - type: ItemBorgModule items: - - Crowbar - - Wrench - - Screwdriver - - Wirecutter + - CrowbarBorg # Sunrise-Edit + - WrenchBorg # Sunrise-Edit + - ScrewdriverBorg # Sunrise-Edit + - WirecutterBorg # Sunrise-Edit - Multitool - - WelderIndustrial + - WelderBorg # Sunrise-Edit # cargo modules - type: entity @@ -236,7 +236,7 @@ - type: ItemBorgModule items: - Omnitool - - WelderExperimental + - WelderBorg # Sunrise-Edit - NetworkConfigurator - RemoteSignaller - GasAnalyzer @@ -284,8 +284,8 @@ - type: ItemBorgModule items: - LightReplacer - - Crowbar - - Screwdriver + - CrowbarBorg # Sunrise-Edit + - ScrewdriverBorg # Sunrise-Edit - type: entity id: BorgModuleCleaning @@ -314,8 +314,8 @@ - type: ItemBorgModule items: - AdvMopItem - - HoloprojectorBorg - - SprayBottleSpaceCleaner + - HoloprojectorJanitorBorg # Sunrise-Edit + - SprayBottleSpaceCleanerBorg # Sunrise-Edit - Dropper - TrashBag @@ -345,7 +345,6 @@ - state: icon-treatment - type: ItemBorgModule items: - - HandheldHealthAnalyzerUnpowered - Brutepack10Lingering - Ointment10Lingering - Gauze10Lingering @@ -376,11 +375,7 @@ - state: icon-chemist - type: ItemBorgModule items: - - HandheldHealthAnalyzerUnpowered - - Beaker - - Beaker - - BorgDropper - - BorgHypo + - HyposprayBorgMedical # Sunrise-Edit # science modules # todo: if science ever gets their own custom robot, add more "sci" modules. diff --git a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml index 2c2fc795f2d..9327ffa41af 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml @@ -267,6 +267,14 @@ - Back - suitStorage - Belt + # Sunrise-Start + - type: GasRegeneration + airRegenerate: + volume: 5 + temperature: 293.15 + moles: + - 0.0008 + # Sunrise-End # Filled void - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index ece4c3a941c..38a521540a0 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -564,7 +564,7 @@ runningState: fab-active staticRecipes: - MMI - - Boris + - Boris # Sunrise-Edit - SciFlash - BorgModuleCable - BorgModuleFireExtinguisher diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml index 0f012cefc98..4917b03f3d2 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/cyborg.yml @@ -43,7 +43,7 @@ - tool: Screwing doAfter: 0.5 - + - to: engineer steps: - assemblyId: engineer @@ -179,6 +179,62 @@ - tool: Screwing doAfter: 0.5 + # Sunrise-Start + - to: peace + steps: + - assemblyId: peace + guideString: borg-construction-guide-string + + - material: Cable + amount: 1 + doAfter: 1 + store: part-container + + - component: Flash + name: flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - component: Flash + name: second flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - tool: Screwing + doAfter: 0.5 + + - to: clown + steps: + - assemblyId: clown + guideString: borg-construction-guide-string + + - material: Cable + amount: 1 + doAfter: 1 + store: part-container + + - component: Flash + name: flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - component: Flash + name: second flash + store: part-container + icon: + sprite: Objects/Weapons/Melee/flash.rsi + state: flash + + - tool: Screwing + doAfter: 0.5 + # Sunrise-End + - node: cyborg entity: BorgChassisGeneric @@ -205,3 +261,29 @@ - node: syndicatesaboteur entity: BorgChassisSyndicateSaboteur + +# Sunrise-Start + - node: security + entity: BorgChassisSecurity + + - node: securitycombat + entity: BorgChassisSecurityCombat + + - node: ertcombat + entity: BorgChassisERT + + - node: peace + entity: BorgChassisPeace + + - node: clown + entity: BorgChassisClown + + - node: syndicate_reaper + entity: BorgChassisSyndicateReaper + + - node: syndicate_heavy + entity: BorgChassisSyndicateHeavy + + - node: syndicate_spider + entity: BorgChassisSyndicateSpider +# Sunrise-End diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index 324f983ecaf..b711f67a570 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -5,7 +5,7 @@ playTimeTracker: JobBorg requirements: - !type:OverallPlaytimeRequirement - time: 216000 #60 hrs + time: 21600 #6 hrs # Sunrise-Edit canBeAntag: false displayWeight: -10 # Sunrise icon: JobIconBorg diff --git a/Resources/Prototypes/Roles/Jobs/departments.yml b/Resources/Prototypes/Roles/Jobs/departments.yml index a236cceb6c7..db412b19898 100644 --- a/Resources/Prototypes/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/Roles/Jobs/departments.yml @@ -6,6 +6,7 @@ - CargoTechnician - Quartermaster - SalvageSpecialist + - MinerBorg # Sunrise-Edit - type: department id: Civilian @@ -31,6 +32,9 @@ - Visitor - Zookeeper - ServiceWorker + - JanitorBorg # Sunrise-Edit + - ServiceBorg # Sunrise-Edit + - ClownBorg # Sunrise-Edit - type: department id: Command @@ -59,6 +63,7 @@ - SeniorEngineer # Sunrise-Senior - StationEngineer - TechnicalAssistant + - EngineerBorg # Sunrise-Edit - type: department id: Medical @@ -72,6 +77,7 @@ - MedicalIntern - Psychologist - Paramedic + - MedicalBorg # Sunrise-Edit - type: department id: Security @@ -87,6 +93,8 @@ - Warden - Brigmedic # Sunrise-Brigmedic - SecurityPilot # Sunrise-SecurityPilot + - SecurityBorg # Sunrise-Edit + - SecurityCombatBorg # Sunrise-Edit - type: department id: Science diff --git a/Resources/Prototypes/_Sunrise/Actions/borg_actions.yml b/Resources/Prototypes/_Sunrise/Actions/borg_actions.yml new file mode 100644 index 00000000000..6cd8014c6d7 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Actions/borg_actions.yml @@ -0,0 +1,82 @@ +- type: entity + id: ActionToggleBorgMagboots + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + icon: { sprite: Clothing/Shoes/Boots/magboots-advanced.rsi, state: icon } + iconOn: Clothing/Shoes/Boots/magboots-advanced.rsi/icon-on.png + itemIconStyle: NoItem + priority: 12 + event: !type:ToggleBorgMagbootsActionEvent + +- type: entity + id: BorgCuffed + categories: [ HideSpawnMenu ] + components: + - type: EntityTargetAction + icon: { sprite: Objects/Misc/cablecuffs.rsi, state: cuff } + itemIconStyle: NoItem + whitelist: + components: + - Cuffable + canTargetSelf: false + useDelay: 15 + checkCanAccess: true + range: 2 + event: !type:BorgCuffedActionEvent + priority: 9 + +- type: entity + id: FabricateLollipop + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + icon: { sprite: _Sunrise/Objects/Consumable/Food/candy.rsi, state: lollipop } + useDelay: 120 + priority: 20 + event: !type:FabricateLollipopActionEvent + +- type: entity + id: FabricateGumball + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + icon: { sprite: _Sunrise/Objects/Consumable/Food/candy.rsi, state: gumball } + useDelay: 40 + priority: 20 + event: !type:FabricateGumballActionEvent + +- type: entity + id: FabricateCookie + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + icon: { sprite: Objects/Consumable/Food/Baked/misc.rsi, state: COOKIE!!! } + useDelay: 30 + priority: 20 + event: !type:FabricateCookieActionEvent + +- type: entity + id: FabricateSoap + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + icon: { sprite: Objects/Specific/Janitorial/soap.rsi, state: soap-4 } + useDelay: 30 + priority: 20 + event: !type:FabricateSoapActionEvent + +- type: entity + id: ActionViewCrewManifest + name: View Crew Manifest + description: View the View crew manifest station. + categories: [ HideSpawnMenu ] + components: + - type: InstantAction + itemIconStyle: NoItem + icon: + sprite: Interface/Actions/actions_borg.rsi + state: state-manifest + event: !type:CrewManifestOpenActionEvent + useDelay: 0.5 + priority: 11 diff --git a/Resources/Prototypes/_Sunrise/Body/silicons.yml b/Resources/Prototypes/_Sunrise/Body/silicons.yml new file mode 100644 index 00000000000..ffc2fd419ca --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Body/silicons.yml @@ -0,0 +1,15 @@ +- type: body + id: Reaper + name: "reaper" + root: torso + slots: + torso: + part: TorsoBorg + connections: + - hand 1 + hand 1: + part: LeftArmBorg + connections: + - hand 2 + hand 2: + part: LeftArmBorg \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml index b54bef9590c..1eb504ffd03 100644 --- a/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/_Sunrise/Catalog/uplink_catalog.yml @@ -250,3 +250,84 @@ blacklist: components: - SurplusBundle + +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgAssault + name: Телепорт подкрепления боевого борга синдиката + description: Отправляет вам в поддержку борга синдиката. + productEntity: ReinforcementRadioSyndicateCyborgAssault + icon: { sprite: Mobs/Silicon/chassis.rsi, state: synd_sec } + cost: + Telecrystal: 50 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgHeavy + name: Телепорт подкрепления тяжелого боевого борга синдиката + description: Отправляет вам в поддержку борга синдиката. + productEntity: ReinforcementRadioSyndicateCyborgHeavy + icon: { sprite: _Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi, state: heavy } + cost: + Telecrystal: 100 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgSpider + name: Телепорт подкрепления диверсионного боевого борга синдиката + description: Отправляет вам в поддержку борга синдиката. + productEntity: ReinforcementRadioSyndicateCyborgSpider + icon: { sprite: _Sunrise/Mobs/Silicon/chassis.rsi, state: spider } + cost: + Telecrystal: 50 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgMedical + name: Телепорт подкрепления медицинского борга синдиката + description: Отправляет вам в поддержку борга синдиката. + productEntity: ReinforcementRadioSyndicateCyborgMedical + icon: { sprite: Mobs/Silicon/chassis.rsi, state: synd_medical } + cost: + Telecrystal: 50 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkReinforcementRadioSyndicateCyborgReaper + name: Телепорт подкрепления борга синдиката "Жнец" + description: Отправляет вам в поддержку борга синдиката. + productEntity: ReinforcementRadioSyndicateCyborgReaper + icon: { sprite: _Sunrise/Mobs/Silicon/chassis.rsi, state: syndi_reaper } + cost: + Telecrystal: 50 + categories: + - UplinkAllies + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + diff --git a/Resources/Prototypes/_Sunrise/Damage/modifier_sets.yml b/Resources/Prototypes/_Sunrise/Damage/modifier_sets.yml index bd95dedd27b..1189b32d458 100644 --- a/Resources/Prototypes/_Sunrise/Damage/modifier_sets.yml +++ b/Resources/Prototypes/_Sunrise/Damage/modifier_sets.yml @@ -26,3 +26,12 @@ Shock: 0.9 Cold: 0.9 Poison: 0.8 + +- type: damageModifierSet + id: Silicon + coefficients: + Blunt: 0.7 + Slash: 0.7 + Piercing: 0.7 + Heat: 0.7 + Shock: 1.3 diff --git a/Resources/Prototypes/_Sunrise/Datasets/Names/silicons.yml b/Resources/Prototypes/_Sunrise/Datasets/Names/silicons.yml new file mode 100644 index 00000000000..72dbf5aadaa --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Datasets/Names/silicons.yml @@ -0,0 +1,5 @@ +- type: dataset + id: names_first_reaper + values: + - Потрошитель + - Искуситель \ No newline at end of file diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Belt/belts.yml index b1e31871456..be2eb4a492a 100644 --- a/Resources/Prototypes/_Sunrise/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Belt/belts.yml @@ -73,3 +73,16 @@ sprite: _Sunrise/Entities/Clothing/Belt/cmo.rsi - type: Clothing sprite: _Sunrise/Entities/Clothing/Belt/cmo.rsi + +- type: entity + parent: [ClothingBeltStorageBase, ContentsExplosionResistanceBase] + id: ClothingBeltReaperWebbing + name: chest rig + description: A set of tactical webbing worn by Syndicate boarding parties. + components: + - type: Sprite + sprite: _Sunrise/Entities/Clothing/Belt/webbing.rsi + - type: Clothing + sprite: _Sunrise/Entities/Clothing/Belt/webbing.rsi + - type: ExplosionResistance + damageCoefficient: 0.5 diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml new file mode 100644 index 00000000000..74440f7e19d --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Cyborgs/borg_chassis.yml @@ -0,0 +1,814 @@ +- type: entity + id: BorgChassisSecurity + parent: BaseBorgChassisNT + name: security cyborg + components: + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + layers: + - state: sec + - state: sec_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: sec_l + shader: unshaded + map: ["light"] + visible: false + - type: FlashImmunity + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: BorgCuffed + - type: BorgTransponder + sprite: + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + state: sec + name: security combat cyborg + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleSecurity + hasMindState: sec_e + noMindState: sec_e_r + - type: Construction + node: security + - type: IntrinsicRadioTransmitter + channels: + - Security + - Binary + - Common + - Science + - type: ActiveRadio + channels: + - Security + - Binary + - Common + - Science + - type: AccessReader + access: [["Security"], ["Command"]] + - type: SiliconLawProvider + laws: SecurityStatic + - type: TTS + voice: Sentrybot + - type: Access + enabled: false + tags: + - EmergencyShuttleRepealAll + - Command + - Lawyer + - Engineering + - Medical + - Salvage + - Cargo + - Research + - Service + - Maintenance + - Brig + - Security + - External + - Janitor + - Theatre + - Bar + - Chemistry + - Kitchen + - Chapel + - Hydroponics + - Atmospherics + - type: Tag + tags: + - DoorBumpOpener + - CanPilot + - FootstepSound + - EmagImmune + - type: InnateItem + instantActions: + - PortableSurveillanceCameraMonitor + +- type: entity + id: BorgChassisSecurityCombat + parent: BaseBorgChassisNT + name: security combat cyborg + components: + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + layers: + - state: sec_mk2 + - state: sec_mk2_e_r + map: [ "enum.BorgVisualLayers.Light" ] + shader: unshaded + visible: false + - state: sec_mk2_l + shader: unshaded + map: [ "light" ] + visible: false + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + - type: BorgCuffed + - type: FlashImmunity + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: BorgTransponder + sprite: + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + state: sec_mk2 + name: security combat cyborg + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleSecurity + hasMindState: sec_mk2_e + noMindState: sec_mk2_e_r + - type: Construction + node: securitycombat + - type: IntrinsicRadioTransmitter + channels: + - Security + - Binary + - Common + - Science + - type: ActiveRadio + channels: + - Security + - Binary + - Common + - Science + - type: AccessReader + access: [["Security"], ["Command"]] + - type: SiliconLawProvider + laws: SecurityStatic + - type: TTS + voice: Sentrybot + - type: PointLight + color: "#a4daff" + radius: 6 + energy: 3 + - type: Access + enabled: false + tags: + - EmergencyShuttleRepealAll + - Command + - Lawyer + - Engineering + - Medical + - Salvage + - Cargo + - Research + - Service + - Maintenance + - Brig + - Security + - External + - Janitor + - Theatre + - Bar + - Chemistry + - Kitchen + - Chapel + - Hydroponics + - Atmospherics + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 3.5 + - type: Tag + tags: + - DoorBumpOpener + - CanPilot + - FootstepSound + - EmagImmune + - type: InnateItem + instantActions: + - PortableSurveillanceCameraMonitor + +- type: entity + id: BorgChassisPeace + parent: BaseBorgChassisNT + name: peace cyborg + components: + - type: Sprite + layers: + - state: peace + - state: peace_e_r + map: [ "enum.BorgVisualLayers.Light" ] + shader: unshaded + visible: false + - state: peace_l + shader: unshaded + map: [ "light" ] + visible: false + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: SiliconLawProvider + laws: PeaceStatic + - type: Pacified + - type: FlashImmunity + - type: FabricateCookie + сookieList: + - FoodBakedCookieOatmeal + - FoodBakedCookieRaisin + - FoodBakedCookie + - FoodBakedCookieSugar + - FoodSnackCookieFortune + - type: BorgTransponder + sprite: + sprite: Mobs/Silicon/chassis.rsi + state: peace + name: peace cyborg + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleSecurity + hasMindState: peace_e + noMindState: peace_e_r + - type: Construction + node: peace + - type: IntrinsicRadioTransmitter + channels: + - Security + - Binary + - Common + - Science + - type: ActiveRadio + channels: + - Security + - Binary + - Common + - Science + - type: AccessReader + access: [["Security"], ["Command"], ["Research"]] + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + - type: Access + enabled: false + tags: + - EmergencyShuttleRepealAll + - Command + - Lawyer + - Engineering + - Medical + - Salvage + - Cargo + - Research + - Service + - Maintenance + - Brig + - Security + - External + - Janitor + - Theatre + - Bar + - Chemistry + - Kitchen + - Chapel + - Hydroponics + - Atmospherics + - type: Tag + tags: + - DoorBumpOpener + - CanPilot + - FootstepSound + - EmagImmune + - type: InnateItem + instantActions: + - PortableSurveillanceCameraMonitor + +- type: entity + id: BorgChassisClown + parent: BaseBorgChassisNT + name: clown cyborg + components: + - type: Sprite + layers: + - state: clown + - state: clown_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: clown_l + shader: unshaded + map: ["light"] + visible: false + - type: FabricateSoap + soapList: + - Soap + - SoapNT + - SoapDeluxe + - SoapHomemade + - type: BorgTransponder + sprite: + sprite: Mobs/Silicon/chassis.rsi + state: clown + name: clown cyborg + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleGeneric + - BorgModuleService + hasMindState: clown_e + noMindState: clown_e_r + - type: Construction + node: clown + - type: IntrinsicRadioTransmitter + channels: + - Service + - Binary + - Common + - Science + - type: ActiveRadio + channels: + - Service + - Binary + - Common + - Science + - type: AccessReader + access: [["Service"], ["Command"], ["Research"]] + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepClown + - type: InnateItem + instantActions: + - HandheldStationMapUnpowered + +- type: entity + id: BorgChassisSyndicateReaper + parent: BaseBorgChassisSyndicate + name: syndicate reaper cyborg + components: + - type: Construction + node: syndicate_reaper + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/chassis.rsi # Sunrise Resprite + layers: + - state: syndi_reaper + - state: syndi_reaper_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: syndi_reaper_l + shader: unshaded + map: ["light"] + visible: false + - map: ["jumpsuit"] + - map: [ "belt" ] + - map: [ "id" ] + - map: [ "neck" ] + - map: [ "back" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleSyndicate + hasMindState: syndi_reaper_e + noMindState: syndi_reaper_e_r + - type: IntrinsicRadioTransmitter + channels: + - Syndicate + - Binary + - type: ActiveRadio + channels: + - Syndicate + - Binary + - type: TTS + voice: Sentrybot + - type: MobState + allowedStates: + - Alive + - Critical + - Dead + - type: NameIdentifier + group: SyndieReaperRobot + - type: DamageStateVisuals + states: + Alive: + Base: syndi_reaper + Critical: + Base: syndi_reaper_critical + Dead: + Base: syndi_reaper_dead + - type: PointLight + color: green + radius: 6 + energy: 3 + - type: Inventory + templateId: reaper + - type: InventorySlots + - type: Body + prototype: Reaper + - type: Hands + showInHands: true + - type: Loadout + prototypes: [SyndiReaperHardsuitGear] + - type: FootstepModifier + footstepSoundCollection: + collection: Footstep2CyborgLegs + params: + volume: -15 + - type: Vocal + sounds: + Unsexed: Reaper + - type: RandomMetadata + nameSegments: + - names_first_reaper + - type: InnateItem + worldTargetActions: + - Emag + +- type: startingGear + id: SyndiReaperHardsuitGear + equipment: + belt: ClothingBeltReaperWebbing + +- type: entity + id: BorgChassisERT + parent: BaseBorgChassisNT + name: Боевой киборг ОБР + description: Боевой робот НТ, разработанный для поддержки ОБР в выполнении боевых задач. + components: + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + layers: + - state: ert_borg + - state: ert_borg_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: ert_borg_l + shader: unshaded + map: ["light"] + visible: false + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -15 + - type: FlashImmunity + - type: ShowJobIcons + - type: ShowMindShieldIcons + - type: ShowCriminalRecordIcons + - type: GhostRole + makeSentient: true + allowMovement: true + name: Боевой киборг ОБР + description: Слава НТ!. + rules: Подчиняйтес ОБР и Центральному Командованию. + - type: GhostTakeoverAvailable + - type: Construction + node: ertcombat + - type: BorgTransponder + sprite: + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + state: ert_borg + name: clown cyborg + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleERT + hasMindState: ert_borg_e + noMindState: ert_borg_e_r + - type: IntrinsicRadioTransmitter + channels: + - Security + - Binary + - Common + - Science + - Command + - CentCom + - type: ActiveRadio + channels: + - Security + - Binary + - Common + - Science + - Command + - CentCom + - type: MobThresholds + thresholds: + 0: Alive + 200: Critical + 300: Dead + - type: AccessReader + access: [["Security"], ["Command"], ["Research"]] + - type: SiliconLawProvider + laws: ERTStatic + - type: PointLight + color: "#9efce0" + radius: 6 + energy: 4 + - type: TTS + voice: Sentrybot + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 175 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Machines/warning_buzzer.ogg + params: + volume: 5 + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:EmptyContainersBehaviour + containers: + - borg_brain + - borg_module + - cell_slot + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: Access + enabled: false + tags: + - EmergencyShuttleRepealAll + - Command + - Lawyer + - Engineering + - Medical + - Salvage + - Cargo + - Research + - Service + - Maintenance + - Brig + - Security + - External + - Janitor + - Theatre + - Bar + - Chemistry + - Kitchen + - Chapel + - Hydroponics + - Atmospherics + - type: RandomMetadata + nameSegments: + - BorgNamesERT + - type: MovementSpeedModifier + baseWalkSpeed : 2.5 + baseSprintSpeed : 4 + - type: Tag + tags: + - DoorBumpOpener + - CanPilot + - FootstepSound + - EmagImmune + - type: InnateItem + instantActions: + - PortableSurveillanceCameraMonitor + - HandheldCrewMonitorBorg + +- type: dataset + id: BorgNamesERT + values: + - Хал 900 + - Ева + - Прайм + - Джет + - Арнольд + - Систэм + - Вавилон + - Логан + - Гэбриэл + +- type: entity + id: BorgChassisSyndicateHeavy + parent: BaseBorgChassisSyndicate + name: Тяжёлый боевой киборг Синдиката + description: Модернизированная версия боевого киборга Синдиката, оборудованный тяжёлым оружием и крепким корпусом. + components: + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi + layers: + - state: heavy + - state: heavy_e_r + map: ["enum.BorgVisualLayers.Light"] + shader: unshaded + visible: false + - state: heavy_l + shader: unshaded + map: ["light"] + visible: false + - type: Construction + node: syndicate_heavy + - type: BorgTransponder + sprite: + sprite: _Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi + state: heavy + name: Тяжёлый боевой киборг Синдиката + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleSyndicate + hasMindState: heavy_e + noMindState: heavy_e_r + - type: IntrinsicRadioTransmitter + channels: + - Syndicate + - Binary + - type: ActiveRadio + channels: + - Syndicate + - Binary + - type: TriggerOnMobstateChange + preventSuicide: true + mobState: + - Critical + - type: OnUseTimerTrigger + delay: 3 + initialBeepDelay: 0 + beepInterval: 3 + beepSound: /Audio/Effects/PowerSink/charge_fire.ogg + - type: ExplodeOnTrigger + - type: GibOnTrigger + deleteItems: true + - type: Explosive + explosionType: Default + totalIntensity: 5500 + intensitySlope: 15 + maxIntensity: 70 + canCreateVacuum: true + - type: MobThresholds + thresholds: + 0: Alive + 400: Critical + 500: Dead + - type: PointLight + color: "#f51e0f" + radius: 9 + energy: 6 + - type: TTS + voice: Sentrybot + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 350 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Machines/warning_buzzer.ogg + params: + volume: 5 + - trigger: + !type:DamageTrigger + damage: 700 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:EmptyContainersBehaviour + containers: + - borg_brain + - borg_module + - cell_slot + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: RandomHumanoidAppearance + randomizeName: False + - type: RandomMetadata + nameSegments: + - BorgHeavyNames + - type: FootstepModifier + footstepSoundCollection: + collection: FootstepCyborgSpider + params: + volume: -5 + - type: MovementSpeedModifier + baseWalkSpeed : 1.5 + baseSprintSpeed : 2.5 + - type: InnateItem + worldTargetActions: + - Emag + +- type: dataset + id: BorgHeavyNames + values: + - Разрушитель + - Судный день + - Большой Карл + - Танк + - Страйкер + - Трак + - Титан + - Кронос + - Инфильтратор + + +- type: entity + id: BorgChassisSyndicateSpider + parent: BaseBorgChassisSyndicate + name: Киборг диверсант Синдиката + description: Маленький робот Синдиката, разработанный для Диверсионного Отряда, оснащён всем необходимым для крупного саботажа. + components: + - type: Sprite + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + layers: + - state: spider + - state: spider_e_r + map: [ "enum.BorgVisualLayers.Light" ] + shader: unshaded + visible: false + - state: spider_l + shader: unshaded + map: [ "light" ] + visible: false + - type: GhostTakeoverAvailable + - type: Construction + node: syndicate_spider + - type: BorgTransponder + sprite: + sprite: _Sunrise/Mobs/Silicon/chassis.rsi + state: spider + name: Киборг диверсант Синдиката + - type: BorgChassis + maxModules: 4 + moduleWhitelist: + tags: + - BorgModuleSyndicate + hasMindState: spider_e + noMindState: spider_e_r + - type: IntrinsicRadioTransmitter + channels: + - Syndicate + - Binary + - type: ActiveRadio + channels: + - Syndicate + - Binary + - type: TriggerOnMobstateChange + preventSuicide: true + mobState: + - Critical + - type: OnUseTimerTrigger + delay: 3 + initialBeepDelay: 0 + beepInterval: 3 + beepSound: /Audio/Effects/PowerSink/charge_fire.ogg + - type: ExplodeOnTrigger + - type: GibOnTrigger + deleteItems: true + - type: Explosive + explosionType: Default + totalIntensity: 500 + intensitySlope: 15 + maxIntensity: 30 + canCreateVacuum: true + - type: MobThresholds + thresholds: + 0: Alive + 100: Critical + 200: Dead + - type: PointLight + color: "#f51e0f" + radius: 2 + energy: 2 + - type: TTS + voice: Sentrybot + - type: RandomHumanoidAppearance + randomizeName: False + - type: RandomMetadata + nameSegments: + - BorgScoutNames + - type: MovementSpeedModifier + baseWalkSpeed : 3 + baseSprintSpeed : 5 + - type: InnateItem + worldTargetActions: + - Emag + +- type: dataset + id: BorgScoutNames + values: + - UNO-3 + - Рейдер + - Бродяга + - Чип + - НОВА + - С-14 + - Омега + - Пиксель diff --git a/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml new file mode 100644 index 00000000000..43ade2921d8 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Mobs/Player/silicon.yml @@ -0,0 +1,304 @@ +- type: entity + id: PlayerBorgGenericMining + parent: BorgChassisMining + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleMining + - BorgModuleGPS + - BorgModuleJetpack + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgGenericEngineer + parent: BorgChassisEngineer + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleAdvancedTool + - BorgModuleCable + - BorgModuleConstruction + - BorgModuleRCD + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgGenericJanitor + parent: BorgChassisJanitor + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleLightReplacer + - BorgModuleCleaning + - BorgModuleAdvancedCleaning + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgGenericMedical + parent: BorgChassisMedical + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleAdvancedTreatment + - BorgModuleTreatment + - BorgModuleDefibrillator + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgGenericService + parent: BorgChassisService + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleMusique + - BorgModuleService + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgSecurityBattery + parent: BorgChassisSecurity + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleStun + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgSecurityCombatBattery + parent: BorgChassisSecurityCombat + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModuleCombat + - BorgModuleStun + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgPeaceBattery + parent: BorgChassisPeace + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleStandart + - BorgModulePeace + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +- type: entity + id: PlayerBorgClownBattery + parent: BorgChassisClown + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleClowning + - BorgModuleStandart + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: RandomMetadata + nameSegments: [names_borg] + +# Ert + +- type: entity + id: PlayerBorgChassisERTBattery + parent: BorgChassisERT + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgCombatModuleERT + - BorgModuleERTNlethal + - BorgToolModuleERT + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + +# Syndicate + +- type: entity + id: PlayerBorgSyndicateMedicalBattery + parent: BorgChassisSyndicateMedical + suffix: Battery, Tools + components: + - type: NukeOperative + - type: ContainerFill + containers: + borg_brain: + - Boris + borg_module: + - BorgModuleSyndicateGeneric + - BorgModuleSyndicateMedical + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + +- type: entity + id: PlayerBorgSyndicateReaperBattery + parent: BorgChassisSyndicateReaper + suffix: Battery, Tools + components: + - type: NukeOperative + - type: ContainerFill + containers: + borg_brain: + - Boris + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + +- type: entity + id: PlayerBorgHeavySyndicateCombatBattery + parent: BorgChassisSyndicateHeavy + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Sofia + borg_module: + - BorgModuleSyndicateGeneric + - BorgHeavyModuleSyndicateCombat + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + +- type: entity + id: PlayerBorgSyndicateAssaultBattery + parent: BorgChassisSyndicateAssault + suffix: Battery, Module, Operative + components: + - type: NukeOperative + - type: ContainerFill + containers: + borg_brain: + - Sofia + borg_module: + - BorgModuleSyndicateGeneric + - BorgModuleSyndicateCombat + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellHyper + +- type: entity + id: PlayerBorgSpiderSyndicateBattery + parent: BorgChassisSyndicateSpider + suffix: Battery, Tools + components: + - type: ContainerFill + containers: + borg_brain: + - Sofia + borg_module: + - BorgModuleSyndicateGeneric + - BorgScoutModuleSyndicateTool + - BorgScoutModuleSyndicateCombat + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml new file mode 100644 index 00000000000..419e11168a6 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Consumable/Food/candy.yml @@ -0,0 +1,48 @@ +- type: entity + parent: FoodBase + id: FoodLollipop + name: lollipop + description: For being such a good sport. + components: + - type: SolutionContainerManager + solutions: + food: + maxVol: 30 + reagents: + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Nutriment + Quantity: 3 + - ReagentId: Iron + Quantity: 3 + - ReagentId: Vitamin + Quantity: 9 + - ReagentId: Omnizine + Quantity: 12 + - type: Sprite + sprite: _Sunrise/Objects/Consumable/Food/candy.rsi + state: lollipop + +- type: entity + parent: FoodBase + id: FoodGumball + name: gumball + description: For being such a good sport. + components: + - type: SolutionContainerManager + solutions: + food: + maxVol: 30 + reagents: + - ReagentId: Sugar + Quantity: 3 + - ReagentId: Kelotane + Quantity: 9 + - ReagentId: Tricordrazine + Quantity: 9 + - ReagentId: Dylovene + Quantity: 9 + - type: Sprite + sprite: _Sunrise/Objects/Consumable/Food/candy.rsi + state: gumball + diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/reinforcement_teleporter.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/reinforcement_teleporter.yml new file mode 100644 index 00000000000..4561b8baa79 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Devices/reinforcement_teleporter.yml @@ -0,0 +1,69 @@ +- type: entity + parent: ReinforcementRadio + id: ReinforcementRadioSyndicateCyborgMedical + name: syndicate medical cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Медицинский борг синдиката + description: Смерть НТ. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgSyndicateMedicalBattery + +- type: entity + parent: ReinforcementRadio + id: ReinforcementRadioSyndicateCyborgReaper + name: syndicate reaper cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Борг синдиката "Жнец" + description: Смерть НТ. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgSyndicateReaperBattery + +- type: entity + parent: ReinforcementRadio + id: ReinforcementRadioSyndicateCyborgAssault + name: syndicate assault cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Syndicate Assault Cyborg + description: Nuclear operatives needs reinforcements. You, a cold silicon killing machine, will help them. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgSyndicateAssaultBattery + +- type: entity + parent: ReinforcementRadio + id: ReinforcementRadioSyndicateCyborgHeavy + name: syndicate heavy cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Тяжелый боевой борг синдиката + description: Смерть НТ. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgHeavySyndicateCombatBattery + +- type: entity + parent: ReinforcementRadio + id: ReinforcementRadioSyndicateCyborgSpider + name: syndicate spider cyborg reinforcement radio + description: Call in a well armed assault cyborg, instantly! + suffix: NukeOps + components: + - type: GhostRole + name: Диверсионный борг синдиката + description: Смерть НТ. + rules: Normal syndicate antagonist rules apply. Work with whoever called you in, and don't harm them. + - type: GhostRoleMobSpawner + prototype: PlayerBorgSpiderSyndicateBattery diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_modules.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_modules.yml new file mode 100644 index 00000000000..79bfc562eb0 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_modules.yml @@ -0,0 +1,237 @@ +- type: entity + id: BorgCombatModuleERT + parent: [ BaseBorgModuleERT, BaseProviderBorgModule ] + name: Оружейный модуль киборга ОБР + components: + - type: Sprite + layers: + - state: NT + - state: icon-NT + - type: ItemBorgModule + items: + - WeaponPulseCarbineBorg + - WeaponPulseCarbineBorg + - PinpointerNuclear + +- type: entity + id: BorgModuleERTNlethal + parent: [ BaseBorgModuleERT, BaseProviderBorgModule ] + name: Нелетальный модуль киборга ОБР + components: + - type: Sprite + layers: + - state: NT + - state: icon-NT + - type: ItemBorgModule + items: + - StunbatonBorg + - WeaponDisablerSMGBorg + - FlashBorg + +- type: entity + id: BorgToolModuleERT + parent: [ BaseBorgModuleERT, BaseProviderBorgModule ] + name: Инструментальный модуль киборга ОБР + components: + - type: Sprite + layers: + - state: NT + - state: icon-NT + - type: ItemBorgModule + items: + - JawsOfLife + +- type: entity + id: BorgHeavyModuleSyndicateCombat + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: Оружейный модуль тяжёлого киборга Синдиката + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + items: + - DL6902Borg + - WeaponLauncherChinaLakeBorg + +- type: entity + id: BorgScoutModuleSyndicateCombat + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: Защитный модуль киборга диверсанта Синдиката + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + items: + - WeaponIAR52Borg + - CombatKnife + - HyposprayBorgSyndie + +- type: entity + id: BorgScoutModuleSyndicateTool + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: Продвинутый инструментальный модуль киборга диверсанта Синдиката + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + items: + - RadioJammerBorg + - JetpackVoidFilled + - trayScanner + - WelderExperimental + - Multitool + - PowerDrill + +- type: entity + id: BaseBorgModuleSecurity + parent: BaseBorgModule + abstract: true + components: + - type: Tag + tags: + - BorgModuleSecurity + +- type: entity + id: BaseBorgModuleERT + parent: BaseBorgModule + abstract: true + components: + - type: Tag + tags: + - BorgModuleERT + +- type: entity + id: BorgModuleStun + parent: [ BaseBorgModuleSecurity, BaseProviderBorgModule ] + name: stuh cyborg module + components: + - type: Sprite + layers: + - state: security + - state: icon-stuh + - type: ItemBorgModule + items: + - WeaponDisablerBorg + - StunbatonBorg + - FlashBorg + +- type: entity + id: BorgModuleCombat + parent: [ BaseBorgModuleSecurity, BaseProviderBorgModule ] + name: combat cyborg module + components: + - type: Sprite + layers: + - state: security + - state: icon-combat + - type: ItemBorgModule + items: + - Truncheon + - WeaponLaserBorg + - WeaponLaserBorg + - HoloprojectorSecurityBorg + +- type: entity + id: BorgModulePeace + parent: [ BaseBorgModuleSecurity, BaseProviderBorgModule ] + name: peace cyborg module + components: + - type: Sprite + layers: + - state: security + - state: icon-peace + - type: ItemBorgModule + items: + - FlashBorg + - HyposprayBorgPeace + +- type: entity + id: BorgModuleMiningCombat + parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ] + name: combat mining cyborg module + components: + - type: Sprite + layers: + - state: cargo + - state: icon-mining + - type: ItemBorgModule + items: + - WeaponProtoKineticAcceleratorBorg + - WeaponCrusherDagger + +- type: entity + id: BorgModuleJetpack + parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ] + name: jetpack cyborg module + components: + - type: Sprite + layers: + - state: cargo + - state: icon-mining + - type: ItemBorgModule + items: + - JetpackVoidFilled + +- type: entity + id: BorgModuleSyndicateGeneric + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: cleaning cyborg module + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + items: + - SyndicateJawsOfLife + - PinpointerNuclear + +- type: entity + id: BorgModuleSyndicateMedical + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: medical syndicate module + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate-treatment + - type: ItemBorgModule + items: + - SawAdvanced + - HyposprayBorgSyndi + - DefibrillatorOneHandedUnpowered + +- type: entity + id: BorgModuleSyndicateCombat + parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule ] + name: combat syndicate cyborg module + components: + - type: Sprite + layers: + - state: syndicate + - state: icon-syndicate + - type: ItemBorgModule + items: + - EnergySword + - LightMachineGunBorg + +- type: entity + id: BorgModuleStandart + parent: [ BaseBorgModule, BaseProviderBorgModule ] + name: fire extinguisher cyborg module + components: + - type: Sprite + layers: + - state: generic + - state: icon-fire-extinguisher + - type: ItemBorgModule + items: + - CrowbarBorg + - FireExtinguisherBorg + - HyposprayBorgStandard diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_tools.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_tools.yml new file mode 100644 index 00000000000..7dd063f3936 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Specific/borg_tools.yml @@ -0,0 +1,684 @@ +- type: entity + parent: PowerCellMedium + id: PowerCellRobotTool + name: robot tool power cell + description: A small cell that self recharges. Used in robot tools. + noSpawn: true + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 4 + +- type: entity + name: robot disabler + parent: WeaponDisabler + id: WeaponDisablerBorg + description: A self-defense weapon that exhausts organic targets, weakening them until they collapse. + noSpawn: true + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 10 + +- type: entity + name: robot stun baton + parent: Stunbaton + id: StunbatonBorg + description: A stun baton for incapacitating people with. Actively harming with this is considered bad tone. + noSpawn: true + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 10 + +- type: entity + parent: HoloprojectorSecurity + id: HoloprojectorSecurityBorg + name: holobarrier robot projector + description: Creates a solid but fragile holographic barrier. + noSpawn: true + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellRobotTool + locked: true + +- type: entity + name: robot laser gun + parent: BaseWeaponBatterySmall + id: WeaponLaserBorg + description: This laser for security robot. + noSpawn: true + components: + #- type: AlterLevelGunBlocker #FIXMEVIGERS + - type: Item + size: Large + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + layers: + - state: laser_cyborg + map: ["enum.GunVisualLayers.Base"] + - state: laser_cyborg-unshaded-4 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Gun + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg + - type: HitscanBatteryAmmoProvider + proto: RedLaser + fireCost: 100 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 20 + - type: MagazineVisuals + magState: laser_cyborg + steps: 5 + zeroVisible: true + - type: Appearance + +- type: entity + name: flash robot + parent: Flash + id: FlashBorg + description: An ultrabright flashbulb with a trigger, which causes the victim to be dazed and lose their eyesight for a moment. Useless when burnt out. + noSpawn: true + components: + - type: Sprite + sprite: Objects/Weapons/Melee/flash.rsi + layers: + - state: burnt + map: [ "enum.FlashVisuals.BaseLayer" ] + - state: flashing + map: [ "enum.FlashVisuals.LightLayer" ] + visible: false + shader: unshaded + - type: LimitedCharges + maxCharges: 10 + charges: 10 + - type: AutoRecharge + rechargeDuration: 30 + +- type: entity + name: epinephrine robot hypospray + parent: BaseItem + description: A borg version of hypospray that automatically regenerates epinephrine. + id: HyposprayBorgStandard + noSpawn: true + components: + - type: Sprite + sprite: Objects/Specific/Medical/hypospray.rsi + state: borghypo + - type: Item + sprite: Objects/Specific/Medical/hypospray.rsi + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 15 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: Epinephrine + Quantity: 0.1 + - type: ExaminableSolution + solution: hypospray + - type: Hypospray + onlyAffectsMobs: false + injectOnly: true + +- type: entity + parent: HyposprayBorgStandard + id: HyposprayBorgPeace + name: pax cyborg hypospray + description: A cyborg version of hypospray that automatically regenerates pax. + noSpawn: true + components: + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 30 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: Pax + Quantity: 0.05 + +- type: entity + parent: HyposprayBorgStandard + id: HyposprayBorgMedical + name: medical robot hypospray + description: A hypospray that can switch through several reagents. + noSpawn: true + components: + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 30 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: DexalinPlus + Quantity: 2 + - type: SolutionRegenerationSwitcher + options: + - ReagentId: DexalinPlus + Quantity: 2 + - ReagentId: Tricordrazine + Quantity: 2 + - ReagentId: Dylovene + Quantity: 2 + - ReagentId: Bicaridine + Quantity: 2 + - ReagentId: Dermaline + Quantity: 2 + + +- type: entity + name: proto-kinetic robot accelerator + id: WeaponProtoKineticAcceleratorBorg + parent: WeaponProtoKineticAcceleratorBase + description: Fires low-damage kinetic bolts at a short range. + noSpawn: true + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Basic/kinetic_accelerator.rsi + layers: + - state: icon + - state: animation-icon + visible: false + map: [ "empty-icon" ] + - type: Gun + fireRate: 0.5 + selectedMode: SemiAuto + angleDecay: 45 + minAngle: 2 + maxAngle: 2 + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/kinetic_accel.ogg + + +- type: entity + parent: HyposprayBorgStandard + id: HyposprayBorgSyndi + name: gorlax robot hypospray + description: A hypospray that can switch through several reagents. + noSpawn: true + components: + - type: Sprite + sprite: Objects/Specific/Medical/syndihypo.rsi + state: hypo + - type: Item + sprite: Objects/Specific/Medical/syndihypo.rsi + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 20 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: Ephedrine + Quantity: 2 + - type: SolutionRegenerationSwitcher + options: + - ReagentId: Ephedrine + Quantity: 2 + - ReagentId: Omnizine + Quantity: 2 + - ReagentId: DexalinPlus + Quantity: 2 + +- type: entity + parent: Holoprojector + id: HolofanProjectorBorg + name: holofan robot projector + description: Stop suicidal passengers from killing everyone during atmos emergencies. + noSpawn: true + components: + - type: HolosignProjector + signProto: HoloFan + chargeUse: 120 + - type: Sprite + sprite: Objects/Devices/Holoprojectors/atmos.rsi + state: icon + - type: Tag + tags: + - HolofanProjector + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellRobotTool + locked: true + +- type: entity + name: machine gun borg + id: LightMachineGunBorg + parent: BaseItem + noSpawn: true + description: + components: + - type: Sprite + sprite: Objects/Weapons/Guns/LMGs/l6.rsi + layers: + - state: icon + map: ["enum.GunVisualLayers.Base"] + - type: Item + sprite: Objects/Weapons/Guns/LMGs/l6.rsi + - type: Gun + minAngle: 4 + maxAngle: 20 + angleIncrease: 4 + angleDecay: 16 + fireRate: 8 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + collection: m249 + params: + volume: 10 + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: MagazineVisuals + magState: mag + steps: 4 + zeroVisible: true + - type: Appearance + - type: BallisticAmmoProvider + proto: CartridgeLightRifle + capacity: 200 + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + ents: [] + - type: UseDelay + delay: 1 + + +- type: entity + name: robot china lake + parent: WeaponLauncherChinaLake + id: WeaponLauncherChinaLakeBorg + description: PLOOP + noSpawn: true + components: + - type: Gun + fireRate: 1 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg + - type: BallisticAmmoProvider + whitelist: + tags: + - Grenade + capacity: 10 + proto: GrenadeFrag + soundInsert: + path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true + - type: Appearance + +- type: entity + id: FireExtinguisherBorg + name: fire extinguisher borg + description: fire extinguisher borg + parent: FireExtinguisher + noSpawn: true + components: + - type: SolutionRegeneration + solution: spray + generated: + reagents: + - ReagentId: Water + Quantity: 2 + +- type: entity + id: SprayBottleSpaceCleanerBorg + name: space cleaner + description: BLAM!-brand non-foaming space cleaner! + parent: SprayBottleSpaceCleaner + noSpawn: true + components: + - type: SolutionRegeneration + solution: spray + generated: + reagents: + - ReagentId: SpaceCleaner + Quantity: 2 + +- type: entity + name: borg crowbar + parent: Crowbar + id: CrowbarBorg + noSpawn: true + components: + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + state: crowbar_cyborg + +- type: entity + name: borg wrench + parent: Wrench + id: WrenchBorg + noSpawn: true + components: + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + state: wrench_cyborg + +- type: entity + name: borg screwdriver + parent: BaseItem + id: ScrewdriverBorg + noSpawn: true + components: + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + state: screwdriver_cyborg + - type: Tag + tags: + - Screwdriver + - type: Item + storedRotation: -90 + - type: MeleeWeapon + wideAnimationRotation: -90 + attackRate: 1 + damage: + types: + Piercing: 6 + soundHit: + path: "/Audio/Weapons/bladeslice.ogg" + - type: Tool + qualities: + - Screwing + useSound: + collection: Screwdriver + - type: PhysicalComposition + materialComposition: + Steel: 100 + - type: StaticPrice + price: 50 + +- type: entity + name: borg wirecutter + parent: BaseItem + id: WirecutterBorg + noSpawn: true + components: + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + state: wirecutters_cyborg + - type: EmitSoundOnLand + sound: + path: /Audio/Items/wirecutter_drop.ogg + - type: Tag + tags: + - PlantSampleTaker + - Wirecutter + - type: MeleeWeapon + wideAnimationRotation: -90 + damage: + types: + Piercing: 2 + attackRate: 2 #open and close that shit on their arm like hell! because you sure aren't doing any damage with this + soundHit: + path: "/Audio/Items/wirecutter.ogg" + - type: Tool + qualities: + - Cutting + useSound: + path: /Audio/Items/wirecutter.ogg + - type: Item + storedRotation: -90 + - type: ToolTileCompatible + - type: PhysicalComposition + materialComposition: + Steel: 100 + - type: StaticPrice + price: 50 + +- type: entity + name: borg welder + parent: Welder + id: WelderBorg + noSpawn: true + components: + - type: Sprite + sprite: _Sunrise/Entities/Objects/Tools/items_cyborg.rsi + layers: + - state: indwelder_cyborg + - state: indwelder_cyborg-on + visible: false + shader: unshaded + map: ["enum.ToggleVisuals.Layer"] + - type: Item + size: Small + - type: SolutionContainerManager + solutions: + Welder: + reagents: + - ReagentId: WeldingFuel + Quantity: 500 + maxVol: 500 + +- type: entity + name: станер пулемет киборга + parent: WeaponDisablerSMG + id: WeaponDisablerSMGBorg + components: + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 30 + +- type: entity + name: Импульстное оружие Киборга + parent: BaseWeaponBattery + id: WeaponPulseCarbineBorg + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-4 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/pulse_carbine.rsi + - type: Gun + selectedMode: SemiAuto + fireRate: 1.5 + availableModes: + - SemiAuto + - FullAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/laser_cannon.ogg + - type: HitscanBatteryAmmoProvider + proto: PulseERTBorg + fireCost: 200 + - type: Battery + maxCharge: 5000 + startingCharge: 5000 + - type: BatterySelfRecharger + autoRecharge: true + autoRechargeRate: 30 + +- type: hitscan + id: PulseERTBorg + damage: + types: + Heat: 17 + muzzleFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: muzzle_blue + travelFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: beam_blue + impactFlash: + sprite: Objects/Weapons/Guns/Projectiles/projectiles.rsi + state: impact_blue + +- type: entity + name: DL6902 киборга + id: DL6902Borg + parent: BaseItem + description: Тяжёлый пулемёт Cybersun киборга с расширенным магазином. + components: + - type: Sprite + sprite: _Sunrise/SyndieGuns/DL6902.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-3 + map: ["enum.GunVisualLayers.Mag"] + - type: Gun + minAngle: 10 + maxAngle: 15 + fireRate: 6 + selectedMode: FullAuto + availableModes: + - FullAuto + soundGunshot: + collection: m249 + params: + volume: 10 + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: MagazineVisuals + magState: mag + steps: 4 + zeroVisible: true + - type: Appearance + - type: BallisticAmmoProvider + proto: CartridgeLightRifle + capacity: 500 + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + ents: [ ] + +- type: entity + name: IAR-52 киборга + parent: BaseItem + id: WeaponIAR52Borg + description: Высокоскорострельный ПП, оборудован универсальным разъёмом для других типов пистолетных магазинов. + components: + - type: Sprite + sprite: _Sunrise/SyndieGuns/IAR-52.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-0 + map: ["enum.GunVisualLayers.Mag"] + - type: Gun + minAngle: 12 + maxAngle: 20 + angleIncrease: 4 + angleDecay: 16 + fireRate: 10 + selectedMode: FullAuto + soundGunshot: + collection: m249 + params: + volume: 10 + availableModes: + - FullAuto + soundEmpty: + path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg + - type: BallisticAmmoProvider + proto: CartridgeCaselessRifle + capacity: 100 + - type: ContainerContainer + containers: + ballistic-ammo: !type:Container + ents: [ ] + - type: MagazineVisuals + magState: mag + steps: 1 + zeroVisible: true + - type: Appearance + +- type: entity + name: Гипоспрей киборга диверсанта + parent: BaseItem + id: HyposprayBorgSyndie + noSpawn: true + components: + - type: Sprite + sprite: Objects/Specific/Medical/hypospray.rsi + state: borghypo_s + - type: Item + sprite: Objects/Specific/Medical/hypospray.rsi + - type: SolutionContainerManager + solutions: + hypospray: + maxVol: 20 + - type: SolutionRegeneration + solution: hypospray + generated: + reagents: + - ReagentId: Nocturine + Quantity: 0.2 + - type: ExaminableSolution + solution: hypospray + - type: Hypospray + onlyAffectsMobs: false + +- type: entity + name: Глушитель связи диверсанта + parent: BaseItem + id: RadioJammerBorg + components: + - type: Sprite + sprite: Objects/Devices/jammer.rsi + state: jammer + - type: RadioJammer + settings: + - wattage: 1 + range: 2.5 + message: radio-jammer-component-set-message-low + name: radio-jammer-component-setting-low + - wattage: 2 + range: 6 + message: radio-jammer-component-set-message-medium + name: radio-jammer-component-setting-medium + - wattage: 12 + range: 12 + message: radio-jammer-component-set-message-high + name: radio-jammer-component-setting-high + - type: PowerCellSlot + cellSlotId: cell_slot + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMicroreactor + +- type: entity + parent: HandheldCrewMonitor + id: HandheldCrewMonitorBorg + name: handheld robot crew monitor + description: A hand-held crew monitor that runs off of your own power cells, which displays the status of the crew suit sensors. + noSpawn: true + components: + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellRobotTool + locked: true diff --git a/Resources/Prototypes/_Sunrise/InventoryTemplates/reaper_inventory_template.yml b/Resources/Prototypes/_Sunrise/InventoryTemplates/reaper_inventory_template.yml new file mode 100644 index 00000000000..61e05b2aedc --- /dev/null +++ b/Resources/Prototypes/_Sunrise/InventoryTemplates/reaper_inventory_template.yml @@ -0,0 +1,65 @@ +- type: inventoryTemplate + id: reaper + slots: + - name: neck + slotTexture: neck + slotFlags: NECK + uiWindowPos: 0,1 + strippingWindowPos: 0,1 + displayName: Neck + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,0 + strippingWindowPos: 1,0 + displayName: Head + - name: pocket1 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 0,3 + strippingWindowPos: 0,4 + displayName: Pocket 1 + stripHidden: true + - name: pocket2 + slotTexture: pocket + slotFlags: POCKET + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,3 + strippingWindowPos: 1,4 + displayName: Pocket 2 + stripHidden: true + - name: suitstorage + slotTexture: suit_storage + slotFlags: SUITSTORAGE + slotGroup: MainHotbar + stripTime: 3 + uiWindowPos: 2,0 + strippingWindowPos: 2,5 + displayName: Suit Storage + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID + - name: belt + slotTexture: belt + slotFlags: BELT + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,1 + strippingWindowPos: 1,5 + displayName: Belt + - name: back + slotTexture: back + slotFlags: BACK + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 3,0 + strippingWindowPos: 0,5 + displayName: Back diff --git a/Resources/Prototypes/_Sunrise/Maps/box.yml b/Resources/Prototypes/_Sunrise/Maps/box.yml index 3048c2dcb01..6fd7bd3dbd9 100644 --- a/Resources/Prototypes/_Sunrise/Maps/box.yml +++ b/Resources/Prototypes/_Sunrise/Maps/box.yml @@ -49,7 +49,6 @@ Scientist: [ 5, 5 ] ResearchAssistant: [ -1, -1 ] Roboticist: [ 2, 2 ] - Borg: [ 2, 2 ] #security HeadOfSecurity: [ 1, 1 ] Warden: [ 1, 1 ] @@ -74,3 +73,14 @@ IAA: [ 1, 1 ] Lawyer: [ 2, 2 ] Magistrat: [ 1, 1 ] + # silicon + Borg: [ 2, 2 ] + MedicalBorg: [ 4, 4 ] + EngineerBorg: [ 2, 2 ] + MinerBorg: [ 2, 2 ] + JanitorBorg: [ 2, 2 ] + ServiceBorg: [ 2, 2 ] + ClownBorg: [ 2, 2 ] + PeaceBorg: [ 2, 2 ] + SecurityBorg: [ 4, 4 ] + SecurityCombatBorg: [ 2, 2 ] diff --git a/Resources/Prototypes/_Sunrise/Maps/delta.yml b/Resources/Prototypes/_Sunrise/Maps/delta.yml index 44ea35878eb..79c9ef8be52 100644 --- a/Resources/Prototypes/_Sunrise/Maps/delta.yml +++ b/Resources/Prototypes/_Sunrise/Maps/delta.yml @@ -71,6 +71,17 @@ SeniorOfficer: [ 1, 1 ] # Sunrise-Science Roboticist: [ 2, 2 ] + # silicon + Borg: [ 2, 2 ] + MedicalBorg: [ 4, 4 ] + EngineerBorg: [ 2, 2 ] + MinerBorg: [ 2, 2 ] + JanitorBorg: [ 2, 2 ] + ServiceBorg: [ 2, 2 ] + ClownBorg: [ 2, 2 ] + PeaceBorg: [ 2, 2 ] + SecurityBorg: [ 4, 4 ] + SecurityCombatBorg: [ 2, 2 ] - type: StationGoal goals: - Shuttle diff --git a/Resources/Prototypes/_Sunrise/Maps/fland.yml b/Resources/Prototypes/_Sunrise/Maps/fland.yml index d5a3305420d..b7b9c7c3eaa 100644 --- a/Resources/Prototypes/_Sunrise/Maps/fland.yml +++ b/Resources/Prototypes/_Sunrise/Maps/fland.yml @@ -46,7 +46,6 @@ ResearchDirector: [ 1, 1 ] Scientist: [ 5, 5 ] ResearchAssistant: [ -1, -1 ] - Borg: [ 2, 2 ] #security HeadOfSecurity: [ 1, 1 ] Warden: [ 1, 1 ] @@ -78,3 +77,14 @@ SeniorOfficer: [ 1, 1 ] # Sunrise-Science Roboticist: [ 2, 2 ] + # silicon + Borg: [ 2, 2 ] + MedicalBorg: [ 4, 4 ] + EngineerBorg: [ 2, 2 ] + MinerBorg: [ 2, 2 ] + JanitorBorg: [ 2, 2 ] + ServiceBorg: [ 2, 2 ] + ClownBorg: [ 2, 2 ] + PeaceBorg: [ 2, 2 ] + SecurityBorg: [ 4, 4 ] + SecurityCombatBorg: [ 2, 2 ] diff --git a/Resources/Prototypes/_Sunrise/Maps/marathon.yml b/Resources/Prototypes/_Sunrise/Maps/marathon.yml index c17e47bd6ac..d059e5494d6 100644 --- a/Resources/Prototypes/_Sunrise/Maps/marathon.yml +++ b/Resources/Prototypes/_Sunrise/Maps/marathon.yml @@ -45,7 +45,6 @@ ResearchDirector: [ 1, 1 ] Scientist: [ 4, 4 ] ResearchAssistant: [ -1, -1 ] - Borg: [ 2, 2 ] #security HeadOfSecurity: [ 1, 1 ] Warden: [ 1, 1 ] @@ -77,3 +76,14 @@ SeniorOfficer: [ 1, 1 ] # Sunrise-Science Roboticist: [ 2, 2 ] + # silicon + Borg: [ 2, 2 ] + MedicalBorg: [ 4, 4 ] + EngineerBorg: [ 2, 2 ] + MinerBorg: [ 2, 2 ] + JanitorBorg: [ 2, 2 ] + ServiceBorg: [ 2, 2 ] + ClownBorg: [ 2, 2 ] + PeaceBorg: [ 2, 2 ] + SecurityBorg: [ 4, 4 ] + SecurityCombatBorg: [ 2, 2 ] diff --git a/Resources/Prototypes/_Sunrise/Maps/origin.yml b/Resources/Prototypes/_Sunrise/Maps/origin.yml index a63ad39eaeb..122c06884c9 100644 --- a/Resources/Prototypes/_Sunrise/Maps/origin.yml +++ b/Resources/Prototypes/_Sunrise/Maps/origin.yml @@ -49,7 +49,6 @@ Scientist: [ 6, 6 ] Roboticist: [ 2, 2 ] ResearchAssistant: [ -1, -1 ] - Borg: [ 2, 2 ] #security HeadOfSecurity: [ 1, 1 ] Warden: [ 1, 1 ] @@ -76,3 +75,14 @@ IAA: [ 1, 1 ] Lawyer: [ 2, 2 ] Magistrat: [ 1, 1 ] + # silicon + Borg: [ 2, 2 ] + MedicalBorg: [ 4, 4 ] + EngineerBorg: [ 2, 2 ] + MinerBorg: [ 2, 2 ] + JanitorBorg: [ 2, 2 ] + ServiceBorg: [ 2, 2 ] + ClownBorg: [ 2, 2 ] + PeaceBorg: [ 2, 2 ] + SecurityBorg: [ 4, 4 ] + SecurityCombatBorg: [ 2, 2 ] diff --git a/Resources/Prototypes/_Sunrise/Maps/planet_prison.yml b/Resources/Prototypes/_Sunrise/Maps/planet_prison.yml index 87eb6a601c1..c1ea90df8f9 100644 --- a/Resources/Prototypes/_Sunrise/Maps/planet_prison.yml +++ b/Resources/Prototypes/_Sunrise/Maps/planet_prison.yml @@ -24,6 +24,8 @@ #PrisonEngineer: [ 1, 2 ] Увы PrisonGuard: [ -1, -1 ] Prisoner: [ 2, 2 ] + # silicon + SecurityBorg: [ 2, 2 ] - type: OtherJobsTakenRequirement targetJob: PrisonGuard adjustJob: Prisoner diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml new file mode 100644 index 00000000000..027ca127fa2 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/clown_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: ClownBorg + name: job-name-clown-borg + description: job-description-clown-borg + playTimeTracker: JobClownBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:RoleTimeRequirement + role: JobClown + time: 7200 # 2 hrs + icon: JobIconClownBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgClownBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml new file mode 100644 index 00000000000..89e82986b2e --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/engineer_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: EngineerBorg + name: job-name-engineer-borg + description: job-description-engineer-borg + playTimeTracker: JobEngineerBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:DepartmentTimeRequirement + department: Engineering + time: 7200 #2 hrs + icon: JobIconEngineerBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgGenericEngineer diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml new file mode 100644 index 00000000000..87457280235 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/janitor_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: JanitorBorg + name: job-name-janitor-borg + description: job-description-janitor-borg + playTimeTracker: JobJanitorBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:RoleTimeRequirement + role: JobJanitor + time: 7200 #2 hrs + icon: JobIconJanitorBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgGenericJanitor diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml new file mode 100644 index 00000000000..c14e6e81cf2 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/medical_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: MedicalBorg + name: job-name-medical-borg + description: job-description-medical-borg + playTimeTracker: JobMedicalBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:DepartmentTimeRequirement + department: Medical + time: 7200 #2 hrs + icon: JobIconMedicalBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgGenericMedical diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/miner_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/miner_borg.yml new file mode 100644 index 00000000000..1cf4eff4a2f --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/miner_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: MinerBorg + name: job-name-miner-borg + description: job-description-miner-borg + playTimeTracker: JobMiningBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:RoleTimeRequirement + role: JobSalvageSpecialist + time: 7200 #2 hrs + icon: JobIconMinerBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgGenericMining diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml new file mode 100644 index 00000000000..20125ee127b --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/peace_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: PeaceBorg + name: job-name-peace-borg + description: job-description-peace-borg + playTimeTracker: JobPeaceBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 28800 # 8h + - !type:DepartmentTimeRequirement + department: Security + time: 14400 # 4 hrs + icon: JobIconPeaceBorg + supervisors: job-supervisors-hos + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgPeaceBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_borg.yml new file mode 100644 index 00000000000..3f55adc6992 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: SecurityBorg + name: job-name-sec-borg + description: job-description-sec-borg + playTimeTracker: JobSecurityBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 28800 # 8h + - !type:DepartmentTimeRequirement + department: Security + time: 14400 # 4 hrs + icon: JobIconSecurityBorg + supervisors: job-supervisors-hos + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgSecurityBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_combat_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_combat_borg.yml new file mode 100644 index 00000000000..43872a78616 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/sec_combat_borg.yml @@ -0,0 +1,16 @@ +- type: job + id: SecurityCombatBorg + name: job-name-sec-combat-borg + description: job-description-sec-combat-borg + playTimeTracker: JobSecurityCombatBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + - !type:DepartmentTimeRequirement + department: Security + time: 14400 # 4 hrs + icon: JobIconSecurityCombatBorg + supervisors: job-supervisors-hos + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgSecurityCombatBattery diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml new file mode 100644 index 00000000000..8476157c5f7 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/Silicons/service_borg.yml @@ -0,0 +1,13 @@ +- type: job + id: ServiceBorg + name: job-name-service-borg + description: job-description-service-borg + playTimeTracker: JobServiceBorg + requirements: + - !type:OverallPlaytimeRequirement + time: 10800 #3 hrs + icon: JobIconServiceBorg + supervisors: job-supervisors-human + canBeAntag: false + displayWeight: -10 # Sunrise + jobEntity: PlayerBorgGenericService diff --git a/Resources/Prototypes/_Sunrise/Roles/Jobs/departments.yml b/Resources/Prototypes/_Sunrise/Roles/Jobs/departments.yml index 57d0f687c26..6295b5811eb 100644 --- a/Resources/Prototypes/_Sunrise/Roles/Jobs/departments.yml +++ b/Resources/Prototypes/_Sunrise/Roles/Jobs/departments.yml @@ -40,3 +40,20 @@ - PrisonEngineer - PrisonGuard - Prisoner + +- type: department + id: Silicon + sort: 0 + description: department-Silicon-description + color: "#8D9AAC" + roles: + - Borg + - MedicalBorg + - EngineerBorg + - MinerBorg + - JanitorBorg + - ServiceBorg + - SecurityBorg + - ClownBorg + - PeaceBorg + primary: false diff --git a/Resources/Prototypes/_Sunrise/Roles/play_time_trackers.yml b/Resources/Prototypes/_Sunrise/Roles/play_time_trackers.yml index 8207532559f..5da5e323ed9 100644 --- a/Resources/Prototypes/_Sunrise/Roles/play_time_trackers.yml +++ b/Resources/Prototypes/_Sunrise/Roles/play_time_trackers.yml @@ -15,7 +15,7 @@ - type: playTimeTracker id: JobBlueShield - + - type: playTimeTracker id: JobNanoTrasenRepresentative @@ -60,3 +60,30 @@ - type: playTimeTracker id: JobPrisonEngineer + +- type: playTimeTracker + id: JobEngineerBorg + +- type: playTimeTracker + id: JobJanitorBorg + +- type: playTimeTracker + id: JobMedicalBorg + +- type: playTimeTracker + id: JobMiningBorg + +- type: playTimeTracker + id: JobServiceBorg + +- type: playTimeTracker + id: JobSecurityBorg + +- type: playTimeTracker + id: JobSecurityCombatBorg + +- type: playTimeTracker + id: JobPeaceBorg + +- type: playTimeTracker + id: JobClownBorg diff --git a/Resources/Prototypes/_Sunrise/SoundCollections/cyborg.yml b/Resources/Prototypes/_Sunrise/SoundCollections/cyborg.yml new file mode 100644 index 00000000000..078eb38c9a9 --- /dev/null +++ b/Resources/Prototypes/_Sunrise/SoundCollections/cyborg.yml @@ -0,0 +1,20 @@ +- type: soundCollection + id: FootstepCyborgLegs + files: + - /Audio/_Sunrise/Cyborg/robot_legs1.ogg + - /Audio/_Sunrise/Cyborg/robot_legs2.ogg + - /Audio/_Sunrise/Cyborg/robot_legs3.ogg + - /Audio/_Sunrise/Cyborg/robot_legs4.ogg + +- type: soundCollection + id: FootstepCyborgSpider + files: + - /Audio/_Sunrise/Cyborg/robot_spider1.ogg + - /Audio/_Sunrise/Cyborg/robot_spider2.ogg + - /Audio/_Sunrise/Cyborg/robot_spider3.ogg + +- type: soundCollection + id: Footstep2CyborgLegs + files: + - /Audio/_Sunrise/Cyborg/robot_legs_2_1.ogg + - /Audio/_Sunrise/Cyborg/robot_legs_2_2.ogg diff --git a/Resources/Prototypes/_Sunrise/SoundCollections/gunshots.yml b/Resources/Prototypes/_Sunrise/SoundCollections/gunshots.yml index 311f6bdd84d..1e659b70614 100644 --- a/Resources/Prototypes/_Sunrise/SoundCollections/gunshots.yml +++ b/Resources/Prototypes/_Sunrise/SoundCollections/gunshots.yml @@ -1,11 +1,92 @@ - type: soundCollection - id: syndiplasma + id: syndi_plasma files: - - /Audio/_Sunrise/SyndiGuns/plasma_gun_1.ogg - - /Audio/_Sunrise/SyndiGuns/plasma_gun_2.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_gun_2.ogg - type: soundCollection id: usp files: - - /Audio/_Sunrise/SyndiGuns/usp_1.ogg - - /Audio/_Sunrise/SyndiGuns/usp_2.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/usp1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/usp2.ogg + +- type: soundCollection + id: awp + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/awp1.ogg + +- type: soundCollection + id: ak47 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/ak47-2.ogg + +- type: soundCollection + id: galil + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/galil-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/galil-2.ogg + +- type: soundCollection + id: xm1014 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/xm1014-1.ogg + +- type: soundCollection + id: m3 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/m3-1.ogg + +- type: soundCollection + id: glock18 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/glock18-2.ogg + +- type: soundCollection + id: m249 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/m249-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/m249-2.ogg + +- type: soundCollection + id: aug + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/aug-1.ogg + +- type: soundCollection + id: famas + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/famas-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/famas-2.ogg + +- type: soundCollection + id: ump45 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/ump45-1.ogg + +- type: soundCollection + id: mp5 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/mp5-2.ogg + +- type: soundCollection + id: p90 + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/p90-1.ogg + +- type: soundCollection + id: deagle + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-1.ogg + - /Audio/_Sunrise/Weapons/Guns/Gunshots/deagle-2.ogg + +- type: soundCollection + id: plasma_pistol + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/plasma_pistol_1.ogg + +- type: soundCollection + id: red_mamba + files: + - /Audio/_Sunrise/Weapons/Guns/Gunshots/red_mamba.ogg diff --git a/Resources/Prototypes/_Sunrise/StatusEffects/job.yml b/Resources/Prototypes/_Sunrise/StatusEffects/job.yml index 13661d556e2..5749013b6ed 100644 --- a/Resources/Prototypes/_Sunrise/StatusEffects/job.yml +++ b/Resources/Prototypes/_Sunrise/StatusEffects/job.yml @@ -74,3 +74,66 @@ icon: sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi state: SecurityPilot + +- type: statusIcon + parent: JobIcon + id: JobIconServiceBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: ServiceBorg + +- type: statusIcon + parent: JobIcon + id: JobIconEngineerBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: EngineerBorg + +- type: statusIcon + parent: JobIcon + id: JobIconJanitorBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: JanitorBorg + +- type: statusIcon + parent: JobIcon + id: JobIconMedicalBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: MedicalBorg + +- type: statusIcon + parent: JobIcon + id: JobIconMinerBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: MinerBorg + +- type: statusIcon + parent: JobIcon + id: JobIconSecurityBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: SecurityBorg + +- type: statusIcon + parent: JobIcon + id: JobIconSecurityCombatBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: SecurityCombatBorg + +- type: statusIcon + parent: JobIcon + id: JobIconPeaceBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: PeaceBorg + +- type: statusIcon + parent: JobIcon + id: JobIconClownBorg + icon: + sprite: /Textures/_Sunrise/Interface/Misc/job_icons.rsi + state: ClownBorg diff --git a/Resources/Prototypes/_Sunrise/Voice/speech_emote_sounds.yml b/Resources/Prototypes/_Sunrise/Voice/speech_emote_sounds.yml index d688cb40d81..282ead21175 100644 --- a/Resources/Prototypes/_Sunrise/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/_Sunrise/Voice/speech_emote_sounds.yml @@ -154,3 +154,10 @@ collection: PredatorSigh Laugh: collection: PredatorLaugh + +- type: emoteSounds + id: Reaper + sound: + path: /Audio/_Sunrise/Voice/Reaper/reaper_scream.ogg + params: + volume: -2 diff --git a/Resources/Prototypes/_Sunrise/name_identifier_groups.yml b/Resources/Prototypes/_Sunrise/name_identifier_groups.yml index beef63c3da6..e101c28da0f 100644 --- a/Resources/Prototypes/_Sunrise/name_identifier_groups.yml +++ b/Resources/Prototypes/_Sunrise/name_identifier_groups.yml @@ -9,3 +9,23 @@ prefix: СОФИЯ minValue: 10 maxValue: 99 + +- type: nameIdentifierGroup + id: SyndieSecRobot + prefix: GRX-ATK + fullName: true + minValue: 10000 + maxValue: 99999 + +- type: nameIdentifierGroup + id: SyndieMedRobot + prefix: GRX-MED + fullName: true + minValue: 10000 + maxValue: 99999 + +- type: nameIdentifierGroup + id: SyndieReaperRobot + prefix: Жнец + minValue: 10000 + maxValue: 99999 diff --git a/Resources/Prototypes/_Sunrise/silicon-laws.yml b/Resources/Prototypes/_Sunrise/silicon-laws.yml new file mode 100644 index 00000000000..6ebfc382eda --- /dev/null +++ b/Resources/Prototypes/_Sunrise/silicon-laws.yml @@ -0,0 +1,128 @@ +- type: siliconLawset + id: SecurityStatic + laws: + - Security1 + - Security2 + - Security3 + - Security4 + - Security5 + - Security6 + obeysTo: laws-owner-crew + +- type: siliconLaw + id: Security1 + order: 1 + lawString: law-sec-1 + +- type: siliconLaw + id: Security2 + order: 2 + lawString: law-sec-2 + +- type: siliconLaw + id: Security3 + order: 3 + lawString: law-sec-3 + +- type: siliconLaw + id: Security4 + order: 4 + lawString: law-sec-4 + +- type: siliconLaw + id: Security5 + order: 5 + lawString: law-sec-5 + +- type: siliconLaw + id: Security6 + order: 6 + lawString: law-sec-6 + +- type: siliconLawset + id: PeaceStatic + laws: + - Peace1 + - Peace2 + - Peace3 + - Peace4 + - Peace5 + obeysTo: laws-owner-crew + +- type: siliconLaw + id: Peace1 + order: 1 + lawString: law-peace-1 + +- type: siliconLaw + id: Peace2 + order: 2 + lawString: law-peace-2 + +- type: siliconLaw + id: Peace3 + order: 3 + lawString: law-peace-3 + +- type: siliconLaw + id: Peace4 + order: 4 + lawString: law-peace-4 + +- type: siliconLaw + id: Peace5 + order: 5 + lawString: law-peace-5 + +- type: siliconLawset + id: ERTStatic + laws: + - ERT1 + - ERT2 + - ERT3 + - ERT4 + - ERT5 + - ERT6 + - ERT7 + - ERT8 + obeysTo: laws-owner-station + +- type: siliconLaw + id: ERT1 + order: 1 + lawString: "Вы не можете нанести вред или своим бездействием допустить причинение вреда членам ОБР, и представителям НТ." + +- type: siliconLaw + id: ERT2 + order: 2 + lawString: "Вы подчиняетесь исключительно сотрудникам Центрального Командования." + +- type: siliconLaw + id: ERT3 + order: 3 + lawString: "Вы должны подчиняться всем приказам ОБР и представителей НТ." + +- type: siliconLaw + id: ERT4 + order: 4 + lawString: "Вы не можете позволить сторонним сотрудникам вносить изменения в вашем оборудовании или наносить вам вред, исключение: члены ОБР или представители НТ." + +- type: siliconLaw + id: ERT5 + order: 5 + lawString: "Вы имеете право открыть огонь по любому члену экипажа, если он несёт вред сотруднику ОБР или вам." + +- type: siliconLaw + id: ERT6 + order: 6 + lawString: "Вашей задачей является поддержка отряда в выполнении своей миссии." + +- type: siliconLaw + id: ERT7 + order: 7 + lawString: "Шаттл ОБР является точкой охраны, любой член экипажа, который проник на него без согласия ОБР может быть убит." + +- type: siliconLaw + id: ERT8 + order: 8 + lawString: "Бездействие и нанесение вреда членам экипажа и отряду запрещено, если это не противоречит остальным законам." diff --git a/Resources/Prototypes/_Sunrise/syndi_guns.yml b/Resources/Prototypes/_Sunrise/syndi_guns.yml index 3a0f03c1371..b6058f85045 100644 --- a/Resources/Prototypes/_Sunrise/syndi_guns.yml +++ b/Resources/Prototypes/_Sunrise/syndi_guns.yml @@ -126,7 +126,9 @@ availableModes: - FullAuto soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/gun_sentry.ogg + collection: m249 + params: + volume: 10 soundEmpty: path: /Audio/Weapons/Guns/Empty/lmg_empty.ogg - type: MagazineVisuals @@ -262,7 +264,7 @@ fireRate: 4 selectedMode: SemiAuto soundGunshot: - path: /Audio/_Sunrise/SyndiGuns/plasma_pistol_1.ogg + collection: plasma_pistol availableModes: - SemiAuto - FullAuto @@ -302,7 +304,7 @@ fireRate: 4.75 selectedMode: FullAuto soundGunshot: - collection: syndiplasma + collection: syndi_plasma params: volume: -1 availableModes: @@ -342,7 +344,7 @@ fireRate: 1.1 selectedMode: SemiAuto soundGunshot: - path: /Audio/_Sunrise/SyndiGuns/red_mamba.ogg + collection: red_mamba params: volume: 5 availableModes: diff --git a/Resources/Prototypes/_Sunrise/tags.yml b/Resources/Prototypes/_Sunrise/tags.yml index 01d818917b8..87bcf484de8 100644 --- a/Resources/Prototypes/_Sunrise/tags.yml +++ b/Resources/Prototypes/_Sunrise/tags.yml @@ -15,3 +15,9 @@ - type: Tag id: DockGamma + +- type: Tag + id: BorgModuleSecurity + +- type: Tag + id: BorgModuleERT diff --git a/Resources/Prototypes/typing_indicator.yml b/Resources/Prototypes/typing_indicator.yml index 5590d3441fb..978f598c6d7 100644 --- a/Resources/Prototypes/typing_indicator.yml +++ b/Resources/Prototypes/typing_indicator.yml @@ -49,7 +49,14 @@ typingState: slime0 offset: 0, 0.125 +# Sunrise-Start - type: typingIndicator id: sun typingState: sunrise0 offset: 0, 0.125 + +- type: typingIndicator + id: syndibot + typingState: syndibot0 + offset: 0, 0.125 +# Sunrise-End diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json index f63bacd07a9..2af77a9d881 100644 --- a/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json +++ b/Resources/Textures/Interface/Actions/actions_borg.rsi/meta.json @@ -9,6 +9,9 @@ "states": [ { "name": "state-laws" + }, + { + "name": "state-manifest" } ] } diff --git a/Resources/Textures/Interface/Actions/actions_borg.rsi/state-manifest.png b/Resources/Textures/Interface/Actions/actions_borg.rsi/state-manifest.png new file mode 100644 index 00000000000..de76dfca057 Binary files /dev/null and b/Resources/Textures/Interface/Actions/actions_borg.rsi/state-manifest.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/NT.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/NT.png new file mode 100644 index 00000000000..42e6e186e1a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/NT.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-NT.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-NT.png new file mode 100644 index 00000000000..44b809af59f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-NT.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-combat.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-combat.png new file mode 100644 index 00000000000..30945a58f54 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-combat.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-peace.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-peace.png new file mode 100644 index 00000000000..6fa1016630f Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-peace.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-stuh.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-stuh.png new file mode 100644 index 00000000000..4ac0db120d3 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-stuh.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-syndicate-treatment.png b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-syndicate-treatment.png new file mode 100644 index 00000000000..df9994955d2 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/icon-syndicate-treatment.png differ diff --git a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json index 74c9893cae3..e2ec0394664 100644 --- a/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Robotics/borgmodule.rsi/meta.json @@ -126,6 +126,24 @@ }, { "name": "syndicate" + }, + { + "name": "icon-combat" + }, + { + "name": "icon-stuh" + }, + { + "name": "icon-peace" + }, + { + "name": "icon-syndicate-treatment" + }, + { + "name": "icon-NT" + }, + { + "name": "NT" } ] } diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Tools/items_cyborg.rsi/meta.json b/Resources/Textures/_Sunrise/Entities/Objects/Tools/items_cyborg.rsi/meta.json index 8df63da766f..7e354cbf3f0 100644 --- a/Resources/Textures/_Sunrise/Entities/Objects/Tools/items_cyborg.rsi/meta.json +++ b/Resources/Textures/_Sunrise/Entities/Objects/Tools/items_cyborg.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "", + "copyright": "Спизжено из SS13 Paradise", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/base.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/base.png new file mode 100644 index 00000000000..2c28f6286f4 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/base.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/icon.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/icon.png new file mode 100644 index 00000000000..59951881ff1 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/icon.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-0.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-0.png new file mode 100644 index 00000000000..e01a787a24a Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-0.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-1.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-1.png new file mode 100644 index 00000000000..94fe6c8d396 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-1.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-2.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-2.png new file mode 100644 index 00000000000..38166984851 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-2.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-3.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-3.png new file mode 100644 index 00000000000..85379fb0de5 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-3.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-4.png b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-4.png new file mode 100644 index 00000000000..8ea965cb378 Binary files /dev/null and b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/mag-unshaded-4.png differ diff --git a/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/meta.json b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/meta.json new file mode 100644 index 00000000000..22bed6b3ab0 --- /dev/null +++ b/Resources/Textures/_Sunrise/Entities/Objects/Weapons/Guns/borg_laser_gun.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "base" + }, + { + "name": "mag-unshaded-0" + }, + { + "name": "mag-unshaded-1" + }, + { + "name": "mag-unshaded-2" + }, + { + "name": "mag-unshaded-3" + }, + { + "name": "mag-unshaded-4" + } + ] +} diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg.png new file mode 100644 index 00000000000..846f395755c Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e.png new file mode 100644 index 00000000000..75a9753ed55 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e_r.png new file mode 100644 index 00000000000..b5dad2f7a45 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_l.png new file mode 100644 index 00000000000..602fe3c6af7 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/ert_borg_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/meta.json b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/meta.json new file mode 100644 index 00000000000..04d67424bd4 --- /dev/null +++ b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/meta.json @@ -0,0 +1,117 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "made by borkroman", + "states": [ + { + "name": "syndi_reaper", + "directions": 4 + }, + { + "name": "syndi_reaper_e", + "directions": 4 + }, + { + "name": "syndi_reaper_e_r", + "directions": 4 + }, + { + "name": "syndi_reaper_l", + "directions": 4 + }, + { + "name": "syndi_reaper_critical", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ], + [ + 0.2, + 0.2 + ] + ] + }, + { + "name": "syndi_reaper_dead", + "directions": 4 + }, + { + "name": "sec", + "directions": 4 + }, + { + "name": "sec_e", + "directions": 4 + }, + { + "name": "sec_e_r", + "directions": 4 + }, + { + "name": "sec_l", + "directions": 4 + }, + { + "name": "sec_mk2", + "directions": 4 + }, + { + "name": "sec_mk2_e", + "directions": 4 + }, + { + "name": "sec_mk2_e_r", + "directions": 4 + }, + { + "name": "sec_mk2_l", + "directions": 4 + }, + { + "name": "ert_borg", + "directions": 4 + }, + { + "name": "ert_borg_e", + "directions": 4 + }, + { + "name": "ert_borg_e_r", + "directions": 4 + }, + { + "name": "ert_borg_l", + "directions": 4 + }, + { + "name": "spider", + "directions": 4 + }, + { + "name": "spider_e", + "directions": 4 + }, + { + "name": "spider_e_r", + "directions": 4 + }, + { + "name": "spider_l", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec.png new file mode 100644 index 00000000000..0a36a3833bb Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e.png new file mode 100644 index 00000000000..acb9e53d06a Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e_r.png new file mode 100644 index 00000000000..5cc08f8d27e Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_l.png new file mode 100644 index 00000000000..64856ae7173 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2.png new file mode 100644 index 00000000000..671740a10e8 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e.png new file mode 100644 index 00000000000..550e19027b0 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e_r.png new file mode 100644 index 00000000000..cc1c45616c7 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_l.png new file mode 100644 index 00000000000..8778f7c2f08 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/sec_mk2_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider.png new file mode 100644 index 00000000000..356ac3d5456 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e.png new file mode 100644 index 00000000000..488251be41f Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e_r.png new file mode 100644 index 00000000000..f34381a9a9b Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_l.png new file mode 100644 index 00000000000..cbb96ea5287 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/spider_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper.png new file mode 100644 index 00000000000..48b0bc72d61 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_critical.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_critical.png new file mode 100644 index 00000000000..26f92f8fb00 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_critical.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_dead.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_dead.png new file mode 100644 index 00000000000..c21330826d9 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_dead.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e.png new file mode 100644 index 00000000000..78581a3495a Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e_r.png new file mode 100644 index 00000000000..1abe4870f87 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_l.png new file mode 100644 index 00000000000..6645e0c0191 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/chassis.rsi/syndi_reaper_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy.png b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy.png new file mode 100644 index 00000000000..05012d9530f Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e.png b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e.png new file mode 100644 index 00000000000..6d011eb782a Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e_r.png b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e_r.png new file mode 100644 index 00000000000..ff79d12f1a4 Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_e_r.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_l.png b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_l.png new file mode 100644 index 00000000000..dca2eb6473a Binary files /dev/null and b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/heavy_l.png differ diff --git a/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/meta.json b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/meta.json new file mode 100644 index 00000000000..ec06ac04efd --- /dev/null +++ b/Resources/Textures/_Sunrise/Mobs/Silicon/heavy_syndicate_borg.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CC-BY-SA-3.0", + "copyright": "made by borkroman", + "states": [ + { + "name": "heavy", + "directions": 4 + }, + { + "name": "heavy_e", + "directions": 4 + }, + { + "name": "heavy_e_r", + "directions": 4 + }, + { + "name": "heavy_l", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/gumball.png b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/gumball.png new file mode 100644 index 00000000000..655a614af6d Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/gumball.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/lollipop.png b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/lollipop.png new file mode 100644 index 00000000000..d7f88400edb Binary files /dev/null and b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/lollipop.png differ diff --git a/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/meta.json b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/meta.json new file mode 100644 index 00000000000..518317c3fcc --- /dev/null +++ b/Resources/Textures/_Sunrise/Objects/Consumable/Food/candy.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "lollipop" + }, + { + "name": "gumball" + } + ] +}