Upstream core (#282)

* yes

(cherry picked from commit a6b5e1c66dfe4241977bcde753af594392164eca)

* Is real, navernoe (#944)

* its real

* fix shield

* remove comments game preset

* maximum predicted

* fixes

* АААААААААААААААААААААААААААА ПОМОГИТЕ Я ЕБНУЛСЯ ПОКА ФИКСИЛ ЭТУ ЗАЛУПУ

* govnoedit

* secret

(cherry picked from commit 22c7b68048590b5098efbfff0d0f5205d3a64c48)

* [Feature/Tweaks] Raznoe (#934)

* make thruster great again

* make hardsuit hos great again

* new ficha for medical hud

* fix

* vrode da

* GOOOVNO REMIX REVERB EXTRA

* fix

* правки

---------

Co-authored-by: BIGZi0348 <svalker0348@gmail.com>
(cherry picked from commit 141e61a0449873842f46d83eff9e9ce857147d60)

* Automatic changelog update

(cherry picked from commit d14fe5fb6c934ed522df0b5bc453e4c04707a6db)

* [Feature] Executions (#932)

* based

* cleanup

* cleanup + fixes

* fix

* fix

* fix ftl

* Update Resources/Locale/ru-RU/_white/executions/execution.ftl

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* Update execution.ftl

* правки

* vrode norm

* da

---------

Co-authored-by: BIGZi0348 <118811750+BIGZi0348@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: BIGZi0348 <svalker0348@gmail.com>
(cherry picked from commit 83e164172f8e290acee7634f14ac51281be020ad)

* Automatic changelog update

(cherry picked from commit 71f907c563a30a1fc7ef5751a4d6f2c780a14f4c)

* hotfix (#946)

(cherry picked from commit f577caec41ab277ee8fc1c18fe64f7e26a6e50f5)

---------

Co-authored-by: RavmorganButOnCocaine <valtos@nextmail.ru>
This commit is contained in:
withoutcode333
2025-04-13 19:03:49 +05:00
committed by GitHub
parent a444b16d7d
commit 0e4e5b7805
38 changed files with 748 additions and 161 deletions

View File

@@ -0,0 +1,24 @@
using Content.Client._White.Cult.UI.CultistFactory;
using Content.Shared._White.Cult.Components;
using Content.Shared._White.Cult.UI;
namespace Content.Client._White.Cult.UI;
public sealed class CultAltarSystem : EntitySystem
{
[Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<CultistFactoryComponent, AfterAutoHandleStateEvent>(OnAltarAfterState);
}
private void OnAltarAfterState(Entity<CultistFactoryComponent> ent, ref AfterAutoHandleStateEvent args)
{
if (!_uiSystem.TryGetOpenUi<CultistFactoryBUI>(ent.Owner, CultistAltarUiKey.Key, out var bui))
return;
bui.Dispose();
}
}

View File

@@ -1,6 +1,8 @@
using Content.Client._White.UserInterface.Radial;
using Content.Shared._White.Cult;
using Content.Shared._White.Cult.Components;
using Content.Shared._White.Cult.UI;
using Robust.Client.Player;
using Robust.Shared.Prototypes;
namespace Content.Client._White.Cult.UI.CultistFactory;
@@ -8,6 +10,7 @@ namespace Content.Client._White.Cult.UI.CultistFactory;
public sealed class CultistFactoryBUI : BoundUserInterface
{
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly EntityManager _entityManager = default!;
private RadialContainer? _radialContainer;
private bool _updated = false;
@@ -18,7 +21,7 @@ public sealed class CultistFactoryBUI : BoundUserInterface
}
private void ResetUI()
{
_radialContainer?.Close();
_radialContainer?.Dispose();
_radialContainer = null;
_updated = false;
}
@@ -30,6 +33,9 @@ public sealed class CultistFactoryBUI : BoundUserInterface
if (_radialContainer != null)
ResetUI();
if(!CanOpen())
return;
_radialContainer = new RadialContainer();
_radialContainer.Closed += Close;
@@ -58,11 +64,20 @@ public sealed class CultistFactoryBUI : BoundUserInterface
private void Select(string id)
{
SendMessage(new CultistFactoryItemSelectedMessage(id));
SendPredictedMessage(new CultistFactoryItemSelectedMessage(id));
ResetUI();
Close();
}
private bool CanOpen()
{
var localPlayer = IoCManager.Resolve<IPlayerManager>().LocalPlayer;
var uid = localPlayer?.ControlledEntity;
return uid != null && _entityManager.HasComponent<CultistComponent>(uid);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);

View File

@@ -32,6 +32,8 @@ public sealed class StructureCraftBoundUserInterface : BoundUserInterface
_radialContainer = new RadialContainer();
_radialContainer.Closed += Close;
foreach (var prototype in _prototypeManager.EnumeratePrototypes<CultStructurePrototype>())
{
var radialButton = _radialContainer.AddButton(prototype.StructureName, prototype.Icon);

View File

@@ -0,0 +1,42 @@
using Content.Client.Overlays;
using Content.Shared._White.DeadWithoutMind;
using Content.Shared.Humanoid;
using Content.Shared.Mind.Components;
using Content.Shared.Mobs.Systems;
using Content.Shared.StatusIcon;
using Content.Shared.StatusIcon.Components;
using Robust.Shared.Prototypes;
namespace Content.Client._White.DeadWithoutMind;
public sealed class ShowDeadWithoutMindSystem : EquipmentHudSystem<ShowDeadWithoutMindComponent>
{
[Dependency] private readonly IPrototypeManager _prototype = default!;
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HumanoidAppearanceComponent, GetStatusIconsEvent>(OnGetStatusIconsEvent);
}
private void OnGetStatusIconsEvent(Entity<HumanoidAppearanceComponent> entity, ref GetStatusIconsEvent args)
{
if (!IsActive || args.InContainer)
return;
if (!TryComp<MindContainerComponent>(entity.Owner, out var mindContainer))
return;
var dead = _mobStateSystem.IsDead(entity.Owner);
if (!dead)
return;
if (mindContainer.Mind != null)
return;
if (_prototype.TryIndex<StatusIconPrototype>(entity.Comp.DeadWithoutMindIcon.Id, out var iconPrototype))
args.StatusIcons.Add(iconPrototype);
}
}

View File

@@ -55,7 +55,8 @@ public sealed class RadialUIController : UIController, IOnStateEntered<GameplayS
_combatMode.IsInCombatMode(user))
return;
Close();
if(OpenMenu != null)
Close();
CurrentTarget = target;
CurrentRadials = _radialSystem.GetRadials(target, user, Radial.RadialTypes, force);
@@ -71,7 +72,10 @@ public sealed class RadialUIController : UIController, IOnStateEntered<GameplayS
{
OpenMenu ??= new RadialContainer();
OpenMenu.CloseButton.Controller.OnPressed += _ => Close();
OpenMenu.CloseButton.Controller.OnPressed += _ =>
{
Close();
};
foreach (var radial in CurrentRadials)
{
@@ -93,7 +97,7 @@ public sealed class RadialUIController : UIController, IOnStateEntered<GameplayS
if (OpenMenu == null)
return;
OpenMenu.Close();
OpenMenu.Close(true);
OpenMenu = null;
}