Add tooltips to the agent ID job icons and improve status icon prototypes (#28575)
* add tooltips to agentid job icons * forgot to stage this * make StatusIconPrototype abstract * minor visual improvements * cleanup * use currentculture to sort job names * review
This commit is contained in:
@@ -38,7 +38,7 @@ namespace Content.Client.Access.UI
|
|||||||
SendMessage(new AgentIDCardJobChangedMessage(newJob));
|
SendMessage(new AgentIDCardJobChangedMessage(newJob));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnJobIconChanged(ProtoId<StatusIconPrototype> newJobIconId)
|
public void OnJobIconChanged(ProtoId<JobIconPrototype> newJobIconId)
|
||||||
{
|
{
|
||||||
SendMessage(new AgentIDCardJobIconChangedMessage(newJobIconId));
|
SendMessage(new AgentIDCardJobIconChangedMessage(newJobIconId));
|
||||||
}
|
}
|
||||||
@@ -55,7 +55,7 @@ namespace Content.Client.Access.UI
|
|||||||
|
|
||||||
_window.SetCurrentName(cast.CurrentName);
|
_window.SetCurrentName(cast.CurrentName);
|
||||||
_window.SetCurrentJob(cast.CurrentJob);
|
_window.SetCurrentJob(cast.CurrentJob);
|
||||||
_window.SetAllowedIcons(cast.Icons, cast.CurrentJobIconId);
|
_window.SetAllowedIcons(cast.CurrentJobIconId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,9 @@
|
|||||||
<LineEdit Name="NameLineEdit" />
|
<LineEdit Name="NameLineEdit" />
|
||||||
<Label Name="CurrentJob" Text="{Loc 'agent-id-card-current-job'}" />
|
<Label Name="CurrentJob" Text="{Loc 'agent-id-card-current-job'}" />
|
||||||
<LineEdit Name="JobLineEdit" />
|
<LineEdit Name="JobLineEdit" />
|
||||||
<BoxContainer Orientation="Horizontal">
|
<Label Text="{Loc 'agent-id-card-job-icon-label'}"/>
|
||||||
<Label Text="{Loc 'agent-id-card-job-icon-label'}"/>
|
<GridContainer Name="IconGrid" Columns="10">
|
||||||
<Control HorizontalExpand="True" MinSize="50 0"/>
|
<!-- Job icon buttons are generated in the code -->
|
||||||
<GridContainer Name="IconGrid" Columns="10">
|
</GridContainer>
|
||||||
<!-- Job icon buttons are generated in the code -->
|
|
||||||
</GridContainer>
|
|
||||||
</BoxContainer>
|
|
||||||
</BoxContainer>
|
</BoxContainer>
|
||||||
</DefaultWindow>
|
</DefaultWindow>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using Robust.Client.UserInterface.CustomControls;
|
|||||||
using Robust.Client.UserInterface.XAML;
|
using Robust.Client.UserInterface.XAML;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Content.Client.Access.UI
|
namespace Content.Client.Access.UI
|
||||||
{
|
{
|
||||||
@@ -23,7 +24,7 @@ namespace Content.Client.Access.UI
|
|||||||
public event Action<string>? OnNameChanged;
|
public event Action<string>? OnNameChanged;
|
||||||
public event Action<string>? OnJobChanged;
|
public event Action<string>? OnJobChanged;
|
||||||
|
|
||||||
public event Action<ProtoId<StatusIconPrototype>>? OnJobIconChanged;
|
public event Action<ProtoId<JobIconPrototype>>? OnJobIconChanged;
|
||||||
|
|
||||||
public AgentIDCardWindow()
|
public AgentIDCardWindow()
|
||||||
{
|
{
|
||||||
@@ -38,17 +39,16 @@ namespace Content.Client.Access.UI
|
|||||||
JobLineEdit.OnFocusExit += e => OnJobChanged?.Invoke(e.Text);
|
JobLineEdit.OnFocusExit += e => OnJobChanged?.Invoke(e.Text);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetAllowedIcons(HashSet<ProtoId<StatusIconPrototype>> icons, string currentJobIconId)
|
public void SetAllowedIcons(string currentJobIconId)
|
||||||
{
|
{
|
||||||
IconGrid.DisposeAllChildren();
|
IconGrid.DisposeAllChildren();
|
||||||
|
|
||||||
var jobIconGroup = new ButtonGroup();
|
var jobIconButtonGroup = new ButtonGroup();
|
||||||
var i = 0;
|
var i = 0;
|
||||||
foreach (var jobIconId in icons)
|
var icons = _prototypeManager.EnumeratePrototypes<JobIconPrototype>().Where(icon => icon.AllowSelection).ToList();
|
||||||
|
icons.Sort((x, y) => string.Compare(x.LocalizedJobName, y.LocalizedJobName, StringComparison.CurrentCulture));
|
||||||
|
foreach (var jobIcon in icons)
|
||||||
{
|
{
|
||||||
if (!_prototypeManager.TryIndex(jobIconId, out var jobIcon))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
String styleBase = StyleBase.ButtonOpenBoth;
|
String styleBase = StyleBase.ButtonOpenBoth;
|
||||||
var modulo = i % JobIconColumnCount;
|
var modulo = i % JobIconColumnCount;
|
||||||
if (modulo == 0)
|
if (modulo == 0)
|
||||||
@@ -62,8 +62,9 @@ namespace Content.Client.Access.UI
|
|||||||
Access = AccessLevel.Public,
|
Access = AccessLevel.Public,
|
||||||
StyleClasses = { styleBase },
|
StyleClasses = { styleBase },
|
||||||
MaxSize = new Vector2(42, 28),
|
MaxSize = new Vector2(42, 28),
|
||||||
Group = jobIconGroup,
|
Group = jobIconButtonGroup,
|
||||||
Pressed = i == 0,
|
Pressed = currentJobIconId == jobIcon.ID,
|
||||||
|
ToolTip = jobIcon.LocalizedJobName
|
||||||
};
|
};
|
||||||
|
|
||||||
// Generate buttons textures
|
// Generate buttons textures
|
||||||
@@ -78,9 +79,6 @@ namespace Content.Client.Access.UI
|
|||||||
jobIconButton.OnPressed += _ => OnJobIconChanged?.Invoke(jobIcon.ID);
|
jobIconButton.OnPressed += _ => OnJobIconChanged?.Invoke(jobIcon.ID);
|
||||||
IconGrid.AddChild(jobIconButton);
|
IconGrid.AddChild(jobIconButton);
|
||||||
|
|
||||||
if (jobIconId.Equals(currentJobIconId))
|
|
||||||
jobIconButton.Pressed = true;
|
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public sealed class CrewManifestSection : BoxContainer
|
|||||||
title.SetMessage(entry.JobTitle);
|
title.SetMessage(entry.JobTitle);
|
||||||
|
|
||||||
|
|
||||||
if (prototypeManager.TryIndex<StatusIconPrototype>(entry.JobIcon, out var jobIcon))
|
if (prototypeManager.TryIndex<JobIconPrototype>(entry.JobIcon, out var jobIcon))
|
||||||
{
|
{
|
||||||
var icon = new TextureRect()
|
var icon = new TextureRect()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ public sealed partial class CrewMonitoringWindow : FancyWindow
|
|||||||
mainContainer.AddChild(jobContainer);
|
mainContainer.AddChild(jobContainer);
|
||||||
|
|
||||||
// Job icon
|
// Job icon
|
||||||
if (_prototypeManager.TryIndex<StatusIconPrototype>(sensor.JobIcon, out var proto))
|
if (_prototypeManager.TryIndex<JobIconPrototype>(sensor.JobIcon, out var proto))
|
||||||
{
|
{
|
||||||
var jobIcon = new TextureRect()
|
var jobIcon = new TextureRect()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public sealed class EntityHealthBarOverlay : Overlay
|
|||||||
|
|
||||||
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
|
public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV;
|
||||||
public HashSet<string> DamageContainers = new();
|
public HashSet<string> DamageContainers = new();
|
||||||
public ProtoId<StatusIconPrototype>? StatusIcon;
|
public ProtoId<HealthIconPrototype>? StatusIcon;
|
||||||
|
|
||||||
public EntityHealthBarOverlay(IEntityManager entManager, IPrototypeManager prototype)
|
public EntityHealthBarOverlay(IEntityManager entManager, IPrototypeManager prototype)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ public sealed class ShowHealthIconsSystem : EquipmentHudSystem<ShowHealthIconsCo
|
|||||||
args.StatusIcons.AddRange(healthIcons);
|
args.StatusIcons.AddRange(healthIcons);
|
||||||
}
|
}
|
||||||
|
|
||||||
private IReadOnlyList<StatusIconPrototype> DecideHealthIcons(Entity<DamageableComponent> entity)
|
private IReadOnlyList<HealthIconPrototype> DecideHealthIcons(Entity<DamageableComponent> entity)
|
||||||
{
|
{
|
||||||
var damageableComponent = entity.Comp;
|
var damageableComponent = entity.Comp;
|
||||||
|
|
||||||
if (damageableComponent.DamageContainerID == null ||
|
if (damageableComponent.DamageContainerID == null ||
|
||||||
!DamageContainers.Contains(damageableComponent.DamageContainerID))
|
!DamageContainers.Contains(damageableComponent.DamageContainerID))
|
||||||
{
|
{
|
||||||
return Array.Empty<StatusIconPrototype>();
|
return Array.Empty<HealthIconPrototype>();
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = new List<StatusIconPrototype>();
|
var result = new List<HealthIconPrototype>();
|
||||||
|
|
||||||
// Here you could check health status, diseases, mind status, etc. and pick a good icon, or multiple depending on whatever.
|
// Here you could check health status, diseases, mind status, etc. and pick a good icon, or multiple depending on whatever.
|
||||||
if (damageableComponent?.DamageContainerID == "Biological")
|
if (damageableComponent?.DamageContainerID == "Biological")
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public sealed class ShowJobIconsSystem : EquipmentHudSystem<ShowJobIconsComponen
|
|||||||
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
[Dependency] private readonly IPrototypeManager _prototype = default!;
|
||||||
[Dependency] private readonly AccessReaderSystem _accessReader = default!;
|
[Dependency] private readonly AccessReaderSystem _accessReader = default!;
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<JobIconPrototype>]
|
||||||
private const string JobIconForNoId = "JobIconNoId";
|
private const string JobIconForNoId = "JobIconNoId";
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
@@ -52,7 +52,7 @@ public sealed class ShowJobIconsSystem : EquipmentHudSystem<ShowJobIconsComponen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_prototype.TryIndex<StatusIconPrototype>(iconId, out var iconPrototype))
|
if (_prototype.TryIndex<JobIconPrototype>(iconId, out var iconPrototype))
|
||||||
ev.StatusIcons.Add(iconPrototype);
|
ev.StatusIcons.Add(iconPrototype);
|
||||||
else
|
else
|
||||||
Log.Error($"Invalid job icon prototype: {iconPrototype}");
|
Log.Error($"Invalid job icon prototype: {iconPrototype}");
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public sealed class ShowSyndicateIconsSystem : EquipmentHudSystem<ShowSyndicateI
|
|||||||
if (!IsActive)
|
if (!IsActive)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_prototype.TryIndex<StatusIconPrototype>(component.SyndStatusIcon, out var iconPrototype))
|
if (_prototype.TryIndex<FactionIconPrototype>(component.SyndStatusIcon, out var iconPrototype))
|
||||||
ev.StatusIcons.Add(iconPrototype);
|
ev.StatusIcons.Add(iconPrototype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,7 @@
|
|||||||
using Content.Shared.StatusIcon;
|
namespace Content.Server.Access.Components;
|
||||||
using Robust.Shared.Prototypes;
|
|
||||||
|
|
||||||
namespace Content.Server.Access.Components
|
/// <summary>
|
||||||
{
|
/// Allows an ID card to copy accesses from other IDs and to change the name, job title and job icon via an interface.
|
||||||
[RegisterComponent]
|
/// </summary>
|
||||||
public sealed partial class AgentIDCardComponent : Component
|
[RegisterComponent]
|
||||||
{
|
public sealed partial class AgentIDCardComponent : Component { }
|
||||||
/// <summary>
|
|
||||||
/// Set of job icons that the agent ID card can show.
|
|
||||||
/// </summary>
|
|
||||||
[DataField]
|
|
||||||
public HashSet<ProtoId<StatusIconPrototype>> Icons;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ namespace Content.Server.Access.Systems
|
|||||||
if (!TryComp<IdCardComponent>(uid, out var idCard))
|
if (!TryComp<IdCardComponent>(uid, out var idCard))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var state = new AgentIDCardBoundUserInterfaceState(idCard.FullName ?? "", idCard.JobTitle ?? "", idCard.JobIcon ?? "", component.Icons);
|
var state = new AgentIDCardBoundUserInterfaceState(idCard.FullName ?? "", idCard.JobTitle ?? "", idCard.JobIcon);
|
||||||
_uiSystem.SetUiState(uid, AgentIDCardUiKey.Key, state);
|
_uiSystem.SetUiState(uid, AgentIDCardUiKey.Key, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@ namespace Content.Server.Access.Systems
|
|||||||
_cardSystem.TryChangeJobDepartment(uid, job, idCard);
|
_cardSystem.TryChangeJobDepartment(uid, job, idCard);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryFindJobProtoFromIcon(StatusIconPrototype jobIcon, [NotNullWhen(true)] out JobPrototype? job)
|
private bool TryFindJobProtoFromIcon(JobIconPrototype jobIcon, [NotNullWhen(true)] out JobPrototype? job)
|
||||||
{
|
{
|
||||||
foreach (var jobPrototype in _prototypeManager.EnumeratePrototypes<JobPrototype>())
|
foreach (var jobPrototype in _prototypeManager.EnumeratePrototypes<JobPrototype>())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -323,8 +323,7 @@ public sealed class SuitSensorSystem : EntitySystem
|
|||||||
userName = card.Comp.FullName;
|
userName = card.Comp.FullName;
|
||||||
if (card.Comp.JobTitle != null)
|
if (card.Comp.JobTitle != null)
|
||||||
userJob = card.Comp.JobTitle;
|
userJob = card.Comp.JobTitle;
|
||||||
if (card.Comp.JobIcon != null)
|
userJobIcon = card.Comp.JobIcon;
|
||||||
userJobIcon = card.Comp.JobIcon;
|
|
||||||
|
|
||||||
foreach (var department in card.Comp.JobDepartments)
|
foreach (var department in card.Comp.JobDepartments)
|
||||||
userJobDepartments.Add(Loc.GetString(department));
|
userJobDepartments.Add(Loc.GetString(department));
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ using Content.Shared.Access.Systems;
|
|||||||
using Content.Shared.PDA;
|
using Content.Shared.PDA;
|
||||||
using Content.Shared.StatusIcon;
|
using Content.Shared.StatusIcon;
|
||||||
using Robust.Shared.GameStates;
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
namespace Content.Shared.Access.Components;
|
namespace Content.Shared.Access.Components;
|
||||||
|
|
||||||
@@ -11,34 +11,34 @@ namespace Content.Shared.Access.Components;
|
|||||||
[Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)]
|
[Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)]
|
||||||
public sealed partial class IdCardComponent : Component
|
public sealed partial class IdCardComponent : Component
|
||||||
{
|
{
|
||||||
[DataField("fullName"), ViewVariables(VVAccess.ReadWrite)]
|
[DataField]
|
||||||
[AutoNetworkedField]
|
[AutoNetworkedField]
|
||||||
// FIXME Friends
|
// FIXME Friends
|
||||||
public string? FullName;
|
public string? FullName;
|
||||||
|
|
||||||
[DataField("jobTitle")]
|
[DataField]
|
||||||
[AutoNetworkedField]
|
[AutoNetworkedField]
|
||||||
[Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite), ViewVariables(VVAccess.ReadWrite)]
|
[Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)]
|
||||||
public string? JobTitle;
|
public string? JobTitle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The state of the job icon rsi.
|
/// The state of the job icon rsi.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("jobIcon", customTypeSerializer: typeof(PrototypeIdSerializer<StatusIconPrototype>))]
|
[DataField]
|
||||||
[AutoNetworkedField]
|
[AutoNetworkedField]
|
||||||
public string JobIcon = "JobIconUnknown";
|
public ProtoId<JobIconPrototype> JobIcon = "JobIconUnknown";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The unlocalized names of the departments associated with the job
|
/// The unlocalized names of the departments associated with the job
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("jobDepartments")]
|
[DataField]
|
||||||
[AutoNetworkedField]
|
[AutoNetworkedField]
|
||||||
public List<LocId> JobDepartments = new();
|
public List<LocId> JobDepartments = new();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determines if accesses from this card should be logged by <see cref="AccessReaderComponent"/>
|
/// Determines if accesses from this card should be logged by <see cref="AccessReaderComponent"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField]
|
||||||
public bool BypassLogging;
|
public bool BypassLogging;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
|
|||||||
@@ -25,14 +25,12 @@ namespace Content.Shared.Access.Systems
|
|||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public sealed class AgentIDCardBoundUserInterfaceState : BoundUserInterfaceState
|
public sealed class AgentIDCardBoundUserInterfaceState : BoundUserInterfaceState
|
||||||
{
|
{
|
||||||
public readonly HashSet<ProtoId<StatusIconPrototype>> Icons;
|
|
||||||
public string CurrentName { get; }
|
public string CurrentName { get; }
|
||||||
public string CurrentJob { get; }
|
public string CurrentJob { get; }
|
||||||
public string CurrentJobIconId { get; }
|
public string CurrentJobIconId { get; }
|
||||||
|
|
||||||
public AgentIDCardBoundUserInterfaceState(string currentName, string currentJob, string currentJobIconId, HashSet<ProtoId<StatusIconPrototype>> icons)
|
public AgentIDCardBoundUserInterfaceState(string currentName, string currentJob, string currentJobIconId)
|
||||||
{
|
{
|
||||||
Icons = icons;
|
|
||||||
CurrentName = currentName;
|
CurrentName = currentName;
|
||||||
CurrentJob = currentJob;
|
CurrentJob = currentJob;
|
||||||
CurrentJobIconId = currentJobIconId;
|
CurrentJobIconId = currentJobIconId;
|
||||||
@@ -64,9 +62,9 @@ namespace Content.Shared.Access.Systems
|
|||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public sealed class AgentIDCardJobIconChangedMessage : BoundUserInterfaceMessage
|
public sealed class AgentIDCardJobIconChangedMessage : BoundUserInterfaceMessage
|
||||||
{
|
{
|
||||||
public ProtoId<StatusIconPrototype> JobIconId { get; }
|
public ProtoId<JobIconPrototype> JobIconId { get; }
|
||||||
|
|
||||||
public AgentIDCardJobIconChangedMessage(ProtoId<StatusIconPrototype> jobIconId)
|
public AgentIDCardJobIconChangedMessage(ProtoId<JobIconPrototype> jobIconId)
|
||||||
{
|
{
|
||||||
JobIconId = jobIconId;
|
JobIconId = jobIconId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ public abstract class SharedIdCardSystem : EntitySystem
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TryChangeJobIcon(EntityUid uid, StatusIconPrototype jobIcon, IdCardComponent? id = null, EntityUid? player = null)
|
public bool TryChangeJobIcon(EntityUid uid, JobIconPrototype jobIcon, IdCardComponent? id = null, EntityUid? player = null)
|
||||||
{
|
{
|
||||||
if (!Resolve(uid, ref id))
|
if (!Resolve(uid, ref id))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ namespace Content.Shared.Damage
|
|||||||
public List<ProtoId<DamageTypePrototype>> RadiationDamageTypeIDs = new() { "Radiation" };
|
public List<ProtoId<DamageTypePrototype>> RadiationDamageTypeIDs = new() { "Radiation" };
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public Dictionary<MobState, ProtoId<StatusIconPrototype>> HealthIcons = new()
|
public Dictionary<MobState, ProtoId<HealthIconPrototype>> HealthIcons = new()
|
||||||
{
|
{
|
||||||
{ MobState.Alive, "HealthIconFine" },
|
{ MobState.Alive, "HealthIconFine" },
|
||||||
{ MobState.Critical, "HealthIconCritical" },
|
{ MobState.Critical, "HealthIconCritical" },
|
||||||
@@ -74,7 +74,7 @@ namespace Content.Shared.Damage
|
|||||||
};
|
};
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<StatusIconPrototype> RottingIcon = "HealthIconRotting";
|
public ProtoId<HealthIconPrototype> RottingIcon = "HealthIconRotting";
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public FixedPoint2? HealthBarThreshold;
|
public FixedPoint2? HealthBarThreshold;
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ namespace Content.Shared.Mindshield.Components;
|
|||||||
public sealed partial class MindShieldComponent : Component
|
public sealed partial class MindShieldComponent : Component
|
||||||
{
|
{
|
||||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public ProtoId<StatusIconPrototype> MindShieldStatusIcon = "MindShieldIcon";
|
public ProtoId<SecurityIconPrototype> MindShieldStatusIcon = "MindShieldIcon";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,6 @@ public sealed partial class NukeOperativeComponent : Component
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("syndStatusIcon", customTypeSerializer: typeof(PrototypeIdSerializer<StatusIconPrototype>))]
|
[DataField("syndStatusIcon", customTypeSerializer: typeof(PrototypeIdSerializer<FactionIconPrototype>))]
|
||||||
public string SyndStatusIcon = "SyndicateFaction";
|
public string SyndStatusIcon = "SyndicateFaction";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,18 +24,18 @@ public sealed class HungerSystem : EntitySystem
|
|||||||
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!;
|
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!;
|
||||||
[Dependency] private readonly SharedJetpackSystem _jetpack = default!;
|
[Dependency] private readonly SharedJetpackSystem _jetpack = default!;
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string HungerIconOverfedId = "HungerIconOverfed";
|
private const string HungerIconOverfedId = "HungerIconOverfed";
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string HungerIconPeckishId = "HungerIconPeckish";
|
private const string HungerIconPeckishId = "HungerIconPeckish";
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string HungerIconStarvingId = "HungerIconStarving";
|
private const string HungerIconStarvingId = "HungerIconStarving";
|
||||||
|
|
||||||
private StatusIconPrototype? _hungerIconOverfed;
|
private SatiationIconPrototype? _hungerIconOverfed;
|
||||||
private StatusIconPrototype? _hungerIconPeckish;
|
private SatiationIconPrototype? _hungerIconPeckish;
|
||||||
private StatusIconPrototype? _hungerIconStarving;
|
private SatiationIconPrototype? _hungerIconStarving;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -216,7 +216,7 @@ public sealed class HungerSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TryGetStatusIconPrototype(HungerComponent component, [NotNullWhen(true)] out StatusIconPrototype? prototype)
|
public bool TryGetStatusIconPrototype(HungerComponent component, [NotNullWhen(true)] out SatiationIconPrototype? prototype)
|
||||||
{
|
{
|
||||||
switch (component.CurrentThreshold)
|
switch (component.CurrentThreshold)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,18 +22,18 @@ public sealed class ThirstSystem : EntitySystem
|
|||||||
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
|
[Dependency] private readonly MovementSpeedModifierSystem _movement = default!;
|
||||||
[Dependency] private readonly SharedJetpackSystem _jetpack = default!;
|
[Dependency] private readonly SharedJetpackSystem _jetpack = default!;
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string ThirstIconOverhydratedId = "ThirstIconOverhydrated";
|
private const string ThirstIconOverhydratedId = "ThirstIconOverhydrated";
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string ThirstIconThirstyId = "ThirstIconThirsty";
|
private const string ThirstIconThirstyId = "ThirstIconThirsty";
|
||||||
|
|
||||||
[ValidatePrototypeId<StatusIconPrototype>]
|
[ValidatePrototypeId<SatiationIconPrototype>]
|
||||||
private const string ThirstIconParchedId = "ThirstIconParched";
|
private const string ThirstIconParchedId = "ThirstIconParched";
|
||||||
|
|
||||||
private StatusIconPrototype? _thirstIconOverhydrated = null;
|
private SatiationIconPrototype? _thirstIconOverhydrated = null;
|
||||||
private StatusIconPrototype? _thirstIconThirsty = null;
|
private SatiationIconPrototype? _thirstIconThirsty = null;
|
||||||
private StatusIconPrototype? _thirstIconParched = null;
|
private SatiationIconPrototype? _thirstIconParched = null;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -128,7 +128,7 @@ public sealed class ThirstSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TryGetStatusIconPrototype(ThirstComponent component, out StatusIconPrototype? prototype)
|
public bool TryGetStatusIconPrototype(ThirstComponent component, out SatiationIconPrototype? prototype)
|
||||||
{
|
{
|
||||||
switch (component.CurrentThirstThreshold)
|
switch (component.CurrentThirstThreshold)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,5 +19,5 @@ public sealed partial class ShowHealthBarsComponent : Component
|
|||||||
public List<string> DamageContainers = new();
|
public List<string> DamageContainers = new();
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<StatusIconPrototype>? HealthStatusIcon = "HealthIconFine";
|
public ProtoId<HealthIconPrototype>? HealthStatusIcon = "HealthIconFine";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public sealed partial class HeadRevolutionaryComponent : Component
|
|||||||
/// The status icon corresponding to the head revolutionary.
|
/// The status icon corresponding to the head revolutionary.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public ProtoId<StatusIconPrototype> StatusIcon { get; set; } = "HeadRevolutionaryFaction";
|
public ProtoId<FactionIconPrototype> StatusIcon { get; set; } = "HeadRevolutionaryFaction";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// How long the stun will last after the user is converted.
|
/// How long the stun will last after the user is converted.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ public sealed partial class RevolutionaryComponent : Component
|
|||||||
/// The status icon prototype displayed for revolutionaries
|
/// The status icon prototype displayed for revolutionaries
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
[DataField, ViewVariables(VVAccess.ReadWrite)]
|
||||||
public ProtoId<StatusIconPrototype> StatusIcon { get; set; } = "RevolutionaryFaction";
|
public ProtoId<FactionIconPrototype> StatusIcon { get; set; } = "RevolutionaryFaction";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sound that plays when you are chosen as Rev. (Placeholder until I find something cool I guess)
|
/// Sound that plays when you are chosen as Rev. (Placeholder until I find something cool I guess)
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ namespace Content.Shared.Roles
|
|||||||
public string? JobEntity = null;
|
public string? JobEntity = null;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<StatusIconPrototype> Icon { get; private set; } = "JobIconUnknown";
|
public ProtoId<JobIconPrototype> Icon { get; private set; } = "JobIconUnknown";
|
||||||
|
|
||||||
[DataField("special", serverOnly: true)]
|
[DataField("special", serverOnly: true)]
|
||||||
public JobSpecial[] Special { get; private set; } = Array.Empty<JobSpecial>();
|
public JobSpecial[] Special { get; private set; } = Array.Empty<JobSpecial>();
|
||||||
|
|||||||
@@ -18,5 +18,5 @@ public sealed partial class SSDIndicatorComponent : Component
|
|||||||
|
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<StatusIconPrototype> Icon = "SSDIcon";
|
public ProtoId<SsdIconPrototype> Icon = "SSDIcon";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,5 +11,5 @@ public sealed partial class CriminalRecordComponent : Component
|
|||||||
/// The icon that should be displayed based on the criminal status of the entity.
|
/// The icon that should be displayed based on the criminal status of the entity.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField, AutoNetworkedField]
|
[DataField, AutoNetworkedField]
|
||||||
public ProtoId<StatusIconPrototype> StatusIcon = "SecurityIconWanted";
|
public ProtoId<SecurityIconPrototype> StatusIcon = "SecurityIconWanted";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ public partial class StatusIconData : IComparable<StatusIconData>
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField]
|
[DataField]
|
||||||
public bool IsShaded = false;
|
public bool IsShaded = false;
|
||||||
|
|
||||||
public int CompareTo(StatusIconData? other)
|
public int CompareTo(StatusIconData? other)
|
||||||
{
|
{
|
||||||
return Priority.CompareTo(other?.Priority ?? int.MaxValue);
|
return Priority.CompareTo(other?.Priority ?? int.MaxValue);
|
||||||
@@ -83,11 +82,21 @@ public partial class StatusIconData : IComparable<StatusIconData>
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see cref="StatusIconData"/> but in new convenient prototype form!
|
/// <see cref="StatusIconData"/> but in new convenient prototype form!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Prototype("statusIcon")]
|
public abstract partial class StatusIconPrototype : StatusIconData, IPrototype
|
||||||
public sealed partial class StatusIconPrototype : StatusIconData, IPrototype, IInheritingPrototype
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
[IdDataField]
|
||||||
|
public string ID { get; private set; } = default!;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for showing jobs on the sec HUD
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class JobIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<StatusIconPrototype>))]
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<JobIconPrototype>))]
|
||||||
public string[]? Parents { get; }
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@@ -95,9 +104,116 @@ public sealed partial class StatusIconPrototype : StatusIconData, IPrototype, II
|
|||||||
[AbstractDataField]
|
[AbstractDataField]
|
||||||
public bool Abstract { get; }
|
public bool Abstract { get; }
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <summary>
|
||||||
[IdDataField]
|
/// Name of the icon used for menu tooltips.
|
||||||
public string ID { get; private set; } = default!;
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public string JobName { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadOnly)]
|
||||||
|
public string LocalizedJobName => Loc.GetString(JobName);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Should the agent ID or ID card console be able to use this job icon?
|
||||||
|
/// </summary>
|
||||||
|
[DataField]
|
||||||
|
public bool AllowSelection = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for the med HUD
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class HealthIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<HealthIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for the beer goggles and fried onion goggles
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class SatiationIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SatiationIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for showing the wanted status on the sec HUD
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class SecurityIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SecurityIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for faction membership
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class FactionIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<FactionIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for debugging purposes
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class DebugIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<DebugIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// StatusIcons for the SSD indicator
|
||||||
|
/// </summary>
|
||||||
|
[Prototype]
|
||||||
|
public sealed partial class SsdIconPrototype : StatusIconPrototype, IInheritingPrototype
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[ParentDataField(typeof(AbstractPrototypeIdArraySerializer<SsdIconPrototype>))]
|
||||||
|
public string[]? Parents { get; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[NeverPushInheritance]
|
||||||
|
[AbstractDataField]
|
||||||
|
public bool Abstract { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ namespace Content.Shared.Zombies;
|
|||||||
public sealed partial class InitialInfectedComponent : Component
|
public sealed partial class InitialInfectedComponent : Component
|
||||||
{
|
{
|
||||||
[DataField]
|
[DataField]
|
||||||
public ProtoId<StatusIconPrototype> StatusIcon = "InitialInfectedFaction";
|
public ProtoId<FactionIconPrototype> StatusIcon = "InitialInfectedFaction";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public sealed partial class ZombieComponent : Component
|
|||||||
public TimeSpan NextTick;
|
public TimeSpan NextTick;
|
||||||
|
|
||||||
[DataField("zombieStatusIcon")]
|
[DataField("zombieStatusIcon")]
|
||||||
public ProtoId<StatusIconPrototype> StatusIcon { get; set; } = "ZombieFaction";
|
public ProtoId<FactionIconPrototype> StatusIcon { get; set; } = "ZombieFaction";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Healing each second
|
/// Healing each second
|
||||||
|
|||||||
@@ -47,6 +47,18 @@ job-name-boxer = Boxer
|
|||||||
job-name-zookeeper = Zookeeper
|
job-name-zookeeper = Zookeeper
|
||||||
job-name-visitor = Visitor
|
job-name-visitor = Visitor
|
||||||
|
|
||||||
|
# unused jobs
|
||||||
|
# these are required for the agent ID job icon tooltips
|
||||||
|
# I am keeping them for roleplaying opportunities
|
||||||
|
job-name-geneticist = Geneticist
|
||||||
|
job-name-no-id = No ID
|
||||||
|
job-name-prisoner = Prisoner
|
||||||
|
job-name-roboticist = Roboticist
|
||||||
|
job-name-syndicate = Syndicate
|
||||||
|
job-name-unknown = Unknown
|
||||||
|
job-name-virologist = Virologist
|
||||||
|
job-name-zombie = Zombie
|
||||||
|
|
||||||
# Role timers - Make these alphabetical or I cut you
|
# Role timers - Make these alphabetical or I cut you
|
||||||
JobAtmosphericTechnician = Atmospheric Technician
|
JobAtmosphericTechnician = Atmospheric Technician
|
||||||
JobBartender = Bartender
|
JobBartender = Bartender
|
||||||
|
|||||||
@@ -599,54 +599,6 @@
|
|||||||
- state: default
|
- state: default
|
||||||
- state: idpassenger
|
- state: idpassenger
|
||||||
- type: AgentIDCard
|
- type: AgentIDCard
|
||||||
icons:
|
|
||||||
# TODO figure out a better way of doing this.
|
|
||||||
# Probably by adding a bool or icon-category data-field to the icon prototype?
|
|
||||||
- JobIconDetective
|
|
||||||
- JobIconQuarterMaster
|
|
||||||
- JobIconBotanist
|
|
||||||
- JobIconBoxer
|
|
||||||
- JobIconAtmosphericTechnician
|
|
||||||
- JobIconNanotrasen
|
|
||||||
- JobIconPrisoner
|
|
||||||
- JobIconJanitor
|
|
||||||
- JobIconChemist
|
|
||||||
- JobIconStationEngineer
|
|
||||||
- JobIconSecurityOfficer
|
|
||||||
- JobIconChiefMedicalOfficer
|
|
||||||
- JobIconRoboticist
|
|
||||||
- JobIconChaplain
|
|
||||||
- JobIconLawyer
|
|
||||||
- JobIconUnknown
|
|
||||||
- JobIconLibrarian
|
|
||||||
- JobIconCargoTechnician
|
|
||||||
- JobIconScientist
|
|
||||||
- JobIconResearchAssistant
|
|
||||||
- JobIconGeneticist
|
|
||||||
- JobIconClown
|
|
||||||
- JobIconCaptain
|
|
||||||
- JobIconHeadOfPersonnel
|
|
||||||
- JobIconVirologist
|
|
||||||
- JobIconShaftMiner
|
|
||||||
- JobIconPassenger
|
|
||||||
- JobIconChiefEngineer
|
|
||||||
- JobIconBartender
|
|
||||||
- JobIconHeadOfSecurity
|
|
||||||
- JobIconMedicalDoctor
|
|
||||||
- JobIconParamedic
|
|
||||||
- JobIconChef
|
|
||||||
- JobIconWarden
|
|
||||||
- JobIconResearchDirector
|
|
||||||
- JobIconMime
|
|
||||||
- JobIconMusician
|
|
||||||
- JobIconReporter
|
|
||||||
- JobIconPsychologist
|
|
||||||
- JobIconMedicalIntern
|
|
||||||
- JobIconTechnicalAssistant
|
|
||||||
- JobIconServiceWorker
|
|
||||||
- JobIconSecurityCadet
|
|
||||||
- JobIconZookeeper
|
|
||||||
- JobIconVisitor
|
|
||||||
- type: ActivatableUI
|
- type: ActivatableUI
|
||||||
key: enum.AgentIDCardUiKey.Key
|
key: enum.AgentIDCardUiKey.Key
|
||||||
inHandsOnly: true
|
inHandsOnly: true
|
||||||
|
|||||||
@@ -1,32 +1,32 @@
|
|||||||
- type: statusIcon
|
- type: healthIcon
|
||||||
id: HealthIcon
|
id: HealthIcon
|
||||||
abstract: true
|
abstract: true
|
||||||
priority: 3
|
priority: 3
|
||||||
locationPreference: Left
|
locationPreference: Left
|
||||||
isShaded: true
|
isShaded: true
|
||||||
|
|
||||||
- type: statusIcon
|
- type: healthIcon
|
||||||
parent: HealthIcon
|
parent: HealthIcon
|
||||||
id: HealthIconFine
|
id: HealthIconFine
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/health_icons.rsi
|
sprite: /Textures/Interface/Misc/health_icons.rsi
|
||||||
state: Fine
|
state: Fine
|
||||||
|
|
||||||
- type: statusIcon
|
- type: healthIcon
|
||||||
id: HealthIconCritical
|
id: HealthIconCritical
|
||||||
parent: HealthIcon
|
parent: HealthIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/health_icons.rsi
|
sprite: /Textures/Interface/Misc/health_icons.rsi
|
||||||
state: Critical
|
state: Critical
|
||||||
|
|
||||||
- type: statusIcon
|
- type: healthIcon
|
||||||
id: HealthIconDead
|
id: HealthIconDead
|
||||||
parent: HealthIcon
|
parent: HealthIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/health_icons.rsi
|
sprite: /Textures/Interface/Misc/health_icons.rsi
|
||||||
state: Dead
|
state: Dead
|
||||||
|
|
||||||
- type: statusIcon
|
- type: healthIcon
|
||||||
id: HealthIconRotting
|
id: HealthIconRotting
|
||||||
parent: HealthIcon
|
parent: HealthIcon
|
||||||
icon:
|
icon:
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
#Hunger
|
#Hunger
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: HungerIcon
|
id: HungerIcon
|
||||||
abstract: true
|
abstract: true
|
||||||
priority: 5
|
priority: 5
|
||||||
locationPreference: Right
|
locationPreference: Right
|
||||||
isShaded: true
|
isShaded: true
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: HungerIconOverfed
|
id: HungerIconOverfed
|
||||||
parent: HungerIcon
|
parent: HungerIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/food_icons.rsi
|
sprite: /Textures/Interface/Misc/food_icons.rsi
|
||||||
state: overfed
|
state: overfed
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: HungerIconPeckish
|
id: HungerIconPeckish
|
||||||
parent: HungerIcon
|
parent: HungerIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/food_icons.rsi
|
sprite: /Textures/Interface/Misc/food_icons.rsi
|
||||||
state: peckish
|
state: peckish
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: HungerIconStarving
|
id: HungerIconStarving
|
||||||
parent: HungerIcon
|
parent: HungerIcon
|
||||||
icon:
|
icon:
|
||||||
@@ -28,28 +28,28 @@
|
|||||||
state: starving
|
state: starving
|
||||||
|
|
||||||
#Thirst
|
#Thirst
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: ThirstIcon
|
id: ThirstIcon
|
||||||
abstract: true
|
abstract: true
|
||||||
priority: 5
|
priority: 5
|
||||||
locationPreference: Left
|
locationPreference: Left
|
||||||
isShaded: true
|
isShaded: true
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: ThirstIconOverhydrated
|
id: ThirstIconOverhydrated
|
||||||
parent: ThirstIcon
|
parent: ThirstIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/food_icons.rsi
|
sprite: /Textures/Interface/Misc/food_icons.rsi
|
||||||
state: overhydrated
|
state: overhydrated
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: ThirstIconThirsty
|
id: ThirstIconThirsty
|
||||||
parent: ThirstIcon
|
parent: ThirstIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/food_icons.rsi
|
sprite: /Textures/Interface/Misc/food_icons.rsi
|
||||||
state: thirsty
|
state: thirsty
|
||||||
|
|
||||||
- type: statusIcon
|
- type: satiationIcon
|
||||||
id: ThirstIconParched
|
id: ThirstIconParched
|
||||||
parent: ThirstIcon
|
parent: ThirstIcon
|
||||||
icon:
|
icon:
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
- type: statusIcon
|
- type: ssdIcon
|
||||||
id: SSDIcon
|
id: SSDIcon
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Effects/ssd.rsi
|
sprite: /Textures/Effects/ssd.rsi
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
- type: statusIcon
|
- type: debugIcon
|
||||||
id: DebugStatus
|
id: DebugStatus
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/research_disciplines.rsi
|
sprite: /Textures/Interface/Misc/research_disciplines.rsi
|
||||||
state: civilianservices
|
state: civilianservices
|
||||||
|
|
||||||
- type: statusIcon
|
- type: debugIcon
|
||||||
id: DebugStatus2
|
id: DebugStatus2
|
||||||
priority: 1
|
priority: 1
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/research_disciplines.rsi
|
sprite: /Textures/Interface/Misc/research_disciplines.rsi
|
||||||
state: arsenal
|
state: arsenal
|
||||||
|
|
||||||
- type: statusIcon
|
- type: debugIcon
|
||||||
id: DebugStatus3
|
id: DebugStatus3
|
||||||
priority: 5
|
priority: 5
|
||||||
icon:
|
icon:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
- type: statusIcon
|
- type: factionIcon
|
||||||
id: ZombieFaction
|
id: ZombieFaction
|
||||||
priority: 11
|
priority: 11
|
||||||
showTo:
|
showTo:
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Zombie
|
state: Zombie
|
||||||
|
|
||||||
- type: statusIcon
|
- type: factionIcon
|
||||||
id: InitialInfectedFaction
|
id: InitialInfectedFaction
|
||||||
priority: 11
|
priority: 11
|
||||||
showTo:
|
showTo:
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: InitialInfected
|
state: InitialInfected
|
||||||
|
|
||||||
- type: statusIcon
|
- type: factionIcon
|
||||||
id: RevolutionaryFaction
|
id: RevolutionaryFaction
|
||||||
isShaded: true
|
isShaded: true
|
||||||
priority: 11
|
priority: 11
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Revolutionary
|
state: Revolutionary
|
||||||
|
|
||||||
- type: statusIcon
|
- type: factionIcon
|
||||||
id: HeadRevolutionaryFaction
|
id: HeadRevolutionaryFaction
|
||||||
isShaded: true
|
isShaded: true
|
||||||
priority: 11
|
priority: 11
|
||||||
@@ -45,17 +45,7 @@
|
|||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: HeadRevolutionary
|
state: HeadRevolutionary
|
||||||
|
|
||||||
- type: statusIcon
|
- type: factionIcon
|
||||||
id: MindShieldIcon
|
|
||||||
priority: 2
|
|
||||||
locationPreference: Right
|
|
||||||
layer: Mod
|
|
||||||
isShaded: true
|
|
||||||
icon:
|
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
|
||||||
state: MindShield
|
|
||||||
|
|
||||||
- type: statusIcon
|
|
||||||
id: SyndicateFaction
|
id: SyndicateFaction
|
||||||
priority: 0
|
priority: 0
|
||||||
locationPreference: Left
|
locationPreference: Left
|
||||||
@@ -1,384 +1,446 @@
|
|||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
id: JobIcon
|
id: JobIcon
|
||||||
abstract: true
|
abstract: true
|
||||||
priority: 1
|
priority: 1
|
||||||
locationPreference: Right
|
locationPreference: Right
|
||||||
isShaded: true
|
isShaded: true
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconDetective
|
id: JobIconDetective
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Detective
|
state: Detective
|
||||||
|
jobName: job-name-detective
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconQuarterMaster
|
id: JobIconQuarterMaster
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: QuarterMaster
|
state: QuarterMaster
|
||||||
|
jobName: job-name-qm
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconBorg
|
id: JobIconBorg
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Borg
|
state: Borg
|
||||||
|
jobName: job-name-borg
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconBotanist
|
id: JobIconBotanist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Botanist
|
state: Botanist
|
||||||
|
jobName: job-name-botanist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconBoxer
|
id: JobIconBoxer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Boxer
|
state: Boxer
|
||||||
|
jobName: job-name-boxer
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconAtmosphericTechnician
|
id: JobIconAtmosphericTechnician
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: AtmosphericTechnician
|
state: AtmosphericTechnician
|
||||||
|
jobName: job-name-atmostech
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconNanotrasen
|
id: JobIconNanotrasen
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Nanotrasen
|
state: Nanotrasen
|
||||||
|
jobName: job-name-centcomoff
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconPrisoner
|
id: JobIconPrisoner
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Prisoner
|
state: Prisoner
|
||||||
|
jobName: job-name-prisoner
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconJanitor
|
id: JobIconJanitor
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Janitor
|
state: Janitor
|
||||||
|
jobName: job-name-janitor
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconChemist
|
id: JobIconChemist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Chemist
|
state: Chemist
|
||||||
|
jobName: job-name-chemist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconStationEngineer
|
id: JobIconStationEngineer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: StationEngineer
|
state: StationEngineer
|
||||||
|
jobName: job-name-engineer
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSecurityOfficer
|
id: JobIconSecurityOfficer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SecurityOfficer
|
state: SecurityOfficer
|
||||||
|
jobName: job-name-security
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconNoId
|
id: JobIconNoId
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: NoId
|
state: NoId
|
||||||
|
jobName: job-name-no-id
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconChiefMedicalOfficer
|
id: JobIconChiefMedicalOfficer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ChiefMedicalOfficer
|
state: ChiefMedicalOfficer
|
||||||
|
jobName: job-name-cmo
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconRoboticist
|
id: JobIconRoboticist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Roboticist
|
state: Roboticist
|
||||||
|
jobName: job-name-roboticist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconChaplain
|
id: JobIconChaplain
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Chaplain
|
state: Chaplain
|
||||||
|
jobName: job-name-chaplain
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconLawyer
|
id: JobIconLawyer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Lawyer
|
state: Lawyer
|
||||||
|
jobName: job-name-lawyer
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconUnknown
|
id: JobIconUnknown
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Unknown
|
state: Unknown
|
||||||
|
jobName: job-name-unknown
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconLibrarian
|
id: JobIconLibrarian
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Librarian
|
state: Librarian
|
||||||
|
jobName: job-name-librarian
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconCargoTechnician
|
id: JobIconCargoTechnician
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: CargoTechnician
|
state: CargoTechnician
|
||||||
|
jobName: job-name-cargotech
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconScientist
|
id: JobIconScientist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Scientist
|
state: Scientist
|
||||||
|
jobName: job-name-scientist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconResearchAssistant
|
id: JobIconResearchAssistant
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ResearchAssistant
|
state: ResearchAssistant
|
||||||
|
jobName: job-name-research-assistant
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconGeneticist
|
id: JobIconGeneticist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Geneticist
|
state: Geneticist
|
||||||
|
jobName: job-name-geneticist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconClown
|
id: JobIconClown
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Clown
|
state: Clown
|
||||||
|
jobName: job-name-clown
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconCaptain
|
id: JobIconCaptain
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Captain
|
state: Captain
|
||||||
|
jobName: job-name-captain
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconHeadOfPersonnel
|
id: JobIconHeadOfPersonnel
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: HeadOfPersonnel
|
state: HeadOfPersonnel
|
||||||
|
jobName: job-name-hop
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconVirologist
|
id: JobIconVirologist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Virologist
|
state: Virologist
|
||||||
|
jobName: job-name-virologist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconShaftMiner
|
id: JobIconShaftMiner
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ShaftMiner
|
state: ShaftMiner
|
||||||
|
jobName: job-name-salvagespec
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconPassenger
|
id: JobIconPassenger
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Passenger
|
state: Passenger
|
||||||
|
jobName: job-name-passenger
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconChiefEngineer
|
id: JobIconChiefEngineer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ChiefEngineer
|
state: ChiefEngineer
|
||||||
|
jobName: job-name-ce
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconBartender
|
id: JobIconBartender
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Bartender
|
state: Bartender
|
||||||
|
jobName: job-name-bartender
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconHeadOfSecurity
|
id: JobIconHeadOfSecurity
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: HeadOfSecurity
|
state: HeadOfSecurity
|
||||||
|
jobName: job-name-hos
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconBrigmedic
|
id: JobIconBrigmedic
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Brigmedic
|
state: Brigmedic
|
||||||
|
jobName: job-name-brigmedic
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconMedicalDoctor
|
id: JobIconMedicalDoctor
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: MedicalDoctor
|
state: MedicalDoctor
|
||||||
|
jobName: job-name-doctor
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconParamedic
|
id: JobIconParamedic
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Paramedic
|
state: Paramedic
|
||||||
|
jobName: job-name-paramedic
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconChef
|
id: JobIconChef
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Chef
|
state: Chef
|
||||||
|
jobName: job-name-chef
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconWarden
|
id: JobIconWarden
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Warden
|
state: Warden
|
||||||
|
jobName: job-name-warden
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconResearchDirector
|
id: JobIconResearchDirector
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ResearchDirector
|
state: ResearchDirector
|
||||||
|
jobName: job-name-rd
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconMime
|
id: JobIconMime
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Mime
|
state: Mime
|
||||||
|
jobName: job-name-mime
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconMusician
|
id: JobIconMusician
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Musician
|
state: Musician
|
||||||
|
jobName: job-name-musician
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconReporter
|
id: JobIconReporter
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Reporter
|
state: Reporter
|
||||||
|
jobName: job-name-reporter
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconPsychologist
|
id: JobIconPsychologist
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Psychologist
|
state: Psychologist
|
||||||
|
jobName: job-name-psychologist
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconMedicalIntern
|
id: JobIconMedicalIntern
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: MedicalIntern
|
state: MedicalIntern
|
||||||
|
jobName: job-name-intern
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconTechnicalAssistant
|
id: JobIconTechnicalAssistant
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: TechnicalAssistant
|
state: TechnicalAssistant
|
||||||
|
jobName: job-name-technical-assistant
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconServiceWorker
|
id: JobIconServiceWorker
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: ServiceWorker
|
state: ServiceWorker
|
||||||
|
jobName: job-name-serviceworker
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSecurityCadet
|
id: JobIconSecurityCadet
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SecurityCadet
|
state: SecurityCadet
|
||||||
|
jobName: job-name-cadet
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconZombie # This is a perfectly legitimate profession to pursue
|
id: JobIconZombie # This is a perfectly legitimate profession to pursue
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Zombie
|
state: Zombie
|
||||||
|
jobName: job-name-zombie
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
|
parent: JobIcon
|
||||||
|
id: JobIconSyndicate # Just in case you want to make it official which side you are on
|
||||||
|
icon:
|
||||||
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
|
state: Syndicate
|
||||||
|
jobName: job-name-syndicate
|
||||||
|
|
||||||
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconZookeeper
|
id: JobIconZookeeper
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Zookeeper
|
state: Zookeeper
|
||||||
|
jobName: job-name-zookeeper
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSeniorPhysician
|
id: JobIconSeniorPhysician
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SeniorPhysician
|
state: SeniorPhysician
|
||||||
|
allowSelection: false
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSeniorOfficer
|
id: JobIconSeniorOfficer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SeniorOfficer
|
state: SeniorOfficer
|
||||||
|
allowSelection: false
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSeniorEngineer
|
id: JobIconSeniorEngineer
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SeniorEngineer
|
state: SeniorEngineer
|
||||||
|
allowSelection: false
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconSeniorResearcher
|
id: JobIconSeniorResearcher
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: SeniorResearcher
|
state: SeniorResearcher
|
||||||
|
allowSelection: false
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconVisitor
|
id: JobIconVisitor
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Visitor
|
state: Visitor
|
||||||
|
jobName: job-name-visitor
|
||||||
|
|
||||||
- type: statusIcon
|
- type: jobIcon
|
||||||
parent: JobIcon
|
parent: JobIcon
|
||||||
id: JobIconAdmin
|
id: JobIconAdmin
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/job_icons.rsi
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
state: Admin
|
state: Admin
|
||||||
|
allowSelection: false
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
id: SecurityIcon
|
id: SecurityIcon
|
||||||
abstract: true
|
abstract: true
|
||||||
priority: 3
|
priority: 3
|
||||||
@@ -6,37 +6,47 @@
|
|||||||
locationPreference: Right
|
locationPreference: Right
|
||||||
isShaded: true
|
isShaded: true
|
||||||
|
|
||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
parent: SecurityIcon
|
parent: SecurityIcon
|
||||||
id: SecurityIconDischarged
|
id: SecurityIconDischarged
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/security_icons.rsi
|
sprite: /Textures/Interface/Misc/security_icons.rsi
|
||||||
state: hud_discharged
|
state: hud_discharged
|
||||||
|
|
||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
parent: SecurityIcon
|
parent: SecurityIcon
|
||||||
id: SecurityIconIncarcerated
|
id: SecurityIconIncarcerated
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/security_icons.rsi
|
sprite: /Textures/Interface/Misc/security_icons.rsi
|
||||||
state: hud_incarcerated
|
state: hud_incarcerated
|
||||||
|
|
||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
parent: SecurityIcon
|
parent: SecurityIcon
|
||||||
id: SecurityIconParoled
|
id: SecurityIconParoled
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/security_icons.rsi
|
sprite: /Textures/Interface/Misc/security_icons.rsi
|
||||||
state: hud_paroled
|
state: hud_paroled
|
||||||
|
|
||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
parent: SecurityIcon
|
parent: SecurityIcon
|
||||||
id: SecurityIconSuspected
|
id: SecurityIconSuspected
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/security_icons.rsi
|
sprite: /Textures/Interface/Misc/security_icons.rsi
|
||||||
state: hud_suspected
|
state: hud_suspected
|
||||||
|
|
||||||
- type: statusIcon
|
- type: securityIcon
|
||||||
parent: SecurityIcon
|
parent: SecurityIcon
|
||||||
id: SecurityIconWanted
|
id: SecurityIconWanted
|
||||||
icon:
|
icon:
|
||||||
sprite: /Textures/Interface/Misc/security_icons.rsi
|
sprite: /Textures/Interface/Misc/security_icons.rsi
|
||||||
state: hud_wanted
|
state: hud_wanted
|
||||||
|
|
||||||
|
- type: securityIcon
|
||||||
|
id: MindShieldIcon
|
||||||
|
priority: 2
|
||||||
|
locationPreference: Right
|
||||||
|
layer: Mod
|
||||||
|
isShaded: true
|
||||||
|
icon:
|
||||||
|
sprite: /Textures/Interface/Misc/job_icons.rsi
|
||||||
|
state: MindShield
|
||||||
|
|||||||
Reference in New Issue
Block a user