Фиксы и фичи еще раз (#426)
* fix: constructs are cultists now * rename: announcementPrototype -> arrivalNotificationPrototype * fix: fix naming * fix: hop became head * resprite: cult bola looks like cult stuff now * add: repsrite files * translation: translation for cult bola * tweak: now bola fits in belt * refactor: refactor KnockDownOnCollideSystem * tweak: bolas knockdown on hit * add: energy bola * cleanup: less components
This commit is contained in:
@@ -17,12 +17,12 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
|
|||||||
|
|
||||||
private List<GhostWarpPlayer> _playerWarps = new();
|
private List<GhostWarpPlayer> _playerWarps = new();
|
||||||
private List<GhostWarpPlace> _placeWarps = new();
|
private List<GhostWarpPlace> _placeWarps = new();
|
||||||
private List<GhostWarpGlobalAntagonist> _globalAntoginists = new();
|
private List<GhostWarpGlobalAntagonist> _globalAntagonists = new();
|
||||||
|
|
||||||
private List<GhostWarpPlayer> _alivePlayers = new();
|
private readonly List<GhostWarpPlayer> _alivePlayers = new();
|
||||||
private List<GhostWarpPlayer> _leftPlayers = new();
|
private readonly List<GhostWarpPlayer> _leftPlayers = new();
|
||||||
private List<GhostWarpPlayer> _deadPlayers = new();
|
private readonly List<GhostWarpPlayer> _deadPlayers = new();
|
||||||
private List<GhostWarpPlayer> _ghostPlayers = new();
|
private readonly List<GhostWarpPlayer> _ghostPlayers = new();
|
||||||
|
|
||||||
public event Action<NetEntity>? WarpClicked;
|
public event Action<NetEntity>? WarpClicked;
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
|
|||||||
GhostTeleportContainter.DisposeAllChildren();
|
GhostTeleportContainter.DisposeAllChildren();
|
||||||
_playerWarps = GetSortedPlayers(_playerWarps);
|
_playerWarps = GetSortedPlayers(_playerWarps);
|
||||||
_placeWarps = GetSortedPlaces(_placeWarps);
|
_placeWarps = GetSortedPlaces(_placeWarps);
|
||||||
_globalAntoginists = GetSortedAntagonists(_globalAntoginists);
|
_globalAntagonists = GetSortedAntagonists(_globalAntagonists);
|
||||||
|
|
||||||
PlayersAllocation();
|
PlayersAllocation();
|
||||||
AddButtons();
|
AddButtons();
|
||||||
@@ -47,12 +47,12 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
|
|||||||
{
|
{
|
||||||
_playerWarps = players;
|
_playerWarps = players;
|
||||||
_placeWarps = places;
|
_placeWarps = places;
|
||||||
_globalAntoginists = antagonists;
|
_globalAntagonists = antagonists;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddButtons()
|
private void AddButtons()
|
||||||
{
|
{
|
||||||
AddAntagButtons(_globalAntoginists, "ghost-teleport-menu-antagonists-label", "ButtonColorAntagonistDepartment");
|
AddAntagButtons(_globalAntagonists, "ghost-teleport-menu-antagonists-label", "ButtonColorAntagonistDepartment");
|
||||||
AddPlayerButtons(_alivePlayers, "ghost-teleport-menu-alive-label", string.Empty, true); // Alive
|
AddPlayerButtons(_alivePlayers, "ghost-teleport-menu-alive-label", string.Empty, true); // Alive
|
||||||
AddPlayerButtons(_deadPlayers, "ghost-teleport-menu-dead-label", string.Empty, true); // Dead
|
AddPlayerButtons(_deadPlayers, "ghost-teleport-menu-dead-label", string.Empty, true); // Dead
|
||||||
AddPlayerButtons(_ghostPlayers, "ghost-teleport-menu-ghosts-label", string.Empty, true); // Ghost
|
AddPlayerButtons(_ghostPlayers, "ghost-teleport-menu-ghosts-label", string.Empty, true); // Ghost
|
||||||
@@ -239,7 +239,7 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
|
|||||||
GhostTeleportContainter.AddChild(bigGrid);
|
GhostTeleportContainter.AddChild(bigGrid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<List<GhostWarpPlayer>> SortPlayersByDepartment(List<GhostWarpPlayer> players)
|
private List<List<GhostWarpPlayer>> SortPlayersByDepartment(List<GhostWarpPlayer> players)
|
||||||
{
|
{
|
||||||
var sortedPlayers = new List<List<GhostWarpPlayer>>();
|
var sortedPlayers = new List<List<GhostWarpPlayer>>();
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ namespace Content.Client.UserInterface.Systems.Ghost.Controls
|
|||||||
return sortedPlayers;
|
return sortedPlayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<List<GhostWarpGlobalAntagonist>> SortAntagsByWeight(List<GhostWarpGlobalAntagonist> antagonists)
|
private List<List<GhostWarpGlobalAntagonist>> SortAntagsByWeight(List<GhostWarpGlobalAntagonist> antagonists)
|
||||||
{
|
{
|
||||||
var sortedAntags = new List<List<GhostWarpGlobalAntagonist>>();
|
var sortedAntags = new List<List<GhostWarpGlobalAntagonist>>();
|
||||||
|
|
||||||
|
|||||||
@@ -380,7 +380,7 @@ namespace Content.Server.Ghost
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var response = new GhostWarpsResponseEvent(GetPlayerWarps(), GetLocationWarps(), GetAntagonistWarps());
|
var response = new GhostWarpsResponseEvent(GetPlayerWarps(), GetLocationWarps(), GetAntagonistWarps()); // WD edit
|
||||||
RaiseNetworkEvent(response, args.SenderSession.Channel);
|
RaiseNetworkEvent(response, args.SenderSession.Channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,7 +432,7 @@ namespace Content.Server.Ghost
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<GhostWarpPlace> GetLocationWarps()
|
private List<GhostWarpPlace> GetLocationWarps() // WD added
|
||||||
{
|
{
|
||||||
var warps = new List<GhostWarpPlace> { };
|
var warps = new List<GhostWarpPlace> { };
|
||||||
var allQuery = AllEntityQuery<WarpPointComponent>();
|
var allQuery = AllEntityQuery<WarpPointComponent>();
|
||||||
@@ -448,7 +448,7 @@ namespace Content.Server.Ghost
|
|||||||
return warps;
|
return warps;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GhostWarpPlayer> GetPlayerWarps()
|
private List<GhostWarpPlayer> GetPlayerWarps() // WD added
|
||||||
{
|
{
|
||||||
var warps = new List<GhostWarpPlayer> { };
|
var warps = new List<GhostWarpPlayer> { };
|
||||||
|
|
||||||
@@ -499,7 +499,7 @@ namespace Content.Server.Ghost
|
|||||||
return warps;
|
return warps;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GhostWarpGlobalAntagonist> GetAntagonistWarps()
|
private List<GhostWarpGlobalAntagonist> GetAntagonistWarps() // WD added
|
||||||
{
|
{
|
||||||
var warps = new List<GhostWarpGlobalAntagonist> { };
|
var warps = new List<GhostWarpGlobalAntagonist> { };
|
||||||
|
|
||||||
|
|||||||
@@ -30,10 +30,10 @@ public sealed class ArrivalNotificationSystem : EntitySystem
|
|||||||
if (!_prototypeManager.TryIndex<JobPrototype>(args.JobId, out var jobPrototype))
|
if (!_prototypeManager.TryIndex<JobPrototype>(args.JobId, out var jobPrototype))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (jobPrototype.AnnouncementPrototype == null)
|
if (jobPrototype.ArrivalNotificationPrototype == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!_prototypeManager.TryIndex<ArrivalNotificationPrototype>(jobPrototype.AnnouncementPrototype, out var notification))
|
if (!_prototypeManager.TryIndex<ArrivalNotificationPrototype>(jobPrototype.ArrivalNotificationPrototype, out var notification))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var message = GetMessage(args.Mob,
|
var message = GetMessage(args.Mob,
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ namespace Content.Shared.Ghost
|
|||||||
/// Contains players, and locations a ghost can warp to
|
/// Contains players, and locations a ghost can warp to
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public sealed class GhostWarpsResponseEvent : EntityEventArgs
|
public sealed class GhostWarpsResponseEvent : EntityEventArgs // WD edit
|
||||||
{
|
{
|
||||||
public GhostWarpsResponseEvent(List<GhostWarpPlayer> players, List<GhostWarpPlace> places, List<GhostWarpGlobalAntagonist> antagonists)
|
public GhostWarpsResponseEvent(List<GhostWarpPlayer> players, List<GhostWarpPlace> places, List<GhostWarpGlobalAntagonist> antagonists)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Content.Shared.Roles
|
|||||||
public bool JoinNotifyCrew { get; private set; } = false;
|
public bool JoinNotifyCrew { get; private set; } = false;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public string? AnnouncementPrototype;
|
public string? ArrivalNotificationPrototype;
|
||||||
|
|
||||||
[DataField]
|
[DataField]
|
||||||
public bool RequireAdminNotify { get; private set; } = false;
|
public bool RequireAdminNotify { get; private set; } = false;
|
||||||
|
|||||||
@@ -61,15 +61,15 @@ public abstract class SharedJobSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
// Not that many departments so we can just eat the cost instead of storing the inverse lookup.
|
// Not that many departments so we can just eat the cost instead of storing the inverse lookup.
|
||||||
var departmentProtos = _protoManager.EnumeratePrototypes<DepartmentPrototype>().ToList();
|
var departmentProtos = _protoManager.EnumeratePrototypes<DepartmentPrototype>().ToList();
|
||||||
departmentProtos.Sort((x, y) => string.Compare(x.ID, y.ID, StringComparison.Ordinal));
|
departmentProtos = departmentProtos.OrderByDescending(d => d.Weight).ToList();
|
||||||
|
|
||||||
foreach (var department in departmentProtos)
|
foreach (var department in departmentProtos)
|
||||||
{
|
{
|
||||||
if (department.Roles.Contains(jobProto))
|
if (!department.Roles.Contains(jobProto))
|
||||||
{
|
continue;
|
||||||
departmentPrototype = department;
|
|
||||||
return true;
|
departmentPrototype = department;
|
||||||
}
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
departmentPrototype = null;
|
departmentPrototype = null;
|
||||||
|
|||||||
@@ -5,4 +5,7 @@ public sealed partial class KnockdownOnCollideComponent : Component
|
|||||||
{
|
{
|
||||||
[DataField]
|
[DataField]
|
||||||
public float BlurTime = 20f;
|
public float BlurTime = 20f;
|
||||||
|
|
||||||
|
[DataField]
|
||||||
|
public bool UseBlur;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using Content.Shared.Eye.Blinding.Components;
|
|||||||
using Content.Shared.Projectiles;
|
using Content.Shared.Projectiles;
|
||||||
using Content.Shared.Standing.Systems;
|
using Content.Shared.Standing.Systems;
|
||||||
using Content.Shared.StatusEffect;
|
using Content.Shared.StatusEffect;
|
||||||
|
using Content.Shared.Throwing;
|
||||||
|
|
||||||
namespace Content.Shared._White.Knockdown;
|
namespace Content.Shared._White.Knockdown;
|
||||||
|
|
||||||
@@ -15,16 +16,24 @@ public sealed class KnockdownOnCollideSystem : EntitySystem
|
|||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<KnockdownOnCollideComponent, ProjectileHitEvent>(OnProjectileHit);
|
SubscribeLocalEvent<KnockdownOnCollideComponent, ProjectileHitEvent>(OnProjectileHit);
|
||||||
|
SubscribeLocalEvent<KnockdownOnCollideComponent, ThrowDoHitEvent>(OnEntityHit);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEntityHit(Entity<KnockdownOnCollideComponent> ent, ref ThrowDoHitEvent args)
|
||||||
|
{
|
||||||
|
ApplyEffects(args.Target, ent.Comp);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnProjectileHit(Entity<KnockdownOnCollideComponent> ent, ref ProjectileHitEvent args)
|
private void OnProjectileHit(Entity<KnockdownOnCollideComponent> ent, ref ProjectileHitEvent args)
|
||||||
{
|
{
|
||||||
_standing.TryLieDown(args.Target, null, SharedStandingStateSystem.DropHeldItemsBehavior.AlwaysDrop);
|
ApplyEffects(args.Target, ent.Comp);
|
||||||
|
}
|
||||||
|
|
||||||
if (ent.Comp.BlurTime <= 0f)
|
private void ApplyEffects(EntityUid target, KnockdownOnCollideComponent component)
|
||||||
return;
|
{
|
||||||
|
_standing.TryLieDown(target, null, SharedStandingStateSystem.DropHeldItemsBehavior.AlwaysDrop);
|
||||||
|
|
||||||
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(args.Target, "BlurryVision",
|
if (component.UseBlur)
|
||||||
TimeSpan.FromSeconds(ent.Comp.BlurTime), true);
|
_statusEffects.TryAddStatusEffect<BlurryVisionComponent>(target, "BlurryVision", TimeSpan.FromSeconds(component.BlurTime), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,4 +50,13 @@ salvage-expedition-difficulty-Minor = Незначительная
|
|||||||
|
|
||||||
ent-ToySwordDouble = двойной игрушечный меч
|
ent-ToySwordDouble = двойной игрушечный меч
|
||||||
|
|
||||||
|
# Cult
|
||||||
|
|
||||||
|
ent-CultBola = магическая { ent-Bola }
|
||||||
|
.desc = { ent-Bola.desc }
|
||||||
|
.suffic = культ
|
||||||
|
|
||||||
|
# Energy bola
|
||||||
|
|
||||||
|
ent-EnergyBola = энергобола
|
||||||
|
.desc = Соверешенное слияние технологии и справедливости для отлова преступников.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
SmokeGrenade: 6
|
SmokeGrenade: 6
|
||||||
GrenadeStinger: 4
|
GrenadeStinger: 4
|
||||||
Flash: 7
|
Flash: 7
|
||||||
Bola: 7
|
EnergyBola: 7
|
||||||
Tourniquet: 7
|
Tourniquet: 7
|
||||||
FlashlightSeclite: 5
|
FlashlightSeclite: 5
|
||||||
ClothingEyesGlassesSunglasses: 2
|
ClothingEyesGlassesSunglasses: 2
|
||||||
|
|||||||
@@ -519,6 +519,7 @@
|
|||||||
- SmokeOnTrigger
|
- SmokeOnTrigger
|
||||||
- Flash
|
- Flash
|
||||||
- Handcuff
|
- Handcuff
|
||||||
|
- Ensnaring
|
||||||
- type: ItemMapper
|
- type: ItemMapper
|
||||||
mapLayers:
|
mapLayers:
|
||||||
flashbang:
|
flashbang:
|
||||||
|
|||||||
@@ -26,4 +26,3 @@
|
|||||||
hard: false
|
hard: false
|
||||||
mask:
|
mask:
|
||||||
- Opaque
|
- Opaque
|
||||||
- type: KnockdownOnCollide
|
|
||||||
|
|||||||
@@ -34,3 +34,4 @@
|
|||||||
True: { state: icon }
|
True: { state: icon }
|
||||||
False: { state: empty }
|
False: { state: empty }
|
||||||
- type: Appearance
|
- type: Appearance
|
||||||
|
useBlur: true
|
||||||
|
|||||||
@@ -44,9 +44,12 @@
|
|||||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
breakoutTime: 3.5 #all bola should generally be fast to remove
|
||||||
walkSpeed: 0.7 #makeshift bola shouldn't slow too much
|
walkSpeed: 0.7 #makeshift bola shouldn't slow too much
|
||||||
sprintSpeed: 0.7
|
sprintSpeed: 0.7
|
||||||
staminaDamage: 55 # Sudden weight increase sapping stamina
|
staminaDamage: 33 # Sudden weight increase sapping stamina
|
||||||
canThrowTrigger: true
|
canThrowTrigger: true
|
||||||
canMoveBreakout: true
|
canMoveBreakout: true
|
||||||
|
- type: KnockdownOnCollide
|
||||||
|
|
||||||
|
# WD added
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
parent: Bola
|
parent: Bola
|
||||||
@@ -54,9 +57,42 @@
|
|||||||
name: Bola
|
name: Bola
|
||||||
description: Linked together with some spare cuffs and metal.
|
description: Linked together with some spare cuffs and metal.
|
||||||
components:
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: White/Cult/bola.rsi
|
||||||
- type: Ensnaring
|
- type: Ensnaring
|
||||||
freeTime: 2.0
|
freeTime: 2.0
|
||||||
breakoutTime: 3.5 #all bola should generally be fast to remove
|
breakoutTime: 3.5 #all bola should generally be fast to remove
|
||||||
walkSpeed: 0.5
|
walkSpeed: 0.5
|
||||||
sprintSpeed: 0.5
|
sprintSpeed: 0.5
|
||||||
canThrowTrigger: true
|
canThrowTrigger: true
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: Bola
|
||||||
|
id: EnergyBola
|
||||||
|
name: Bola
|
||||||
|
description: Linked together with some spare cuffs and metal.
|
||||||
|
components:
|
||||||
|
- type: Item
|
||||||
|
size: Small
|
||||||
|
- type: Sprite
|
||||||
|
sprite: White/Objects/Weapons/Throwable/energybola.rsi
|
||||||
|
- type: Ensnaring
|
||||||
|
freeTime: 1
|
||||||
|
breakoutTime: 2
|
||||||
|
walkSpeed: 0.8
|
||||||
|
sprintSpeed: 0.8
|
||||||
|
staminaDamage: 33
|
||||||
|
- type: EmitSoundOnLand
|
||||||
|
collection: sparks
|
||||||
|
- type: Destructible
|
||||||
|
thresholds:
|
||||||
|
- trigger:
|
||||||
|
!type:DamageTrigger
|
||||||
|
damage: 10
|
||||||
|
behaviors:
|
||||||
|
- !type:PlaySoundBehavior
|
||||||
|
sound:
|
||||||
|
collection: EnergyMiss
|
||||||
|
- !type:DoActsBehavior
|
||||||
|
acts: [ "Destruction" ]
|
||||||
|
- type: KnockdownOnCollide
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
weight: 10
|
weight: 10
|
||||||
startingGear: QuartermasterGear
|
startingGear: QuartermasterGear
|
||||||
icon: "JobIconQuarterMaster"
|
icon: "JobIconQuarterMaster"
|
||||||
announcementPrototype: QuartermasterArrivalNotification
|
arrivalNotificationPrototype: QuartermasterArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
icon: "JobIconCaptain"
|
icon: "JobIconCaptain"
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
joinNotifyCrew: true
|
joinNotifyCrew: true
|
||||||
announcementPrototype: CaptainArrivalNotification
|
arrivalNotificationPrototype: CaptainArrivalNotification
|
||||||
supervisors: job-supervisors-centcom
|
supervisors: job-supervisors-centcom
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
startingGear: HoPGear
|
startingGear: HoPGear
|
||||||
icon: "JobIconHeadOfPersonnel"
|
icon: "JobIconHeadOfPersonnel"
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
announcementPrototype: HeadOfPersonnelArrivalNotification
|
arrivalNotificationPrototype: HeadOfPersonnelArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
startingGear: ChiefEngineerGear
|
startingGear: ChiefEngineerGear
|
||||||
icon: "JobIconChiefEngineer"
|
icon: "JobIconChiefEngineer"
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
announcementPrototype: ChiefEngineerArrivalNotification
|
arrivalNotificationPrototype: ChiefEngineerArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
time: 36000 #10 hrs
|
time: 36000 #10 hrs
|
||||||
startingGear: InspectorGear
|
startingGear: InspectorGear
|
||||||
icon: "JobIconInspector"
|
icon: "JobIconInspector"
|
||||||
announcementPrototype: InspectorArrivalNotification
|
arrivalNotificationPrototype: InspectorArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
access:
|
access:
|
||||||
- Service
|
- Service
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
weight: 10
|
weight: 10
|
||||||
startingGear: CMOGear
|
startingGear: CMOGear
|
||||||
icon: "JobIconChiefMedicalOfficer"
|
icon: "JobIconChiefMedicalOfficer"
|
||||||
announcementPrototype: ChiefMedicalOfficerArrivalNotification
|
arrivalNotificationPrototype: ChiefMedicalOfficerArrivalNotification
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
startingGear: ResearchDirectorGear
|
startingGear: ResearchDirectorGear
|
||||||
icon: "JobIconResearchDirector"
|
icon: "JobIconResearchDirector"
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
announcementPrototype: ResearchDirectorArrivalNotification
|
arrivalNotificationPrototype: ResearchDirectorArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
startingGear: HoSGear
|
startingGear: HoSGear
|
||||||
icon: "JobIconHeadOfSecurity"
|
icon: "JobIconHeadOfSecurity"
|
||||||
requireAdminNotify: true
|
requireAdminNotify: true
|
||||||
announcementPrototype: HeadOfSecurityArrivalNotification
|
arrivalNotificationPrototype: HeadOfSecurityArrivalNotification
|
||||||
supervisors: job-supervisors-captain
|
supervisors: job-supervisors-captain
|
||||||
whitelistedSpecies:
|
whitelistedSpecies:
|
||||||
- Human
|
- Human
|
||||||
|
|||||||
@@ -79,6 +79,8 @@
|
|||||||
- DoorBumpOpener
|
- DoorBumpOpener
|
||||||
- type: NameIdentifier
|
- type: NameIdentifier
|
||||||
group: Construct
|
group: Construct
|
||||||
|
- type: GlobalAntagonist
|
||||||
|
antagonistPrototype: globalAntagonistCult
|
||||||
|
|
||||||
- type: entity
|
- type: entity
|
||||||
id: JuggernautConstruct
|
id: JuggernautConstruct
|
||||||
|
|||||||
BIN
Resources/Textures/White/Cult/bola.rsi/icon.png
Normal file
BIN
Resources/Textures/White/Cult/bola.rsi/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 616 B |
14
Resources/Textures/White/Cult/bola.rsi/meta.json
Normal file
14
Resources/Textures/White/Cult/bola.rsi/meta.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from Citadel Station at https://github.com/Citadel-Station-13/Citadel-Station-13/commit/3cfea7eb92246d311de8b531347795bc76d6dab6",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 629 B |
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": null,
|
||||||
|
"copyright": null,
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "icon",
|
||||||
|
"delays": [
|
||||||
|
[
|
||||||
|
0.1,
|
||||||
|
0.1
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user