43
Content.Client/Overlays/ShowSyndicateIconsSystem.cs
Normal file
43
Content.Client/Overlays/ShowSyndicateIconsSystem.cs
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
using Content.Shared.Overlays;
|
||||||
|
using Content.Shared.StatusIcon.Components;
|
||||||
|
using Content.Shared.NukeOps;
|
||||||
|
using Content.Shared.StatusIcon;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
|
namespace Content.Client.Overlays;
|
||||||
|
public sealed class ShowSyndicateIconsSystem : EquipmentHudSystem<ShowSyndicateIconsComponent>
|
||||||
|
{
|
||||||
|
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||||
|
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
SubscribeLocalEvent<NukeOperativeComponent, GetStatusIconsEvent>(OnGetStatusIconsEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetStatusIconsEvent(EntityUid uid, NukeOperativeComponent nukeOperativeComponent, ref GetStatusIconsEvent args)
|
||||||
|
{
|
||||||
|
if (!IsActive || args.InContainer)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var healthIcons = SyndicateIcon(uid, nukeOperativeComponent);
|
||||||
|
|
||||||
|
args.StatusIcons.AddRange(healthIcons);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IReadOnlyList<StatusIconPrototype> SyndicateIcon(EntityUid uid, NukeOperativeComponent nukeOperativeComponent)
|
||||||
|
{
|
||||||
|
var result = new List<StatusIconPrototype>();
|
||||||
|
|
||||||
|
if (_prototype.TryIndex<StatusIconPrototype>(nukeOperativeComponent.SyndStatusIcon, out var syndicateicon))
|
||||||
|
{
|
||||||
|
result.Add(syndicateicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
using Robust.Shared.Audio;
|
|
||||||
|
|
||||||
namespace Content.Server.GameTicking.Rules.Components;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This is used for tagging a mob as a nuke operative.
|
|
||||||
/// </summary>
|
|
||||||
[RegisterComponent]
|
|
||||||
public sealed partial class NukeOperativeComponent : Component
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Path to antagonist alert sound.
|
|
||||||
/// </summary>
|
|
||||||
[DataField("greetSoundNotification")]
|
|
||||||
public SoundSpecifier GreetSoundNotification = new SoundPathSpecifier("/Audio/Ambience/Antag/nukeops_start.ogg");
|
|
||||||
}
|
|
||||||
@@ -42,6 +42,7 @@ public partial class InventorySystem
|
|||||||
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowSecurityIconsComponent>>(RelayInventoryEvent);
|
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowSecurityIconsComponent>>(RelayInventoryEvent);
|
||||||
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowHungerIconsComponent>>(RelayInventoryEvent);
|
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowHungerIconsComponent>>(RelayInventoryEvent);
|
||||||
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowThirstIconsComponent>>(RelayInventoryEvent);
|
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowThirstIconsComponent>>(RelayInventoryEvent);
|
||||||
|
SubscribeLocalEvent<InventoryComponent, RefreshEquipmentHudEvent<ShowSyndicateIconsComponent>>(RelayInventoryEvent);
|
||||||
|
|
||||||
SubscribeLocalEvent<InventoryComponent, GetVerbsEvent<EquipmentVerb>>(OnGetEquipmentVerbs);
|
SubscribeLocalEvent<InventoryComponent, GetVerbsEvent<EquipmentVerb>>(OnGetEquipmentVerbs);
|
||||||
}
|
}
|
||||||
|
|||||||
27
Content.Shared/NukeOps/NukeOperativeComponent.cs
Normal file
27
Content.Shared/NukeOps/NukeOperativeComponent.cs
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
using Robust.Shared.Audio;
|
||||||
|
using Content.Shared.StatusIcon;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||||
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||||
|
|
||||||
|
namespace Content.Shared.NukeOps;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This is used for tagging a mob as a nuke operative.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, NetworkedComponent]
|
||||||
|
public sealed partial class NukeOperativeComponent : Component
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Path to antagonist alert sound.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("greetSoundNotification")]
|
||||||
|
public SoundSpecifier GreetSoundNotification = new SoundPathSpecifier("/Audio/Ambience/Antag/nukeops_start.ogg");
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
[DataField("syndStatusIcon", customTypeSerializer: typeof(PrototypeIdSerializer<StatusIconPrototype>))]
|
||||||
|
public string SyndStatusIcon = "SyndicateFaction";
|
||||||
|
}
|
||||||
9
Content.Shared/Overlays/ShowSyndicateIconsComponent.cs
Normal file
9
Content.Shared/Overlays/ShowSyndicateIconsComponent.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using Robust.Shared.GameStates;
|
||||||
|
|
||||||
|
namespace Content.Shared.Overlays;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent, NetworkedComponent]
|
||||||
|
public sealed partial class ShowSyndicateIconsComponent : Component {}
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
- id: ClothingUniformJumpsuitOperative
|
- id: ClothingUniformJumpsuitOperative
|
||||||
- id: ClothingUniformJumpskirtOperative
|
- id: ClothingUniformJumpskirtOperative
|
||||||
- id: ClothingHeadsetAltSyndicate
|
- id: ClothingHeadsetAltSyndicate
|
||||||
|
- id: ClothingEyesHudSyndicate
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: ClosetEmergencyFilledRandom
|
id: ClosetEmergencyFilledRandom
|
||||||
|
|||||||
@@ -129,6 +129,7 @@
|
|||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/Eyes/Hud/medsecengi.rsi
|
sprite: Clothing/Eyes/Hud/medsecengi.rsi
|
||||||
- type: ShowSecurityIcons
|
- type: ShowSecurityIcons
|
||||||
|
- type: ShowSyndicateIcons
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: ClothingEyesBase
|
parent: ClothingEyesBase
|
||||||
@@ -143,3 +144,18 @@
|
|||||||
- type: ShowSecurityIcons
|
- type: ShowSecurityIcons
|
||||||
- type: ShowHungerIcons
|
- type: ShowHungerIcons
|
||||||
- type: ShowThirstIcons
|
- type: ShowThirstIcons
|
||||||
|
- type: ShowSyndicateIcons
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: ClothingEyesBase
|
||||||
|
id: ClothingEyesHudSyndicate
|
||||||
|
name: syndicate visor
|
||||||
|
description: The syndicate's professional head-up display, designed for better detection of humanoids and their subsequent elimination.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/Eyes/Hud/synd.rsi
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/Eyes/Hud/synd.rsi
|
||||||
|
- type: ShowSyndicateIcons
|
||||||
|
- type: ShowSecurityIcons
|
||||||
|
|
||||||
|
|||||||
@@ -103,8 +103,7 @@
|
|||||||
jumpsuit: ClothingUniformJumpsuitOperative
|
jumpsuit: ClothingUniformJumpsuitOperative
|
||||||
back: ClothingBackpackDuffelSyndicateOperative
|
back: ClothingBackpackDuffelSyndicateOperative
|
||||||
mask: ClothingMaskGasSyndicate
|
mask: ClothingMaskGasSyndicate
|
||||||
# eyes: Night Vision Goggles whenever they're made
|
eyes: ClothingEyesHudSyndicate
|
||||||
eyes: ClothingEyesGlassesMeson
|
|
||||||
ears: ClothingHeadsetAltSyndicate
|
ears: ClothingHeadsetAltSyndicate
|
||||||
gloves: ClothingHandsGlovesCombat
|
gloves: ClothingHandsGlovesCombat
|
||||||
outerClothing: ClothingOuterHardsuitSyndie
|
outerClothing: ClothingOuterHardsuitSyndie
|
||||||
@@ -124,8 +123,7 @@
|
|||||||
jumpsuit: ClothingUniformJumpsuitOperative
|
jumpsuit: ClothingUniformJumpsuitOperative
|
||||||
back: ClothingBackpackDuffelSyndicateOperative
|
back: ClothingBackpackDuffelSyndicateOperative
|
||||||
mask: ClothingMaskGasSyndicate
|
mask: ClothingMaskGasSyndicate
|
||||||
# eyes: Night Vision Goggles whenever they're made
|
eyes: ClothingEyesHudSyndicate
|
||||||
eyes: ClothingEyesGlassesMeson
|
|
||||||
ears: ClothingHeadsetAltSyndicate
|
ears: ClothingHeadsetAltSyndicate
|
||||||
gloves: ClothingHandsGlovesCombat
|
gloves: ClothingHandsGlovesCombat
|
||||||
outerClothing: ClothingOuterHardsuitSyndieCommander
|
outerClothing: ClothingOuterHardsuitSyndieCommander
|
||||||
@@ -147,7 +145,7 @@
|
|||||||
jumpsuit: ClothingUniformJumpsuitOperative
|
jumpsuit: ClothingUniformJumpsuitOperative
|
||||||
back: ClothingBackpackDuffelSyndicateOperativeMedic
|
back: ClothingBackpackDuffelSyndicateOperativeMedic
|
||||||
mask: ClothingMaskGasSyndicate
|
mask: ClothingMaskGasSyndicate
|
||||||
eyes: ClothingEyesHudMedical
|
eyes: ClothingEyesHudSyndicate
|
||||||
ears: ClothingHeadsetAltSyndicate
|
ears: ClothingHeadsetAltSyndicate
|
||||||
gloves: ClothingHandsGlovesCombat
|
gloves: ClothingHandsGlovesCombat
|
||||||
outerClothing: ClothingOuterHardsuitMedic
|
outerClothing: ClothingOuterHardsuitMedic
|
||||||
|
|||||||
@@ -18,3 +18,11 @@
|
|||||||
icon:
|
icon:
|
||||||
sprite: Interface/Misc/job_icons.rsi
|
sprite: Interface/Misc/job_icons.rsi
|
||||||
state: HeadRevolutionary
|
state: HeadRevolutionary
|
||||||
|
|
||||||
|
- type: statusIcon
|
||||||
|
id: SyndicateFaction
|
||||||
|
priority: 0
|
||||||
|
locationPreference: Left
|
||||||
|
icon:
|
||||||
|
sprite: Interface/Misc/job_icons.rsi
|
||||||
|
state: Syndicate
|
||||||
|
|||||||
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/equipped-EYES.png
Normal file
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/equipped-EYES.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/icon.png
Normal file
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/inhand-left.png
Normal file
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/inhand-left.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 343 B |
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/inhand-right.png
Normal file
BIN
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/inhand-right.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 352 B |
26
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json
Normal file
26
Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Made by IntegerTempest",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "equipped-EYES",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-left",
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inhand-right",
|
||||||
|
"directions": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Interface/Misc/job_icons.rsi/Syndicate.png
Normal file
BIN
Resources/Textures/Interface/Misc/job_icons.rsi/Syndicate.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
@@ -169,6 +169,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "HeadRevolutionary"
|
"name": "HeadRevolutionary"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Syndicate"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user