Фикс энерго мечей. Фикс смены цвета работы каргой агента. карту агента, эсворды, пИИ синдиката и одежду хамелеона больше не могут использовать не синдикаты.
This commit is contained in:
parent
d3dc1659b6
commit
7c8a5ae4c2
29 changed files with 332 additions and 57 deletions
|
|
@ -9,6 +9,8 @@ using Robust.Server.GameObjects;
|
|||
using Robust.Shared.Prototypes;
|
||||
using Content.Shared.Roles;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using Content.Shared._Sunrise.Biocode;
|
||||
using BiocodeComponent = Content.Shared._Sunrise.Biocode.BiocodeComponent;
|
||||
|
||||
namespace Content.Server.Access.Systems
|
||||
{
|
||||
|
|
@ -18,6 +20,7 @@ namespace Content.Server.Access.Systems
|
|||
[Dependency] private readonly IdCardSystem _cardSystem = default!;
|
||||
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
|
||||
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -35,6 +38,14 @@ namespace Content.Server.Access.Systems
|
|||
if (args.Target == null || !args.CanReach || !TryComp<AccessComponent>(args.Target, out var targetAccess) || !HasComp<IdCardComponent>(args.Target))
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
if (!TryComp<AccessComponent>(uid, out var access) || !HasComp<IdCardComponent>(uid))
|
||||
return;
|
||||
|
||||
|
|
@ -98,7 +109,10 @@ namespace Content.Server.Access.Systems
|
|||
_cardSystem.TryChangeJobIcon(uid, jobIcon, idCard);
|
||||
|
||||
if (TryFindJobProtoFromIcon(jobIcon, out var job))
|
||||
_cardSystem.TryChangeJobDepartment(uid, job, idCard);
|
||||
{
|
||||
_cardSystem.TryChangeJobColor(uid, _cardSystem.GetJobColor(_prototypeManager, job), job.RadioIsBold);
|
||||
_cardSystem.TryChangeJobDepartment(uid, job, idCard); // Sunrise-Edit
|
||||
}
|
||||
}
|
||||
|
||||
private bool TryFindJobProtoFromIcon(JobIconPrototype jobIcon, [NotNullWhen(true)] out JobPrototype? job)
|
||||
|
|
|
|||
|
|
@ -134,11 +134,7 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem
|
|||
_idCard.TryChangeJobIcon(targetId, jobIcon, player: player);
|
||||
_idCard.TryChangeJobDepartment(targetId, job);
|
||||
// Sunrise-Start
|
||||
_idCard.TryChangeJobColor(
|
||||
targetId,
|
||||
PresetIdCardSystem.GetJobColor(_prototype, job),
|
||||
job.RadioIsBold
|
||||
);
|
||||
_idCard.TryChangeJobColor(targetId,_idCard.GetJobColor(_prototype, job), job.RadioIsBold);
|
||||
// Sunrise-End
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -82,29 +82,9 @@ public sealed class PresetIdCardSystem : EntitySystem
|
|||
|
||||
_cardSystem.TryChangeJobTitle(uid, job.LocalizedName);
|
||||
_cardSystem.TryChangeJobDepartment(uid, job);
|
||||
_cardSystem.TryChangeJobColor(uid, GetJobColor(_prototypeManager, job), job.RadioIsBold); // Sunrise-End
|
||||
_cardSystem.TryChangeJobColor(uid, _cardSystem.GetJobColor(_prototypeManager, job), job.RadioIsBold); // Sunrise-End
|
||||
|
||||
if (_prototypeManager.TryIndex(job.Icon, out var jobIcon))
|
||||
_cardSystem.TryChangeJobIcon(uid, jobIcon);
|
||||
}
|
||||
|
||||
// Sunrise-Start
|
||||
public static string GetJobColor(IPrototypeManager prototypeManager, IPrototype job)
|
||||
{
|
||||
var jobCode = job.ID;
|
||||
|
||||
var departments = prototypeManager.EnumeratePrototypes<DepartmentPrototype>().ToList();
|
||||
departments.Sort((a, b) => a.Sort.CompareTo(b.Sort));
|
||||
|
||||
foreach (var department in from department in departments
|
||||
from jobId in department.Roles
|
||||
where jobId == jobCode
|
||||
select department)
|
||||
{
|
||||
return department.Color.ToHex();
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
// Sunrise-End
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Server.IdentityManagement;
|
||||
using Content.Shared._Sunrise.Biocode;
|
||||
using Content.Shared.Clothing.Components;
|
||||
using Content.Shared.Clothing.EntitySystems;
|
||||
using Content.Shared.IdentityManagement.Components;
|
||||
|
|
@ -17,6 +18,7 @@ public sealed class ChameleonClothingSystem : SharedChameleonClothingSystem
|
|||
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
|
||||
[Dependency] private readonly IComponentFactory _factory = default!;
|
||||
[Dependency] private readonly IdentitySystem _identity = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -33,9 +35,17 @@ public sealed class ChameleonClothingSystem : SharedChameleonClothingSystem
|
|||
|
||||
private void OnVerb(EntityUid uid, ChameleonClothingComponent component, GetVerbsEvent<InteractionVerb> args)
|
||||
{
|
||||
if (!args.CanAccess || !args.CanInteract || component.User != args.User)
|
||||
if (!args.CanAccess || !args.CanInteract) // || component.User != args.User // Sunrise-Edit: Не надо
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Verbs.Add(new InteractionVerb()
|
||||
{
|
||||
Text = Loc.GetString("chameleon-component-verb-text"),
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Content.Server.Ghost.Roles.Components;
|
||||
using Content.Shared._Sunrise.Biocode;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Mind;
|
||||
|
|
@ -16,6 +17,7 @@ public sealed class ToggleableGhostRoleSystem : EntitySystem
|
|||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedMindSystem _mind = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
|
|
@ -32,6 +34,14 @@ public sealed class ToggleableGhostRoleSystem : EntitySystem
|
|||
if (args.Handled)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
// check if a mind is present
|
||||
|
|
@ -100,6 +110,14 @@ public sealed class ToggleableGhostRoleSystem : EntitySystem
|
|||
if (args.Hands == null || !args.CanAccess || !args.CanInteract)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
if (TryComp<MindContainerComponent>(uid, out var mind) && mind.HasMind)
|
||||
{
|
||||
ActivationVerb verb = new()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Content.Shared.Access.Components;
|
||||
using Content.Shared.Administration.Logs;
|
||||
using Content.Shared.Database;
|
||||
|
|
@ -213,6 +214,24 @@ public abstract class SharedIdCardSystem : EntitySystem
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
public string GetJobColor(IPrototypeManager prototypeManager, IPrototype job)
|
||||
{
|
||||
var jobCode = job.ID;
|
||||
|
||||
var departments = prototypeManager.EnumeratePrototypes<DepartmentPrototype>().ToList();
|
||||
departments.Sort((a, b) => a.Sort.CompareTo(b.Sort));
|
||||
|
||||
foreach (var department in from department in departments
|
||||
from jobId in department.Roles
|
||||
where jobId == jobCode
|
||||
select department)
|
||||
{
|
||||
return department.Color.ToHex();
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,6 @@ public sealed partial class ItemToggleActiveSoundComponent : Component
|
|||
/// <summary>
|
||||
/// Used when the item emits sound while active.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
[DataField, AutoNetworkedField]
|
||||
public EntityUid? PlayingStream;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
using Content.Shared._Sunrise.Biocode;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.Components;
|
||||
using Content.Shared.Hands.EntitySystems;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Interaction.Events;
|
||||
using Content.Shared.Item.ItemToggle.Components;
|
||||
|
|
@ -23,6 +27,8 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _handsSystem = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
private EntityQuery<ItemToggleComponent> _query;
|
||||
|
||||
|
|
@ -43,6 +49,16 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
SubscribeLocalEvent<ItemToggleHotComponent, IsHotEvent>(OnIsHotEvent);
|
||||
|
||||
SubscribeLocalEvent<ItemToggleActiveSoundComponent, ItemToggledEvent>(UpdateActiveSound);
|
||||
|
||||
SubscribeLocalEvent<ItemToggleComponent, GotUnequippedHandEvent>(OnItemToggleHandUnequipped);
|
||||
}
|
||||
|
||||
private void OnItemToggleHandUnequipped(Entity<ItemToggleComponent> ent, ref GotUnequippedHandEvent args)
|
||||
{
|
||||
if (!ent.Comp.Activated || ent.Owner != args.Unequipped)
|
||||
return;
|
||||
|
||||
Toggle((ent.Owner, ent.Comp), args.User, predicted: ent.Comp.Predictable);
|
||||
}
|
||||
|
||||
private void OnStartup(Entity<ItemToggleComponent> ent, ref ComponentStartup args)
|
||||
|
|
@ -64,6 +80,22 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
if (args.Handled || !ent.Comp.OnUse)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<HandsComponent>(args.User, out var handsComp))
|
||||
{
|
||||
if (!_handsSystem.TryGetActiveItem((args.User, handsComp), out var itemInHand))
|
||||
return;
|
||||
if (itemInHand != ent.Owner)
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryComp<BiocodeComponent>(ent.Owner, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Handled = true;
|
||||
|
||||
Toggle((ent, ent.Comp), args.User, predicted: ent.Comp.Predictable);
|
||||
|
|
@ -75,6 +107,21 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
return;
|
||||
|
||||
var user = args.User;
|
||||
// Sunrise-Start
|
||||
if (TryComp<HandsComponent>(args.User, out var handsComp))
|
||||
{
|
||||
if (!_handsSystem.TryGetActiveItem((args.User, handsComp), out var itemInHand))
|
||||
return;
|
||||
if (itemInHand != ent.Owner)
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryComp<BiocodeComponent>(ent.Owner, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Verbs.Add(new ActivationVerb()
|
||||
{
|
||||
|
|
@ -91,6 +138,22 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
if (args.Handled || !ent.Comp.OnActivate)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<HandsComponent>(args.User, out var handsComp))
|
||||
{
|
||||
if (!_handsSystem.TryGetActiveItem((args.User, handsComp), out var itemInHand))
|
||||
return;
|
||||
if (itemInHand != ent.Owner)
|
||||
return;
|
||||
}
|
||||
|
||||
if (TryComp<BiocodeComponent>(ent.Owner, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Handled = true;
|
||||
Toggle((ent.Owner, ent.Comp), args.User, predicted: ent.Comp.Predictable);
|
||||
}
|
||||
|
|
@ -273,6 +336,9 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
/// </summary>
|
||||
private void UpdateActiveSound(Entity<ItemToggleActiveSoundComponent> ent, ref ItemToggledEvent args)
|
||||
{
|
||||
if (_netManager.IsClient)
|
||||
return;
|
||||
|
||||
var (uid, comp) = ent;
|
||||
if (!args.Activated)
|
||||
{
|
||||
|
|
@ -283,9 +349,7 @@ public sealed class ItemToggleSystem : EntitySystem
|
|||
if (comp.ActiveSound != null && comp.PlayingStream == null)
|
||||
{
|
||||
var loop = comp.ActiveSound.Params.WithLoop(true);
|
||||
var stream = args.Predicted
|
||||
? _audio.PlayPredicted(comp.ActiveSound, uid, args.User, loop)
|
||||
: _audio.PlayPvs(comp.ActiveSound, uid, loop);
|
||||
var stream = _audio.PlayPvs(comp.ActiveSound, uid, loop);
|
||||
if (stream?.Entity is {} entity)
|
||||
comp.PlayingStream = entity;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,13 +26,15 @@ namespace Content.Shared.PAI
|
|||
private void OnMapInit(EntityUid uid, PAIComponent component, MapInitEvent args)
|
||||
{
|
||||
_actionsSystem.AddAction(uid, ref component.MidiAction, component.MidiActionId);
|
||||
_actionsSystem.AddAction(uid, ref component.MapAction, component.MapActionId);
|
||||
// Sunrise-Edit
|
||||
//_actionsSystem.AddAction(uid, ref component.MapAction, component.MapActionId);
|
||||
}
|
||||
|
||||
private void OnShutdown(EntityUid uid, PAIComponent component, ComponentShutdown args)
|
||||
{
|
||||
_actionsSystem.RemoveAction(uid, component.MidiAction);
|
||||
_actionsSystem.RemoveAction(uid, component.MapAction);
|
||||
// Sunrise-Edit
|
||||
//_actionsSystem.RemoveAction(uid, component.MapAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
using Content.Shared._Sunrise.Biocode;
|
||||
using Content.Shared.ActionBlocker;
|
||||
using Content.Shared.Administration.Managers;
|
||||
using Content.Shared.Ghost;
|
||||
|
|
@ -21,6 +22,7 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
[Dependency] private readonly SharedPopupSystem _popupSystem = default!;
|
||||
[Dependency] private readonly SharedHandsSystem _hands = default!;
|
||||
[Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -70,6 +72,14 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
if (component.VerbOnly || !ShouldAddVerb(uid, component, args))
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Verbs.Add(new ActivationVerb
|
||||
{
|
||||
Act = () => InteractUI(args.User, uid, component),
|
||||
|
|
@ -84,6 +94,14 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
if (!component.VerbOnly || !ShouldAddVerb(uid, component, args))
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Verbs.Add(new Verb
|
||||
{
|
||||
Act = () => InteractUI(args.User, uid, component),
|
||||
|
|
@ -130,6 +148,14 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
if (component.RequiredItems != null)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Handled = InteractUI(args.User, uid, component);
|
||||
}
|
||||
|
||||
|
|
@ -144,6 +170,14 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
if (component.RequiredItems != null)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
args.Handled = InteractUI(args.User, uid, component);
|
||||
}
|
||||
|
||||
|
|
@ -158,6 +192,14 @@ public sealed partial class ActivatableUISystem : EntitySystem
|
|||
if (component.RequiredItems == null)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
if (_whitelistSystem.IsWhitelistFail(component.RequiredItems, args.Used))
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System.Linq;
|
||||
using Content.Shared._Sunrise.Biocode;
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Hands;
|
||||
using Content.Shared.Hands.Components;
|
||||
|
|
@ -35,6 +36,7 @@ public sealed class WieldableSystem : EntitySystem
|
|||
[Dependency] private readonly SharedGunSystem _gun = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly INetManager _netManager = default!;
|
||||
[Dependency] private readonly BiocodeSystem _biocodeSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -138,6 +140,14 @@ public sealed class WieldableSystem : EntitySystem
|
|||
if (args.Hands == null || !args.CanAccess || !args.CanInteract)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
if (!_handsSystem.IsHolding(args.User, uid, out _, args.Hands))
|
||||
return;
|
||||
|
||||
|
|
@ -161,6 +171,14 @@ public sealed class WieldableSystem : EntitySystem
|
|||
if (args.Handled)
|
||||
return;
|
||||
|
||||
// Sunrise-Start
|
||||
if (TryComp<BiocodeComponent>(uid, out var biocodedComponent))
|
||||
{
|
||||
if (!_biocodeSystem.CanUse(args.User, biocodedComponent.Factions))
|
||||
return;
|
||||
}
|
||||
// Sunrise-End
|
||||
|
||||
if (!component.Wielded)
|
||||
args.Handled = TryWield(uid, component, args.User);
|
||||
else if (component.UnwieldOnUse)
|
||||
|
|
|
|||
16
Content.Shared/_Sunrise/Biocode/BiocodeComponent.cs
Normal file
16
Content.Shared/_Sunrise/Biocode/BiocodeComponent.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
using Content.Shared.NPC.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Set;
|
||||
|
||||
namespace Content.Shared._Sunrise.Biocode;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed partial class BiocodeComponent : Component
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("alertText")]
|
||||
public string AlertText = "";
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite),
|
||||
DataField("factions", customTypeSerializer:typeof(PrototypeIdHashSetSerializer<NpcFactionPrototype>))]
|
||||
public HashSet<string> Factions = new();
|
||||
}
|
||||
22
Content.Shared/_Sunrise/Biocode/BiocodeSystem.cs
Normal file
22
Content.Shared/_Sunrise/Biocode/BiocodeSystem.cs
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
using Content.Shared.NPC.Components;
|
||||
|
||||
namespace Content.Shared._Sunrise.Biocode;
|
||||
|
||||
public sealed class BiocodeSystem : EntitySystem
|
||||
{
|
||||
|
||||
public bool CanUse(EntityUid user, HashSet<string> factions)
|
||||
{
|
||||
var canUse = false;
|
||||
if (!TryComp<NpcFactionMemberComponent>(user, out var npcFactionMemberComponent))
|
||||
return canUse;
|
||||
|
||||
foreach (var faction in npcFactionMemberComponent.Factions)
|
||||
{
|
||||
if (factions.Contains(faction))
|
||||
canUse = true;
|
||||
}
|
||||
|
||||
return canUse;
|
||||
}
|
||||
}
|
||||
|
|
@ -81,14 +81,6 @@
|
|||
Telecrystal: 8
|
||||
categories:
|
||||
- UplinkWeaponry
|
||||
#Sunrise-start
|
||||
conditions:
|
||||
- !type:StoreWhitelistCondition
|
||||
blacklist:
|
||||
tags:
|
||||
- SyndieAgentUplink
|
||||
- AssaultOpsUplink
|
||||
#Sunrise-end
|
||||
|
||||
- type: listing
|
||||
id: UplinkEnergyDagger
|
||||
|
|
|
|||
|
|
@ -18,6 +18,11 @@
|
|||
type: StorageBoundUserInterface
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: Clothing
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
|
|
|||
|
|
@ -18,4 +18,9 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,11 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: ClothingHandsChameleon
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
|
|
|||
|
|
@ -23,6 +23,11 @@
|
|||
- type: HideLayerClothing
|
||||
slots:
|
||||
- Snout
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: ClothingMaskGasChameleon
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
|
|
|||
|
|
@ -18,3 +18,8 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
|
|
|||
|
|
@ -198,6 +198,11 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: ClothingShoesChameleon
|
||||
|
|
|
|||
|
|
@ -40,3 +40,8 @@
|
|||
interfaces:
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
|
|
|||
|
|
@ -127,6 +127,9 @@
|
|||
worldTargetActions:
|
||||
- Emag
|
||||
- HandheldHealthAnalyzerUnpowered
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
|
|
|
|||
|
|
@ -606,6 +606,11 @@
|
|||
type: AgentIDCardBoundUserInterface
|
||||
enum.ChameleonUiKey.Key:
|
||||
type: ChameleonBoundUserInterface
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
name: passenger ID card
|
||||
|
|
|
|||
|
|
@ -39,15 +39,15 @@
|
|||
variation: 0.125
|
||||
activatedDamage:
|
||||
types:
|
||||
Slash: 15
|
||||
Heat: 15
|
||||
Slash: 12
|
||||
Heat: 12
|
||||
Structural: 20
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -135
|
||||
attackRate: 1
|
||||
damage:
|
||||
types:
|
||||
Blunt: 4.5
|
||||
Blunt: 1
|
||||
- type: Item
|
||||
size: Small
|
||||
- type: UseDelay
|
||||
|
|
@ -188,8 +188,8 @@
|
|||
variation: 0.250
|
||||
activatedDamage:
|
||||
types:
|
||||
Slash: 10
|
||||
Heat: 10
|
||||
Slash: 8
|
||||
Heat: 8
|
||||
- type: ComponentToggler
|
||||
components:
|
||||
- type: Sharp
|
||||
|
|
@ -244,7 +244,7 @@
|
|||
state: e_dagger
|
||||
- type: SpawnItemsOnUse
|
||||
items:
|
||||
- id: EnergyDagger
|
||||
- id: EnergyDaggerBiocode # Sunrise-Edit
|
||||
sound:
|
||||
path: /Audio/Effects/unwrap.ogg
|
||||
|
||||
|
|
@ -297,9 +297,9 @@
|
|||
variation: 0.250
|
||||
activatedDamage:
|
||||
types:
|
||||
Slash: 12
|
||||
Heat: 12
|
||||
Structural: 15
|
||||
Slash: 6
|
||||
Heat: 6
|
||||
Structural: 10
|
||||
- type: ItemToggleActiveSound
|
||||
activeSound:
|
||||
path: /Audio/Weapons/ebladehum.ogg
|
||||
|
|
@ -316,11 +316,11 @@
|
|||
wieldSound: null # esword light sound instead
|
||||
- type: MeleeWeapon
|
||||
wideAnimationRotation: -135
|
||||
attackRate: 1.5
|
||||
attackRate: 1.75
|
||||
angle: 100
|
||||
damage:
|
||||
types:
|
||||
Blunt: 4.5
|
||||
Blunt: 1
|
||||
- type: Sprite
|
||||
sprite: Objects/Weapons/Melee/e_sword_double.rsi
|
||||
layers:
|
||||
|
|
@ -334,8 +334,8 @@
|
|||
size: Small
|
||||
sprite: Objects/Weapons/Melee/e_sword_double-inhands.rsi
|
||||
- type: Reflect
|
||||
reflectProb: .75
|
||||
spread: 75
|
||||
reflectProb: .50
|
||||
spread: 100
|
||||
|
||||
- type: entity
|
||||
suffix: One-Handed, For Borgs
|
||||
|
|
|
|||
|
|
@ -206,6 +206,7 @@
|
|||
items:
|
||||
- SyndicateJawsOfLife
|
||||
- PinpointerNuclear
|
||||
- WeaponPistolEchis
|
||||
|
||||
- type: entity
|
||||
id: BorgModuleSyndicateMedical
|
||||
|
|
@ -233,7 +234,7 @@
|
|||
- state: icon-syndicate
|
||||
- type: ItemBorgModule
|
||||
items:
|
||||
- EnergySword
|
||||
- EnergyDaggerLoud
|
||||
- LightMachineGunBorg
|
||||
|
||||
- type: entity
|
||||
|
|
|
|||
|
|
@ -10,6 +10,11 @@
|
|||
- type: Construction
|
||||
graph: EnergySwordDoubleGraph
|
||||
node: DoubleEnergySwordNode
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: EnergySword
|
||||
|
|
@ -25,4 +30,22 @@
|
|||
- EnergySword
|
||||
- type: Construction
|
||||
graph: EnergySwordDoubleGraph
|
||||
node: start
|
||||
node: start
|
||||
# Sunrise-Start
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
# Sunrise-End
|
||||
|
||||
- type: entity
|
||||
parent: EnergyDagger
|
||||
id: EnergyDaggerBiocode
|
||||
suffix: BIOCODE
|
||||
components:
|
||||
- type: FactionWeaponBlocker
|
||||
factions:
|
||||
- Syndicate
|
||||
alertText: Данное оружие биокодировано. Вы не можете его использовать.
|
||||
- type: Biocode
|
||||
factions:
|
||||
- Syndicate
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue