Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7ce8e75
ммм
kerfus-owo Mar 6, 2026
8b2d0be
Merge remote-tracking branch 'upstream/master' into ipc-visuals
kerfus-owo Mar 7, 2026
e20a4ae
Merge remote-tracking branch 'upstream/master' into ipc-visuals
kerfus-owo Mar 13, 2026
4d0471e
Merge remote-tracking branch 'upstream/master' into ipc-visuals
kerfus-owo Mar 17, 2026
57cc08d
ещё посидиииим
kerfus-owo Mar 17, 2026
541ad0d
фиксики
kerfus-owo Mar 17, 2026
3751f3a
Начало
kerfus-owo Mar 17, 2026
728444e
первая часть квирка
kerfus-owo Mar 17, 2026
6cfec86
Merge remote-tracking branch 'upstream/master' into ipc-visuals
kerfus-owo Mar 18, 2026
5dbec6d
Вторая часть
kerfus-owo Mar 18, 2026
b8f2d89
норм
kerfus-owo Mar 18, 2026
5ab63ab
фиксики?
kerfus-owo Mar 18, 2026
f029b64
лишнее
kerfus-owo Mar 18, 2026
ff45375
заготовка
kerfus-owo Mar 18, 2026
730f228
заготовка 2
kerfus-owo Mar 18, 2026
b81d4b0
заготовка 3
kerfus-owo Mar 18, 2026
903e0ac
мужчина
kerfus-owo Mar 18, 2026
34ecf50
женщина
kerfus-owo Mar 18, 2026
6f18774
Merge remote-tracking branch 'upstream/master' into ipc-visuals
kerfus-owo Mar 19, 2026
107f7be
сойдёт
kerfus-owo Mar 19, 2026
c623b9a
норм
kerfus-owo Mar 19, 2026
2594722
ням
kerfus-owo Mar 19, 2026
7b5a61f
финал очка
kerfus-owo Mar 19, 2026
9562c19
мяу
kerfus-owo Mar 19, 2026
ed459d1
норм
kerfus-owo Mar 19, 2026
8a1606a
фикс
kerfus-owo Mar 19, 2026
b55e924
так?
kerfus-owo Mar 19, 2026
5c097ef
фикс 2
kerfus-owo Mar 19, 2026
274fc57
Фиксы 3
kerfus-owo Mar 19, 2026
d791d7f
фикс???
kerfus-owo Mar 19, 2026
e9ce2af
фиксы 4?
kerfus-owo Mar 19, 2026
7f67f71
Правки
kerfus-owo Mar 19, 2026
0f7319a
Посоветовал хуйни
kerfus-owo Mar 19, 2026
cc77566
Merge branch 'master' into ipc-visuals
Darkiich Mar 19, 2026
585e8b9
Merge branch 'master' into ipc-visuals
Darkiich Mar 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Content.Client/ADT/Lobby/UI/QuirksWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@ public void Populate(HumanoidCharacterProfile profile)
else
SelectedQuirksLabel.SetMessage(Loc.GetString("quirks-window-selected-none"), null, Color.White);

var protoList = _proto.EnumeratePrototypes<TraitPrototype>().Where(x => x.Quirk && !x.SpeciesBlacklist.Contains(profile.Species)).ToList();
var protoList = _proto.EnumeratePrototypes<TraitPrototype>()
.Where(x => x.Quirk
&& (x.SpeciesWhitelist.Count == 0 || x.SpeciesWhitelist.Contains(profile.Species))
&& !x.SpeciesBlacklist.Contains(profile.Species))
.ToList();

protoList.Sort((x, y) => Loc.GetString(x.Name)[0].CompareTo(Loc.GetString(y.Name)[0]));
protoList.Sort((x, y) => x.Cost.CompareTo(y.Cost));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ protected override void Open()
_window.OnSlotColorChanged += args => SendMessage(new MidroundCustomizationChangeColorMessage(args.Category, args.Colors, args.Slot));
_window.OnSlotAdded += args => SendMessage(new MidroundCustomizationAddSlotMessage(args));
_window.OnSlotRemoved += args => SendMessage(new MidroundCustomizationRemoveSlotMessage(args.Category, args.Slot));
_window.OnPointLightColorToggled += enabled => SendMessage(new MidroundCustomizationPointLightColorToggleMessage(enabled));

_window.OnVoiceChanged += voiceId => SendMessage(new MidroundCustomizationChangeVoiceMessage(voiceId, voiceId));
_window.OnBarkProtoChanged += proto => SendMessage(new MidroundCustomizationChangeBarkProtoMessage(proto));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ScrollContainer HorizontalExpand="True" VerticalExpand="True" HScrollEnabled="False">
<BoxContainer Name="VoiceContainer" Orientation="Vertical" Margin="8">
<BoxContainer Orientation="Vertical" Margin="4" >
<Label Text="{Loc 'humanoid-profile-editor-voice-label'}" />
<Label Text="{Loc 'humanoid-profile-editor-voice-tab'}" />
<BoxContainer Orientation="Horizontal" Margin="0 4 0 0">
<OptionButton Name="VoiceButton" HorizontalExpand="True" />
<Button Name="VoicePlayButton" Text="{Loc 'humanoid-profile-editor-voice-play'}" MaxWidth="80" />
Expand All @@ -19,6 +19,7 @@
<ScrollContainer HorizontalExpand="True" VerticalExpand="True" VScrollEnabled="False" HScrollEnabled="True">
<BoxContainer Name="MarkingsContainer" VerticalExpand="True" HorizontalExpand="True" Orientation="Horizontal" Margin="4"/>
</ScrollContainer>
<CheckBox Name="PointLightColorCheckBox" Text="{Loc 'midround-customization-pointlight-color'}" Margin="8 12 8 8"/>
</BoxContainer>
</ScrollContainer>
</DefaultWindow>
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public sealed partial class MidroundCustomizationWindow : DefaultWindow
public Action<(MarkingCategories Category, int Slot, List<Color> Colors)>? OnSlotColorChanged;
public Action<(MarkingCategories Category, int Slot)>? OnSlotRemoved;
public Action<MarkingCategories>? OnSlotAdded;
public Action<bool>? OnPointLightColorToggled;

public Action<string>? OnVoiceChanged;
public Action<string>? OnBarkProtoChanged;
Expand Down Expand Up @@ -75,6 +76,10 @@ public MidroundCustomizationWindow()

BarkProtoButton.OnPressed += _ => OpenBarkWindow();
BarkPlayButton.OnPressed += _ => PlayPreviewBark();
PointLightColorCheckBox.OnToggled += args =>
{
OnPointLightColorToggled?.Invoke(args.Pressed);
};

_voiceList = _prototypeManager
.EnumeratePrototypes<TTSVoicePrototype>()
Expand Down Expand Up @@ -177,6 +182,12 @@ public void UpdateState(MidroundCustomizationUiState state)
MarkingsContainer.AddChild(picker);
}

PointLightColorCheckBox.Visible = state.PointLightColor;
if (state.PointLightColor)
{
PointLightColorCheckBox.Pressed = state.PointLightColorEnabled;
}

if (state.TTS != null)
{
_currentVoice = state.TTS;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,32 @@
using Content.Shared.Humanoid.Markings;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
using Content.Shared.Mobs;

namespace Content.Server.ADT.MidroundCustomization;

/// <summary>
/// Allows humanoids to change their appearance mid-round.
/// </summary>
[DataDefinition]
public sealed partial class ChangeSlotOnStateEntry
{
[DataField(required: true)]
public MobState State { get; set; }

[DataField(required: true)]
public MarkingCategories Category { get; set; }

[DataField(required: true)]
public int Slot { get; set; }

[DataField(required: true)]
public string Marking { get; set; } = string.Empty;

[DataField]
public List<Color> Colors { get; set; } = new();
}

[RegisterComponent]
public sealed partial class MidroundCustomizationComponent : Component
{
Expand Down Expand Up @@ -74,4 +94,20 @@ public sealed partial class MidroundCustomizationComponent : Component
[DataField, AutoNetworkedField]
public EntityUid? ActionEntity;

/// <summary>
/// Changes slot on state.
/// </summary>
[DataField]
public List<ChangeSlotOnStateEntry> ChangeSlotOnState { get; set; } = new();

[DataField]
public bool PointLightColor = false;

[DataField, AutoNetworkedField]
public bool PointLightColorEnabled;

public Color OriginalPointLightColor = Color.White;

public Dictionary<MarkingCategories, (string Marking, List<Color> Colors)> RemovedMarkingsBuffer { get; set; } = new();
public Dictionary<(MarkingCategories Category, int Slot), (string Marking, List<Color> Colors)> OriginalMarkings = new();
}
Loading
Loading