Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
bbce649
Change logo to ours
B3CKDOOR Mar 11, 2026
5965d87
CCvar changes v1
B3CKDOOR Mar 12, 2026
66a05dc
No autovoting maps
B3CKDOOR Mar 12, 2026
7a50e95
Remove unwanted music
B3CKDOOR Mar 12, 2026
7f72b45
Add StartServer.bat for quick server running
B3CKDOOR Mar 12, 2026
ec2bea5
Merge branch 'HardLightSector:master' into Sandwichification
B3CKDOOR Mar 12, 2026
68e8892
Rules back to vanilla
B3CKDOOR Mar 12, 2026
e7f16b9
Adding our own rules back
B3CKDOOR Mar 12, 2026
a4d5893
Update logo image source in README.md
B3CKDOOR Mar 12, 2026
4f04032
Merge pull request #3 from B3CKDOOR/Sandwichification
B3CKDOOR Mar 12, 2026
56ef4ec
Duplicate id "DefaultRuleset" solved, its now SandwichRuleset
B3CKDOOR Mar 13, 2026
25e574e
Complete removal of consent system + vore
B3CKDOOR Mar 13, 2026
97e1679
forgot one
B3CKDOOR Mar 13, 2026
1437899
Add pause after launch to read errors
B3CKDOOR Mar 13, 2026
d208269
Fixed character options / preferences not loading
B3CKDOOR Mar 13, 2026
88c55f6
Whoops, you should be able to cancel the escape... unintended delete
B3CKDOOR Mar 13, 2026
28532ae
Merge branch 'master' into Sandwichification
B3CKDOOR Mar 13, 2026
b329b37
Merge pull request #4 from B3CKDOOR/Sandwichification
B3CKDOOR Mar 13, 2026
44c664b
Add sponsor url, add codeowners file, change PR template to ours
B3CKDOOR Mar 13, 2026
e3a1244
Change template to HL branch in url
B3CKDOOR Mar 13, 2026
9eefecc
Merge pull request #5 from B3CKDOOR/sandwichification
B3CKDOOR Mar 13, 2026
4ea62fb
Give us back our lobby music + extra sound files for later re-adding …
B3CKDOOR Mar 13, 2026
c7e2b04
Adding "Vanilla" songs to the lobby playlist
B3CKDOOR Mar 13, 2026
c83128b
Removal of unwanted NSFW traits and other things like cum and piss
B3CKDOOR Mar 13, 2026
dcc4595
Merge branch 'sandwichification' of https://github.com/B3CKDOOR/Sandw…
B3CKDOOR Mar 13, 2026
065e062
Merge pull request #6 from B3CKDOOR/sandwichification
B3CKDOOR Mar 13, 2026
55f8499
Merge branch 'HardLightSector:master' into master
B3CKDOOR Mar 13, 2026
7267bd0
Implement AI remote control system and UI for managing remote devices…
QEU-B-458 Mar 15, 2026
9f1e816
update robotics prototypes to enhance AI control functionality and en…
QEU-B-458 Mar 15, 2026
60c7249
Update AiRemoteControlSystem.cs
B3CKDOOR Mar 16, 2026
54752bd
Update RemoteDeviceDisplay.xaml.cs
B3CKDOOR Mar 16, 2026
48b2cd4
Update RemoteDevicesBoundUserInterface.cs
B3CKDOOR Mar 16, 2026
054d5b1
Update RemoteDevicesMenu.xaml.cs
B3CKDOOR Mar 16, 2026
131bb17
Update StyleNano.cs
B3CKDOOR Mar 16, 2026
043318e
Update AiRemoteControlSystem.cs
B3CKDOOR Mar 16, 2026
9b1d5af
Update AiRemoteBrainComponent.cs
B3CKDOOR Mar 16, 2026
1dffd15
Update SharedAiRemoteControllerComponent.cs
B3CKDOOR Mar 16, 2026
f82803b
Update SharedAiRemoteControlSystem.cs
B3CKDOOR Mar 16, 2026
b4e136d
Update station_ai.yml
B3CKDOOR Mar 16, 2026
d065666
Update airemote.yml
B3CKDOOR Mar 16, 2026
410690e
Update cove.yml
B3CKDOOR Mar 16, 2026
945cb70
Temp copy-paste logo to prevent "missing texture" error
B3CKDOOR Mar 16, 2026
b7e31d2
Ports the CorvaxNext AI Remote Control (BORIS) system and bug fixes
B3CKDOOR Mar 16, 2026
c922afd
Update to latest of HL
B3CKDOOR Mar 16, 2026
00156af
Merge branch 'master' into master
B3CKDOOR Mar 16, 2026
81299d6
Update to latest HL (#9)
B3CKDOOR Mar 16, 2026
617618f
Dont port the already removed features
B3CKDOOR Mar 16, 2026
09a08c0
Merge branch 'HardLightSector-master'
B3CKDOOR Mar 16, 2026
b7386b7
Update FUNDING.yml
B3CKDOOR Mar 16, 2026
808db1d
Update FUNDING.yml
B3CKDOOR Mar 16, 2026
9e74ffd
Update CCVars.Console.cs
B3CKDOOR Mar 16, 2026
d258fc3
Replaced Tile and Decal sprites with the ones we used to have on Sand…
BodenPflanze Mar 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
63 changes: 18 additions & 45 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,45 +1,18 @@
# Last match in file takes precedence.

# Sorting by path instead of by who added it one day :(
# this isn't how codeowners rules work pls read the first comment instead of trying to force a sorting order

#/Resources/ConfigPresets/WizardsDen/ @nikthechampiongr @crazybrain23
#/Content.*/Administration/ @DrSmugleaf @nikthechampiongr @crazybrain23
#/Resources/ServerInfo/ @nikthechampiongr @crazybrain23
#/Resources/ServerInfo/Guidebook/ServerRules/ @nikthechampiongr @crazybrain23

#/Resources/Prototypes/Maps/** @Emisse

#/Resources/Prototypes/Body/ @DrSmugleaf # suffering
#/Resources/Prototypes/Entities/Mobs/Player/ @DrSmugleaf
#/Resources/Prototypes/Entities/Mobs/Species/ @DrSmugleaf
#/Resources/Prototypes/Guidebook/rules.yml @nikthechampiongr @crazybrain23
#/Content.*/Body/ @DrSmugleaf
#/Content.YAMLLinter @DrSmugleaf
#/Content.Shared/Damage/ @DrSmugleaf

#/Content.*/Anomaly/ @TheShuEd
#/Resources/Prototypes/Entities/Structures/Specific/anomalies.yml @TheShuEd

#/Content.*/Forensics/ @ficcialfaint

# SKREEEE
#/Content.*.Database/ @PJB3005 @DrSmugleaf
#/Content.Shared.Database/Log*.cs @PJB3005 @DrSmugleaf @nikthechampiongr @crazybrain23
#/Pow3r/ @PJB3005
#/Content.Server/Power/Pow3r/ @PJB3005

# notafet
#/Content.*/Atmos/ @Partmedia
#/Content.*/Botany/ @Partmedia

# Jezi
#/Content.*/Medical @Jezithyr
#/Content.*/Body @Jezithyr

# Sloth
#/Content.*/Audio @metalgearsloth
#/Content.*/Movement @metalgearsloth
#/Content.*/NPC @metalgearsloth
#/Content.*/Shuttles @metalgearsloth
#/Content.*/Weapons @metalgearsloth
# Warning: Inverted order, last one in file takes priority!

# code changes will send PR to following users
* @SandwichStation/pr-reviewers

# Only allow CentComm Admirals to edit these files/folders:
/LICENSES/* @SandwichStation/centcomm-admiral # We dont want legal trouble because a missing license
/RobustToolbox/* @SandwichStation/centcomm-admiral # We dont want random bugs due to version updates
/.github/* @SandwichStation/centcomm-admiral # important folder
/SECURITY.md @SandwichStation/centcomm-admiral # Sensitive data, strict rules
/README.md @SandwichStation/centcomm-admiral # Our public message, no random changes permitted
*.bat @SandwichStation/centcomm-admiral # Since everyone will be running these, stricter rules
*.sh @SandwichStation/centcomm-admiral # Since everyone will be running these, stricter rules
/Scripts/* @SandwichStation/centcomm-admiral # Since everyone will be running these, stricter rules
/Tools/* @SandwichStation/centcomm-admiral # Normal users have no reason to mess with these files

# Only allow permission changes by SandwichStation Owner
/.github/CODEOWNERS @B3CKDOOR
19 changes: 19 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Piras314 <p1r4s@proton.me>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# These are supported funding model platforms

github: [SandwichStation, B3CKDOOR] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: 'https://discord.gg/SandwichStation' # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
14 changes: 10 additions & 4 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@


## About the PR
<!-- What did you change? -->
<!-- If this is a code change, summarize at high level how your new code works. This makes it easier to review. -->

## Why / Balance
<!-- Discuss how this would affect game balance or explain why it was changed. Link any relevant discussions or issues. -->
Expand All @@ -14,9 +11,18 @@
<!-- Describe a procedure to test this feature, along with expected output/behavior. -->

## Media
<!-- Attach media if the PR makes ingame changes (clothing, items, features, etc).
<!-- Attach media if the PR makes ingame changes (clothing, items, features, etc).
Small fixes/refactors are exempt. Media may be used in SS14 progress reports with credit. -->

## Requirements
<!-- Confirm the following by placing an X in the brackets [X]: -->
- [ ] I have read and am following the [Pull Request and Changelog Guidelines](https://docs.spacestation14.com/en/general-development/codebase-info/pull-request-guidelines.html).
- [ ] I have added media to this PR or it does not require an ingame showcase.
- Either:
- [ ] I have given credit the right people in the right [attributions.yml (example)](https://github.com/SandwichStation/SandwichStation-HL/blob/master/Resources/Audio/_ShibaStation/Lobby/attributions.yml) file
- [ ] I own the rights to the added content
<!-- You should understand that not following the above may get your PR closed at maintainer’s discretion -->

## Breaking changes
<!-- List any breaking changes, including namespaces, public class/method/field changes, prototype renames; and provide instructions for fixing them. -->

Expand Down
3 changes: 0 additions & 3 deletions Content.Client/Entry/EntryPoint.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using Content.Client._Common.Consent; // Consent system
using Content.Client.Administration.Managers;
using Content.Client.Changelog;
using Content.Client.Chat.Managers;
Expand Down Expand Up @@ -44,7 +43,6 @@ namespace Content.Client.Entry
{
public sealed class EntryPoint : GameClient
{
[Dependency] private readonly IClientConsentManager _clientConsentManager = default!; // Consent system
[Dependency] private readonly IBaseClient _baseClient = default!;
[Dependency] private readonly IGameController _gameController = default!;
[Dependency] private readonly IStateManager _stateManager = default!;
Expand Down Expand Up @@ -172,7 +170,6 @@ public override void PostInit()
_overlayManager.AddOverlay(new RadiationPulseOverlay());
_overlayManager.AddOverlay(new EmpBlastOverlay()); // Frontier
_chatManager.Initialize();
_clientConsentManager.Initialize(); // Floofstation
_clientPreferencesManager.Initialize();
_euiManager.Initialize();
_voteManager.Initialize();
Expand Down
47 changes: 0 additions & 47 deletions Content.Client/Floofstation/VoredSystem.cs

This file was deleted.

54 changes: 16 additions & 38 deletions Content.Client/Humanoid/HumanoidAppearanceSystem.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Numerics;
using Content.Client._Common.Consent;
using Content.Shared._Common.Consent;
using Content.Shared.Humanoid;
using Content.Shared.Humanoid.Markings;
using Content.Shared.Humanoid.Prototypes;
Expand All @@ -17,19 +15,14 @@ public sealed class HumanoidAppearanceSystem : SharedHumanoidAppearanceSystem
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly MarkingManager _markingManager = default!;
[Dependency] private readonly AppearanceSystem _appearance = default!;
[Dependency] private readonly IClientConsentManager _consentManager = default!; // Hardlight
[Dependency] private readonly SpriteSystem _sprite = default!;

private static readonly ProtoId<ConsentTogglePrototype> GenitalMarkingsConsent = "GenitalMarkings"; // Hardlight

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<HumanoidAppearanceComponent, AfterAutoHandleStateEvent>(OnHandleState);
SubscribeLocalEvent<HumanoidAppearanceComponent, AppearanceChangeEvent>(OnAppearanceChange);

_consentManager.OnServerDataLoaded += OnConsentChanged;
}

private void OnHandleState(EntityUid uid, HumanoidAppearanceComponent component, ref AfterAutoHandleStateEvent args)
Expand Down Expand Up @@ -73,15 +66,6 @@ private void OnAppearanceChange(EntityUid uid, HumanoidAppearanceComponent comp,
}
}

private void OnConsentChanged()
{
var humanoidQuery = EntityManager.AllEntityQueryEnumerator<HumanoidAppearanceComponent, SpriteComponent>();
while (humanoidQuery.MoveNext(out var owner, out var humanoid, out var sprite))
{
UpdateSprite(owner, humanoid, sprite);
}
}

private static bool IsHidden(HumanoidAppearanceComponent humanoid, HumanoidVisualLayers layer)
=> humanoid.HiddenLayers.ContainsKey(layer) || humanoid.PermanentlyHidden.Contains(layer);

Expand Down Expand Up @@ -338,7 +322,7 @@ private void AddUndergarments(EntityUid uid, HumanoidAppearanceComponent humanoi
if (_markingManager.TryGetMarking(marking, out var prototype))
{
// Markings are added to ClientOldMarkings because otherwise it causes issues when toggling the feature on/off.
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentTop, new List<Marking>{ marking });
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentTop, new List<Marking> { marking });
ApplyMarking(uid, prototype, null, false, true, humanoid, sprite); //starlight, glowing
}
}
Expand All @@ -348,7 +332,7 @@ private void AddUndergarments(EntityUid uid, HumanoidAppearanceComponent humanoi
var marking = new Marking(humanoid.UndergarmentBottom, new List<Color> { new Color() }, false); //starlight, glowing
if (_markingManager.TryGetMarking(marking, out var prototype))
{
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentBottom, new List<Marking>{ marking });
humanoid.ClientOldMarkings.Markings.Add(MarkingCategories.UndergarmentBottom, new List<Marking> { marking });
ApplyMarking(uid, prototype, null, false, true, humanoid, sprite); //starlight, glowing
}
}
Expand Down Expand Up @@ -403,12 +387,6 @@ private void ApplyMarking(EntityUid uid, MarkingPrototype markingPrototype,
visible &= !humanoid.HiddenMarkings.Contains(markingPrototype.ID); // FLOOF ADD
// FLOOF ADD END

// Hardlight: genital markings consent toggle
if (!(_consentManager.GetConsentSettings().Toggles.TryGetValue(GenitalMarkingsConsent, out var val) && val == "on"))
{
visible &= markingPrototype.MarkingCategory != MarkingCategories.Genital;
}

for (var j = 0; j < markingPrototype.Sprites.Count; j++)
{
var markingSprite = markingPrototype.Sprites[j];
Expand Down Expand Up @@ -452,7 +430,7 @@ private void ApplyMarking(EntityUid uid, MarkingPrototype markingPrototype,
var layerId = $"{markingPrototype.ID}-{rsi.RsiState}";
// FLOOF CHANGE END

if (!_sprite.LayerMapTryGet((uid, sprite), layerId, out _ , false))
if (!_sprite.LayerMapTryGet((uid, sprite), layerId, out _, false))
{
// for layers that are supposed to be behind everything,
// adding 1 to the layer index makes it not be behind
Expand Down Expand Up @@ -493,21 +471,21 @@ private void ApplyMarking(EntityUid uid, MarkingPrototype markingPrototype,
// }

// Starlight start, # HardLight: Not really sure why it broke, but it had to be rewritten to work again, so here we are.
if (isGlowing)
{
sprite.LayerSetShader(layerId, SpriteSystem.UnshadedId.Id);
}
else if (!string.IsNullOrWhiteSpace(markingPrototype.Shader))
{
sprite.LayerSetShader(layerId, markingPrototype.Shader);
}
else
if (isGlowing)
{
sprite.LayerSetShader(layerId, SpriteSystem.UnshadedId.Id);
}
else if (!string.IsNullOrWhiteSpace(markingPrototype.Shader))
{
sprite.LayerSetShader(layerId, markingPrototype.Shader);
}
else
{
if (_sprite.LayerMapTryGet((uid, sprite), layerId, out var shaderLayerIndex, false))
{
if (_sprite.LayerMapTryGet((uid, sprite), layerId, out var shaderLayerIndex, false))
{
sprite.LayerSetShader(shaderLayerIndex, null, null);
}
sprite.LayerSetShader(shaderLayerIndex, null, null);
}
}
// Starlight end
}
}
Expand Down
2 changes: 0 additions & 2 deletions Content.Client/IoC/ClientContentIoC.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using Content.Client._Common.Consent; // Consent system
using Content.Client.Administration.Managers;
using Content.Client.Changelog;
using Content.Client.Chat.Managers;
Expand Down Expand Up @@ -38,7 +37,6 @@ public static void Register()

collection.Register<IParallaxManager, ParallaxManager>();
collection.Register<IChatManager, ChatManager>();
collection.Register<IClientConsentManager, ClientConsentManager>(); // Consent system
collection.Register<ISharedChatManager, ChatManager>();
collection.Register<IClientPreferencesManager, ClientPreferencesManager>();
collection.Register<IStylesheetManager, StylesheetManager>();
Expand Down
4 changes: 2 additions & 2 deletions Content.Client/MainMenu/UI/MainMenuControl.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Robust.Client.AutoGenerated;
using Robust.Client.AutoGenerated;
using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
Expand All @@ -22,7 +22,7 @@ public MainMenuControl(IResourceCache resCache, IConfigurationManager configMan)
LayoutContainer.SetMarginTop(VBox, 30);
LayoutContainer.SetGrowHorizontal(VBox, LayoutContainer.GrowDirection.Begin);

var logoTexture = resCache.GetResource<TextureResource>("/Textures/_NF/Logo/logo.png"); // Frontier: add _NF
var logoTexture = resCache.GetResource<TextureResource>("/Textures/_Sandwich/Logo/logo.png");
Logo.Texture = logoTexture;

var currentUserName = configMan.GetCVar(CVars.PlayerName);
Expand Down
2 changes: 1 addition & 1 deletion Content.Client/Stylesheets/StyleNano.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1646,7 +1646,7 @@ public StyleNano(IResourceCache resCache) : base(resCache)
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#757575")),

Element<TextureRect>().Class("PirateLogoDark") // Frontier
.Prop(TextureRect.StylePropertyTexture, resCache.GetTexture("/Textures/_NF/Interface/Pirate/piratelogo.png")) // Frontier
.Prop(TextureRect.StylePropertyTexture, resCache.GetTexture("/Textures/_Sandwich/Interface/Pirate/piratelogo.png")) // Sandwich
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#757575")), // Frontier

Element<Label>().Class("WindowFooterText")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using Content.Client._Common.Consent.UI; // Consent system
using Content.Client.UserInterface.Systems.Actions;
using Content.Client.UserInterface.Systems.Admin;
using Content.Client.UserInterface.Systems.Bwoink;
Expand All @@ -25,7 +24,6 @@ public sealed class GameTopMenuBarUIController : UIController
[Dependency] private readonly SandboxUIController _sandbox = default!;
[Dependency] private readonly GuidebookUIController _guidebook = default!;
[Dependency] private readonly EmotesUIController _emotes = default!;
[Dependency] private readonly ConsentUiController _consent = default!; // Consent system

private GameTopMenuBar? GameTopMenuBar => UIManager.GetActiveUIWidgetOrNull<GameTopMenuBar>();

Expand All @@ -49,7 +47,6 @@ public void UnloadButtons()
_action.UnloadButton();
_sandbox.UnloadButton();
_emotes.UnloadButton();
_consent.UnloadButton(); // Consent system
}

public void LoadButtons()
Expand All @@ -63,6 +60,5 @@ public void LoadButtons()
_action.LoadButton();
_sandbox.LoadButton();
_emotes.LoadButton();
_consent.LoadButton(); // Consent system
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,16 +73,6 @@
HorizontalExpand="True"
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
/>
<ui:MenuButton
Name="ConsentButton"
Access="Internal"
Icon="{xe:Tex '/Textures/Interface/VerbIcons/settings.svg.192dpi.png'}"
BoundKey = "{x:Static is:ContentKeyFunctions.OpenConsentWindow}"
ToolTip="{Loc 'game-hud-open-consent-window-button-tooltip'}"
MinSize="42 64"
HorizontalExpand="True"
AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}"
/>
<ui:MenuButton
Name="AdminButton"
Access="Internal"
Expand Down
Loading
Loading