From 4399ba92e352ce9ce13892b213f75127678b8011 Mon Sep 17 00:00:00 2001 From: Korol_Charodey Date: Wed, 25 Dec 2024 22:21:33 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B4=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D1=8B=20=D0=B4=D1=80=D0=BE=D0=BD=D1=8B=20=D0=B8=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=B8=D1=80=D1=83?= =?UTF-8?q?=D0=B5=D0=BC=D1=8B=D0=B5=20=D1=81=D0=BD=D0=B0=D1=80=D1=8F=D0=B4?= =?UTF-8?q?=D1=8B,=20=D0=B0=20=D1=82=D0=B0=D0=BA=20=D0=B2=20=D1=86=D0=B5?= =?UTF-8?q?=D0=BB=D0=BE=D0=BC=20=D0=B2=D1=81=D1=91=20=D0=BD=D0=BE=D1=80?= =?UTF-8?q?=D0=BC,=20=D0=A2=D0=A3=D0=A0=D0=95=D0=9B=D0=AC=20=D0=9D=D0=A3?= =?UTF-8?q?=D0=96=D0=9D=D0=9E=20=D0=9F=D0=A0=D0=9E=D0=92=D0=95=D0=A0=D0=AF?= =?UTF-8?q?=D0=A2=D0=AC=20=D0=9D=D0=90=20=D0=A0=D0=90=D0=A1=D0=A1=D0=A2?= =?UTF-8?q?=D0=9E=D0=AF=D0=9D=D0=98=D0=95=20(=D0=A7=D0=A2=D0=9E=20=D0=91?= =?UTF-8?q?=D0=AB=20=D0=A7=D0=95=D0=A0=D0=95=D0=97=20=D0=9E=D0=9F=D0=A0?= =?UTF-8?q?=D0=95=D0=94=D0=95=D0=9B=D0=95=D0=9D=D0=9D=D0=9E=D0=95=20=D0=9A?= =?UTF-8?q?=D0=9E=D0=9B=D0=98=D0=A7=D0=95=D0=A1=D0=A2=D0=92=D0=9E=20=D0=9C?= =?UTF-8?q?=D0=95=D0=A2=D0=A0=D0=9E=D0=92=20=D0=9E=D0=A2=D0=9A=D0=9B=D0=AE?= =?UTF-8?q?=D0=A7=D0=90=D0=9B=D0=9E=20=D0=9E=D0=A2=20=D0=A2=D0=A3=D0=A0?= =?UTF-8?q?=D0=95=D0=9B=D0=9B=D0=98)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TurretControllableComponent.cs | 6 +++++ .../TurretControllableSystem.cs | 23 +++++++++++------- .../TurretControllerComponent.cs | 2 +- .../TurretControllerSystem.cs | 14 +++++------ .../ADT/SS40k/Turrets/TurretEvents.cs | 6 ++--- .../Machines/Computers/computers.ftl | 3 +++ .../Machines/Computers/computers.yml | 8 +++---- .../Entities/Structures/Shuttles/cannons.yml | 24 +++++++------------ 8 files changed, 46 insertions(+), 40 deletions(-) diff --git a/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableComponent.cs b/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableComponent.cs index f64d04cc5eb..6f5ad3943de 100644 --- a/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableComponent.cs +++ b/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableComponent.cs @@ -16,6 +16,12 @@ public sealed partial class TurretControllableComponent : Component public string ControlReturnAction = "ControlReturnAction"; [DataField("ControlReturnActionEntity")] public EntityUid? ControlReturnActEntity; + + [DataField("Range")] + public float Range = 50f; + + [DataField("isDrone")] + public bool IsDrone = false; } /* diff --git a/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableSystem.cs b/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableSystem.cs index 53f5fe85748..9cfb0112f5d 100644 --- a/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableSystem.cs +++ b/Content.Server/ADT/SS40k/Turrets/TurretControllable/TurretControllableSystem.cs @@ -1,6 +1,8 @@ +using System.Numerics; using Content.Shared.Actions; using Content.Shared.ADT.SS40k.Turrets; using Content.Shared.Bed.Sleep; +using Content.Shared.Examine; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs.Systems; @@ -13,13 +15,14 @@ public sealed class TurretControllableSystem : EntitySystem [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly SharedMindSystem _mindSystem = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnReturn); - SubscribeLocalEvent(OnGettingControlled); + SubscribeLocalEvent(OnStartup);//заливаем акшон для возврата(можно добавить и другие) + SubscribeLocalEvent(OnShutdown);//чистим\возвращаем + SubscribeLocalEvent(OnReturn);//акшон возврата + SubscribeLocalEvent(OnGettingControlled);//сохраняем } public void OnGettingControlled(EntityUid uid, TurretControllableComponent component, GettingControlledEvent args) @@ -41,7 +44,6 @@ public void Return(EntityUid uid, TurretControllableComponent component) TryReturnToBody(uid, component); } component.User = null; - //suda mojno dopisat raise event, but nahuya? if (component.Controller is not null) { RaiseLocalEvent((EntityUid)component.Controller, new ReturnToBodyTurretEvent(uid)); @@ -57,7 +59,7 @@ public void OnShutdown(EntityUid uid, TurretControllableComponent component, Com { Return(uid, component); - _actionsSystem.RemoveAction(component.ControlReturnActEntity);//maybe nahui? hotya pohui + _actionsSystem.RemoveAction(component.ControlReturnActEntity); } public bool TryReturnToBody(EntityUid uid, TurretControllableComponent component) @@ -73,12 +75,15 @@ public bool TryReturnToBody(EntityUid uid, TurretControllableComponent component public override void Update(float frameTime) { base.Update(frameTime); - //todo: проверка пользователя(тела игрока на состояние) и поднятие ивента в случае отруба(по ивенту возвращаем в тело(точно ли стоит делать ивентом, а не тупо вернуть в тело?)) var entityes = EntityQueryEnumerator(); while (entityes.MoveNext(out var uid, out var comp)) - if (comp.User is not null && (!_mobStateSystem.IsAlive((EntityUid)comp.User) || + { + if (comp.User is not null && comp.Controller is not null && (!_mobStateSystem.IsAlive((EntityUid)comp.User) || TryComp((EntityUid)comp.User, out var _) || - TryComp((EntityUid)comp.User, out var _))) Return(uid, comp); + TryComp((EntityUid)comp.User, out var _))) Return(uid, comp); //тут мейби можно убрать проверку на ещё один компонент(нужно тестить) + // + + } } // public bool IsControlling(EntityUid uid, TurretControllableComponent comp) diff --git a/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerComponent.cs b/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerComponent.cs index 34e9bf42f30..a8f90593705 100644 --- a/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerComponent.cs +++ b/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerComponent.cs @@ -12,7 +12,7 @@ public sealed partial class TurretControllerComponent : Component public EntityUid? CurrentUser; [ViewVariables] - public EntityUid? CurrentTurret; // ??? maybe uberu nahui (potom optimiziruye, skoreye vsego legche save component turret v controllere(maybe more than 1 turret so i will make some changes after, IDK)) + public EntityUid? CurrentTurret; } /* diff --git a/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerSystem.cs b/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerSystem.cs index b3b5017e7f0..b366452e1fb 100644 --- a/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerSystem.cs +++ b/Content.Server/ADT/SS40k/Turrets/TurretController/TurretControllerSystem.cs @@ -17,11 +17,11 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(AfterInteract); - SubscribeLocalEvent(OnShutdown); - SubscribeLocalEvent(OnLinkAttempt); - SubscribeLocalEvent(OnNewLink); - SubscribeLocalEvent(OnReturn); + SubscribeLocalEvent(AfterInteract);//закидываем в турель при использовании + SubscribeLocalEvent(OnShutdown);//чистим + SubscribeLocalEvent(OnLinkAttempt);//отменяем соединения + SubscribeLocalEvent(OnNewLink); //заливаем турель в компонент контроллера(потенциал в будущем сделать массив турелей с одной консолью) + SubscribeLocalEvent(OnReturn);//чистим } public void OnReturn(EntityUid uid, TurretControllerComponent component, ReturnToBodyTurretEvent args) @@ -44,8 +44,8 @@ public void AfterInteract(EntityUid uid, TurretControllerComponent component, In var target = linkSource.LinkedPorts.First().Key; component.CurrentUser = args.User; component.CurrentTurret = target; - RaiseLocalEvent(target, new GettingControlledEvent(args.User, uid)); // я не ебу почему ты не работаешь, козлина, хотя по всей логике должна, ивент просто не доходит до соседней системы - бред? ДА БРЕД - _mindSystem.ControlMob(args.User, target); //Визарды пидорасы, я ебал ваши ивенты в жопу, уроды блять, пидорасы, ебаный нахуй блять + RaiseLocalEvent(target, new GettingControlledEvent(args.User, uid)); + _mindSystem.ControlMob(args.User, target); } } diff --git a/Content.Shared/ADT/SS40k/Turrets/TurretEvents.cs b/Content.Shared/ADT/SS40k/Turrets/TurretEvents.cs index b9b41957737..8c406acb41d 100644 --- a/Content.Shared/ADT/SS40k/Turrets/TurretEvents.cs +++ b/Content.Shared/ADT/SS40k/Turrets/TurretEvents.cs @@ -1,11 +1,11 @@ using Content.Shared.Actions; namespace Content.Shared.ADT.SS40k.Turrets; -public sealed partial class ControlReturnActionEvent : InstantActionEvent +public sealed partial class ControlReturnActionEvent : InstantActionEvent // для акшона { } -public sealed class ReturnToBodyTurretEvent : EntityEventArgs +public sealed class ReturnToBodyTurretEvent : EntityEventArgs//поднимаем на возвращении { public EntityUid TurretController; @@ -15,7 +15,7 @@ public ReturnToBodyTurretEvent(EntityUid turretcontroller) } } -public sealed class GettingControlledEvent : EntityEventArgs +public sealed class GettingControlledEvent : EntityEventArgs //поднимаем для турели которая начинает контролироваться { public EntityUid User; public EntityUid Controller; diff --git a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/Computers/computers.ftl b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/Computers/computers.ftl index 3736af98439..8c877e7578a 100644 --- a/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/Computers/computers.ftl +++ b/Resources/Locale/ru-RU/ADT/prototypes/Entities/Structures/Machines/Computers/computers.ftl @@ -7,3 +7,6 @@ ent-ADTComputerShuttleSalvage = консоль управления утилиз ent-ADTComputerSecShuttle = консоль управления шаттлом службы безопасности .desc = Используется для пилотирования шаттлом службы безопасности. + +ent-TurretControllerConsole = консоль управления турелью + .desc = Используется для контроля турелей diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 55379ba7591..f205e0f5dad 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -938,12 +938,12 @@ - Cloning #SS40k -- type: sourcePort +- type: sourcePort #прототип порта, который отправляет данные id: TurretControllerSender name: signal-port-name-tur-sender description: signal-port-description-tur-sender -- type: entity +- type: entity #прототип консоли для управления турелями (скопировал с базовой консоли, не имеет платы из которой собирается, пока что чисто выдаётся) parent: BaseComputer id: TurretControllerConsole name: turret-controller-console @@ -972,9 +972,9 @@ energy: 1.6 color: "#1f8c28" - type: DeviceLinkSource - range: 10 + range: 10 #не сильно важная хуйня, растояние на котором можно залинкать, турели как допишу - будут сами отлинкиваться по причине потери связи из за растояния, будь то отломанная турель летящая на куске корабля, или дрон) ports: - - TurretControllerSender + - TurretControllerSender #собственно наш порт - type: TurretController # - type: ActivatableUI # key: enum.CloningConsoleUiKey.Key diff --git a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml index 26ae9820d0d..d5041c91ab9 100644 --- a/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml +++ b/Resources/Prototypes/Entities/Structures/Shuttles/cannons.yml @@ -373,33 +373,25 @@ #SS40k Turrets with components for control -- type: entity - id: ShuttleGunKineticControllable - parent: ShuttleGunKinetic - suffix: CONTROLLABLE, DO NOT MAP - components: - - type: TurretControllable - - type: DeviceLinkSink - ports: - - On - - type: entity id: ShuttleGunFriendshipControllable parent: ShuttleGunFriendship suffix: CONTROLLABLE, DO NOT MAP components: - - type: TurretControllable + - type: TurretControllable #компонент контролируемой турели - type: DeviceLinkSink ports: - - On - - type: MouseRotator + - On #можно переписать нахуй прототип турели, но главное что бы в прототипе был порт для линка(даже если он ничего не делает, вот например ВКЛ - сойдёт) + - type: MouseRotator #настраивать по вкусу angleTolerance: 5 rotationSpeed: 180 - simple4DirMode: false + simple4DirMode: false #выключить что бы турель красиво вертелась(а не резко поворачивалась в одну из 4 сторон) - type: NoRotateOnInteract - type: NoRotateOnMove - type: CombatMode - toggleMouseRotator: false + toggleMouseRotator: false #нужно выключить, что бы у нас компонент ротатора не пропадал нахуй при переключении режимов + +#Turret returning action - type: entity id: ControlReturnAction @@ -408,7 +400,7 @@ - type: InstantAction priority: -100 icon: - sprite: Objects/Tools/crowbar.rsi + sprite: Objects/Tools/crowbar.rsi #заменить спрайт с монтировки на что то сносное state: icon event: !type:ControlReturnActionEvent {} useDelay: 1