diff --git a/Content.Client/Clothing/ClientClothingSystem.cs b/Content.Client/Clothing/ClientClothingSystem.cs
index dd69521f483..1e2bd6f396d 100644
--- a/Content.Client/Clothing/ClientClothingSystem.cs
+++ b/Content.Client/Clothing/ClientClothingSystem.cs
@@ -40,6 +40,9 @@ public sealed class ClientClothingSystem : ClothingSystem
{"belt", "BELT"},
{"gloves", "HAND"},
{"shoes", "FEET"},
+ {"pants", "PANTS"}, // Sunrise-edit
+ {"socks", "SOCKS"}, // Sunrise-edit
+ {"bra", "BRA"}, // Sunrise-edit
{"id", "IDCARD"},
{"pocket1", "POCKET1"},
{"pocket2", "POCKET2"},
diff --git a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml
index cc6cc6e82b0..b52eacfa722 100644
--- a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml
+++ b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml
@@ -2,7 +2,7 @@
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
xmlns:fancyTree="clr-namespace:Content.Client.UserInterface.Controls.FancyTree"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
- SetSize="750 700"
+ SetSize="850 700"
MinSize="100 200"
Resizable="True"
Title="{Loc 'guidebook-window-title'}">
@@ -21,9 +21,13 @@
Margin="0 5 10 5">
+
+
+
-
+
+
diff --git a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
index 3a67dca89da..f5ee1200cc6 100644
--- a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
+++ b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
@@ -3,6 +3,7 @@
using Content.Client.UserInterface.ControlExtensions;
using Content.Client.UserInterface.Controls;
using Content.Client.UserInterface.Controls.FancyTree;
+using Content.Client.UserInterface.Systems.Info;
using Content.Shared.Guidebook;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
@@ -36,7 +37,13 @@ public GuidebookWindow()
private void OnSelectionChanged(TreeItem? item)
{
if (item != null && item.Metadata is GuideEntry entry)
+ {
ShowGuide(entry);
+
+ var isRulesEntry = entry.RuleEntry;
+ ReturnContainer.Visible = isRulesEntry;
+ HomeButton.OnPressed += _ => ShowGuide(entry);
+ }
else
ClearSelectedGuide();
}
@@ -153,6 +160,10 @@ private void RepopulateTree(List>? roots = null, Pr
return null;
}
+ var rulesProto = UserInterfaceManager.GetUIController().GetCoreRuleEntry();
+ if (entry.RuleEntry && entry.Id != rulesProto.Id)
+ return null;
+
var item = Tree.AddItem(parent);
item.Metadata = entry;
var name = Loc.GetString(entry.Name);
diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
index f2fdafdd8bb..40fec079197 100644
--- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
+++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs
@@ -636,7 +636,8 @@ public void RefreshAntags()
selector.Setup(items, title, 250, description, guides: antag.Guides);
selector.Select(Profile?.AntagPreferences.Contains(antag.ID) == true ? 0 : 1);
- if (!_requirements.CheckRoleTime(antag.Requirements, out var reason))
+ var requirements = _entManager.System().GetAntagRequirement(antag);
+ if (!_requirements.CheckRoleTime(requirements, out var reason))
{
selector.LockRequirements(reason);
Profile = Profile?.WithAntagPreference(antag.ID, false);
diff --git a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs
index e05c15cda26..2e8fa7027e7 100644
--- a/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs
+++ b/Content.Client/Players/PlayTimeTracking/JobRequirementsManager.cs
@@ -122,7 +122,13 @@ public bool IsAllowed(JobPrototype job, [NotNullWhen(false)] out FormattedMessag
}
// Sunrise-End
- return CheckRoleTime(job.Requirements, out reason);
+ return CheckRoleTime(job, out reason);
+ }
+
+ public bool CheckRoleTime(JobPrototype job, [NotNullWhen(false)] out FormattedMessage? reason)
+ {
+ var reqs = _entManager.System().GetJobRequirement(job);
+ return CheckRoleTime(reqs, out reason);
}
public bool CheckRoleTime(HashSet? requirements, [NotNullWhen(false)] out FormattedMessage? reason)
diff --git a/Content.Client/UserInterface/Systems/Guidebook/GuidebookUIController.cs b/Content.Client/UserInterface/Systems/Guidebook/GuidebookUIController.cs
index e30a6b3a215..61195f3a9a7 100644
--- a/Content.Client/UserInterface/Systems/Guidebook/GuidebookUIController.cs
+++ b/Content.Client/UserInterface/Systems/Guidebook/GuidebookUIController.cs
@@ -124,6 +124,9 @@ private void OnWindowClosed()
{
if (GuidebookButton != null)
GuidebookButton.Pressed = false;
+
+ if (_guideWindow != null)
+ _guideWindow.ReturnContainer.Visible = false;
}
private void OnWindowOpen()
diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs
index 52ccb1bd708..55c66e89334 100644
--- a/Content.Server/Antag/AntagSelectionSystem.cs
+++ b/Content.Server/Antag/AntagSelectionSystem.cs
@@ -374,6 +374,9 @@ public AntagSelectionPlayerPool GetPlayerPool(Entity en
///
public bool IsSessionValid(Entity ent, ICommonSession? session, AntagSelectionDefinition def, EntityUid? mind = null)
{
+ // TODO ROLE TIMERS
+ // Check if antag role requirements are met
+
if (session == null)
return true;
diff --git a/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs b/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs
index 86026b230ba..14007edcbf9 100644
--- a/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs
+++ b/Content.Server/Ghost/Roles/Components/GhostRoleComponent.cs
@@ -14,6 +14,10 @@ public sealed partial class GhostRoleComponent : Component
[DataField("rules")] private string _roleRules = "ghost-role-component-default-rules";
+ // TODO ROLE TIMERS
+ // Actually make use of / enforce this requirement?
+ // Why is this even here.
+ // Move to ghost role prototype & respect CCvars.GameRoleTimerOverride
[DataField("requirements")]
public HashSet? Requirements;
diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs
index c3142a709a7..09956e313f3 100644
--- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs
+++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs
@@ -35,6 +35,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem
[Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly PlayTimeTrackingManager _tracking = default!;
[Dependency] private readonly IAdminManager _adminManager = default!;
+ [Dependency] private readonly SharedRoleSystem _role = default!;
public override void Initialize()
{
@@ -197,7 +198,6 @@ private void OnGetDisallowedJobs(ref GetDisallowedJobsEvent ev)
public bool IsAllowed(ICommonSession player, string role)
{
if (!_prototypes.TryIndex(role, out var job) ||
- job.Requirements == null ||
!_cfg.GetCVar(CCVars.GameRoleTimers))
return true;
@@ -224,19 +224,8 @@ public HashSet> GetDisallowedJobs(ICommonSession player)
foreach (var job in _prototypes.EnumeratePrototypes())
{
- if (job.Requirements != null)
- {
- foreach (var requirement in job.Requirements)
- {
- if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes))
- continue;
-
- goto NoRole;
- }
- }
-
- roles.Add(job.ID);
- NoRole:;
+ if (JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes))
+ roles.Add(job.ID);
}
return roles;
@@ -257,22 +246,14 @@ public void RemoveDisallowedJobs(NetUserId userId, List> j
for (var i = 0; i < jobs.Count; i++)
{
- var job = jobs[i];
-
- if (!_prototypes.TryIndex(job, out var jobber) ||
- jobber.Requirements == null ||
- jobber.Requirements.Count == 0)
- continue;
-
- foreach (var requirement in jobber.Requirements)
+ if (_prototypes.TryIndex(jobs[i], out var job)
+ && JobRequirements.TryRequirementsMet(job, playTimes, out _, EntityManager, _prototypes))
{
- if (JobRequirements.TryRequirementMet(requirement, playTimes, out _, EntityManager, _prototypes))
- continue;
-
- jobs.RemoveSwap(i);
- i--;
- break;
+ continue;
}
+
+ jobs.RemoveSwap(i);
+ i--;
}
}
diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs
index 23c16318e2e..35ddbcd6f11 100644
--- a/Content.Shared/CCVar/CCVars.cs
+++ b/Content.Shared/CCVar/CCVars.cs
@@ -1,4 +1,5 @@
using Content.Shared.Maps;
+using Content.Shared.Roles;
using Robust.Shared;
using Robust.Shared.Configuration;
using Robust.Shared.Physics.Components;
@@ -219,6 +220,12 @@ public static readonly CVarDef
public static readonly CVarDef
GameRoleTimers = CVarDef.Create("game.role_timers", true, CVar.SERVER | CVar.REPLICATED);
+ ///
+ /// Override default role requirements using a
+ ///
+ public static readonly CVarDef
+ GameRoleTimerOverride = CVarDef.Create("game.role_timer_override", "", CVar.SERVER | CVar.REPLICATED);
+
///
/// If roles should be restricted based on whether or not they are whitelisted.
///
diff --git a/Content.Shared/Ghost/Roles/GhostRolePrototype.cs b/Content.Shared/Ghost/Roles/GhostRolePrototype.cs
index 43d64322504..bc36774ea8b 100644
--- a/Content.Shared/Ghost/Roles/GhostRolePrototype.cs
+++ b/Content.Shared/Ghost/Roles/GhostRolePrototype.cs
@@ -15,24 +15,24 @@ public sealed partial class GhostRolePrototype : IPrototype
///
/// The name of the ghostrole.
///
- [DataField]
+ [DataField(required: true)]
public string Name { get; set; } = default!;
///
/// The description of the ghostrole.
///
- [DataField]
+ [DataField(required: true)]
public string Description { get; set; } = default!;
///
/// The entity prototype of the ghostrole
///
- [DataField]
- public string EntityPrototype = default!;
+ [DataField(required: true)]
+ public EntProtoId EntityPrototype;
///
/// Rules of the ghostrole
///
- [DataField]
+ [DataField(required: true)]
public string Rules = default!;
-}
\ No newline at end of file
+}
diff --git a/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs b/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs
index b7457538ebe..b5d8fedbd92 100644
--- a/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs
+++ b/Content.Shared/Ghost/Roles/GhostRolesEuiMessages.cs
@@ -11,6 +11,11 @@ public struct GhostRoleInfo
public string Name { get; set; }
public string Description { get; set; }
public string Rules { get; set; }
+
+ // TODO ROLE TIMERS
+ // Actually make use of / enforce this requirement?
+ // Why is this even here.
+ // Move to ghost role prototype & respect CCvars.GameRoleTimerOverride
public HashSet? Requirements { get; set; }
///
diff --git a/Content.Shared/Guidebook/GuideEntry.cs b/Content.Shared/Guidebook/GuideEntry.cs
index 0e0e166cd55..c6079aab08b 100644
--- a/Content.Shared/Guidebook/GuideEntry.cs
+++ b/Content.Shared/Guidebook/GuideEntry.cs
@@ -39,6 +39,8 @@ public class GuideEntry
///
[DataField] public bool FilterEnabled = default!;
+ [DataField] public bool RuleEntry;
+
///
/// Priority for sorting top-level guides when shown in a tree / table of contents.
/// If the guide is the child of some other guide, the order simply determined by the order of children in .
diff --git a/Content.Shared/Inventory/SlotFlags.cs b/Content.Shared/Inventory/SlotFlags.cs
index 90971d1670b..c3b93a91acc 100644
--- a/Content.Shared/Inventory/SlotFlags.cs
+++ b/Content.Shared/Inventory/SlotFlags.cs
@@ -26,6 +26,9 @@ public enum SlotFlags
LEGS = 1 << 13,
FEET = 1 << 14,
SUITSTORAGE = 1 << 15,
+ PANTS = 1 << 16, // Sunrise-edit
+ BRA = 1 << 17, // Sunrise-edit
+ SOCKS = 1 << 18, // Sunrise-edit
All = ~NONE,
WITHOUT_POCKET = All & ~POCKET
diff --git a/Content.Shared/Preferences/Loadouts/Effects/SexLoadoutEffect.cs b/Content.Shared/Preferences/Loadouts/Effects/SexLoadoutEffect.cs
new file mode 100644
index 00000000000..21f7c3c9df0
--- /dev/null
+++ b/Content.Shared/Preferences/Loadouts/Effects/SexLoadoutEffect.cs
@@ -0,0 +1,25 @@
+using System.Diagnostics.CodeAnalysis;
+using Content.Shared.Humanoid;
+using Robust.Shared.Player;
+using Robust.Shared.Utility;
+
+namespace Content.Shared.Preferences.Loadouts.Effects;
+
+public sealed partial class SexLoadoutEffect : LoadoutEffect
+{
+ [DataField(required: true)]
+ public List Sex = new();
+
+ public override bool Validate(HumanoidCharacterProfile profile, RoleLoadout loadout, LoadoutPrototype proto, ICommonSession session, IDependencyCollection collection,
+ [NotNullWhen(false)] out FormattedMessage? reason)
+ {
+ if (Sex.Contains(profile.Sex))
+ {
+ reason = null;
+ return true;
+ }
+
+ reason = FormattedMessage.FromUnformatted(Loc.GetString("loadout-group-sex-restriction"));
+ return false;
+ }
+}
diff --git a/Content.Shared/Roles/AntagPrototype.cs b/Content.Shared/Roles/AntagPrototype.cs
index 05c0c535049..3cb81d4f9c5 100644
--- a/Content.Shared/Roles/AntagPrototype.cs
+++ b/Content.Shared/Roles/AntagPrototype.cs
@@ -42,7 +42,9 @@ public sealed partial class AntagPrototype : IPrototype
///
/// Requirements that must be met to opt in to this antag role.
///
- [DataField("requirements")]
+ // TODO ROLE TIMERS
+ // Actually check if the requirements are met. Because apparently this is actually unused.
+ [DataField, Access(typeof(SharedRoleSystem), Other = AccessPermissions.None)]
public HashSet? Requirements;
///
diff --git a/Content.Shared/Roles/JobPrototype.cs b/Content.Shared/Roles/JobPrototype.cs
index ff3b5090624..c8efb4c3179 100644
--- a/Content.Shared/Roles/JobPrototype.cs
+++ b/Content.Shared/Roles/JobPrototype.cs
@@ -43,7 +43,7 @@ public sealed partial class JobPrototype : IPrototype
[ViewVariables(VVAccess.ReadOnly)]
public string? LocalizedDescription => Description is null ? null : Loc.GetString(Description);
- [DataField("requirements")]
+ [DataField, Access(typeof(SharedRoleSystem), Other = AccessPermissions.None)]
public HashSet? Requirements;
[DataField("joinNotifyCrew")]
diff --git a/Content.Shared/Roles/JobRequirementOverridePrototype.cs b/Content.Shared/Roles/JobRequirementOverridePrototype.cs
new file mode 100644
index 00000000000..d0ce649f360
--- /dev/null
+++ b/Content.Shared/Roles/JobRequirementOverridePrototype.cs
@@ -0,0 +1,20 @@
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Roles;
+
+///
+/// Collection of job, antag, and ghost-role job requirements for per-server requirement overrides.
+///
+[Prototype]
+public sealed partial class JobRequirementOverridePrototype : IPrototype
+{
+ [ViewVariables]
+ [IdDataField]
+ public string ID { get; private set; } = default!;
+
+ [DataField]
+ public Dictionary, HashSet> Jobs = new ();
+
+ [DataField]
+ public Dictionary, HashSet> Antags = new ();
+}
diff --git a/Content.Shared/Roles/JobRequirements.cs b/Content.Shared/Roles/JobRequirements.cs
index ba559fadd5c..c9d66fcf918 100644
--- a/Content.Shared/Roles/JobRequirements.cs
+++ b/Content.Shared/Roles/JobRequirements.cs
@@ -73,16 +73,18 @@ public static class JobRequirements
{
public static bool TryRequirementsMet(
JobPrototype job,
- Dictionary playTimes,
+ IReadOnlyDictionary playTimes,
[NotNullWhen(false)] out FormattedMessage? reason,
IEntityManager entManager,
IPrototypeManager prototypes)
{
+ var sys = entManager.System();
+ var requirements = sys.GetJobRequirement(job);
reason = null;
- if (job.Requirements == null)
+ if (requirements == null)
return true;
- foreach (var requirement in job.Requirements)
+ foreach (var requirement in requirements)
{
if (!TryRequirementMet(requirement, playTimes, out reason, entManager, prototypes))
return false;
@@ -130,7 +132,7 @@ public static bool TryRequirementMet(
if (deptDiff <= 0)
return true;
- reason = FormattedMessage.FromMarkup(Loc.GetString(
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
"role-timer-department-insufficient",
("time", Math.Ceiling(deptDiff)),
("department", Loc.GetString(deptRequirement.Department)),
@@ -141,7 +143,7 @@ public static bool TryRequirementMet(
{
if (deptDiff <= 0)
{
- reason = FormattedMessage.FromMarkup(Loc.GetString(
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
"role-timer-department-too-high",
("time", -deptDiff),
("department", Loc.GetString(deptRequirement.Department)),
@@ -161,7 +163,7 @@ public static bool TryRequirementMet(
if (overallDiff <= 0 || overallTime >= overallRequirement.Time)
return true;
- reason = FormattedMessage.FromMarkup(Loc.GetString(
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
"role-timer-overall-insufficient",
("time", Math.Ceiling(overallDiff))));
return false;
@@ -170,7 +172,7 @@ public static bool TryRequirementMet(
{
if (overallDiff <= 0 || overallTime >= overallRequirement.Time)
{
- reason = FormattedMessage.FromMarkup(Loc.GetString("role-timer-overall-too-high", ("time", -overallDiff)));
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString("role-timer-overall-too-high", ("time", -overallDiff)));
return false;
}
@@ -197,7 +199,7 @@ public static bool TryRequirementMet(
if (roleDiff <= 0)
return true;
- reason = FormattedMessage.FromMarkup(Loc.GetString(
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
"role-timer-role-insufficient",
("time", Math.Ceiling(roleDiff)),
("job", Loc.GetString(proto)),
@@ -208,7 +210,7 @@ public static bool TryRequirementMet(
{
if (roleDiff <= 0)
{
- reason = FormattedMessage.FromMarkup(Loc.GetString(
+ reason = FormattedMessage.FromMarkupPermissive(Loc.GetString(
"role-timer-role-too-high",
("time", -roleDiff),
("job", Loc.GetString(proto)),
diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs
index d5ac2e5923a..81a360ebb7f 100644
--- a/Content.Shared/Roles/SharedRoleSystem.cs
+++ b/Content.Shared/Roles/SharedRoleSystem.cs
@@ -1,10 +1,12 @@
-using System.Linq;
using Content.Shared.Administration.Logs;
+using Content.Shared.CCVar;
using Content.Shared.Database;
+using Content.Shared.Ghost.Roles;
using Content.Shared.Mind;
using Content.Shared.Roles.Jobs;
using Robust.Shared.Audio;
using Robust.Shared.Audio.Systems;
+using Robust.Shared.Configuration;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
@@ -16,14 +18,30 @@ public abstract class SharedRoleSystem : EntitySystem
[Dependency] private readonly IPrototypeManager _prototypes = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedMindSystem _minds = default!;
+ [Dependency] private readonly IConfigurationManager _cfg = default!;
// TODO please lord make role entities
private readonly HashSet _antagTypes = new();
+ private JobRequirementOverridePrototype? _requirementOverride;
+
public override void Initialize()
{
// TODO make roles entities
SubscribeLocalEvent(OnJobGetAllRoles);
+ Subs.CVar(_cfg, CCVars.GameRoleTimerOverride, SetRequirementOverride, true);
+ }
+
+ private void SetRequirementOverride(string value)
+ {
+ if (string.IsNullOrEmpty(value))
+ {
+ _requirementOverride = null;
+ return;
+ }
+
+ if (!_prototypes.TryIndex(value, out _requirementOverride ))
+ Log.Error($"Unknown JobRequirementOverridePrototype: {value}");
}
private void OnJobGetAllRoles(EntityUid uid, JobComponent component, ref MindGetAllRolesEvent args)
@@ -253,4 +271,36 @@ public void MindPlaySound(EntityUid mindId, SoundSpecifier? sound, MindComponent
if (Resolve(mindId, ref mind) && mind.Session != null)
_audio.PlayGlobal(sound, mind.Session);
}
+
+ public HashSet? GetJobRequirement(JobPrototype job)
+ {
+ if (_requirementOverride != null && _requirementOverride.Jobs.TryGetValue(job.ID, out var req))
+ return req;
+
+ return job.Requirements;
+ }
+
+ public HashSet? GetJobRequirement(ProtoId job)
+ {
+ if (_requirementOverride != null && _requirementOverride.Jobs.TryGetValue(job, out var req))
+ return req;
+
+ return _prototypes.Index(job).Requirements;
+ }
+
+ public HashSet? GetAntagRequirement(ProtoId antag)
+ {
+ if (_requirementOverride != null && _requirementOverride.Antags.TryGetValue(antag, out var req))
+ return req;
+
+ return _prototypes.Index(antag).Requirements;
+ }
+
+ public HashSet? GetAntagRequirement(AntagPrototype antag)
+ {
+ if (_requirementOverride != null && _requirementOverride.Antags.TryGetValue(antag.ID, out var req))
+ return req;
+
+ return antag.Requirements;
+ }
}
diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml
index 31999b221c2..3865ceee627 100644
--- a/Resources/Changelog/Changelog.yml
+++ b/Resources/Changelog/Changelog.yml
@@ -1,11 +1,4 @@
Entries:
-- author: Vermidia
- changes:
- - message: Made the Artifact Reports page up to date with current Xenoarchaeology
- type: Tweak
- id: 6195
- time: '2024-03-19T03:22:21.0000000+00:00'
- url: https://github.com/space-wizards/space-station-14/pull/26252
- author: keronshb
changes:
- message: Fixed a bug where stores were enabling refunds after a purchase
@@ -3848,3 +3841,10 @@
id: 6694
time: '2024-06-07T01:24:08.0000000+00:00'
url: https://github.com/space-wizards/space-station-14/pull/28679
+- author: AJCM-git
+ changes:
+ - message: Guidebook no longer lists every single rule
+ type: Fix
+ id: 6695
+ time: '2024-06-07T11:28:55.0000000+00:00'
+ url: https://github.com/space-wizards/space-station-14/pull/28680
diff --git a/Resources/Changelog/ChangelogSunrise.yml b/Resources/Changelog/ChangelogSunrise.yml
index ddbbd46d82e..b4903880834 100644
--- a/Resources/Changelog/ChangelogSunrise.yml
+++ b/Resources/Changelog/ChangelogSunrise.yml
@@ -304,3 +304,10 @@ Entries:
type: Tweak
id: 26
time: '2024-06-07T08:24:40.104466+00:00'
+- author: VigersRay
+ changes:
+ - message: "\u0414\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u043E \u043D\u0438\u0436\
+ \u043D\u0435\u0435 \u0431\u0435\u043B\u044C\u0435."
+ type: Add
+ id: 27
+ time: '2024-06-07T17:08:00.724523+00:00'
diff --git a/Resources/Locale/en-US/guidebook/guides.ftl b/Resources/Locale/en-US/guidebook/guides.ftl
index 66c1a42adf2..5b99ea2bbe9 100644
--- a/Resources/Locale/en-US/guidebook/guides.ftl
+++ b/Resources/Locale/en-US/guidebook/guides.ftl
@@ -100,6 +100,8 @@ guide-entry-rules-r8 = R8
guide-entry-rules-r9 = R9
guide-entry-rules-r10 = R10
guide-entry-rules-r11 = R11
+guide-entry-rules-r11-1 = R11-1
+guide-entry-rules-r11-2 = R11-2
guide-entry-rules-r12 = R12
guide-entry-rules-r13 = R13
guide-entry-rules-r14 = R14
diff --git a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl
index f3afd7da616..87fc4389d8e 100644
--- a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl
+++ b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl
@@ -154,3 +154,8 @@ loadout-group-paramedic-backpack = Парамедик, рюкзак
loadout-group-reporter-jumpsuit = Репортёр, комбинезон
loadout-group-boxer-jumpsuit = Боксёр, комбинезон
loadout-group-boxer-gloves = Боксёр, перчатки
+
+# Sunrise-edit
+loadout-group-pants = Трусы
+loadout-group-bra = Бюстгальтер
+loadout-group-socks = Носки
diff --git a/Resources/Locale/ru-RU/preferences/loadouts.ftl b/Resources/Locale/ru-RU/preferences/loadouts.ftl
index f1845514c75..770cc46d55a 100644
--- a/Resources/Locale/ru-RU/preferences/loadouts.ftl
+++ b/Resources/Locale/ru-RU/preferences/loadouts.ftl
@@ -4,3 +4,5 @@ loadouts-min-limit = Мин. кол-во: { $count }
loadouts-max-limit = Макс. кол-во: { $count }
loadouts-points-limit = Очки: { $count } / { $max }
loadouts-points-restriction = Не хватает очков
+loadout-group-species-restriction = Не доступно для данной рассы
+loadout-group-sex-restriction = Не доступно для данного пола
diff --git a/Resources/Prototypes/Entities/Clothing/Under/under.yml b/Resources/Prototypes/Entities/Clothing/Under/under.yml
index ce2ffc629e9..6ff3602bf30 100644
--- a/Resources/Prototypes/Entities/Clothing/Under/under.yml
+++ b/Resources/Prototypes/Entities/Clothing/Under/under.yml
@@ -2,7 +2,7 @@
# I would cry if we didn't have them. -swept
- type: entity
- parent: ClothingShoesBase
+ parent: ClothingSocksBaseButcherable # Sunrise-end
id: ClothingUnderSocksBee
name: bee socks
description: Make them loins buzz!
@@ -13,7 +13,7 @@
sprite: Clothing/Under/Socks/bee.rsi
- type: entity
- parent: ClothingShoesBase
+ parent: ClothingSocksBaseButcherable # Sunrise-end
id: ClothingUnderSocksCoder
name: coder socks
description: It's time to code sisters!!11!
@@ -22,3 +22,4 @@
sprite: Clothing/Under/Socks/coder.rsi
- type: Clothing
sprite: Clothing/Under/Socks/coder.rsi
+
diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml
index 8b3c66d5dd1..49d937d5b3b 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml
@@ -90,9 +90,14 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- - map: ["jumpsuit"]
+ # Sunrise-start
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]
+ - map: ["bra"]
+ - map: ["pants"]
+ - map: ["socks"]
+ - map: ["jumpsuit"]
+ # Sunrise-end
- map: ["enum.HumanoidVisualLayers.LHand"]
- map: ["enum.HumanoidVisualLayers.RHand"]
- map: [ "gloves" ]
diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Entities/Mobs/Species/base.yml
index eeabecef8b2..2739f1f98a2 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/base.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/base.yml
@@ -27,9 +27,14 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- - map: ["jumpsuit"]
+ # Sunrise-start
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]
+ - map: ["bra"]
+ - map: ["pants"]
+ - map: ["socks"]
+ - map: ["jumpsuit"]
+ # Sunrise-end
- map: ["enum.HumanoidVisualLayers.LHand"]
- map: ["enum.HumanoidVisualLayers.RHand"]
- map: [ "gloves" ]
@@ -321,9 +326,14 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- - map: ["jumpsuit"]
+ # Sunrise-start
- map: ["enum.HumanoidVisualLayers.LFoot"]
- map: ["enum.HumanoidVisualLayers.RFoot"]
+ - map: ["bra"]
+ - map: ["pants"]
+ - map: ["socks"]
+ - map: ["jumpsuit"]
+ # Sunrise-end
- map: ["enum.HumanoidVisualLayers.LHand"]
- map: ["enum.HumanoidVisualLayers.RHand"]
- map: ["enum.HumanoidVisualLayers.Handcuffs"]
diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml
index f2a0194b7a4..b04821808a3 100644
--- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml
+++ b/Resources/Prototypes/Entities/Mobs/Species/moth.yml
@@ -84,11 +84,16 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- - map: [ "jumpsuit" ]
- - map: [ "enum.HumanoidVisualLayers.LHand" ]
- - map: [ "enum.HumanoidVisualLayers.RHand" ]
- - map: [ "enum.HumanoidVisualLayers.LFoot" ]
- - map: [ "enum.HumanoidVisualLayers.RFoot" ]
+ # Sunrise-start
+ - map: ["enum.HumanoidVisualLayers.LFoot"]
+ - map: ["enum.HumanoidVisualLayers.RFoot"]
+ - map: ["bra"]
+ - map: ["pants"]
+ - map: ["socks"]
+ - map: ["jumpsuit"]
+ # Sunrise-end
+ - map: ["enum.HumanoidVisualLayers.LHand"]
+ - map: ["enum.HumanoidVisualLayers.RHand"]
- map: [ "enum.HumanoidVisualLayers.Handcuffs" ]
color: "#ffffff"
sprite: Objects/Misc/handcuffs.rsi
diff --git a/Resources/Prototypes/Guidebook/rules.yml b/Resources/Prototypes/Guidebook/rules.yml
index 4aad4494855..a867ca23364 100644
--- a/Resources/Prototypes/Guidebook/rules.yml
+++ b/Resources/Prototypes/Guidebook/rules.yml
@@ -1,35 +1,41 @@
- type: guideEntry # Default for forks and stuff. Should not be listed anywhere if the server is using a custom ruleset.
id: DefaultRuleset
name: guide-entry-rules
+ ruleEntry: true
text: "/ServerInfo/Guidebook/ServerRules/DefaultRules.xml"
- type: guideEntry
id: CoreRuleset
name: guide-entry-rules-core-only
+ ruleEntry: true
priority: 0
text: "/ServerInfo/Guidebook/ServerRules/WizDenCoreOnlyRules.xml"
- type: guideEntry
id: StandardRuleset
name: guide-entry-rules-lrp
+ ruleEntry: true
priority: 5
text: "/ServerInfo/Guidebook/ServerRules/WizDenLRPRules.xml"
- type: guideEntry
id: MRPRuleset
name: guide-entry-rules-mrp
+ ruleEntry: true
priority: 10
text: "/ServerInfo/Guidebook/ServerRules/WizDenMRPRules.xml"
- type: guideEntry
id: RoleTypes
name: guide-entry-rules-role-types
+ ruleEntry: true
priority: 20
text: "/ServerInfo/Guidebook/ServerRules/RoleTypes.xml"
- type: guideEntry
id: CoreRules
name: guide-entry-rules-core
+ ruleEntry: true
priority: 30
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC0.xml"
children:
@@ -51,90 +57,105 @@
- type: guideEntry
id: RuleC1
name: guide-entry-rules-c1
+ ruleEntry: true
priority: 1
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC1Admins.xml"
- type: guideEntry
id: RuleC2
name: guide-entry-rules-c2
+ ruleEntry: true
priority: 2
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC2DBAD.xml"
- type: guideEntry
id: RuleC3
name: guide-entry-rules-c3
+ ruleEntry: true
priority: 3
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC3NoHate.xml"
- type: guideEntry
id: RuleC4
name: guide-entry-rules-c4
+ ruleEntry: true
priority: 4
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC4NoERP.xml"
- type: guideEntry
id: RuleC5
name: guide-entry-rules-c5
+ ruleEntry: true
priority: 5
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC5Metacomms.xml"
- type: guideEntry
id: RuleC6
name: guide-entry-rules-c6
+ ruleEntry: true
priority: 6
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC6BanEvasion.xml"
- type: guideEntry
id: RuleC7
name: guide-entry-rules-c7
+ ruleEntry: true
priority: 7
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC7EnglishOnly.xml"
- type: guideEntry
id: RuleC8
name: guide-entry-rules-c8
+ ruleEntry: true
priority: 8
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC8Exploits.xml"
- type: guideEntry
id: RuleC9
name: guide-entry-rules-c9
+ ruleEntry: true
priority: 9
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC9Multikey.xml"
- type: guideEntry
id: RuleC10
name: guide-entry-rules-c10
+ ruleEntry: true
priority: 10
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC10AHelp.xml"
- type: guideEntry
id: RuleC11
name: guide-entry-rules-c11
+ ruleEntry: true
priority: 11
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC11AhelpThreats.xml"
- type: guideEntry
id: RuleC12
name: guide-entry-rules-c12
+ ruleEntry: true
priority: 12
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC12MinAge.xml"
- type: guideEntry
id: RuleC13
name: guide-entry-rules-c13
+ ruleEntry: true
priority: 13
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml"
- type: guideEntry
id: RuleC14
name: guide-entry-rules-c14
+ ruleEntry: true
priority: 14
text: "/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC14ICinOOC.xml"
- type: guideEntry
id: RoleplayRules
name: guide-entry-rules-roleplay
+ ruleEntry: true
priority: 40
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR0.xml"
children:
@@ -157,96 +178,129 @@
- type: guideEntry
id: RuleR1
name: guide-entry-rules-r1
+ ruleEntry: true
priority: 1
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR1Silicons.xml"
- type: guideEntry
id: RuleR2
name: guide-entry-rules-r2
+ ruleEntry: true
priority: 2
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR2Familiars.xml"
- type: guideEntry
id: RuleR3
name: guide-entry-rules-r3
+ ruleEntry: true
priority: 3
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR3NormalRP.xml"
- type: guideEntry
id: RuleR4
name: guide-entry-rules-r4
+ ruleEntry: true
priority: 4
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR4Metashield.xml"
- type: guideEntry
id: RuleR5
name: guide-entry-rules-r5
+ ruleEntry: true
priority: 5
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR5Arrivals.xml"
- type: guideEntry
id: RuleR6
name: guide-entry-rules-r6
+ ruleEntry: true
priority: 6
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR6SelfAntag.xml"
- type: guideEntry
id: RuleR7
name: guide-entry-rules-r7
+ ruleEntry: true
priority: 7
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR7RoundStalling.xml"
- type: guideEntry
id: RuleR8
name: guide-entry-rules-r8
+ ruleEntry: true
priority: 8
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR8NoFriendlyAntag.xml"
- type: guideEntry
id: RuleR9
name: guide-entry-rules-r9
+ ruleEntry: true
priority: 9
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR9MassSabotage.xml"
- type: guideEntry
id: RuleR10
name: guide-entry-rules-r10
+ ruleEntry: true
priority: 10
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR10Subordination.xml"
- type: guideEntry
id: RuleR11
name: guide-entry-rules-r11
+ ruleEntry: true
priority: 11
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11Escalation.xml"
+ children:
+ - RuleR11-1
+ - RuleR11-2
+
+- type: guideEntry
+ id: RuleR11-1
+ name: guide-entry-rules-r11-1
+ ruleEntry: true
+ priority: 10
+ text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11-1AnimalEscalation.xml"
+
+- type: guideEntry
+ id: RuleR11-2
+ name: guide-entry-rules-r11-2
+ ruleEntry: true
+ priority: 10
+ text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11-2ConflictTypes.xml"
- type: guideEntry
id: RuleR12
name: guide-entry-rules-r12
+ ruleEntry: true
priority: 12
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR12RoleAbandonment.xml"
- type: guideEntry
id: RuleR13
name: guide-entry-rules-r13
+ ruleEntry: true
priority: 13
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR13PerformRole.xml"
- type: guideEntry
id: RuleR14
name: guide-entry-rules-r14
+ ruleEntry: true
priority: 14
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR14SecComStandard.xml"
- type: guideEntry
id: RuleR15
name: guide-entry-rules-r15
+ ruleEntry: true
priority: 15
text: "/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR15SpaceLaw.xml"
- type: guideEntry
id: SiliconRules
name: guide-entry-rules-silicon
+ ruleEntry: true
priority: 50
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS0.xml"
children:
@@ -264,67 +318,77 @@
- type: guideEntry
id: RuleS1
name: guide-entry-rules-s1
+ ruleEntry: true
priority: 1
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS1Laws.xml"
- type: guideEntry
id: RuleS2
name: guide-entry-rules-s2
+ ruleEntry: true
priority: 2
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS2LawPriority.xml"
- type: guideEntry
id: RuleS3
name: guide-entry-rules-s3
+ ruleEntry: true
priority: 3
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS3LawRedefinition.xml"
- type: guideEntry
id: RuleS4
name: guide-entry-rules-s4
+ ruleEntry: true
priority: 4
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS4RequestChanges.xml"
- type: guideEntry
id: RuleS5
name: guide-entry-rules-s5
+ ruleEntry: true
priority: 5
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS5FreeSilicon.xml"
- type: guideEntry
id: RuleS6
name: guide-entry-rules-s6
+ ruleEntry: true
priority: 6
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS6UnreasonableOrders.xml"
- type: guideEntry
id: RuleS7
name: guide-entry-rules-s7
+ ruleEntry: true
priority: 7
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS7Consistency.xml"
- type: guideEntry
id: RuleS8
name: guide-entry-rules-s8
+ ruleEntry: true
priority: 8
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS8DefaultCrewDefinition.xml"
- type: guideEntry
id: RuleS9
name: guide-entry-rules-s9
+ ruleEntry: true
priority: 9
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS9DefaultHarmDefinition.xml"
- type: guideEntry
id: RuleS10
name: guide-entry-rules-s10
+ ruleEntry: true
priority: 10
text: "/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS10OrderConflicts.xml"
- type: guideEntry
id: SpaceLaw
name: guide-entry-rules-space-law
- priority: 60
+ priority: 1
text: "/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml"
children:
- SpaceLawCrimeList
@@ -359,11 +423,13 @@
- type: guideEntry
id: BanTypes
name: guide-entry-rules-ban-types
+ ruleEntry: true
priority: 90
text: "/ServerInfo/Guidebook/ServerRules/BanTypes.xml"
- type: guideEntry
id: BanDurations
name: guide-entry-rules-ban-durations
+ ruleEntry: true
priority: 100
text: "/ServerInfo/Guidebook/ServerRules/BanDurations.xml"
diff --git a/Resources/Prototypes/Guidebook/security.yml b/Resources/Prototypes/Guidebook/security.yml
index f5e34708283..17edb030065 100644
--- a/Resources/Prototypes/Guidebook/security.yml
+++ b/Resources/Prototypes/Guidebook/security.yml
@@ -6,6 +6,7 @@
- Forensics
- Defusal
- CriminalRecords
+ - SpaceLaw
- type: guideEntry
id: Forensics
diff --git a/Resources/Prototypes/Guidebook/ss14.yml b/Resources/Prototypes/Guidebook/ss14.yml
index 5b1f1dd8f97..f0b72b90b43 100644
--- a/Resources/Prototypes/Guidebook/ss14.yml
+++ b/Resources/Prototypes/Guidebook/ss14.yml
@@ -3,7 +3,6 @@
name: guide-entry-ss14
text: "/ServerInfo/Guidebook/SpaceStation14.xml"
children:
- - SpaceLaw
- Controls
- Jobs
- Survival
@@ -22,5 +21,3 @@
id: Glossary
name: guide-entry-glossary
text: "/ServerInfo/Guidebook/Glossary.xml"
-
-
diff --git a/Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml
index a9c7352ed82..478756dfaa4 100644
--- a/Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml
+++ b/Resources/Prototypes/InventoryTemplates/arachnid_inventory_template.yml
@@ -1,6 +1,29 @@
- type: inventoryTemplate
id: arachnid
slots:
+ # Sunrise-start
+ - name: bra
+ slotTexture: bra
+ slotFlags: BRA
+ stripTime: 3
+ uiWindowPos: 3,2
+ strippingWindowPos: 2,1
+ displayName: Bra
+ - name: pants
+ slotTexture: pants
+ slotFlags: PANTS
+ stripTime: 6
+ uiWindowPos: 3,1
+ strippingWindowPos: 2,2
+ displayName: Pants
+ - name: socks
+ slotTexture: socks
+ slotFlags: SOCKS
+ stripTime: 3
+ uiWindowPos: 3,0
+ strippingWindowPos: 2,3
+ displayName: Socks
+ # Sunrise-end
- name: shoes
slotTexture: shoes
slotFlags: FEET
@@ -19,7 +42,7 @@
slotTexture: gloves
slotFlags: GLOVES
uiWindowPos: 2,1
- strippingWindowPos: 2,2
+ strippingWindowPos: 2,0 # Sunrise-edit
displayName: Gloves
- name: neck
slotTexture: neck
@@ -45,7 +68,7 @@
slotFlags: EARS
stripTime: 3
uiWindowPos: 2,2
- strippingWindowPos: 2,0
+ strippingWindowPos: 2,-1 # Sunrise-edit
displayName: Ears
- name: head
slotTexture: head
@@ -70,7 +93,7 @@
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 3,1
- strippingWindowPos: 2,3
+ strippingWindowPos: 2,6 # Sunrise-edit
displayName: Belt
- name: back
slotTexture: back
@@ -79,7 +102,7 @@
slotGroup: SecondHotbar
stripTime: 6
uiWindowPos: 3,0
- strippingWindowPos: 0,3
+ strippingWindowPos: 2,5 # Sunrise-edit
displayName: Back
- name: pocket4
@@ -135,7 +158,7 @@
slotGroup: MainHotbar
stripTime: 3
uiWindowPos: 2,0
- strippingWindowPos: 2,5
+ strippingWindowPos: 0,3 # Sunrise-edit
dependsOn: outerClothing
dependsOnComponents:
- type: AllowSuitStorage
diff --git a/Resources/Prototypes/InventoryTemplates/human_inventory_template.yml b/Resources/Prototypes/InventoryTemplates/human_inventory_template.yml
index ff1447931fe..0604f9038d7 100644
--- a/Resources/Prototypes/InventoryTemplates/human_inventory_template.yml
+++ b/Resources/Prototypes/InventoryTemplates/human_inventory_template.yml
@@ -1,6 +1,29 @@
- type: inventoryTemplate
id: human
slots:
+ # Sunrise-start
+ - name: bra
+ slotTexture: bra
+ slotFlags: BRA
+ stripTime: 3
+ uiWindowPos: 3,2
+ strippingWindowPos: 2,1
+ displayName: Bra
+ - name: pants
+ slotTexture: pants
+ slotFlags: PANTS
+ stripTime: 6
+ uiWindowPos: 3,1
+ strippingWindowPos: 2,2
+ displayName: Pants
+ - name: socks
+ slotTexture: socks
+ slotFlags: SOCKS
+ stripTime: 3
+ uiWindowPos: 3,0
+ strippingWindowPos: 2,3
+ displayName: Socks
+ # Sunrise-end
- name: shoes
slotTexture: shoes
slotFlags: FEET
@@ -26,7 +49,7 @@
slotTexture: gloves
slotFlags: GLOVES
uiWindowPos: 2,1
- strippingWindowPos: 2,2
+ strippingWindowPos: 2,0 # Sunrise-edit
displayName: Gloves
- name: neck
slotTexture: neck
@@ -52,7 +75,7 @@
slotFlags: EARS
stripTime: 3
uiWindowPos: 2,2
- strippingWindowPos: 2,0
+ strippingWindowPos: 2,-1 # Sunrise-edit
displayName: Ears
- name: head
slotTexture: head
@@ -88,7 +111,7 @@
slotGroup: MainHotbar
stripTime: 3
uiWindowPos: 2,0
- strippingWindowPos: 2,5
+ strippingWindowPos: 0,3 # Sunrise-edit
dependsOn: outerClothing
dependsOnComponents:
- type: AllowSuitStorage
diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml
index 4ff2775dfc1..28e49a34f54 100644
--- a/Resources/Prototypes/Loadouts/role_loadouts.yml
+++ b/Resources/Prototypes/Loadouts/role_loadouts.yml
@@ -8,6 +8,11 @@
- CaptainBackpack
- CaptainOuterClothing
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobHeadOfPersonnel
@@ -19,6 +24,11 @@
- HoPOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Civilian
- type: roleLoadout
@@ -32,6 +42,11 @@
- PassengerShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobBartender
@@ -42,6 +57,11 @@
- BartenderOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobServiceWorker
@@ -50,6 +70,11 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobChef
@@ -61,6 +86,11 @@
- ChefOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobLibrarian
@@ -69,6 +99,11 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobLawyer
@@ -78,6 +113,11 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobChaplain
@@ -90,6 +130,11 @@
- ChaplainOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobJanitor
@@ -101,6 +146,11 @@
- JanitorOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobBotanist
@@ -111,6 +161,11 @@
- BotanistOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobClown
@@ -122,6 +177,11 @@
- ClownShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobMime
@@ -133,6 +193,11 @@
- MimeOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobMusician
@@ -141,6 +206,11 @@
- MusicianOuterClothing
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Cargo
- type: roleLoadout
@@ -154,6 +224,11 @@
- QuartermasterShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobCargoTechnician
@@ -165,6 +240,11 @@
- CargoTechnicianShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobSalvageSpecialist
@@ -174,6 +254,11 @@
- SalvageSpecialistShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Engineering
- type: roleLoadout
@@ -186,6 +271,11 @@
- ChiefEngineerOuterClothing
- ChiefEngineerShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobTechnicalAssistant
@@ -193,6 +283,11 @@
- TechnicalAssistantJumpsuit
- StationEngineerBackpack
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobStationEngineer
@@ -204,6 +299,11 @@
- StationEngineerShoes
- StationEngineerID
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobAtmosphericTechnician
@@ -213,6 +313,11 @@
- AtmosphericTechnicianOuterClothing
- AtmosphericTechnicianShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Science
- type: roleLoadout
@@ -227,6 +332,11 @@
- ResearchDirectorShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobScientist
@@ -241,6 +351,11 @@
- ScientistPDA
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobResearchAssistant
@@ -249,6 +364,11 @@
- ScientistBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Security
- type: roleLoadout
@@ -262,6 +382,11 @@
- HeadofSecurityOuterClothing
- SecurityShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobWarden
@@ -273,6 +398,11 @@
- WardenOuterClothing
- SecurityShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobSecurityOfficer
@@ -285,6 +415,11 @@
- SecurityPDA
- SecurityBelt
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobDetective
@@ -296,6 +431,11 @@
- DetectiveOuterClothing
- SecurityShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobSecurityCadet
@@ -303,6 +443,11 @@
- SecurityCadetJumpsuit
- SecurityBackpack
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Medical
- type: roleLoadout
@@ -318,6 +463,11 @@
- ChiefMedicalOfficerShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobMedicalDoctor
@@ -332,6 +482,11 @@
- MedicalDoctorPDA
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobMedicalIntern
@@ -340,6 +495,11 @@
- MedicalBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobChemist
@@ -351,6 +511,11 @@
- ChemistOuterClothing
- MedicalShoes
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobParamedic
@@ -364,6 +529,11 @@
- ParamedicShoes
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
# Wildcards
- type: roleLoadout
@@ -372,6 +542,11 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobReporter
@@ -380,13 +555,23 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobPsychologist
groups:
- - MedicalBackpack
+ - PsychologistBackpack # Sunrise-edit
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
- type: roleLoadout
id: JobBoxer
@@ -396,3 +581,8 @@
- CommonBackpack
- Glasses
- Trinkets
+ # Sunrise-start
+ - Bra
+ - Pants
+ - Socks
+ # Sunrise-end
diff --git a/Resources/Prototypes/Roles/requirement_overrides.yml b/Resources/Prototypes/Roles/requirement_overrides.yml
new file mode 100644
index 00000000000..62041f42d7e
--- /dev/null
+++ b/Resources/Prototypes/Roles/requirement_overrides.yml
@@ -0,0 +1,16 @@
+- type: jobRequirementOverride
+ id: Reduced
+ jobs:
+ Captain:
+ - !type:DepartmentTimeRequirement
+ department: Engineering
+ time: 3600 # 1 hours
+ - !type:DepartmentTimeRequirement
+ department: Medical
+ time: 3600 # 1 hours
+ - !type:DepartmentTimeRequirement
+ department: Security
+ time: 3600 # 1 hours
+ - !type:DepartmentTimeRequirement
+ department: Command
+ time: 3600 # 1 hour
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/base_bra.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/base_bra.yml
new file mode 100644
index 00000000000..38ad01afb5d
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/base_bra.yml
@@ -0,0 +1,38 @@
+- type: entity
+ abstract: true
+ parent: Clothing
+ id: ClothingBraBase
+ components:
+ - type: Clothing
+ slots: [bra]
+ - type: Sprite
+ state: icon
+
+- type: entity
+ abstract: true
+ parent: ClothingBraBase
+ id: ClothingBraBaseButcherable
+ components:
+ - type: Butcherable
+ butcheringType: Knife
+ spawned:
+ - id: MaterialCloth1
+ amount: 1
+
+- type: entity
+ abstract: true
+ parent: ClothingBraBase
+ id: ClothingBraStorageBase
+ components:
+ - type: Storage
+ grid:
+ - 0,0,1,1
+ maxItemSize: Tiny
+ - type: ContainerContainer
+ containers:
+ storagebase: !type:Container
+ ents: []
+ - type: UserInterface
+ interfaces:
+ enum.StorageUiKey.Key:
+ type: StorageBoundUserInterface
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/bra.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/bra.yml
new file mode 100644
index 00000000000..e9ffc94439b
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Bra/bra.yml
@@ -0,0 +1,155 @@
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraNekoWhite
+ name: женский бюстгальтер "Неко" белый
+ description: Белый бюстгальтер с изображением ушек и хвоста кошки.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_neko_white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_neko_white
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraNekoBlack
+ name: женский бюстгальтер "Неко" черный
+ description: Черный бюстгальтер с изображением ушек и хвоста кошки.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_neko_black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_neko_black
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraAssblastusa
+ name: женский бюстгальтер "Эссбластуса"
+ description: Бюстгальтер с уникальным дизайном, вдохновленным космическими мотивами.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_assblastusa_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_assblastusa
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraBikini
+ name: женский бюстгальтер-бикини
+ description: Бюстгальтер с обтягивающим купальником.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_bikini_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_bikini
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraBralette
+ name: женский бра-топ
+ description: Комфортный и стильный бра-топ.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_bralette_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_bralette
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraCommie
+ name: женский бюстгальтер "Комми"
+ description: Бюстгальтер с дизайном, вдохновленным стилем коммунизма.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_commie_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_commie
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraKinky
+ name: женский сексуальный бюстгальтер
+ description: Сексуальный бюстгальтер для особых случаев.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_kinky_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_kinky
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraLace
+ name: женский кружевной бюстгальтер
+ description: Кружевной бюстгальтер для женственного образа.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_lace_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_lace
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraSport
+ name: женский спортивный бюстгальтер
+ description: Удобный и поддерживающий бюстгальтер для занятий спортом.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_sport_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_sport
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraThong
+ name: женский тонкий бюстгальтер
+ description: Тонкий бюстгальтер без лишних деталей.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_thong_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_thong
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraUk
+ name: женский бюстгальтер "Великобритания"
+ description: Бюстгальтер с дизайном, символизирующим Великобританию.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_uk_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_uk
+
+- type: entity
+ parent: ClothingBraStorageBase
+ id: ClothingBraStrapless
+ name: женский бюстгальтер без бретелек
+ description: Бюстгальтер без бретелек для невидимости под одеждой.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ state: female_strapless_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Bra/bra.rsi
+ equippedState: female_strapless
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/base_pants.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/base_pants.yml
new file mode 100644
index 00000000000..df73cb107e2
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/base_pants.yml
@@ -0,0 +1,39 @@
+- type: entity
+ abstract: true
+ parent: Clothing
+ id: ClothingPantsBase
+ components:
+ - type: Clothing
+ slots:
+ - PANTS
+ - type: Sprite
+ state: icon
+
+- type: entity
+ abstract: true
+ parent: ClothingPantsBase
+ id: ClothingPantsBaseButcherable
+ components:
+ - type: Butcherable
+ butcheringType: Knife
+ spawned:
+ - id: MaterialCloth1
+ amount: 1
+
+- type: entity
+ abstract: true
+ parent: ClothingPantsBase
+ id: ClothingPantsStorageBase
+ components:
+ - type: Storage
+ grid:
+ - 0,0,1,1
+ maxItemSize: Tiny
+ - type: ContainerContainer
+ containers:
+ storagebase: !type:Container
+ ents: []
+ - type: UserInterface
+ interfaces:
+ enum.StorageUiKey.Key:
+ type: StorageBoundUserInterface
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/pants.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/pants.yml
new file mode 100644
index 00000000000..c51fa729ff1
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Pants/pants.yml
@@ -0,0 +1,289 @@
+# Мужчина
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManAssblastusa
+ name: мужские трусы "Assblastusa"
+ description: трусы с уникальным дизайном "Assblastusa" для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_assblastusa_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_assblastusa
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManBoxers
+ name: мужские боксеры
+ description: Комфортные боксеры для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_boxers_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_boxers
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManBriefs
+ name: мужские трусы
+ description: Обычные мужские трусы.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_briefs_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_briefs
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManCommie
+ name: мужские трусы "Коммуняка"
+ description: трусы с коммунистическим дизайном для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_commie_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_commie
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManHearts
+ name: мужские трусы с сердечками
+ description: трусы с рисунком сердечек для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_hearts_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_hearts
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManKinky
+ name: мужские трусы "Кинки"
+ description: трусы с вызывающим дизайном для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_kinky_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_kinky
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManLongjohns
+ name: мужские теплые трусы
+ description: Теплые длинные трусы для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_longjohns_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_longjohns
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManMankini
+ name: мужской манкини
+ description: Одежда для смелых мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_mankini_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_mankini
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManStripe
+ name: мужские полосатые трусы
+ description: трусы с полосатым дизайном для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_stripe_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_stripe
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsManUk
+ name: мужские трусы с флагом Великобритании
+ description: трусы с флагом Великобритании для мужчин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ state: male_uk_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Man/pants.rsi
+ equippedState: male_uk
+
+# Женщина
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanNekoWhite
+ name: женские белые трусы с котиками
+ description: трусы с белым цветом и изображением котиков для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_neko_white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_neko_white
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanNekoBlack
+ name: женские черные трусы с котиками
+ description: трусы с черным цветом и изображением котиков для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_neko_black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_neko_black
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanAssblastusa
+ name: женские трусы "Assblastusa"
+ description: трусы с уникальным дизайном "Assblastusa" для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_assblastusa_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_assblastusa
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanBikini
+ name: женские бикини
+ description: трусы-бикини для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_bikini_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_bikini
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanBralette
+ name: женские трусики-бра
+ description: Трусики-бра для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_bralette_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_bralette
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanCommie
+ name: женские трусы "Коммуняка"
+ description: трусы с коммунистическим дизайном для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_commie_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_commie
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanKinky
+ name: женские трусы "Кинки"
+ description: трусы с вызывающим дизайном для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_kinky_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_kinky
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanLace
+ name: женские кружевные трусы
+ description: трусы с кружевным узором для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_lace_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_lace
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanSport
+ name: женские спортивные трусы
+ description: Удобные и практичные спортивные трусы для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_sport_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_sport
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanThong
+ name: женские трусики-стринги
+ description: Трусики-стринги для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_thong_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_thong
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanUk
+ name: женские трусы с флагом Великобритании
+ description: трусы с флагом Великобритании для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_uk_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_uk
+
+- type: entity
+ parent: ClothingPantsStorageBase
+ id: ClothingPantsWomanStrapless
+ name: женские трусы без лямок
+ description: трусы без лямок для женщин.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ state: female_strapless_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Pants/Woman/pants.rsi
+ equippedState: female_strapless
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/base_clothingsocks.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/base_clothingsocks.yml
new file mode 100644
index 00000000000..7c55d02b22b
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/base_clothingsocks.yml
@@ -0,0 +1,22 @@
+- type: entity
+ abstract: true
+ parent: Clothing
+ id: ClothingSocksBase
+ components:
+ - type: Clothing
+ quickEquip: true
+ slots:
+ - SOCKS
+ - type: Sprite
+ state: icon
+
+- type: entity
+ abstract: true
+ parent: ClothingSocksBase
+ id: ClothingSocksBaseButcherable
+ components:
+ - type: Butcherable
+ butcheringType: Knife
+ spawned:
+ - id: MaterialCloth1
+ amount: 1
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/fishnet.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/fishnet.yml
new file mode 100644
index 00000000000..99de76ac71f
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/fishnet.yml
@@ -0,0 +1,12 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingFishnet
+ name: ажурные колготки
+ description: Красивые ажурные колготки.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/fishnet.rsi
+ state: icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/fishnet.rsi
+ equippedState: fishnet_full
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/knee.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/knee.yml
new file mode 100644
index 00000000000..020ded8ad74
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/knee.yml
@@ -0,0 +1,155 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeWhite
+ name: белые гольфы
+ description: Белые гольфы - простые белые носки до колена.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: white_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeAce
+ name: гольфы с козырьком
+ description: Гольфы с козырьком - носки до колена с добавленным козырьком в верхней части.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: ace_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: ace_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeAsblastusa
+ name: гольфы с логотипом "Assblastusa"
+ description: Гольфы с логотипом "Assblastusa" - носки до колена с изображением логотипа "Assblastusa".
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: assblastusa_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: assblastusa_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeBee
+ name: гольфы с пчелой
+ description: Гольфы с пчелой - носки до колена с изображением пчелы.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: bee_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: bee_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeBlack
+ name: черные гольфы
+ description: Черные гольфы - простые черные носки до колена.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: black_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeCommie
+ name: коммунистические гольфы
+ description: Коммунистические гольфы - носки до колена с коммунистическими символами.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: commie_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: commie_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeFishnet
+ name: гольфы в сетку
+ description: Гольфы в сетку - носки до колена с сетчатым узором.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: fishnet_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: fishnet_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeRainbow
+ name: радужные гольфы
+ description: Радужные гольфы - носки до колена с радужным узором.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: rainbow_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: rainbow_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeStriped
+ name: полосатые гольфы
+ description: Полосатые гольфы - носки до колена с полосатым узором.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: striped_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: striped_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeThin
+ name: тонкие гольфы
+ description: Тонкие гольфы - тонкие носки до колена.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: thin_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: thin_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeTrans
+ name: гольфы с трансфлагом
+ description: Гольфы с трансфлагом - носки до колена с изображением флага трансгендерной гордости.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: trans_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: trans_knee
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingKneeUk
+ name: гольфы с британским флагом
+ description: Гольфы с британским флагом - носки до колена с изображением флага Великобритании.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ state: uk_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/knee.rsi
+ equippedState: uk_knee
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/norm.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/norm.yml
new file mode 100644
index 00000000000..247681bf1b4
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/norm.yml
@@ -0,0 +1,25 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingNormBlack
+ name: чёрные носки
+ description: Чёрные носки.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/norm.rsi
+ state: black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/norm.rsi
+ equippedState: black_norm
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingNormWhite
+ name: белые носки
+ description: Белые носки.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/norm.rsi
+ state: white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/norm.rsi
+ equippedState: white_norm
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/pantyhose.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/pantyhose.yml
new file mode 100644
index 00000000000..ed070512c44
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/pantyhose.yml
@@ -0,0 +1,12 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingPantyhose
+ name: колготки
+ description: Эластичные колготки для ног.
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/pantyhose.rsi
+ state: icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/pantyhose.rsi
+ equippedState: pantyhose
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/short.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/short.yml
new file mode 100644
index 00000000000..0a1c13bac01
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/short.yml
@@ -0,0 +1,25 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingShortBlack
+ name: черные короткие носки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/short.rsi
+ state: black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/short.rsi
+ equippedState: black_short
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingShortWhite
+ name: белые короткие носки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/short.rsi
+ state: white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/short.rsi
+ equippedState: white_short
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/stockings.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/stockings.yml
new file mode 100644
index 00000000000..5de316deaa1
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/stockings.yml
@@ -0,0 +1,90 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsBlue
+ name: голубые чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: blue_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_blue
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsCyan
+ name: голубовато-зелёные чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: cyan_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_cyan
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsDpink
+ name: тёмно-розовые чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: dpink_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_dpink
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsGreen
+ name: зелёные чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: green_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_green
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingslpink
+ name: светло-розовые чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: lpink_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_lpink
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsOrange
+ name: оранжевые чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: orange_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_orange
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingStockingsPurple
+ name: фиолетовые чулки
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ state: purple_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/stockings.rsi
+ equippedState: stockings_purple
diff --git a/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/thigh.yml b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/thigh.yml
new file mode 100644
index 00000000000..044fa8fd907
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Entities/Clothing/Socks/thigh.yml
@@ -0,0 +1,155 @@
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighWhite
+ name: белые чулки до бедра
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: white_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: white_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighAce
+ name: чулки до бедра с козырьком
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: ace_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: ace_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighAsblastusa
+ name: чулки до бедра с логотипом "Assblastusa"
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: assblastusa_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: assblastusa_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighBee
+ name: чулки до бедра с изображением пчелы
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: bee_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: bee_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighBlack
+ name: черные чулки до бедра
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: black_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: black_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighCommie
+ name: чулки до бедра с коммунистическими символами
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: commie_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: commie_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighFishnet
+ name: чулки до бедра с сетчатым узором
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: fishnet_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: fishnet_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighRainbow
+ name: радужные чулки до бедра
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: rainbow_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: rainbow_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighStriped
+ name: полосатые чулки до бедра
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: striped_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: striped_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighThin
+ name: тонкие чулки до бедра
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: thin_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: thin_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighTrans
+ name: чулки до бедра с трансфлагом
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: trans_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: trans_thigh
+
+- type: entity
+ parent: ClothingSocksBaseButcherable
+ id: ClothingThighUk
+ name: чулки до бедра с изображением британского флага
+ description:
+ components:
+ - type: Sprite
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ state: uk_icon
+ - type: Clothing
+ sprite: _Sunrise/Clothing/Socks/thigh.rsi
+ equippedState: uk_thigh
diff --git a/Resources/Prototypes/_Sunrise/Entities/Objects/Books/hyperlinkbooks.yml b/Resources/Prototypes/_Sunrise/Entities/Objects/Books/hyperlinkbooks.yml
index 9115af69b46..d614220ee53 100644
--- a/Resources/Prototypes/_Sunrise/Entities/Objects/Books/hyperlinkbooks.yml
+++ b/Resources/Prototypes/_Sunrise/Entities/Objects/Books/hyperlinkbooks.yml
@@ -16,8 +16,8 @@
- type: entity
parent: BaseHyperLinkBook
id: HyperLinkBookCorporateLaw
- name: corporate law
- description: A book of complicated laws for shitsec on station.
+ name: корпоративный закон
+ description: Любимое чтиво щиткюра.
components:
- type: Sprite
sprite: Objects/Misc/books.rsi
diff --git a/Resources/Prototypes/_Sunrise/Guidebook/rules.yml b/Resources/Prototypes/_Sunrise/Guidebook/rules.yml
new file mode 100644
index 00000000000..d7c3afdec96
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Guidebook/rules.yml
@@ -0,0 +1,125 @@
+- type: guideEntry
+ id: SunriseRuleset
+ name: guide-entry-rules
+ ruleEntry: true
+ text: "/ServerInfo/Guidebook/ServerRules/SunriseRules.xml"
+
+- type: guideEntry
+ id: RuleSR0
+ name: Правило 0
+ priority: 1
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR0DBAD.xml"
+
+- type: guideEntry
+ id: RuleSR1
+ name: Правило 1
+ priority: 2
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR1Decay.xml"
+
+- type: guideEntry
+ id: RuleSR2
+ name: Правило 2
+ priority: 3
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR2Kill.xml"
+
+- type: guideEntry
+ id: RuleSR3
+ name: Правило 3
+ priority: 4
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR3VGA.xml"
+
+- type: guideEntry
+ id: RuleSR4
+ name: Правило 4
+ priority: 5
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR4LC.xml"
+
+- type: guideEntry
+ id: RuleSR6
+ name: Правило 6
+ priority: 6
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR6RPA.xml"
+
+- type: guideEntry
+ id: RuleSR7
+ name: Правило 7
+ priority: 7
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR7SA.xml"
+
+- type: guideEntry
+ id: RuleSR8
+ name: Правило 8
+ priority: 8
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR8VH.xml"
+
+- type: guideEntry
+ id: RuleSR9
+ name: Правило 9
+ priority: 9
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR9ERP.xml"
+
+- type: guideEntry
+ id: RuleSR10
+ name: Правило 10
+ priority: 10
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR10Exploit.xml"
+
+### Подпункты к 3 правилу
+
+
+- type: guideEntry
+ id: RuleSRRP1
+ name: Правило 3.1.
+ priority: 1
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP1PG.xml"
+
+- type: guideEntry
+ id: RuleSRRP2
+ name: Правило 3.2.
+ priority: 2
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP2MG.xml"
+
+
+- type: guideEntry
+ id: RuleSRRP3
+ name: Правило 3.3.
+ priority: 3
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP3MK.xml"
+
+- type: guideEntry
+ id: RuleSRRP4
+ name: Правило 3.4.
+ priority: 4
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP4ICinOOC.xml"
+
+- type: guideEntry
+ id: RuleSRRP5
+ name: Правило 3.5.
+ priority: 5
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP5Multikey.xml"
+
+
+- type: guideEntry
+ id: RuleSRRP6
+ name: Правило 3.6.
+ priority: 6
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP6SK.xml"
+
+- type: guideEntry
+ id: RuleSRRP7
+ name: Правило 3.7.
+ priority: 7
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP7ORL.xml"
+
+
+- type: guideEntry
+ id: RuleSRRP8
+ name: Правило 3.8.
+ priority: 8
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP8DH.xml"
+
+- type: guideEntry
+ id: RuleSRRP9
+ name: Правило 3.9.
+ priority: 9
+ text: "/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP9RE.xml"
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/bra.yml b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/bra.yml
new file mode 100644
index 00000000000..da5b7bad392
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/bra.yml
@@ -0,0 +1,11 @@
+- type: loadout
+ id: DefaultBra
+ equipment: DefaultBra
+ effects:
+ - !type:GroupLoadoutEffect
+ proto: WomanMoment
+
+- type: startingGear
+ id: DefaultBra
+ equipment:
+ bra: ClothingBraStrapless
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/pants.yml b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/pants.yml
new file mode 100644
index 00000000000..c51e1b2aaeb
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/pants.yml
@@ -0,0 +1,23 @@
+- type: loadout
+ id: DefaultWomanPants
+ equipment: DefaultWomanPants
+ effects:
+ - !type:GroupLoadoutEffect
+ proto: WomanMoment
+
+- type: startingGear
+ id: DefaultWomanPants
+ equipment:
+ pants: ClothingPantsWomanStrapless
+
+- type: loadout
+ id: DefaultManPants
+ equipment: DefaultManPants
+ effects:
+ - !type:GroupLoadoutEffect
+ proto: MaleMoment
+
+- type: startingGear
+ id: DefaultManPants
+ equipment:
+ pants: ClothingPantsManBoxers
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/socks.yml b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/socks.yml
new file mode 100644
index 00000000000..9dd4b1f4aaf
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Loadouts/Miscellaneous/socks.yml
@@ -0,0 +1,23 @@
+- type: loadout
+ id: DefaultWomanSocks
+ equipment: DefaultWomanSocks
+ effects:
+ - !type:GroupLoadoutEffect
+ proto: WomanMoment
+
+- type: startingGear
+ id: DefaultWomanSocks
+ equipment:
+ socks: ClothingThighWhite
+
+- type: loadout
+ id: DefaultManSocks
+ equipment: DefaultManSocks
+ effects:
+ - !type:GroupLoadoutEffect
+ proto: MaleMoment
+
+- type: startingGear
+ id: DefaultManSocks
+ equipment:
+ socks: ClothingShortWhite
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/loadout_effects.yml b/Resources/Prototypes/_Sunrise/Loadouts/loadout_effects.yml
new file mode 100644
index 00000000000..c7660eadb21
--- /dev/null
+++ b/Resources/Prototypes/_Sunrise/Loadouts/loadout_effects.yml
@@ -0,0 +1,15 @@
+- type: loadoutEffectGroup
+ id: WomanMoment
+ effects:
+ - !type:SexLoadoutEffect
+ sex:
+ - Female
+ - Unsexed
+
+- type: loadoutEffectGroup
+ id: MaleMoment
+ effects:
+ - !type:SexLoadoutEffect
+ sex:
+ - Male
+ - Unsexed
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml
index 95eab89bf34..e58f0cb668d 100644
--- a/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml
+++ b/Resources/Prototypes/_Sunrise/Loadouts/loadout_groups.yml
@@ -1,15 +1,22 @@
- type: loadoutGroup
- id: Inventory
- name: loadout-group-inventory
+ id: Socks
+ name: loadout-group-socks
minLimit: 0
- maxLimit: 5
- loadouts: []
+ loadouts:
+ - DefaultWomanSocks
+ - DefaultManSocks
- type: loadoutGroup
- id: PsychologistBackpack
- name: loadout-group-psychologist-backpack
+ id: Bra
+ name: loadout-group-bra
+ minLimit: 0
loadouts:
- - PsychologistBackpack
- - PsychologistSatchel
- - PsychologistDuffel
+ - DefaultBra
+- type: loadoutGroup
+ id: Pants
+ name: loadout-group-pants
+ minLimit: 0
+ loadouts:
+ - DefaultWomanPants
+ - DefaultManPants
diff --git a/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml b/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml
index a9fbd366a16..2532ae50364 100644
--- a/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml
+++ b/Resources/Prototypes/_Sunrise/Loadouts/role_loadouts.yml
@@ -5,4 +5,6 @@
- LawyerJumpsuit
- CommonBackpack
- Trinkets
- - Inventory # _Sunrise-Loadouts
+ - Bra
+ - Pants
+ - Socks
diff --git a/Resources/Prototypes/_Sunrise/Parallaxes/pilgrim_aiur.yml b/Resources/Prototypes/_Sunrise/Parallaxes/pilgrim_aiur.yml
index e11b3b9e7b3..c9c88920085 100644
--- a/Resources/Prototypes/_Sunrise/Parallaxes/pilgrim_aiur.yml
+++ b/Resources/Prototypes/_Sunrise/Parallaxes/pilgrim_aiur.yml
@@ -3,14 +3,14 @@
layers:
- texture:
!type:ImageParallaxTextureSource
- path: "/Textures/Corvax/Parallax/PilgrimAiurWaterTile.png"
+ path: "/Textures/_Sunrise/Parallax/PilgrimAiurWaterTile.png"
slowness: 0.1
scrolling: "-0.05, -0.05"
tiled: true
shader: ""
- texture:
!type:ImageParallaxTextureSource
- path: "/Textures/Corvax/Parallax/PilgrimAiurWaterTile.png"
+ path: "/Textures/_Sunrise/Parallax/PilgrimAiurWaterTile.png"
slowness: 0
scrolling: "-0.08, 0"
tiled: true
@@ -18,7 +18,7 @@
layersLQ:
- texture:
!type:ImageParallaxTextureSource
- path: "/Textures/Corvax/Parallax/PilgrimAiurWaterTile.png"
+ path: "/Textures/_Sunrise/Parallax/PilgrimAiurWaterTile.png"
slowness: 0
scrolling: "-0.1, 0"
tiled: true
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC11AhelpThreats.xml b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC11AhelpThreats.xml
index 47420264946..15784c4dfeb 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC11AhelpThreats.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC11AhelpThreats.xml
@@ -1,6 +1,6 @@
# Core Rule 11 - Do not threaten to ahelp other players or argue with them about rules
- Don't threaten to ahelp a player, don't tell them you are ahelping them, and don't tell them you did ahelp them. You can argue in character about Space Law, but do not argue about whether something is or is not against the rules. If you think someone is breaking a rule, ahelp them. If you don't think someone is breaking a rule, don't ahelp them. Either way, the best thing that you can do once you after is to continue in-character.
+ This rule covers out-of-character (OOC) and in-character (IC) actions. Don't threaten to ahelp a player, don't tell them you are ahelping them, and don't tell them you did ahelp them. You can argue in character about Space Law, but do not argue about whether something is or is not against the rules. If you think someone is breaking a rule, ahelp them. If you don't think someone is breaking a rule, don't ahelp them. Either way, the best thing that you can do after is to continue in-character.
## Example Scenario 1
You are a security officer and think someone who is causing a ton of problems for security is not an antag and is breaking the rules by doing so.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml
index faaedd4d511..6c01f9de23a 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml
@@ -6,6 +6,8 @@
- Usernames, objects, random characters, very "low effort" names, "meta" names, or otherwise implausible names cannot be used as names. See examples below.
- Admin rulings on IC names are final and disputes should be done through the forums, not by refusing to comply with an admin
+ Clowns and mimes are exempt from the prohibition on titles/honorifics, and have loosened restrictions on low effort and implausible names.
+
## Clarification on "Meta" Names
Meta names are ones which attempt to take advantage of some game mechanic or game design choice. "Urist McHands" is a meta name because it is the default name used for admin spawned humans. "Operator Whiskey" is a meta name because it follows the naming pattern of nuclear operatives. This rule is not intended to prevent things like nuclear operatives using a fake ID with names that appear to be nuclear operative names if they decide that they want to do that.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11Escalation.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11Escalation.xml
index 6f91fa0fb12..18ebc79a836 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11Escalation.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR11Escalation.xml
@@ -24,7 +24,7 @@
People using or brandishing Syndicate items can typically be presumed to have lethal intent. Someone with lethal intent can typically be immediately escalated against at a lethal level, a notable exception is if you have the tools to safely detain them.
## Escalation Involving Animals
- See [textlink="Escalation Involving Animals" link="RuleR11-1AnimalEscalation"].
+ See [textlink="Escalation Involving Animals" link="RuleR11-1"].
## Exemptions
Escalation rules aren't enforced against non-players, but players will be held responsible for rule violations even if they don't realize that a character or animal was controlled by another player. Characters who have purple text saying that they are catatonic are considered non-players. Characters who are disconnected are still considered players.
@@ -33,7 +33,7 @@
Escalation rules are enforced even against non-players.
## Examples of Conflict Types
- See [textlink="Examples of Conflict Types" link="RuleR11-2ConflictTypes"].
+ See [textlink="Examples of Conflict Types" link="RuleR11-2"].
## Example Scenarios
These examples assume that you are not an antagonist.
@@ -54,8 +54,8 @@
Prohibited:
- A player starts punching you, so you gib them.
- A clown throws a pie at you and steals your shoes, so you stab them to crit with a screwdriver.
- - You are a security officer and tell someone to stop so you can question them. They run away so you use a truncheon to beat them to crit.
- - An authorized person who you think is unauthorized enters a high risk area of the station, like the armory or atmospherics, so you attack them until they leave.
+ - You are a security officer and tell someone to stop, so you can question them. They run away so you use a truncheon to beat them to crit.
+ - An authorized person who you unreasonably or carelessly think is unauthorized enters a high risk area of the station, like the armory or atmospherics, so you attack them until they leave.
- An unauthorized person enters a low risk area of the station, like cargo, and you start attacking them with no other escalation.
- Slipping security all round because they are security.
- Blocking the head of personnel in their office using walls because they didn't give you what you asked for.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR15SpaceLaw.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR15SpaceLaw.xml
index e2d51d672a1..57effb54699 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR15SpaceLaw.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR15SpaceLaw.xml
@@ -2,9 +2,18 @@
# Roleplay Rule 15 - Command and Security must follow Space Law
All non-antagonist command and security roles must obey [textlink="Space Law" link="SpaceLaw"]. This includes non-antagonists who are promoted to or gain a position during the round in any way. This also includes non-antagonists who are acting as a security role.
- This prohibits use of syndicate items, including uplinks by command and security.
+ Space Law violations should be prioritized based on severity and the current situation.
+
+ This prohibits use of syndicate items outside extreme emergencies, including uplinks by command and security. This also prohibits the preparing of syndicate items for an emergency.
## Examples
+ Acceptable:
+ - After a war announcement, a security officer ignores crewmembers carrying contraband so that they can focus on preparing to defend the station.
+ - A security officer disarms someone attacking them with an energy sword, then uses the sword to kill the attacker.
+
+ Prohibited:
+ - A security officer carries around an energy sword in case of an emergency.
+
Roles that are included:
- A security officer
- The Captain
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR2Familiars.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR2Familiars.xml
index 4f008e93c5a..51a445dfe0f 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR2Familiars.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR2Familiars.xml
@@ -1,6 +1,6 @@
# Roleplay Rule 2 - Familiars must obey their master
- Familiars are considered non-antagonists, but have instructions to obey someone. They must obey this person even if it causes them to violate Roleplay Rules or die. You are only a familiar if the game clearly and explicitly tells you that you are a familiar. You are only the familiar of the person the game tells you. If your master dies, you can continue to attempt to fulfill orders given to you before they died. You can defend your master without an explicit order to, but must obey your master if they order you to not defend them.
+ Familiars are considered non-antagonists, but have instructions to obey someone. They must obey this person even if it causes them to violate Roleplay Rules or die. You are only a familiar if the game clearly and explicitly tells you that you are a familiar. You are only the familiar of the person the game tells you. If your master dies, you can continue to attempt to fulfill orders given to you before they died. You can defend your master without an explicit order to, but must obey your master if they order you to not defend them. Orders do not override Core Rules.
Masters giving orders that violate Roleplay Rules are the ones that will be held responsible for the rule violations. You can ahelp masters who you believe are breaking rules with an order.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR4Metashield.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR4Metashield.xml
index 2e263be896a..4ebbad326c8 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR4Metashield.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR4Metashield.xml
@@ -10,7 +10,7 @@
The following are shielded:
- Current game mode and possible antags during the current game mode.
- Events from previous rounds.
- - Events from previous characters.
+ - Events you experienced as a different character.
- All information related to the player of a character rather than the character itself. (See "Metafriending and Metagrudging" below.)
- All information gained while dead or a ghost.
- The fact that a round will end.
@@ -25,6 +25,7 @@
The revealing condition for this shield is any of the following:
- discovering a blood red hardsuit
+ - discovering a nuclear operative's shuttle
- an operative name
- a War Ops announcement
- being a nuclear operative
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR5Arrivals.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR5Arrivals.xml
index a54211f32f2..b4a06427401 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR5Arrivals.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR5Arrivals.xml
@@ -1,6 +1,6 @@
# Roleplay Rule 5 - Do not interfere with arrivals
- The arrivals station, the arrivals shuttle, at the area immediately around the arrivals shuttle at the station ("arrivals") are off-limits to antagonistic activity or damage (even to antagonists). Do not prevent people from safely arriving to the station. Do not cause people to die immediately after arriving at the station.
+ The arrivals terminal/station, the arrivals shuttle, at the area immediately around the arrivals shuttle at the station ("arrivals") are off-limits to antagonistic activity or damage (even to antagonists). Do not prevent people from safely arriving to the station. Do not cause people to die immediately after arriving at the station.
There is an exemption for antagonists that are allowed to perform mass station sabotage if there is no reasonable way to limit the damage of the mass station sabotage. This exemption only applies to damage that is a direct result of the mass station sabotage.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR9MassSabotage.xml b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR9MassSabotage.xml
index bc7996f23e8..366ac6666f2 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR9MassSabotage.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RoleplayRules/RuleR9MassSabotage.xml
@@ -15,6 +15,7 @@
- Permanently round removing a single person so that you can impersonate them to make it easier for you to complete a steal objective.
- Sabotaging station power 10 minutes into the round to try to get the shuttle called because you've completed all of your other objectives and have one to escape on the shuttle alive.
- Sabotaging a department's power 10 minutes into the round to make a steal objective easier to accomplish.
+ - Permanently round removing many people who have demonstrated a persistence and a capability to either kill you or interfere with the completion of your objectives.
Prohibited:
- As a traitor with 3 kill objectives, taking steps to permanently round remove many non-objective people who are no longer an immediate threat to you, even if it is done to prevent yourself from being discovered.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR0DBAD.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR0DBAD.xml
new file mode 100644
index 00000000000..7ad7b1f90b0
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR0DBAD.xml
@@ -0,0 +1,4 @@
+
+ # Правило 0 - Не будь мудаком.
+ Правила не могут покрыть все возможные ситуации. Администраторы должны иметь возможность решать ситуации, которые упущены в правилах.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR10Exploit.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR10Exploit.xml
new file mode 100644
index 00000000000..4526debe091
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR10Exploit.xml
@@ -0,0 +1,4 @@
+
+ # Правило 10 - Нечестная игра.
+ Использование программного обеспечения и недочетов игры для получения преимущества в игровом процессе запрещено.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR1Decay.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR1Decay.xml
new file mode 100644
index 00000000000..d2336e0986f
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR1Decay.xml
@@ -0,0 +1,4 @@
+
+ # Правило 1 - Гриф.
+ Умышленная порча игрового процесса другим игрокам запрещена. Выпуск сингулярности является поводом для перманентного бана. В случае, если вы антагонист, действуйте строго в рамках ваших задач.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR2Kill.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR2Kill.xml
new file mode 100644
index 00000000000..498e881b352
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR2Kill.xml
@@ -0,0 +1,4 @@
+
+ # Правило 2 - Убийство.
+ Неоправданные действия, направленные на причинение серьезного вреда здоровью или убийство другого человека запрещены. Помните, что для убийства должна быть очень веская РП причина. Если вы сомневаетесь, спросите в АХелп. Вы имеете право на самооборону, однако она не должна перерастать в убийство. Иными словами, вы имеете право ответить обидчику на удар, но, когда он уже упал, вам не следует его добивать.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR3VGA.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR3VGA.xml
new file mode 100644
index 00000000000..261e58bd2e6
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR3VGA.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3 - Нарушение игровой атмосферы.
+ Вы - не ваш персонаж! Отход от отыгрыша роли своего персонажа, нарушающий общую игровую атмосферу и сеттинг. Помните, что это медиум-РП сервер.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR4LC.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR4LC.xml
new file mode 100644
index 00000000000..378cc6f5fda
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR4LC.xml
@@ -0,0 +1,6 @@
+
+ # Правило 4 - Логика персонажа.
+ Ваш персонаж - сотрудник передовой космической станции, верный идеалам Корпорации и своему начальству.
+ Имена и фамилии должны соответствовать контексту и стандартам РП. Запрещены имена и фамилии знаменитостей, актеров, персонажей из фильмов, сериалов, аниме, игр и т.д., а также схожие имена и фамилии.
+ СРП и КЗ являются внутриигровыми порядками, но их злостное нарушение из раунда в раунд может быть наказуемым.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR6RPA.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR6RPA.xml
new file mode 100644
index 00000000000..36fa25a1520
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR6RPA.xml
@@ -0,0 +1,5 @@
+
+ # Правило 6 - Ответственная игра за антагониста.
+ Цель антагониста - сделать раунд интересным, захватывающим и опасным, но в разумных пределах. Антагонистам запрещается поджидать только появившихся игроков, выпускать плазму, сингулярность и в целом заниматься действиями, которые можно классифицировать как гриф.
+ Помните, что “мелкие” антагонисты - скрытны и незаметны. Для открытых столкновений и громких операций есть другие, “крупные” антагонисты.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR7SA.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR7SA.xml
new file mode 100644
index 00000000000..d714791880d
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR7SA.xml
@@ -0,0 +1,4 @@
+
+ # Правило 7 - Самоантагонизм.
+ Проявление действий, присущих антагонистам, без наличия соответствующей роли запрещены. Вызволять кого-то из брига без причины, мешать работе сб и т.д является нарушением этого правила. Утверждения, что ваш персонаж "неуравновешен", "псих" и т.д, не отменяют ни одно из правил и не являются оправданием.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR8VH.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR8VH.xml
new file mode 100644
index 00000000000..ae1ed2e3847
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR8VH.xml
@@ -0,0 +1,5 @@
+
+ # Правило 8 - Валидхант.
+ Организация и ведение охоты на антагонистов, не будучи сотрудником службы безопасности запрещена. Останавливать антагонистов - работа офицеров Службы Безопасности.
+ Данное правило не распространяется на крупных антагонистов.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR9ERP.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR9ERP.xml
new file mode 100644
index 00000000000..e4fd27e647b
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/CoreRules/RuleSR9ERP.xml
@@ -0,0 +1,4 @@
+
+ # Правило 9 - ЕРП.
+ Эротическая ролевая игра (Erotic Role Play) запрещена. Всё, что заходит дальше поцелуев и объятий, карается. Даже если вы и другой игрок состоите в отношениях в реальной жизни.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP1PG.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP1PG.xml
new file mode 100644
index 00000000000..0dec6ab9730
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP1PG.xml
@@ -0,0 +1,5 @@
+
+ # Правило 3.1. - Повергейм.
+ Проявление действий, которые выходят за рамки физических и психологических возможностей вашего персонажа. Ваш персонаж обычный человек, которому свойственно бояться и испытывать боль, не забывайте об этом. Вы также не должны прятать вещи “на всякий случай” и болтировать двери, будучи главой отдела, если вас до этого не взламывали в этом же раунде.
+ Данное правило не распространяется на крупных антагонистов.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP2MG.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP2MG.xml
new file mode 100644
index 00000000000..42368cc42da
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP2MG.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.2. - Метагейминг.
+ Использование и распространение игровой информации посредством сторонних средств связи. КООП запрещен. В случае, если вы обучаете друга, вы обязаны сообщить об этом в АХ.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP3MK.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP3MK.xml
new file mode 100644
index 00000000000..0b84c9d219b
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP3MK.xml
@@ -0,0 +1,5 @@
+
+ # Правило 3.3. - Метазнания.
+ Использование знаний, не присущих вашему персонажу по должности. Для полного понимания рамок вашей должности зайдите в раздел “таблица навыков” на нашей вики.
+
+
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP4ICinOOC.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP4ICinOOC.xml
new file mode 100644
index 00000000000..08b9640d0e8
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP4ICinOOC.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.4. - IC в OOC.
+ Злоупотребление ООС и LOOC чатами. Обсуждение или упоминание событий текущего раунда в канале OOC запрещено. Особенно наказуемы сообщения в духе "X меня убил" или "клонируйте меня".
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP5Multikey.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP5Multikey.xml
new file mode 100644
index 00000000000..63394b8a7de
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP5Multikey.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.5. - Мультиаккаунт.
+ Использование нескольких аккаунтов SS14 для получения выгоды или каких-либо других целей. Запрещено в любом виде.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP6SK.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP6SK.xml
new file mode 100644
index 00000000000..45a0a68bd25
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP6SK.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.6 - Самоубийство.
+ Злоупотребление возможностью суицида или его совершение без веских причин. Даже если вас раскрыли и поймали.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP7ORL.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP7ORL.xml
new file mode 100644
index 00000000000..307b0054cc0
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP7ORL.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.7 - Безграмотность.
+ Чистота речи и соблюдение грамматических норм русского языка.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP8DH.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP8DH.xml
new file mode 100644
index 00000000000..f4e12162ed9
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP8DH.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.8. - Поддержание уважительной обстановки.
+ Простое человеческое взаимное уважение игроков между друг другом. Оскорбления в ООС и LOOC чатах караются, как и несоблюдение субординации в АХ.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP9RE.xml b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP9RE.xml
new file mode 100644
index 00000000000..8d32bec25ce
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/RulesSR/RolePlayRules/RuleSRRP9RE.xml
@@ -0,0 +1,4 @@
+
+ # Правило 3.9. - Окончание раунда.
+ Все правила работают после окончания раунда/манифеста/гринтекста (окна с информацией в конце раунда). Это значит, что все так же запрещен ДМ (Deathmatch), разрушение структуры станции или ЦК.
+
\ No newline at end of file
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLCrimeList.xml b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLCrimeList.xml
index 17a2139658d..04e7139a48b 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLCrimeList.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLCrimeList.xml
@@ -42,22 +42,22 @@
- Failure to Comply
+ Failure to Comply (E)
- Breach of Arrest
+ Breach of Arrest (E)
- Breach of Custody
+ Breach of Custody (E)
- Refusal of Mental Shielding
+ Refusal of Mental Shielding (E)
@@ -67,17 +67,17 @@
- Possession: Substances
+ Possession: Substances (P)
- Possession: Gear
+ Possession: Gear (P)
- Possession: Weaponry
+ Possession: Weaponry (P)
@@ -95,7 +95,7 @@
- Petty Theft
+ Petty Theft (H)
@@ -104,7 +104,7 @@
- Grand Theft
+ Grand Theft (H)
@@ -123,17 +123,17 @@
- Vandalism
+ Vandalism (D)
- Damage of Property
+ Damage of Property (D)
- Mass Destruction
+ Mass Destruction (D)
@@ -142,7 +142,7 @@
- Terrorism
+ Terrorism (D)
@@ -152,7 +152,7 @@
- Trespass
+ Trespass (T)
@@ -161,7 +161,7 @@
- Secure Trespass
+ Secure Trespass (T)
@@ -183,22 +183,22 @@
- Endangerment
+ Endangerment (V)
- Assault
+ Assault (V)
- Attempted Murder
+ Attempted Murder (V)
- Prevention of Revival
+ Prevention of Revival (V)
@@ -216,17 +216,17 @@
- Manslaughter
+ Manslaughter (V)
- Murder
+ Murder (V)
- Mass Murder
+ Mass Murder (V)
@@ -236,7 +236,7 @@
- Disturbance
+ Disturbance (R)
@@ -245,7 +245,7 @@
- Rioting
+ Rioting (R)
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLRestrictedWeapons.xml b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLRestrictedWeapons.xml
index c1d8ff3b027..0872683d1cf 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLRestrictedWeapons.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SLRestrictedWeapons.xml
@@ -1,9 +1,12 @@
# Space Law: Restricted Weapons
-- \[Security\] Lethal firearms, excluding syndicate firearms, proto kinetic accelerators, glaives, daggers, crushers and the antique laser gun
+- \[Security\] Lethal firearms, excluding: syndicate firearms, proto kinetic accelerators, glaives, daggers, crushers, the captain's saber, antique laser guns, and deckards
- \[Security/Salvage\] Proto kinetic accelerators, glaives, daggers, and crushers
-- \[Security/Command\] Antique laser gun
+- \[Security/Command\] The captain's saber, antique laser guns, and deckards
+- \[Salvage\] seismic charges
+- \[Atmospherics\] Fire axes
- \[None\] Syndicate weapons
+- \[None\] Explosive devices, excluding seismic charges
- \[None\] Swords
- \[None\] Improvised weaponry, including baseball bats
- \[None\] Lethal implants
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml
index f2b913a1714..b672e35204d 100644
--- a/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml
+++ b/Resources/ServerInfo/Guidebook/ServerRules/SpaceLaw/SpaceLaw.xml
@@ -37,7 +37,7 @@
Use common sense and humanity when issuing punishments. You should not always seek out the highest punishment you can, you don't have to always give the maximum time or always look to demote someone. Prisoners cooperating and on good behavior should have their sentences reduced. Always take in account the severity and only charge for what is needed for someone to learn their lesson.
- [color=#a4885c]Stackable Crimes:[/color] Crimes are to be considered 'stackable' in the sense that if you charge someone with two or more different crimes, you should combine the times you would give them for each crime. Linked crimes, shown in matching colors on the Quick Crime Guide, can not be stacked and instead override each other, you should pick the highest crime that matches the case.
+ [color=#a4885c]Stackable Crimes:[/color] Crimes are to be considered 'stackable' in the sense that if you charge someone with two or more different crimes, you should combine the times you would give them for each crime. Linked crimes, shown in matching colors and suffixes on the Quick Crime Guide, can not be stacked and instead override each other, you should pick the highest crime that matches the case.
- Example: A suspect has committed a 2-01 (possession of restricted gear) and a 3-01 (possession of restricted weapons). The maximum sentence here would be 10 minutes due to them being linked crimes, and 3-01 is the greater crime.
- Example 2: A suspect commits a 3-04 (Secure trespassing) and a 3-06 (manslaughter). Those crimes stack since they are not linked crimes. You could sentence for a maximum of 20 minutes, but context matters heavily, and maximum sentences should only be used for the worst offenders.
@@ -53,7 +53,7 @@
## Major Punishments
[color=#a4885c]Permanent Confinement:[/color] Being held in the permanent brig for the entire duration of the shift. A person is eligible for permanent confinement if their timed sentence would exceed 15 minutes. Any persons subject to this punishment are required to be transported in cuffs to CentComm at the end of the shift. A permanent prisoner can not be deprived of anything covered by the section "Treatment Of Prisoners".
- [color=#a4885c]Execution:[/color] A humane way of dealing with extremely unruly crewmates. A prisoner who has been given the death sentence may pick how they wish to be killed, common methods are firing line, lethal injection, exile, and high voltage electrocution. Another alternate method of "execution" is the process of placing a staff's mind into a borg, this is allowed so long as it is lawful. Execution can only be issued with the captain's or acting captain's approval; if the HoS is acting captain or there is no acting captain, all heads of staff are to hold a vote on the matter.
+ [color=#a4885c]Execution:[/color] A humane way of dealing with extremely unruly crewmates. Within reason, a prisoner who has been given the death sentence may pick how they wish to be killed, common methods are firing line, lethal injection, exile, and high voltage electrocution. Another alternate method of "execution" is the process of placing a staff's mind into a borg, this is allowed so long as it is lawful. Execution can only be issued with the captain's or acting captain's approval; if the HoS is acting captain or there is no acting captain, all heads of staff are to hold a vote on the matter.
## Restricted Items
Items in the lists are preceded by an indication of which department or job is legally allowed to use or possess the item on most stations. The station captain may modify these lists as they see fit so long as they exercise due care and provide reasonable notification to the station. Members of command who oversee a department that is permitted to use a restricted item may issue permits to specific people outside of their department to use those items. "None" indicates that there are no departments or roles authorized to use or possess the item.
diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SunriseRules.xml b/Resources/ServerInfo/Guidebook/ServerRules/SunriseRules.xml
new file mode 100644
index 00000000000..f1a99bc41fe
--- /dev/null
+++ b/Resources/ServerInfo/Guidebook/ServerRules/SunriseRules.xml
@@ -0,0 +1,25 @@
+
+ # Правила сервера
+ Правила - ряд обязательств, которые должен соблюдать каждый игрок нашего огромного сообщества, заходя на сервер вы автоматически соглашаетесь со всеми правилами и обязуетесь их соблюдать. Нарушение этих правил может повлечь за собой наказание.
+ # Основные правила
+
+ - [textlink="0. Не будь мудаком." link="RuleSR0"]
+ - [textlink="1. Гриф" link="RuleSR1"]
+ - [textlink="2. Убийство" link="RuleSR2"]
+ - [textlink="3. Нарушение игровой атмосферы" link="RuleSR3"]
+ - [textlink="3.1. Повергейм" link="RuleSRRP1"]
+ - [textlink="3.2. Метагейм" link="RuleSRRP2"]
+ - [textlink="3.3. Метазнания" link="RuleSRRP3"]
+ - [textlink="3.4. IC в OOC" link="RuleSRRP4"]
+ - [textlink="3.5. Мультиаккаунт" link="RuleSRRP5"]
+ - [textlink="3.6. Самоубийство" link="RuleSRRP6"]
+ - [textlink="3.7. Безграмотность" link="RuleSRRP7"]
+ - [textlink="3.8. Поддержка уважительной обстановки" link="RuleSRRP8"]
+ - [textlink="3.9. Окончание раунда" link="RuleSRRP9"]
+ - [textlink="4. Логика персонажа" link="RuleSR4"]
+ - [textlink="6. Ответственная игра за антагониста" link="RuleSR6"]
+ - [textlink="7. Самоантагонизм" link="RuleSR7"]
+ - [textlink="8. Валидхант" link="RuleSR8"]
+ - [textlink="9. ERP" link="RuleSR9"]
+ - [textlink="10. Нечестная игра" link="RuleSR10"]
+
diff --git a/Resources/Textures/Interface/Default/Slots/bra.png b/Resources/Textures/Interface/Default/Slots/bra.png
new file mode 100644
index 00000000000..7a479265d02
Binary files /dev/null and b/Resources/Textures/Interface/Default/Slots/bra.png differ
diff --git a/Resources/Textures/Interface/Default/Slots/pants.png b/Resources/Textures/Interface/Default/Slots/pants.png
new file mode 100644
index 00000000000..6d4fe869872
Binary files /dev/null and b/Resources/Textures/Interface/Default/Slots/pants.png differ
diff --git a/Resources/Textures/Interface/Default/Slots/socks.png b/Resources/Textures/Interface/Default/Slots/socks.png
new file mode 100644
index 00000000000..2c75261c253
Binary files /dev/null and b/Resources/Textures/Interface/Default/Slots/socks.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/equipped-BRA.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/equipped-BRA.png
new file mode 100644
index 00000000000..a9a634c9805
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/equipped-BRA.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa.png
new file mode 100644
index 00000000000..bd6be2c781b
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa_icon.png
new file mode 100644
index 00000000000..d457daf993e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_assblastusa_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini.png
new file mode 100644
index 00000000000..dfaae4f3218
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini_icon.png
new file mode 100644
index 00000000000..1805b559f2a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bikini_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette.png
new file mode 100644
index 00000000000..cfb549b5ab6
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette_icon.png
new file mode 100644
index 00000000000..ed5be9263f4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_bralette_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie.png
new file mode 100644
index 00000000000..b47ca93ef21
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie_icon.png
new file mode 100644
index 00000000000..d457daf993e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_commie_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky.png
new file mode 100644
index 00000000000..e138655abbc
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky_icon.png
new file mode 100644
index 00000000000..7a81c9a19be
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_kinky_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace.png
new file mode 100644
index 00000000000..194a759d698
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace_icon.png
new file mode 100644
index 00000000000..19f0109e327
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_lace_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black.png
new file mode 100644
index 00000000000..060151a90e3
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black_icon.png
new file mode 100644
index 00000000000..5a0efbc8d12
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white.png
new file mode 100644
index 00000000000..9a3029b70bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white_icon.png
new file mode 100644
index 00000000000..136f1a60406
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_neko_white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport.png
new file mode 100644
index 00000000000..194cdfa9f14
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport_icon.png
new file mode 100644
index 00000000000..e8202a1052e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_sport_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless.png
new file mode 100644
index 00000000000..dad1a6fc70d
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless_icon.png
new file mode 100644
index 00000000000..2630870592a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_strapless_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong.png
new file mode 100644
index 00000000000..b3fcb0c49ef
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong_icon.png
new file mode 100644
index 00000000000..89a5997f6d0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_thong_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk.png
new file mode 100644
index 00000000000..6ffcb6dfdb2
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk_icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk_icon.png
new file mode 100644
index 00000000000..e2a337c5a11
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/female_uk_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/icon.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/icon.png
new file mode 100644
index 00000000000..20e17b72036
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/meta.json
new file mode 100644
index 00000000000..36591081220
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Bra/bra.rsi/meta.json
@@ -0,0 +1,103 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "female_neko_white_icon"
+ },
+ {
+ "name": "female_neko_black_icon"
+ },
+ {
+ "name": "female_assblastusa_icon"
+ },
+ {
+ "name": "female_bikini_icon"
+ },
+ {
+ "name": "female_bralette_icon"
+ },
+ {
+ "name": "female_commie_icon"
+ },
+ {
+ "name": "female_kinky_icon"
+ },
+ {
+ "name": "female_lace_icon"
+ },
+ {
+ "name": "female_sport_icon"
+ },
+ {
+ "name": "female_strapless_icon"
+ },
+ {
+ "name": "female_thong_icon"
+ },
+ {
+ "name": "female_uk_icon"
+ },
+ {
+ "name": "female_uk",
+ "directions": 4
+ },
+ {
+ "name": "female_thong",
+ "directions": 4
+ },
+ {
+ "name": "female_strapless",
+ "directions": 4
+ },
+ {
+ "name": "female_sport",
+ "directions": 4
+ },
+ {
+ "name": "female_lace",
+ "directions": 4
+ },
+ {
+ "name": "female_kinky",
+ "directions": 4
+ },
+ {
+ "name": "female_commie",
+ "directions": 4
+ },
+ {
+ "name": "female_bralette",
+ "directions": 4
+ },
+ {
+ "name": "female_bikini",
+ "directions": 4
+ },
+ {
+ "name": "female_assblastusa",
+ "directions": 4
+ },
+ {
+ "name": "female_neko_white",
+ "directions": 4
+ },
+ {
+ "name": "female_neko_black",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa.png
new file mode 100644
index 00000000000..04e81a4cd61
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa_icon.png
new file mode 100644
index 00000000000..9ef97b7ffb9
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_assblastusa_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers.png
new file mode 100644
index 00000000000..2468920d44f
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers_icon.png
new file mode 100644
index 00000000000..f8f7c9de520
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_boxers_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs.png
new file mode 100644
index 00000000000..fb612300412
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs_icon.png
new file mode 100644
index 00000000000..4f7b3b45e0a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_briefs_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie.png
new file mode 100644
index 00000000000..79c0602d231
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie_icon.png
new file mode 100644
index 00000000000..897646304a3
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_commie_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts.png
new file mode 100644
index 00000000000..41b0b08b7d5
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts_icon.png
new file mode 100644
index 00000000000..413a8a45889
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_hearts_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky.png
new file mode 100644
index 00000000000..94cab2b0b74
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky_icon.png
new file mode 100644
index 00000000000..4fc104e6017
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_kinky_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns.png
new file mode 100644
index 00000000000..757fc5cdbd6
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns_icon.png
new file mode 100644
index 00000000000..e945077c81a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_longjohns_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini.png
new file mode 100644
index 00000000000..b8889eb2bcd
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini_icon.png
new file mode 100644
index 00000000000..edd566e95c8
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_mankini_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway.png
new file mode 100644
index 00000000000..291b2b0e7a6
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway_icon.png
new file mode 100644
index 00000000000..65b0f5eae06
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_midway_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe.png
new file mode 100644
index 00000000000..725ea47980f
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe_icon.png
new file mode 100644
index 00000000000..e750a318624
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_stripe_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk.png
new file mode 100644
index 00000000000..5142e122aa5
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk_icon.png
new file mode 100644
index 00000000000..14f1706c7ea
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/male_uk_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/meta.json
new file mode 100644
index 00000000000..d602e61dc85
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Pants/Man/pants.rsi/meta.json
@@ -0,0 +1,93 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "male_stripe_icon"
+ },
+ {
+ "name": "male_uk_icon"
+ },
+ {
+ "name": "male_mankini_icon"
+ },
+ {
+ "name": "male_longjohns_icon"
+ },
+ {
+ "name": "male_kinky_icon"
+ },
+ {
+ "name": "male_hearts_icon"
+ },
+ {
+ "name": "male_commie_icon"
+ },
+ {
+ "name": "male_assblastusa_icon"
+ },
+ {
+ "name": "male_boxers_icon"
+ },
+ {
+ "name": "male_briefs_icon"
+ },
+ {
+ "name": "male_stripe",
+ "directions": 4
+ },
+ {
+ "name": "male_uk",
+ "directions": 4
+ },
+ {
+ "name": "male_midway",
+ "directions": 4
+ },
+ {
+ "name": "male_mankini",
+ "directions": 4
+ },
+ {
+ "name": "male_longjohns",
+ "directions": 4
+ },
+ {
+ "name": "male_kinky",
+ "directions": 4
+ },
+ {
+ "name": "male_hearts",
+ "directions": 4
+ },
+ {
+ "name": "male_commie",
+ "directions": 4
+ },
+ {
+ "name": "male_assblastusa",
+ "directions": 4
+ },
+ {
+ "name": "male_boxers",
+ "directions": 4
+ },
+ {
+ "name": "male_briefs",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa.png
new file mode 100644
index 00000000000..2a8f53266a0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa_icon.png
new file mode 100644
index 00000000000..d457daf993e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_assblastusa_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini.png
new file mode 100644
index 00000000000..9ececc36a38
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini_icon.png
new file mode 100644
index 00000000000..a2bb3c1057e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bikini_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette.png
new file mode 100644
index 00000000000..aa0b2315b28
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette_icon.png
new file mode 100644
index 00000000000..4221a40bb36
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_bralette_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie.png
new file mode 100644
index 00000000000..d9a57bc4907
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie_icon.png
new file mode 100644
index 00000000000..d457daf993e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_commie_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky.png
new file mode 100644
index 00000000000..940694665e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky_icon.png
new file mode 100644
index 00000000000..257f74e0f83
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_kinky_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace.png
new file mode 100644
index 00000000000..f8e723a30fd
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace_icon.png
new file mode 100644
index 00000000000..4221a40bb36
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_lace_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black.png
new file mode 100644
index 00000000000..2981512e132
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black_icon.png
new file mode 100644
index 00000000000..e6f00e487b0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white.png
new file mode 100644
index 00000000000..378c370ffeb
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white_icon.png
new file mode 100644
index 00000000000..f86c723b139
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_neko_white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport.png
new file mode 100644
index 00000000000..e0fa5f379a2
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport_icon.png
new file mode 100644
index 00000000000..760b6ac2911
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_sport_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless.png
new file mode 100644
index 00000000000..fe4ff6eac3e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless_icon.png
new file mode 100644
index 00000000000..cc7e06b2886
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_strapless_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong.png
new file mode 100644
index 00000000000..b22ddc23575
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong_icon.png
new file mode 100644
index 00000000000..489aaa9ff83
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_thong_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk.png
new file mode 100644
index 00000000000..1a69de2df55
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk_icon.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk_icon.png
new file mode 100644
index 00000000000..9dfa7668139
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/female_uk_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/meta.json
new file mode 100644
index 00000000000..36591081220
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Pants/Woman/pants.rsi/meta.json
@@ -0,0 +1,103 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "female_neko_white_icon"
+ },
+ {
+ "name": "female_neko_black_icon"
+ },
+ {
+ "name": "female_assblastusa_icon"
+ },
+ {
+ "name": "female_bikini_icon"
+ },
+ {
+ "name": "female_bralette_icon"
+ },
+ {
+ "name": "female_commie_icon"
+ },
+ {
+ "name": "female_kinky_icon"
+ },
+ {
+ "name": "female_lace_icon"
+ },
+ {
+ "name": "female_sport_icon"
+ },
+ {
+ "name": "female_strapless_icon"
+ },
+ {
+ "name": "female_thong_icon"
+ },
+ {
+ "name": "female_uk_icon"
+ },
+ {
+ "name": "female_uk",
+ "directions": 4
+ },
+ {
+ "name": "female_thong",
+ "directions": 4
+ },
+ {
+ "name": "female_strapless",
+ "directions": 4
+ },
+ {
+ "name": "female_sport",
+ "directions": 4
+ },
+ {
+ "name": "female_lace",
+ "directions": 4
+ },
+ {
+ "name": "female_kinky",
+ "directions": 4
+ },
+ {
+ "name": "female_commie",
+ "directions": 4
+ },
+ {
+ "name": "female_bralette",
+ "directions": 4
+ },
+ {
+ "name": "female_bikini",
+ "directions": 4
+ },
+ {
+ "name": "female_assblastusa",
+ "directions": 4
+ },
+ {
+ "name": "female_neko_white",
+ "directions": 4
+ },
+ {
+ "name": "female_neko_black",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/fishnet_full.png b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/fishnet_full.png
new file mode 100644
index 00000000000..e8a0de99cb0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/fishnet_full.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/icon.png
new file mode 100644
index 00000000000..3031dfed699
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/meta.json
new file mode 100644
index 00000000000..c4384071b36
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/fishnet.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "fishnet_full",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_icon.png
new file mode 100644
index 00000000000..496690446a7
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_knee.png
new file mode 100644
index 00000000000..559e21d3274
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/ace_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_icon.png
new file mode 100644
index 00000000000..2e94c2f9a02
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_knee.png
new file mode 100644
index 00000000000..4668d85a703
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/assblastusa_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_icon.png
new file mode 100644
index 00000000000..4372969f3b9
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_knee.png
new file mode 100644
index 00000000000..207b12c593c
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/bee_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_icon.png
new file mode 100644
index 00000000000..f4185450f49
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_knee.png
new file mode 100644
index 00000000000..236ffeb3e2f
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/black_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_icon.png
new file mode 100644
index 00000000000..65baaa6587a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_knee.png
new file mode 100644
index 00000000000..ed40e6e62ea
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/commie_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_icon.png
new file mode 100644
index 00000000000..d170ba10a8e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_knee.png
new file mode 100644
index 00000000000..1d99fbfa9fe
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/fishnet_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/meta.json
new file mode 100644
index 00000000000..4ec32cc9e0b
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/meta.json
@@ -0,0 +1,103 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "white_icon"
+ },
+ {
+ "name": "assblastusa_icon"
+ },
+ {
+ "name": "bee_icon"
+ },
+ {
+ "name": "ace_icon"
+ },
+ {
+ "name": "black_icon"
+ },
+ {
+ "name": "commie_icon"
+ },
+ {
+ "name": "fishnet_icon"
+ },
+ {
+ "name": "rainbow_icon"
+ },
+ {
+ "name": "striped_icon"
+ },
+ {
+ "name": "thin_icon"
+ },
+ {
+ "name": "trans_icon"
+ },
+ {
+ "name": "uk_icon"
+ },
+ {
+ "name": "white_knee",
+ "directions": 4
+ },
+ {
+ "name": "ace_knee",
+ "directions": 4
+ },
+ {
+ "name": "assblastusa_knee",
+ "directions": 4
+ },
+ {
+ "name": "bee_knee",
+ "directions": 4
+ },
+ {
+ "name": "black_knee",
+ "directions": 4
+ },
+ {
+ "name": "commie_knee",
+ "directions": 4
+ },
+ {
+ "name": "fishnet_knee",
+ "directions": 4
+ },
+ {
+ "name": "rainbow_knee",
+ "directions": 4
+ },
+ {
+ "name": "striped_knee",
+ "directions": 4
+ },
+ {
+ "name": "thin_knee",
+ "directions": 4
+ },
+ {
+ "name": "trans_knee",
+ "directions": 4
+ },
+ {
+ "name": "uk_knee",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_icon.png
new file mode 100644
index 00000000000..70f57b7079e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_knee.png
new file mode 100644
index 00000000000..3847690f3db
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/rainbow_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_icon.png
new file mode 100644
index 00000000000..6ca54ed8b7c
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_knee.png
new file mode 100644
index 00000000000..2fbfb18ce68
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/striped_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_icon.png
new file mode 100644
index 00000000000..76d910a03a1
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_knee.png
new file mode 100644
index 00000000000..8900c8ba69b
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/thin_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_icon.png
new file mode 100644
index 00000000000..b42e742de0b
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_knee.png
new file mode 100644
index 00000000000..825a6d512fa
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/trans_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_icon.png
new file mode 100644
index 00000000000..da5af9f0fa8
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_knee.png
new file mode 100644
index 00000000000..7c12f8cb827
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/uk_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_icon.png
new file mode 100644
index 00000000000..976ab6db6f1
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_knee.png b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_knee.png
new file mode 100644
index 00000000000..1b1c84b9a7a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/knee.rsi/white_knee.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_icon.png
new file mode 100644
index 00000000000..4048af2a02a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_norm.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_norm.png
new file mode 100644
index 00000000000..03775bbd818
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/black_norm.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/meta.json
new file mode 100644
index 00000000000..f92c52e14a6
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/meta.json
@@ -0,0 +1,33 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "black_icon"
+ },
+ {
+ "name": "white_icon"
+ },
+ {
+ "name": "white_norm",
+ "directions": 4
+ },
+ {
+ "name": "black_norm",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_icon.png
new file mode 100644
index 00000000000..0545fe9512e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_norm.png b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_norm.png
new file mode 100644
index 00000000000..6654bd9320c
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/norm.rsi/white_norm.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/icon.png
new file mode 100644
index 00000000000..cf1487bf455
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/meta.json
new file mode 100644
index 00000000000..6fc52199be1
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/meta.json
@@ -0,0 +1,26 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "pantyhose",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/pantyhose.png b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/pantyhose.png
new file mode 100644
index 00000000000..37173f5afb2
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/pantyhose.rsi/pantyhose.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_icon.png
new file mode 100644
index 00000000000..cee223710aa
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_short.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_short.png
new file mode 100644
index 00000000000..9439b0fefa0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/black_short.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/meta.json
new file mode 100644
index 00000000000..89754a28bd3
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/meta.json
@@ -0,0 +1,33 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "black_icon"
+ },
+ {
+ "name": "white_icon"
+ },
+ {
+ "name": "white_short",
+ "directions": 4
+ },
+ {
+ "name": "black_short",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_icon.png
new file mode 100644
index 00000000000..c89a4144a1e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_short.png b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_short.png
new file mode 100644
index 00000000000..89227d75aa7
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/short.rsi/white_short.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/blue_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/blue_icon.png
new file mode 100644
index 00000000000..b64db7a8be3
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/blue_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/cyan_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/cyan_icon.png
new file mode 100644
index 00000000000..b8c74b95adc
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/cyan_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/dpink_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/dpink_icon.png
new file mode 100644
index 00000000000..46c27c5e557
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/dpink_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/green_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/green_icon.png
new file mode 100644
index 00000000000..0d770c1db3b
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/green_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/lpink_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/lpink_icon.png
new file mode 100644
index 00000000000..67eb6f8abda
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/lpink_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/meta.json
new file mode 100644
index 00000000000..10152c7bae3
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/meta.json
@@ -0,0 +1,75 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "blue_icon"
+ },
+ {
+ "name": "cyan_icon"
+ },
+ {
+ "name": "dpink_icon"
+ },
+ {
+ "name": "green_icon"
+ },
+ {
+ "name": "lpink_icon"
+ },
+ {
+ "name": "orange_icon"
+ },
+ {
+ "name": "purple_icon"
+ },
+ {
+ "name": "yellow_icon"
+ },
+ {
+ "name": "stockings_yellow",
+ "directions": 4
+ },
+ {
+ "name": "stockings_purple",
+ "directions": 4
+ },
+ {
+ "name": "stockings_lpink",
+ "directions": 4
+ },
+ {
+ "name": "stockings_orange",
+ "directions": 4
+ },
+ {
+ "name": "stockings_green",
+ "directions": 4
+ },
+ {
+ "name": "stockings_dpink",
+ "directions": 4
+ },
+ {
+ "name": "stockings_cyan",
+ "directions": 4
+ },
+ {
+ "name": "stockings_blue",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/orange_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/orange_icon.png
new file mode 100644
index 00000000000..d6331189fe7
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/orange_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/purple_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/purple_icon.png
new file mode 100644
index 00000000000..85c28ea4945
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/purple_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_blue.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_blue.png
new file mode 100644
index 00000000000..7d560331a55
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_blue.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_cyan.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_cyan.png
new file mode 100644
index 00000000000..fc9e7913191
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_cyan.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_dpink.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_dpink.png
new file mode 100644
index 00000000000..136c523f1df
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_dpink.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_green.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_green.png
new file mode 100644
index 00000000000..bb57af7132a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_green.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_lpink.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_lpink.png
new file mode 100644
index 00000000000..a447d795614
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_lpink.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_orange.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_orange.png
new file mode 100644
index 00000000000..aaf7c7deb31
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_orange.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_purple.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_purple.png
new file mode 100644
index 00000000000..32aa5417739
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_purple.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_yellow.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_yellow.png
new file mode 100644
index 00000000000..d2a09ee4e7f
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/stockings_yellow.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/yellow_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/yellow_icon.png
new file mode 100644
index 00000000000..c20f0a03412
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/stockings.rsi/yellow_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_icon.png
new file mode 100644
index 00000000000..586af387b17
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_thigh.png
new file mode 100644
index 00000000000..964ea4703f7
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/ace_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_icon.png
new file mode 100644
index 00000000000..86590ad35ea
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_thigh.png
new file mode 100644
index 00000000000..265ad299abf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/assblastusa_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_icon.png
new file mode 100644
index 00000000000..436b7054274
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_thigh.png
new file mode 100644
index 00000000000..6e0b8d7e92a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/bee_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_icon.png
new file mode 100644
index 00000000000..860672d253c
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_thigh.png
new file mode 100644
index 00000000000..f9401ca1c52
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/black_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_icon.png
new file mode 100644
index 00000000000..cda43f2a3a0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_thigh.png
new file mode 100644
index 00000000000..28e9f91f03a
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/commie_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_icon.png
new file mode 100644
index 00000000000..66b20b5b73e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_thigh.png
new file mode 100644
index 00000000000..efeff66d205
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/fishnet_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-left.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-left.png
new file mode 100644
index 00000000000..485e873d1bf
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-left.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-right.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-right.png
new file mode 100644
index 00000000000..8f4ee67a0e4
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/inhand-right.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/meta.json b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/meta.json
new file mode 100644
index 00000000000..635459a5677
--- /dev/null
+++ b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/meta.json
@@ -0,0 +1,103 @@
+{
+ "version": 1,
+ "license": "CC-BY-SA-3.0",
+ "copyright": "",
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "white_icon"
+ },
+ {
+ "name": "assblastusa_icon"
+ },
+ {
+ "name": "bee_icon"
+ },
+ {
+ "name": "ace_icon"
+ },
+ {
+ "name": "black_icon"
+ },
+ {
+ "name": "commie_icon"
+ },
+ {
+ "name": "fishnet_icon"
+ },
+ {
+ "name": "rainbow_icon"
+ },
+ {
+ "name": "striped_icon"
+ },
+ {
+ "name": "thin_icon"
+ },
+ {
+ "name": "trans_icon"
+ },
+ {
+ "name": "uk_icon"
+ },
+ {
+ "name": "white_thigh",
+ "directions": 4
+ },
+ {
+ "name": "ace_thigh",
+ "directions": 4
+ },
+ {
+ "name": "assblastusa_thigh",
+ "directions": 4
+ },
+ {
+ "name": "bee_thigh",
+ "directions": 4
+ },
+ {
+ "name": "black_thigh",
+ "directions": 4
+ },
+ {
+ "name": "commie_thigh",
+ "directions": 4
+ },
+ {
+ "name": "fishnet_thigh",
+ "directions": 4
+ },
+ {
+ "name": "rainbow_thigh",
+ "directions": 4
+ },
+ {
+ "name": "striped_thigh",
+ "directions": 4
+ },
+ {
+ "name": "thin_thigh",
+ "directions": 4
+ },
+ {
+ "name": "trans_thigh",
+ "directions": 4
+ },
+ {
+ "name": "uk_thigh",
+ "directions": 4
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ }
+ ]
+}
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_icon.png
new file mode 100644
index 00000000000..6fd8f27a2c3
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_thigh.png
new file mode 100644
index 00000000000..9eef5d771e8
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/rainbow_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_icon.png
new file mode 100644
index 00000000000..6aaaa145f1e
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_thigh.png
new file mode 100644
index 00000000000..7a073f5bc14
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/striped_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_icon.png
new file mode 100644
index 00000000000..59b21b6bc6c
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_thigh.png
new file mode 100644
index 00000000000..4c4db79b0a0
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/thin_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_icon.png
new file mode 100644
index 00000000000..59380c580b9
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_thigh.png
new file mode 100644
index 00000000000..152b06db4b3
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/trans_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_icon.png
new file mode 100644
index 00000000000..a220545c31b
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_thigh.png
new file mode 100644
index 00000000000..548bbcae76d
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/uk_thigh.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_icon.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_icon.png
new file mode 100644
index 00000000000..a528e941a74
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_icon.png differ
diff --git a/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_thigh.png b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_thigh.png
new file mode 100644
index 00000000000..720119316b6
Binary files /dev/null and b/Resources/Textures/_Sunrise/Clothing/Socks/thigh.rsi/white_thigh.png differ