diff --git a/Content.Client/LegallyDistinctSpaceFerret/CanBackflipSystem.cs b/Content.Client/LegallyDistinctSpaceFerret/CanBackflipSystem.cs new file mode 100644 index 00000000000000..5a56f0cc9bdd10 --- /dev/null +++ b/Content.Client/LegallyDistinctSpaceFerret/CanBackflipSystem.cs @@ -0,0 +1,54 @@ +using Content.Shared.LegallyDistinctSpaceFerret; +using Robust.Client.Animations; +using Robust.Client.Audio; +using Robust.Client.GameObjects; +using Robust.Shared.Animations; +using Robust.Shared.Audio; +using Robust.Shared.Player; + +namespace Content.Client.LegallyDistinctSpaceFerret; + +public sealed class CanBackflipSystem : EntitySystem +{ + [Dependency] private readonly AnimationPlayerSystem _animation = default!; + [Dependency] private readonly AudioSystem _audio = default!; + + public const string BackflipKey = "backflip"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeNetworkEvent(OnBackflipEvent); + } + + public void OnBackflipEvent(DoABackFlipEvent args) + { + if (!TryGetEntity(args.Actioner, out var uid)) + { + return; + } + + _animation.Play(uid.Value, new Animation + { + Length = TimeSpan.FromSeconds(0.66), + AnimationTracks = + { + new AnimationTrackComponentProperty() + { + ComponentType = typeof(SpriteComponent), + Property = nameof(SpriteComponent.Rotation), + InterpolationMode = AnimationInterpolationMode.Linear, + KeyFrames = + { + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(0), 0f), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(180), 0.33f), + new AnimationTrackProperty.KeyFrame(Angle.FromDegrees(360), 0.33f), + } + } + } + }, BackflipKey); + + _audio.PlayEntity(new SoundPathSpecifier(args.SfxSource), Filter.Local(), uid.Value, false); + } +} diff --git a/Content.Client/LegallyDistinctSpaceFerret/CanHibernateSystem.cs b/Content.Client/LegallyDistinctSpaceFerret/CanHibernateSystem.cs new file mode 100644 index 00000000000000..e6e89b8db86631 --- /dev/null +++ b/Content.Client/LegallyDistinctSpaceFerret/CanHibernateSystem.cs @@ -0,0 +1,31 @@ +using Content.Shared.LegallyDistinctSpaceFerret; +using Robust.Client.Audio; +using Robust.Client.GameObjects; +using Robust.Shared.Audio; + +namespace Content.Client.LegallyDistinctSpaceFerret; + +public sealed class CanHibernateSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeNetworkEvent(OnHibernateEvent); + } + + public void OnHibernateEvent(EntityHasHibernated args) + { + if (!TryGetEntity(args.Hibernator, out var uid)) + { + return; + } + + if (!TryComp(uid, out var comp)) + { + return; + } + + comp.LayerSetState(0, args.SpriteStateId); + } +} diff --git a/Content.Server/Interaction/InteractionPopupSystem.cs b/Content.Server/Interaction/InteractionPopupSystem.cs index 77b76f898a7a05..505e53ea8a6a5f 100644 --- a/Content.Server/Interaction/InteractionPopupSystem.cs +++ b/Content.Server/Interaction/InteractionPopupSystem.cs @@ -13,6 +13,11 @@ namespace Content.Server.Interaction; +public sealed class InteractionAttemptFailed(EntityUid target) +{ + public EntityUid Target = target; +} + public sealed class InteractionPopupSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; @@ -96,6 +101,8 @@ private void SharedInteract( if (component.InteractFailureSpawn != null) Spawn(component.InteractFailureSpawn, _transform.GetMapCoordinates(uid)); + + RaiseLocalEvent(target, new InteractionAttemptFailed(target)); } if (component.MessagePerceivedByOthers != null) diff --git a/Content.Server/LegallyDistinctSpaceFerret/BrainrotSystem.cs b/Content.Server/LegallyDistinctSpaceFerret/BrainrotSystem.cs new file mode 100644 index 00000000000000..66ada6b44e1f7e --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/BrainrotSystem.cs @@ -0,0 +1,154 @@ +using System.Threading; +using Content.Server.Popups; +using Content.Server.Speech; +using Content.Shared.LegallyDistinctSpaceFerret; +using Content.Shared.Mind; +using Content.Shared.Physics; +using Robust.Shared.Physics.Collision.Shapes; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Events; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Random; +using Timer = Robust.Shared.Timing.Timer; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +/// +/// Raised locally when a mind gets too close to a Brainrot-causer. +/// +/// Who got brainrot +/// Who caused brainrot +/// How long will they have it for +public struct EntityGivenBrainrotEvent(EntityUid target, EntityUid cause, float time) +{ + public EntityUid Cause = cause; + public EntityUid Target = target; + public float Time = time; +} + +/// +/// Raised locally when a mind is freed from brainrot +/// +/// Who had brainrot +public struct EntityLostBrainrotEvent(EntityUid target) +{ + public EntityUid Target = target; +} + +public sealed class BrainrotSystem : EntitySystem +{ + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly FixtureSystem _fixtures = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + + public const string BrainrotFixture = "brainrot"; + public const string BrainRotApplied = "brainrot-applied"; + public const string BrainRotLost = "brainrot-lost"; + public readonly string[] BrainRotReplacementStrings = + [ + "brainrot-replacement-1", + "brainrot-replacement-2", + "brainrot-replacement-3", + "brainrot-replacement-4", + "brainrot-replacement-5", + "brainrot-replacement-6" + ]; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnShutdown); + SubscribeLocalEvent(OnCollide); + SubscribeLocalEvent(EntityGivenBrainrot); + SubscribeLocalEvent(EntityLostBrainrot); + SubscribeLocalEvent(ApplyBrainRot); + } + + private void OnStartup(EntityUid uid, BrainrotAuraComponent component, ComponentStartup args) + { + if (!TryComp(uid, out var body)) + return; + + var shape = new PhysShapeCircle(component.Range); + + _fixtures.TryCreateFixture(uid, shape, BrainrotFixture, collisionLayer: (int) CollisionGroup.MobMask, hard: false, body: body); + } + + private void OnShutdown(EntityUid uid, BrainrotAuraComponent component, ComponentShutdown args) + { + if (!TryComp(uid, out var body) || + MetaData(uid).EntityLifeStage >= EntityLifeStage.Terminating) + { + return; + } + + _fixtures.DestroyFixture(uid, BrainrotFixture, body: body); + } + + private void OnCollide(EntityUid uid, BrainrotAuraComponent component, ref StartCollideEvent args) + { + // No effect if the mob is mindless + if (!_mind.TryGetMind(args.OtherEntity, out _, out _)) + { + return; + } + + // No effect if the mob has brainrot or causes brainrot + if (HasComp(args.OtherEntity) || HasComp(args.OtherEntity)) + { + return; + } + + RaiseLocalEvent(new EntityGivenBrainrotEvent(args.OtherEntity, uid, component.Time)); + } + + private void EntityGivenBrainrot(EntityGivenBrainrotEvent args) + { + if (TryComp(args.Target, out var comp)) + { + comp.Duration += args.Time; + } + else + { + comp = EnsureComp(args.Target); + } + + var cancel = new CancellationTokenSource(); + + Timer.Spawn(TimeSpan.FromSeconds(comp.Duration), () => + { + comp.Duration -= args.Time; + + if (comp.Duration <= 0.0f) + { + RaiseLocalEvent(new EntityLostBrainrotEvent(args.Target)); + } + }, cancel.Token); + + comp.Cancels.Add(cancel); + + _popup.PopupEntity(Loc.GetString(BrainRotApplied), args.Target, args.Target); + } + + private void EntityLostBrainrot(EntityLostBrainrotEvent args) + { + if (TryComp(args.Target, out var comp)) + { + foreach (var cancel in comp.Cancels) + { + cancel.Cancel(); + } + } + + RemComp(args.Target); + _popup.PopupEntity(Loc.GetString(BrainRotLost), args.Target, args.Target); + } + + private void ApplyBrainRot(EntityUid entity, BrainrotComponent comp, AccentGetEvent args) + { + args.Message = Loc.GetString(_random.Pick(BrainRotReplacementStrings)); + } +} diff --git a/Content.Server/LegallyDistinctSpaceFerret/CanBackflipSystem.cs b/Content.Server/LegallyDistinctSpaceFerret/CanBackflipSystem.cs new file mode 100644 index 00000000000000..df73a64021ff86 --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/CanBackflipSystem.cs @@ -0,0 +1,29 @@ +using Content.Server.Actions; +using Content.Shared.LegallyDistinctSpaceFerret; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +public sealed class CanBackflipSystem : EntitySystem +{ + [Dependency] private readonly ActionsSystem _actions = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnBackflipAction); + } + + private void OnInit(EntityUid uid, CanBackflipComponent component, MapInitEvent args) + { + _actions.AddAction(uid, ref component.BackflipActionEntity, component.BackflipAction, uid); + } + + public void OnBackflipAction(EntityUid uid, CanBackflipComponent comp, BackflipActionEvent args) + { + RaiseNetworkEvent(new DoABackFlipEvent(GetNetEntity(uid), comp.ClappaSfx)); + + args.Handled = true; + } +} diff --git a/Content.Server/LegallyDistinctSpaceFerret/CanHibernateSystem.cs b/Content.Server/LegallyDistinctSpaceFerret/CanHibernateSystem.cs new file mode 100644 index 00000000000000..d9591baf8c5acc --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/CanHibernateSystem.cs @@ -0,0 +1,86 @@ +using Content.Server.Actions; +using Content.Server.Atmos.Piping.Unary.Components; +using Content.Server.GameTicking; +using Content.Server.Ghost.Roles.Components; +using Content.Server.Popups; +using Content.Shared.Interaction.Components; +using Content.Shared.LegallyDistinctSpaceFerret; +using Content.Shared.Mind; +using Content.Shared.NPC; +using Content.Shared.Popups; +using Robust.Server.Audio; +using Robust.Shared.Audio; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +public sealed class CanHibernateSystem : EntitySystem +{ + [Dependency] private readonly ActionsSystem _actions = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly GameTicker _ticker = default!; + [Dependency] private readonly AudioSystem _audio = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnEepyAction); + } + + private void OnInit(EntityUid uid, CanHibernateComponent component, MapInitEvent args) + { + _actions.AddAction(uid, ref component.EepyActionEntity, component.EepyAction, uid); + } + + public void OnEepyAction(EntityUid uid, CanHibernateComponent comp, EepyActionEvent args) + { + // If you require food before hibernating, assert that this condition has been fulfilled. + if (_mind.TryGetObjectiveComp(uid, out var nutrientsCondition) && nutrientsCondition.NutrientsConsumed / nutrientsCondition.NutrientsRequired < 1.0) + { + _popup.PopupEntity(Loc.GetString(comp.NotEnoughNutrientsMessage), uid, PopupType.SmallCaution); + + return; + } + + // Assert that you're near a hibernation point (scrubbers) + var scrubbers = _lookup.GetEntitiesInRange(Transform(uid).Coordinates, 2f); + if (scrubbers.Count <= 0) + { + _popup.PopupEntity(Loc.GetString(comp.TooFarFromHibernationSpot), uid, PopupType.SmallCaution); + + return; + } + + if (_mind.TryGetObjectiveComp(uid, out var hibernateCondition)) + { + _audio.PlayPvs(new SoundPathSpecifier(hibernateCondition.SuccessSfx), uid); + _popup.PopupEntity(Loc.GetString(hibernateCondition.SuccessMessage), uid, PopupType.Large); + hibernateCondition.Hibernated = true; + } + + // Kick player out + var mind = _mind.GetMind(uid); + if (mind != null) + { + _ticker.OnGhostAttempt(mind.Value, false); + } + + // End ghost-role + AddComp(uid); + RemComp(uid); + RemComp(uid); + + // Notify + RaiseNetworkEvent(new EntityHasHibernated(GetNetEntity(uid), comp.SpriteStateId)); + + args.Handled = true; + } +} + +public struct EntityHibernateAttemptSuccessEvent(EntityUid entity) +{ + public EntityUid Entity = entity; +} diff --git a/Content.Server/LegallyDistinctSpaceFerret/ConsumeNutrientsObjective.cs b/Content.Server/LegallyDistinctSpaceFerret/ConsumeNutrientsObjective.cs new file mode 100644 index 00000000000000..3819c9ac96bda4 --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/ConsumeNutrientsObjective.cs @@ -0,0 +1,19 @@ +using Content.Shared.LegallyDistinctSpaceFerret; +using Content.Shared.Objectives.Components; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +public sealed class ConsumeNutrientsObjectiveSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnConsumeNutrientsGetProgress); + } + + private static void OnConsumeNutrientsGetProgress(EntityUid uid, ConsumeNutrientsConditionComponent comp, ref ObjectiveGetProgressEvent args) + { + args.Progress = comp.NutrientsConsumed / comp.NutrientsRequired; + } +} diff --git a/Content.Server/LegallyDistinctSpaceFerret/HibernateObjectiveSystem.cs b/Content.Server/LegallyDistinctSpaceFerret/HibernateObjectiveSystem.cs new file mode 100644 index 00000000000000..5250fbee5f9298 --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/HibernateObjectiveSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared.LegallyDistinctSpaceFerret; +using Content.Shared.Objectives.Components; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +public sealed class HibernateObjectiveSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnHibernateGetProgress); + } + + private static void OnHibernateGetProgress(EntityUid uid, HibernateConditionComponent comp, ref ObjectiveGetProgressEvent args) + { + args.Progress = comp.Hibernated ? 1.0f : 0.0f; + } +} diff --git a/Content.Server/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretSystem.cs b/Content.Server/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretSystem.cs new file mode 100644 index 00000000000000..01ca018a56c624 --- /dev/null +++ b/Content.Server/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretSystem.cs @@ -0,0 +1,87 @@ +using Content.Server.Chat.Managers; +using Content.Server.GameTicking; +using Content.Server.GameTicking.Rules.Components; +using Content.Server.GenericAntag; +using Content.Server.Interaction; +using Content.Server.Popups; +using Content.Server.Roles; +using Content.Server.StationEvents.Events; +using Content.Shared.LegallyDistinctSpaceFerret; +using Content.Shared.Mind; +using Content.Shared.Nutrition.EntitySystems; +using Content.Shared.Roles; +using Robust.Server.Audio; +using Robust.Shared.Audio; + +namespace Content.Server.LegallyDistinctSpaceFerret; + +public sealed class LegallyDistinctSpaceFerretSystem : EntitySystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly AudioSystem _audio = default!; + [Dependency] private readonly RoleSystem _role = default!; + [Dependency] private readonly IChatManager _chatMan = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly GameTicker _ticker = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnInteractFailed); + SubscribeLocalEvent(OnHungerModified); + } + + private void OnInit(EntityUid uid, LegallyDistinctSpaceFerretComponent component, GenericAntagCreatedEvent args) + { + var mind = args.Mind; + + if (mind.Session == null) + return; + + var session = mind.Session; + _role.MindAddRole(args.MindId, new RoleBriefingComponent + { + Briefing = Loc.GetString(component.RoleBriefing) + }, mind); + _role.MindAddRole(args.MindId, new LegallyDistinctSpaceFerretRoleComponent() + { + PrototypeId = component.AntagProtoId + }, mind); + _role.MindPlaySound(args.MindId, new SoundPathSpecifier(component.RoleIntroSfx), mind); + _chatMan.DispatchServerMessage(session, Loc.GetString(component.RoleGreeting)); + } + + public void OnInteractFailed(EntityUid uid, LegallyDistinctSpaceFerretComponent _, InteractionAttemptFailed args) + { + RaiseLocalEvent(uid, new BackflipActionEvent()); + } + + private void OnHungerModified(EntityUid uid, LegallyDistinctSpaceFerretComponent comp, HungerModifiedEvent args) + { + if (_mind.TryGetObjectiveComp(uid, out var nutrientsCondition) && args.Amount > 0) + { + nutrientsCondition.NutrientsConsumed += args.Amount; + } + } +} + +[RegisterComponent, Access(typeof(LegallyDistinctSpaceFerretSystem)), ExclusiveAntagonist] +public sealed partial class LegallyDistinctSpaceFerretRoleComponent : AntagonistRoleComponent; + +[RegisterComponent] +public sealed partial class LegallyDistinctSpaceFerretSpawnRuleComponent : Component; + +public sealed class LegallyDistinctSpaceFerretSpawnRule : StationEventSystem +{ + protected override void Started(EntityUid uid, LegallyDistinctSpaceFerretSpawnRuleComponent comp, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, comp, gameRule, args); + + TryFindRandomTile(out _, out _, out _, out var coords); + Sawmill.Info($"Creating ferret spawn point at {coords}"); + Spawn("SpawnPointGhostLegallyDistinctSpaceFerret", coords); + } +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/BrainrotAuraComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/BrainrotAuraComponent.cs new file mode 100644 index 00000000000000..e0a4decc6ddb1a --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/BrainrotAuraComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class BrainrotAuraComponent : Component +{ + [DataField] + public float Range = 3.0f; + + [DataField] + public float Time = 10.0f; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/BrainrotComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/BrainrotComponent.cs new file mode 100644 index 00000000000000..4be3d76ba81c5b --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/BrainrotComponent.cs @@ -0,0 +1,12 @@ +using System.Threading; + +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class BrainrotComponent : Component +{ + [DataField] + public float Duration = 10.0f; + + public List Cancels = []; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/CanBackflipComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/CanBackflipComponent.cs new file mode 100644 index 00000000000000..73ad7e58264d35 --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/CanBackflipComponent.cs @@ -0,0 +1,29 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class CanBackflipComponent : Component +{ + [DataField] + public EntProtoId BackflipAction = "ActionBackflip"; + + [DataField] + public EntityUid? BackflipActionEntity; + + [DataField] + public string ClappaSfx = ""; +} + +public sealed partial class BackflipActionEvent : InstantActionEvent +{ +} + +[Serializable, NetSerializable] +public sealed class DoABackFlipEvent(NetEntity actioner, string sfxSource) : EntityEventArgs +{ + public NetEntity Actioner = actioner; + public string SfxSource = sfxSource; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/CanHibernateComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/CanHibernateComponent.cs new file mode 100644 index 00000000000000..2a95105d0966d6 --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/CanHibernateComponent.cs @@ -0,0 +1,35 @@ +using Content.Shared.Actions; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class CanHibernateComponent : Component +{ + [DataField] + public EntProtoId EepyAction = "ActionEepy"; + + [DataField] + public EntityUid? EepyActionEntity; + + [DataField] + public string NotEnoughNutrientsMessage = ""; + + [DataField] + public string TooFarFromHibernationSpot = ""; + + [DataField] + public string SpriteStateId = ""; +} + +public sealed partial class EepyActionEvent : InstantActionEvent +{ +} + +[Serializable, NetSerializable] +public sealed class EntityHasHibernated(NetEntity hibernator, string spriteStateId) : EntityEventArgs +{ + public NetEntity Hibernator = hibernator; + public string SpriteStateId = spriteStateId; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/ConsumeNutrientsConditionComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/ConsumeNutrientsConditionComponent.cs new file mode 100644 index 00000000000000..bc2c3ed70c94f3 --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/ConsumeNutrientsConditionComponent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class ConsumeNutrientsConditionComponent : Component +{ + [DataField] + public float NutrientsRequired = 150.0f; + + public float NutrientsConsumed; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/HibernateConditionComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/HibernateConditionComponent.cs new file mode 100644 index 00000000000000..f994e34970fd1d --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/HibernateConditionComponent.cs @@ -0,0 +1,13 @@ +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class HibernateConditionComponent : Component +{ + public bool Hibernated; + + [DataField] + public string SuccessMessage = ""; + + [DataField] + public string SuccessSfx = ""; +} diff --git a/Content.Shared/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretComponent.cs b/Content.Shared/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretComponent.cs new file mode 100644 index 00000000000000..1b1386ffa4394d --- /dev/null +++ b/Content.Shared/LegallyDistinctSpaceFerret/LegallyDistinctSpaceFerretComponent.cs @@ -0,0 +1,25 @@ +using System.Threading; +using Content.Shared.Actions; +using Content.Shared.Roles; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.LegallyDistinctSpaceFerret; + +[RegisterComponent] +public sealed partial class LegallyDistinctSpaceFerretComponent : Component +{ + [DataField] + public string RoleIntroSfx = ""; + + [DataField] + public ProtoId AntagProtoId = "LegallyDistinctSpaceFerret"; + + [DataField] + public string RoleBriefing = ""; + + [DataField] + public string RoleGreeting = ""; +} diff --git a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs index d8808b6e4ab87c..9a77081d877c29 100644 --- a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs @@ -69,6 +69,8 @@ public void ModifyHunger(EntityUid uid, float amount, HungerComponent? component if (!Resolve(uid, ref component)) return; SetHunger(uid, component.CurrentHunger + amount, component); + + RaiseLocalEvent(uid, new HungerModifiedEvent(amount)); } /// @@ -211,3 +213,7 @@ public override void Update(float frameTime) } } +public sealed class HungerModifiedEvent(float amount) : EntityEventArgs +{ + public float Amount = amount; +} diff --git a/Resources/Audio/Animals/attributions.yml b/Resources/Audio/Animals/attributions.yml index c34832a807a786..a8f421a7122775 100644 --- a/Resources/Audio/Animals/attributions.yml +++ b/Resources/Audio/Animals/attributions.yml @@ -7,7 +7,7 @@ license: "CC-BY-3.0" copyright: "Modified from 'Meow 4.wav' by freesound user 'TRNGLE. The original audio was trimmed, split to mono, and converted from WAV to OGG format" source: "https://freesound.org/people/TRNGLE/sounds/368006/" - + - files: ["cat_meow2.ogg"] license: "CC-BY-3.0" copyright: "Created by freesound user 'TRNGLE. The original audio split to mono, and converted from WAV to OGG format" @@ -117,24 +117,28 @@ license: "CC-BY-4.0" copyright: "Audio is recorded/created by Pfranzen 'FreeSound.org'. The original audio was trimmed and renamed" source: "https://freesound.org/people/pfranzen/sounds/322744/" - + - files: ["dog_bark1.ogg"] license: "CC0-1.0" copyright: "Audio is recorded/created by KFerentchak 'FreeSound.org'. The original audio was trimmed and renamed" - source: "https://freesound.org/people/KFerentchak/sounds/235912/" - + source: "https://freesound.org/people/KFerentchak/sounds/235912/" + - files: ["dog_bark2.ogg"] license: "CC0-1.0" copyright: "Audio is recorded/created by KFerentchak 'FreeSound.org'. The original audio was trimmed and renamed" - source: "https://freesound.org/people/KFerentchak/sounds/235912/" - + source: "https://freesound.org/people/KFerentchak/sounds/235912/" + - files: ["dog_bark3.ogg"] license: "CC0-1.0" copyright: "Audio is recorded/created by KFerentchak 'FreeSound.org'. The original audio was trimmed and renamed" source: "https://freesound.org/people/KFerentchak/sounds/235912/" - + - files: ["nymph_chirp.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from ParadiseSS13" source: "https://github.com/ParadiseSS13/Paradise/commit/a34f1054cef5a44a67fdac3b67b811137c6071dd" - \ No newline at end of file + +- files: ["wawa_intro.ogg", "wawa_outro.ogg", "wawa_chatter.ogg", "wawa_chillin.ogg", "wawa_exclaim.ogg", "wawa_question.ogg", "wawa_statement.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Hannah 'FairlySadPanda' Dawson, 2024. Industrial audio sample taken from GDC 2015 bundle - amb_JD_drone_gates_ofmydian" + source: "https://sonniss.com/gameaudiogdc" diff --git a/Resources/Audio/Animals/slugclappa.ogg b/Resources/Audio/Animals/slugclappa.ogg new file mode 100644 index 00000000000000..86bbd528c0f198 Binary files /dev/null and b/Resources/Audio/Animals/slugclappa.ogg differ diff --git a/Resources/Audio/Animals/wawa_chatter.ogg b/Resources/Audio/Animals/wawa_chatter.ogg new file mode 100644 index 00000000000000..7e2a7ec3ca0589 Binary files /dev/null and b/Resources/Audio/Animals/wawa_chatter.ogg differ diff --git a/Resources/Audio/Animals/wawa_chillin.ogg b/Resources/Audio/Animals/wawa_chillin.ogg new file mode 100644 index 00000000000000..5955fdf9679446 Binary files /dev/null and b/Resources/Audio/Animals/wawa_chillin.ogg differ diff --git a/Resources/Audio/Animals/wawa_exclaim.ogg b/Resources/Audio/Animals/wawa_exclaim.ogg new file mode 100644 index 00000000000000..99f280091f9ea8 Binary files /dev/null and b/Resources/Audio/Animals/wawa_exclaim.ogg differ diff --git a/Resources/Audio/Animals/wawa_intro.ogg b/Resources/Audio/Animals/wawa_intro.ogg new file mode 100644 index 00000000000000..ca6eedb6be0eaf Binary files /dev/null and b/Resources/Audio/Animals/wawa_intro.ogg differ diff --git a/Resources/Audio/Animals/wawa_outro.ogg b/Resources/Audio/Animals/wawa_outro.ogg new file mode 100644 index 00000000000000..3877f4a7babe7e Binary files /dev/null and b/Resources/Audio/Animals/wawa_outro.ogg differ diff --git a/Resources/Audio/Animals/wawa_question.ogg b/Resources/Audio/Animals/wawa_question.ogg new file mode 100644 index 00000000000000..ce9008a5d8c0a2 Binary files /dev/null and b/Resources/Audio/Animals/wawa_question.ogg differ diff --git a/Resources/Audio/Animals/wawa_statement.ogg b/Resources/Audio/Animals/wawa_statement.ogg new file mode 100644 index 00000000000000..21f9e8a23e98df Binary files /dev/null and b/Resources/Audio/Animals/wawa_statement.ogg differ diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index 134f54e3b092d7..413b6bca29214a 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -217,7 +217,13 @@ license: CC0-1.0 source: https://github.com/space-wizards/space-station-14/pull/23212 +- files: [oof.ogg] + copyright: '"hurt2.wav" by thecheeseman of Freesound.org. Edited.' + license: CC-BY-4.0 + source: https://freesound.org/people/thecheeseman/sounds/44429 + - files: ["metal-pipe-falling.ogg"] copyright: "Taken from thenotcheeseman via freesound.org and mixed from stereo to mono." license: CC0-1.0 source: "https://freesound.org/people/thenotcheeseman/sounds/679206/" + diff --git a/Resources/Audio/Effects/oof.ogg b/Resources/Audio/Effects/oof.ogg new file mode 100644 index 00000000000000..a21a68e91d0126 Binary files /dev/null and b/Resources/Audio/Effects/oof.ogg differ diff --git a/Resources/Locale/en-US/job/job-names.ftl b/Resources/Locale/en-US/job/job-names.ftl index 8cd35cac888619..5a061445bd787d 100644 --- a/Resources/Locale/en-US/job/job-names.ftl +++ b/Resources/Locale/en-US/job/job-names.ftl @@ -7,18 +7,18 @@ job-name-brigmedic = Brigmedic job-name-borg = Cyborg job-name-scientist = Scientist job-name-research-assistant = Research Assistant -job-name-rd = Research Director +job-name-rd = Head of Science job-name-psychologist = Psychologist job-name-intern = Medical Intern job-name-doctor = Medical Doctor job-name-paramedic = Paramedic -job-name-cmo = Chief Medical Officer +job-name-cmo = Head of Still Just a Week Away job-name-chemist = Chemist job-name-technical-assistant = Technical Assistant job-name-engineer = Station Engineer job-name-atmostech = Atmospheric Technician -job-name-hop = Head of Personnel -job-name-captain = Captain +job-name-hop = Head of Service +job-name-captain = Head of Station job-name-serviceworker = Service Worker job-name-centcomoff = CentCom Official job-name-reporter = Reporter @@ -26,14 +26,14 @@ job-name-musician = Musician job-name-librarian = Librarian job-name-lawyer = Lawyer job-name-mime = Mime -job-name-ce = Chief Engineer +job-name-ce = Head of Singularity job-name-janitor = Janitor job-name-chaplain = Chaplain job-name-botanist = Botanist job-name-bartender = Bartender job-name-passenger = Passenger job-name-salvagespec = Salvage specialist -job-name-qm = Quartermaster +job-name-qm = Head of Supply job-name-cargotech = Cargo Technician job-name-chef = Chef job-name-clown = Clown @@ -52,14 +52,14 @@ JobBartender = Bartender JobBorg = Borg JobBotanist = Botanist JobBoxer = Boxer -JobCaptain = Captain +JobCaptain = Head of Station JobCargoTechnician = Cargo Technician JobCentralCommandOfficial = Central Command Official JobChaplain = Chaplain JobChef = Chef JobChemist = Chemist -JobChiefEngineer = Chief Engineer -JobChiefMedicalOfficer = Chief Medical Officer +JobChiefEngineer = Head of Singularity +JobChiefMedicalOfficer = Head of Still Just a Week Away JobClown = Clown JobDetective = Detective JobBrigmedic = Brigmedic @@ -68,7 +68,7 @@ JobERTJanitor = ERT Janitor JobERTLeader = ERT Leader JobERTMedical = ERT Medical JobERTSecurity = ERT Security -JobHeadOfPersonnel = Head of Personnel +JobHeadOfPersonnel = Head of Service JobHeadOfSecurity = Head of Security JobJanitor = Janitor JobLawyer = Lawyer @@ -80,10 +80,10 @@ JobMusician = Musician JobParamedic = Paramedic JobPassenger = Passenger JobPsychologist = Psychologist -JobQuartermaster = Quartermaster +JobQuartermaster = Head of Supply JobReporter = Reporter JobResearchAssistant = Research Assistant -JobResearchDirector = Research Director +JobResearchDirector = Head of Science JobSalvageSpecialist = Salvage Specialist JobScientist = Scientist JobSecurityCadet = Security Cadet diff --git a/Resources/Locale/en-US/job/job-supervisors.ftl b/Resources/Locale/en-US/job/job-supervisors.ftl index 442852daa1715c..edc4def65719d3 100644 --- a/Resources/Locale/en-US/job/job-supervisors.ftl +++ b/Resources/Locale/en-US/job/job-supervisors.ftl @@ -1,15 +1,15 @@ job-supervisors-centcom = CentCom official -job-supervisors-captain = the captain -job-supervisors-hop = the head of personnel +job-supervisors-captain = the head of station +job-supervisors-hop = the head of service job-supervisors-hos = the head of security -job-supervisors-ce = the chief engineer -job-supervisors-cmo = the chief medical officer -job-supervisors-rd = the research director -job-supervisors-qm = the quartermaster -job-supervisors-service = chefs, botanists, the bartender, and the head of personnel -job-supervisors-engineering = station engineers, atmospheric technicians, and the chief engineer -job-supervisors-medicine = medical doctors, chemists, and the chief medical officer +job-supervisors-ce = the head of singularity +job-supervisors-cmo = the head of still just a week away +job-supervisors-rd = the head of science +job-supervisors-qm = the head of supply +job-supervisors-service = chefs, botanists, the bartender, and the head of service +job-supervisors-engineering = station engineers, atmospheric technicians, and the head of singularity +job-supervisors-medicine = medical doctors, chemists, and the head of still just a week away job-supervisors-security = security officers, the warden, and the head of security -job-supervisors-science = scientists, and the research director +job-supervisors-science = scientists, and the head of science job-supervisors-hire = whoever hires you job-supervisors-everyone = absolutely everyone diff --git a/Resources/Locale/en-US/legallydistinctspaceferret/role.ftl b/Resources/Locale/en-US/legallydistinctspaceferret/role.ftl new file mode 100644 index 00000000000000..836007c1ce4717 --- /dev/null +++ b/Resources/Locale/en-US/legallydistinctspaceferret/role.ftl @@ -0,0 +1,52 @@ +legallydistinctspaceferret-round-end-agent-name = ninja + +objective-issuer-legallydistinctspaceferret = [color=#33cc00]Space Ferret Tribe[/color] + +legallydistinctspaceferret-role-greeting = + I've been sent by my tribe to the surface to scavenge, and now I'm hungry and alone. :( + I need to eat a bunch of nutrients and find a safe place to hibernate! + Hopefully these strange tall creatures don't notice me. + +objective-condition-legallydistinctspaceferret-title = Prepare for hibernation! +objective-condition-legallydistinctspaceferret-description = You need to eat {$count} nutrients. + +roles-antag-legallydistinctspaceferret-name = Legally Distinct Space Ferret +roles-antag-legallydistinctspaceferret-objective = Find as much food as possible, then hibernate in a gas scrubber. + +legallydistinctspaceferret-role-briefing = You're a small, potentially-innocent creature lost on a big, scary space station. Eat as much food as you need to hibernate, then hibernate in a gas scrubber. You have no time limit, but leaving on the evac shuttle does NOT count as a draw or lesser success. Your hibernating body does not need to survive the remaining round, so feel free to clock out once you've had your fun. Happy April Fools! + +petting-success-legallydistinctspaceferret = You pet {THE($target)} on {POSS-ADJ($target)} legally distinct head. +petting-failure-legallydistinctspaceferret = You reach out to pet {THE($target)}, but {SUBJECT($target)} does a backflip! + +ghost-role-information-legallydistinctspaceferret-name = Legally Distinct Space Ferret +ghost-role-information-legallydistinctspaceferret-description = Wawa! Wawawa. Wa, wawawa, wa wa wa. +ghost-role-information-legallydistinctspaceferret-rules = You're a neutral antagonist, much like the closet skeleton, but have two objectives to fulfil. You don't remember anything from your previous life, unless you were a Legally Distinct Space Ferret. Consider yourself valid for random murder by the crew. We suggest you act adorable, are helpful, or become extremely robust. Go live your best life, wawa. + +accent-words-legallydistinctspaceferret-1 = Wa! +accent-words-legallydistinctspaceferret-2 = Wa? +accent-words-legallydistinctspaceferret-3 = Wa. +accent-words-legallydistinctspaceferret-4 = Wa... +accent-words-legallydistinctspaceferret-5 = Wawa! +accent-words-legallydistinctspaceferret-6 = Wawa? +accent-words-legallydistinctspaceferret-7 = Wawa. +accent-words-legallydistinctspaceferret-8 = Wawa... + +station-event-random-sentience-flavor-legallydistinctspaceferret = legally distinct space ferret + +chat-speech-verb-wawa-1 = intones +chat-speech-verb-wawa-2 = states +chat-speech-verb-wawa-3 = declares + +brainrot-applied = You feel strangeg, andug yourug mikug skug skug skug... +brainrot-lost = Skug skug skur skind slear from the influence of Brainrot. + +brainrot-replacement-1 = SCUG!! +brainrot-replacement-2 = Scug! +brainrot-replacement-3 = Scug. +brainrot-replacement-4 = Scug... +brainrot-replacement-5 = Scug? +brainrot-replacement-6 = Scug!? + +legallydistinctspaceferret-out-of-range = You need to find an air scrubber to hibernate in, wawa! +legallydistinctspaceferret-not-enough-nutrients = You've not consumed enough nutrients to hibernate yet, wawa! +legallydistinctspaceferret-you-win-popup = Until the next cycle... Happy April Fools, wawa! diff --git a/Resources/Locale/en-US/navmap-beacons/station-beacons.ftl b/Resources/Locale/en-US/navmap-beacons/station-beacons.ftl index 6434311f21f60c..1c1c57b140f57b 100644 --- a/Resources/Locale/en-US/navmap-beacons/station-beacons.ftl +++ b/Resources/Locale/en-US/navmap-beacons/station-beacons.ftl @@ -3,13 +3,13 @@ station-beacon-general = General station-beacon-command = Command station-beacon-bridge = Bridge station-beacon-vault = Vault -station-beacon-captain = Captain -station-beacon-hop = HOP +station-beacon-captain = HoS +station-beacon-hop = HoS station-beacon-security = Security station-beacon-brig = Brig station-beacon-warden = Warden -station-beacon-hos = HOS +station-beacon-hos = HoS station-beacon-armory = Armory station-beacon-perma-brig = Perma station-beacon-detective = Detective @@ -21,14 +21,14 @@ station-beacon-medical = Medical station-beacon-medbay = Medbay station-beacon-chemistry = Chem station-beacon-cryonics = Cryopods -station-beacon-cmo = CMO +station-beacon-cmo = HoS station-beacon-morgue = Morgue -station-beacon-surgery = Surgery +station-beacon-surgery = Just a Week Away station-beacon-science = Science station-beacon-research-and-development = Research station-beacon-research-server = Server -station-beacon-research-director = RD +station-beacon-research-director = HoS station-beacon-robotics = Robotics station-beacon-artifact-lab = Artifact station-beacon-anomaly-gen = Anomaly @@ -36,11 +36,11 @@ station-beacon-anomaly-gen = Anomaly station-beacon-supply = Supply station-beacon-cargo = Cargo station-beacon-cargo-bay = Cargo Bay -station-beacon-qm = QM +station-beacon-qm = HoS station-beacon-salvage = Salvage station-beacon-engineering = Engineering -station-beacon-ce = CE +station-beacon-ce = HoS station-beacon-ame = AME station-beacon-solars = Solars station-beacon-gravgen = Grav diff --git a/Resources/Locale/en-US/paper/stamp-component.ftl b/Resources/Locale/en-US/paper/stamp-component.ftl index 3fc7fe64ba9412..967fee368bc4f5 100644 --- a/Resources/Locale/en-US/paper/stamp-component.ftl +++ b/Resources/Locale/en-US/paper/stamp-component.ftl @@ -1,18 +1,18 @@ stamp-component-stamped-name-default = A very important person stamp-component-stamped-name-detective = Detective stamp-component-stamped-name-mime = Mime -stamp-component-stamped-name-captain = Captain +stamp-component-stamped-name-captain = Head of Station stamp-component-stamped-name-centcom = CentCom stamp-component-stamped-name-chaplain = Chaplain stamp-component-stamped-name-clown = Clown -stamp-component-stamped-name-cmo = Chief Medical Officer +stamp-component-stamped-name-cmo = Head of Still Just a Week Away stamp-component-stamped-name-denied = DENIED stamp-component-stamped-name-approved = APPROVED -stamp-component-stamped-name-hop = Head of Personnel +stamp-component-stamped-name-hop = Head of Service stamp-component-stamped-name-hos = Head of Security -stamp-component-stamped-name-qm = Quartermaster -stamp-component-stamped-name-rd = Research Director +stamp-component-stamped-name-qm = Head of Supply +stamp-component-stamped-name-rd = Head of Science stamp-component-stamped-name-warden = Warden stamp-component-stamped-name-trader = Trader stamp-component-stamped-name-syndicate = Syndicate -stamp-component-stamped-name-ce = Chief Engineer +stamp-component-stamped-name-ce = Head of Singularity diff --git a/Resources/Locale/en-US/prototypes/access/accesses.ftl b/Resources/Locale/en-US/prototypes/access/accesses.ftl index 0e8b1d9ac79f92..5ccb0dead1e7c9 100644 --- a/Resources/Locale/en-US/prototypes/access/accesses.ftl +++ b/Resources/Locale/en-US/prototypes/access/accesses.ftl @@ -1,6 +1,6 @@ id-card-access-level-command = Command -id-card-access-level-captain = Captain -id-card-access-level-head-of-personnel = Head of Personnel +id-card-access-level-captain = Head of Station +id-card-access-level-head-of-personnel = Head of Service id-card-access-level-cryogenics = Cryogenics id-card-access-level-head-of-security = Head of Security @@ -9,19 +9,19 @@ id-card-access-level-armory = Armory id-card-access-level-brig = Brig id-card-access-level-detective = Detective -id-card-access-level-chief-engineer = Chief Engineer +id-card-access-level-chief-engineer = Head of Singularity id-card-access-level-engineering = Engineering id-card-access-level-atmospherics = Atmospherics -id-card-access-level-research-director = Research Director +id-card-access-level-research-director = Head of Science id-card-access-level-research = Research -id-card-access-level-chief-medical-officer = Chief Medical Officer +id-card-access-level-chief-medical-officer = Head of Still Just a Week Away id-card-access-level-medical = Medical id-card-access-level-chemistry = Chemistry id-card-access-level-paramedic = Paramedic -id-card-access-level-quartermaster = Quartermaster +id-card-access-level-quartermaster = Head of Supply id-card-access-level-cargo = Cargo id-card-access-level-salvage = Salvage diff --git a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml index 0fe73de137778c..e85825615e8af7 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml @@ -2,7 +2,7 @@ id: CrateCargoLuxuryHardsuit parent: CratePirate name: luxury mining hardsuit crate - description: Finally, a hardsuit Quartermasters could call their own. Centcomm has heard you, now stop asking. + description: Finally, a hardsuit Heads of Supply could call their own. Centcomm has heard you, now stop asking. components: - type: StorageFill contents: diff --git a/Resources/Prototypes/Datasets/tips.yml b/Resources/Prototypes/Datasets/tips.yml index 765918bb7e3250..d5992bcf708675 100644 --- a/Resources/Prototypes/Datasets/tips.yml +++ b/Resources/Prototypes/Datasets/tips.yml @@ -43,7 +43,7 @@ - "As a Traitor, have you tried injecting plasma into batteries? In the case of a defibrillator, it explodes on use; hurting the user and the patient!" - "As a Nuclear Operative, stick together! While your equipment is robust, your fellow operatives are much better at saving your life: they can drag you away from danger while stunned and provide cover fire." - "As a Nuclear Operative, communication is key! Use your radio to speak to your fellow operatives and coordinate an attack plan." - - "As a Nuclear Operative, remember that stealth is an option. It'll be hard for the captain to fight back if he gets caught off guard by what he thinks is just a regular passenger!" + - "As a Nuclear Operative, remember that stealth is an option. It'll be hard for the Head of Station to fight back if he gets caught off guard by what he thinks is just a regular passenger!" - "As an antagonist, be mindful of the power of destroying telecommunications. It'll be a lot harder for people to call you out if they can't do so effectively!" - "You can examine your headset to see which radio channels you have available and how to speak in them." - "As a Salvage Specialist, always carry a GPS on you and take note of the station's coordinates in case your salvage is lost to space." @@ -74,10 +74,10 @@ - "As an Engineer, you can electrify grilles by placing powered cables beneath them." - "As an Engineer, always double check when you're setting up the singularity. It is easier than you think to loose it!" - "As an Engineer, you can use plasma glass to reinforce an area and prevent radiation. Uranium glass can also be used to prevent radiation." - - "As the Captain, you are one of the highest priority targets on the station. Everything from revolutions, to nuclear operatives, to traitors that need to rob you of your unique laser pistol or your life are things to worry about." - - "As the Captain, always take the nuclear disk and pinpointer with you every shift. It's a good idea to give one of these to another head you can trust with keeping it safe." - - "As the Captain, you have absolute access and control over the station, but this does not mean that being a horrible person won't result in mutiny." - - "As the Captain, try to be active and patrol the station. Staying in the bridge might be tempting, but you'll just end up putting a bigger target on your back!" + - "As the Head of Station, you are one of the highest priority targets on the station. Everything from revolutions, to nuclear operatives, to traitors that need to rob you of your unique laser pistol or your life are things to worry about." + - "As the Head of Station, always take the nuclear disk and pinpointer with you every shift. It's a good idea to give one of these to another head you can trust with keeping it safe." + - "As the Head of Station, you have absolute access and control over the station, but this does not mean that being a horrible person won't result in mutiny." + - "As the Head of Station, try to be active and patrol the station. Staying in the bridge might be tempting, but you'll just end up putting a bigger target on your back!" - "As a Scientist, you can try random things on an artifact while the scanner is on cooldown to speed up the point extraction process significantly." - "As a Scientist, you can utilize upgraded versions of machines to increase its effectiveness. This can make certain machines significantly better; salvage will love you if you upgrade their ore processor!" - "As a Scientist, you can build cyborgs using positronic brains and a chassis, they are just as useful as a new crew member." @@ -86,7 +86,7 @@ - "As a Medical Doctor, exercise caution when putting reptilians in cryopods. They will take a lot of extra cold damage, but you can mitigate this with some burn medicine or leporazine." - "As a Medical Doctor, remember that the health analyzer can be used if you lose your PDA. However it has a battery, and if it drains too quickly for your taste you can ask science to print a better battery for you!" - "As a Chemist, once you've made everything you've needed to, don't be afraid to make more silly reagents. Have you tried desoxyephedrine or licoxide?" - - "As a Medical Doctor, Chemist, or Chief Medical Officer, you can use chloral hydrate to non-lethally sedate unruly patients." + - "As a Medical Doctor, Chemist, or Head of Still Just a Week Away, you can use chloral hydrate to non-lethally sedate unruly patients." - "Don't be afraid to ask for help, whether from your peers in character or through LOOC, or from admins!" - "You'll quickly lose your interest in the game if you play to win and kill. If you find yourself doing this, take a step back and talk to people--it's a much better experience!" - "If there's something you need from another department, try asking! This game isn't singleplayer and you'd be surprised what you can get accomplished together!" diff --git a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml index 867bbc107697e4..22b6ddc7702166 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/backpacks.yml @@ -103,7 +103,7 @@ - type: entity parent: ClothingBackpack id: ClothingBackpackCaptain - name: captain's backpack + name: head of station's backpack description: It's a special backpack made exclusively for Nanotrasen officers. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index 2ac53effe63110..96cf1b36c13ec4 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -45,7 +45,7 @@ - type: entity parent: ClothingBackpackDuffel id: ClothingBackpackDuffelCaptain - name: captain's duffel bag + name: head of station's duffel bag description: A large duffel bag for holding extra captainly goods. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml index f598759056a87d..5e31a7a95452bc 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/satchel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/satchel.yml @@ -126,7 +126,7 @@ - type: entity parent: ClothingBackpackSatchel id: ClothingBackpackSatchelCaptain - name: captain's satchel + name: head of station's satchel description: An exclusive satchel for Nanotrasen officers. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index b84033a78749e4..836ae4f6c0005b 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -81,7 +81,7 @@ - type: entity parent: ClothingBeltStorageBase id: ClothingBeltChiefEngineer - name: chief engineer's toolbelt + name: head of singularity's toolbelt description: Holds tools, looks snazzy. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml index a2e18d99aa28c8..742b8b695b747f 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml @@ -65,8 +65,8 @@ - type: entity parent: ClothingHeadsetCargo id: ClothingHeadsetQM - name: qm headset - description: A headset used by the quartermaster. + name: HoS headset + description: A headset used by the head of supply. components: - type: ContainerFill containers: @@ -125,8 +125,8 @@ - type: entity parent: ClothingHeadsetEngineering id: ClothingHeadsetCE - name: ce headset - description: A headset for the chief engineer to ignore all emergency calls on. + name: HoS headset + description: A headset for the head of singularity to ignore all emergency calls on. components: - type: ContainerFill containers: @@ -154,8 +154,8 @@ - type: entity parent: ClothingHeadsetMedical id: ClothingHeadsetCMO - name: cmo headset - description: A headset used by the CMO. + name: HoS headset + description: A headset used by the HoS. components: - type: ContainerFill containers: @@ -215,7 +215,7 @@ - type: entity parent: ClothingHeadsetScience id: ClothingHeadsetRD - name: rd headset + name: HoS headset description: Lamarr used to love chewing on this... components: - type: ContainerFill diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml index 9dd72691b5a0a0..e74aeb6b91f433 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml @@ -13,7 +13,7 @@ - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltCargo - name: quartermaster's over-ear headset + name: head of supply's over-ear headset components: - type: ContainerFill containers: @@ -68,7 +68,7 @@ - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltEngineering - name: chief engineer's over-ear headset + name: head of singularity's over-ear headset components: - type: ContainerFill containers: @@ -84,7 +84,7 @@ - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltMedical - name: chief medical officer's over-ear headset + name: head of still just a week away's over-ear headset components: - type: ContainerFill containers: @@ -118,7 +118,7 @@ - type: entity parent: ClothingHeadsetAlt id: ClothingHeadsetAltScience - name: research director's over-ear headset + name: head of science's over-ear headset components: - type: ContainerFill containers: diff --git a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml index bf08db78f712fb..71d5566ebf1a80 100644 --- a/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml +++ b/Resources/Prototypes/Entities/Clothing/Hands/gloves.yml @@ -94,7 +94,7 @@ - type: entity parent: ClothingHandsBase id: ClothingHandsGlovesCaptain - name: captain gloves + name: head of station's gloves description: Regal blue gloves, with a nice gold trim. Swanky. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 25f641b1c4e1c5..77ebf9aef9fc87 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -237,8 +237,8 @@ - type: entity parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitCap - name: captain's hardsuit helmet - description: Special hardsuit helmet, made for the captain of the station. + name: head of station's hardsuit helmet + description: Special hardsuit helmet, made for the head of station. components: - type: BreathMask - type: Sprite @@ -253,8 +253,8 @@ - type: entity parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitEngineeringWhite - name: chief engineer's hardsuit helmet - description: Special hardsuit helmet, made for the chief engineer of the station. + name: head of singularity's hardsuit helmet + description: Special hardsuit helmet, made for the head of singularity of the station. components: - type: BreathMask - type: Sprite @@ -271,7 +271,7 @@ - type: entity parent: ClothingHeadHardsuitWithLightBase id: ClothingHeadHelmetHardsuitMedical - name: chief medical officer's hardsuit helmet + name: head of still just a week away's hardsuit helmet description: Lightweight medical hardsuit helmet that doesn't restrict your head movements. components: - type: BreathMask diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 367a7bb636cc60..eeb0a233c817fd 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -104,7 +104,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatBeretQM - name: quartermaster's beret + name: head of supply's beret description: A beret with the cargo's insignia emblazoned on it. For quartermasters that are more inclined towards style. components: - type: Sprite @@ -191,7 +191,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatCaptain - name: captain's hardhat + name: head of station's hardhat description: It's good being the king. components: - type: Sprite @@ -297,7 +297,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatHopcap - name: head of personnel's cap + name: head of service's cap description: A grand, stylish head of personnel's cap. components: - type: Sprite @@ -706,7 +706,7 @@ - type: entity parent: ClothingHeadBase id: ClothingHeadHatBeretCmo - name: chief medical officer's beret + name: head of still just a week away's beret description: Turquoise beret with a cross on the front. The sight of it calms you down and makes it clear that you will be cured. components: - type: Sprite @@ -826,7 +826,7 @@ parent: ClothingHeadBase id: ClothingHeadHatCapcap name: cap cap - description: A grand, stylish captain cap. + description: A grand, stylish head of station's cap. components: - type: Sprite sprite: Clothing/Head/Hats/capcap.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml index 68d50c5ab1ce15..b68ac8b9cc5df7 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml @@ -21,7 +21,7 @@ id: ClothingHeadHatHoodBioCmo name: bio hood suffix: CMO - description: An advanced hood for chief medical officers that protects the head and face from biological contaminants. + description: An advanced hood for heads of still just a week away that protects the head and face from biological contaminants. components: - type: IdentityBlocker - type: Sprite @@ -237,8 +237,8 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterCaptain noSpawn: true - name: captain's winter coat hood - description: An expensive hood, to keep the captain's head warm. + name: head of station's winter coat hood + description: An expensive hood, to keep the head of station's head warm. components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodcaptain.rsi @@ -260,7 +260,7 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterCE noSpawn: true - name: chief engineer's winter coat hood + name: head of singularity's winter coat hood components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodce.rsi @@ -294,7 +294,7 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterCMO noSpawn: true - name: chief medical officer's winter coat hood + name: head of still just a week away's winter coat hood components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodcmo.rsi @@ -316,7 +316,7 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterHOP noSpawn: true - name: head of personel's winter coat hood + name: head of service's winter coat hood components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodhop.rsi @@ -404,7 +404,7 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterQM noSpawn: true - name: quartermaster's coat hood + name: head of supply's coat hood components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodqm.rsi @@ -415,7 +415,7 @@ parent: ClothingHeadHatHoodWinterBase id: ClothingHeadHatHoodWinterRD noSpawn: true - name: research director's coat hood + name: head of science's coat hood components: - type: Sprite sprite: Clothing/Head/Hoods/Coat/hoodrd.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 1f70211caa84e6..0d91ac92699d9d 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -75,7 +75,7 @@ - type: entity parent: ClothingMaskGasAtmos id: ClothingMaskGasCaptain - name: captain's gas mask + name: head of station's gas mask description: Nanotrasen cut corners and repainted a spare atmospheric gas mask, but don't tell anyone. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml index 35a793791cc712..dcaee5bf3b6b8f 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/cloaks.yml @@ -8,11 +8,11 @@ sprite: Clothing/Neck/Cloaks/centcomcloakformal.rsi - type: StealTarget stealGroup: HeadCloak # leaving this here because I suppose it might be interesting? - + - type: entity parent: ClothingNeckBase id: ClothingNeckCloakCap - name: captain's cloak + name: head of station's cloak description: A pompous and comfy blue cloak with a nice gold trim, while not particularly valuable as your other possessions, it sure is fancy. components: - type: Sprite @@ -34,7 +34,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckCloakCe - name: chief engineer's cloak + name: head of singularity's cloak description: A dark green cloak with light blue ornaments, given to those who proved themselves to master the precise art of engineering. components: - type: Sprite @@ -45,7 +45,7 @@ - type: entity parent: ClothingNeckBase id: ClothingCloakCmo - name: chief medical officer's cloak + name: head of still just a week away's cloak description: A sterile blue cloak with a green cross, radiating with a sense of duty and willingness to help others. components: - type: Sprite @@ -56,7 +56,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckCloakRd - name: research director's cloak + name: head of science's cloak description: A white cloak with violet stripes, showing your status as the arbiter of cutting-edge technology. components: - type: Sprite @@ -67,7 +67,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckCloakQm - name: quartermaster's cloak + name: head of supply's cloak description: A strong brown cloak with a reflective stripe, while not as fancy as others, it does show your managing skills. components: - type: Sprite @@ -78,7 +78,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckCloakHop - name: head of personnel's cloak + name: head of service's cloak description: A blue cloak with red shoulders and gold buttons, proving you are the gatekeeper to any airlock on the station. components: - type: Sprite @@ -107,7 +107,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckCloakCapFormal - name: captain's formal cloak + name: head of station's formal cloak description: A lavish and decorated cloak for special occasions. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml index d82e1df2685af9..e01e2e46856fa9 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml @@ -1,7 +1,7 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckMantleCap - name: captain's mantle + name: head of station's mantle description: A comfortable and chique mantle befitting of only the most experienced captain. components: - type: Sprite @@ -12,36 +12,36 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckMantleCE - name: chief engineer's mantle + name: head of singularity's mantle description: High visibility, check. RIG system, check. High capacity cell, check. Everything a chief engineer could need in a stylish mantle. components: - type: Sprite sprite: Clothing/Neck/mantles/cemantle.rsi - type: Clothing sprite: Clothing/Neck/mantles/cemantle.rsi - + - type: entity parent: ClothingNeckBase id: ClothingNeckMantleCMO - name: chief medical officer's mantle + name: head of still just a week away's mantle description: For a CMO that has been in enough medbays to know that more PPE means less central command dry cleaning visits when the shift is over. components: - type: Sprite sprite: Clothing/Neck/mantles/cmomantle.rsi - type: Clothing sprite: Clothing/Neck/mantles/cmomantle.rsi - + - type: entity parent: ClothingNeckBase id: ClothingNeckMantleHOP - name: head of personnel's mantle + name: head of service's mantle description: A good HOP knows that paper pushing is only half the job... petting your dog and looking fashionable is the other half. components: - type: Sprite sprite: Clothing/Neck/mantles/hopmantle.rsi - type: Clothing sprite: Clothing/Neck/mantles/hopmantle.rsi - + - type: entity parent: ClothingNeckBase id: ClothingNeckMantleHOS @@ -52,11 +52,11 @@ sprite: Clothing/Neck/mantles/hosmantle.rsi - type: Clothing sprite: Clothing/Neck/mantles/hosmantle.rsi - + - type: entity parent: ClothingNeckBase id: ClothingNeckMantleRD - name: research director's mantle + name: head of science's mantle description: For when long days in the office consist of explosives, poisonous gas, murder robots, and a fresh pizza from cargo; this mantle will keep you comfy. components: - type: Sprite @@ -67,10 +67,10 @@ - type: entity parent: ClothingNeckBase id: ClothingNeckMantleQM - name: quartermaster's mantle + name: head of supply's mantle description: For the master of goods and materials to rule over the department, a befitting mantle to show off superiority! components: - type: Sprite sprite: Clothing/Neck/mantles/qmmantle.rsi - type: Clothing - sprite: Clothing/Neck/mantles/qmmantle.rsi + sprite: Clothing/Neck/mantles/qmmantle.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index fdaee45ccc8f2b..a523cd191ab514 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -212,7 +212,7 @@ - type: entity parent: ClothingOuterBaseLarge id: ClothingOuterArmorCaptainCarapace - name: "captain's carapace" + name: "head of station's carapace" description: "An armored chestpiece that provides protection whilst still offering maximum mobility and flexibility. Issued only to the station's finest." components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index 992051b92466dc..76331d05f1bea7 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -178,7 +178,7 @@ - type: entity parent: ClothingOuterStorageBase id: ClothingOuterCoatLabCmo - name: chief medical officer's lab coat + name: head of still just a week away's lab coat description: Bluer than the standard model. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index b6aaf23376ab57..ce72a783e8be9a 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -278,8 +278,8 @@ - type: entity parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitCap - name: captain's armored spacesuit - description: A formal armored spacesuit, made for the station's captain. + name: head of station's armored spacesuit + description: A formal armored spacesuit, made for the head of station. components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/capspace.rsi @@ -310,8 +310,8 @@ - type: entity parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitEngineeringWhite - name: chief engineer's hardsuit - description: A special hardsuit that protects against hazardous, low pressure environments, made for the chief engineer of the station. + name: head of singularity's hardsuit + description: A special hardsuit that protects against hazardous, low pressure environments, made for the head of singularity of the station. components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/engineering-white.rsi @@ -342,7 +342,7 @@ - type: entity parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitMedical - name: chief medical officer's hardsuit + name: head of still just a week away's hardsuit description: A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement. components: - type: Sprite @@ -441,7 +441,7 @@ parent: ClothingOuterHardsuitBase id: ClothingOuterHardsuitLuxury #DO NOT MAP - https://github.com/space-wizards/space-station-14/pull/19738#issuecomment-1703486738 name: luxury mining hardsuit - description: A refurbished mining hardsuit, fashioned after the Quartermaster's colors. Graphene lining provides less protection, but is much easier to move. + description: A refurbished mining hardsuit, fashioned after the Head of Supply's colors. Graphene lining provides less protection, but is much easier to move. components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/luxury.rsi diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 0a1a7e6a5dfe13..505b6b3e503537 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -76,7 +76,7 @@ - type: entity parent: ClothingOuterWinterCoatToggleable id: ClothingOuterWinterCap - name: captain's winter coat + name: head of station's winter coat components: - type: Sprite sprite: Clothing/OuterClothing/WinterCoats/coatcap.rsi @@ -100,7 +100,7 @@ - type: entity parent: ClothingOuterWinterCoatToggleable id: ClothingOuterWinterCE - name: chief engineer's winter coat + name: head of singularity's winter coat components: - type: Sprite sprite: Clothing/OuterClothing/WinterCoats/coatce.rsi @@ -154,7 +154,7 @@ - type: entity parent: ClothingOuterWinterCoatToggleable id: ClothingOuterWinterCMO - name: chief medical officer's winter coat + name: head of still just a week away's winter coat components: - type: Sprite sprite: Clothing/OuterClothing/WinterCoats/coatcmo.rsi @@ -214,7 +214,7 @@ - type: entity parent: ClothingOuterWinterCoatToggleable id: ClothingOuterWinterHoP - name: head of personnel's winter coat + name: head of service's winter coat components: - type: Sprite sprite: Clothing/OuterClothing/WinterCoats/coathop.rsi @@ -331,7 +331,7 @@ - type: entity parent: ClothingOuterWinterCoatToggleable id: ClothingOuterWinterQM - name: quartermaster's winter coat + name: head of supply's winter coat components: - type: Sprite sprite: Clothing/OuterClothing/WinterCoats/coatqm.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index 5573deb3149f5f..e2f6ca8c01ae39 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -12,8 +12,8 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtCaptain - name: captain's jumpskirt - description: It's a blue jumpskirt with some gold markings denoting the rank of "Captain". + name: head of station's jumpskirt + description: It's a blue jumpskirt with some gold markings denoting the rank of "Head of Station". components: - type: Sprite sprite: Clothing/Uniforms/Jumpskirt/captain.rsi @@ -34,8 +34,8 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtChiefEngineer - name: chief engineer's jumpskirt - description: It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of Chief Engineer. It has minor radiation shielding. + name: head of singularity's jumpskirt + description: It's a high visibility jumpskirt given to those engineers insane enough to achieve the rank of Head of Singularity. It has minor radiation shielding. components: - type: Sprite sprite: Clothing/Uniforms/Jumpskirt/ce.rsi @@ -45,7 +45,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtChiefEngineerTurtle - name: chief engineer's turtleneck + name: head of singularity's turtleneck description: A yellow turtleneck designed specifically for work in conditions of the engineering department. components: - type: Sprite @@ -111,8 +111,8 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtCMO - name: chief medical officer's jumpskirt - description: It's a jumpskirt worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. + name: head of still just a week away's jumpskirt + description: It's a jumpskirt worn by those with the experience to be Head of Still Just a Week Away. It provides minor biological protection. components: - type: Sprite sprite: Clothing/Uniforms/Jumpskirt/cmo.rsi @@ -155,7 +155,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtHoP - name: head of personnel's jumpskirt + name: head of service's jumpskirt description: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. components: - type: Sprite @@ -285,7 +285,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtQM - name: quartermaster's jumpskirt + name: head of supply's jumpskirt description: 'What can brown do for you?' components: - type: Sprite @@ -296,7 +296,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtQMTurtleneck - name: quartermasters's turtleneck + name: head of supply's turtleneck description: A sharp turtleneck made for the hardy work environment of supply. components: - type: Sprite @@ -307,8 +307,8 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtResearchDirector - name: research director's turtleneck - description: It's a turtleneck worn by those with the know-how to achieve the position of Research Director. Its fabric provides minor protection from biological contaminants. + name: head of science's turtleneck + description: It's a turtleneck worn by those with the know-how to achieve the position of Head of Science. Its fabric provides minor protection from biological contaminants. components: - type: Sprite sprite: Clothing/Uniforms/Jumpskirt/rnd.rsi @@ -573,7 +573,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtCapFormalDress - name: captain's formal dress + name: head of station's formal dress description: A dress for special occasions. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index a7ab4d3e23976f..5b3f1ec07cbe95 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -60,8 +60,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitCaptain - name: captain's jumpsuit - description: It's a blue jumpsuit with some gold markings denoting the rank of "Captain". + name: head of station's jumpsuit + description: It's a blue jumpsuit with some gold markings denoting the rank of "Head of Station". components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/captain.rsi @@ -93,8 +93,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitChiefEngineer - name: chief engineer's jumpsuit - description: It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of Chief Engineer. It has minor radiation shielding. + name: head of singularity's jumpsuit + description: It's a high visibility jumpsuit given to those engineers insane enough to achieve the rank of Head of Singularity. It has minor radiation shielding. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/ce.rsi @@ -104,7 +104,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitChiefEngineerTurtle - name: chief engineer's turtleneck + name: head of singularity's turtleneck description: A yellow turtleneck designed specifically for work in conditions of the engineering department. components: - type: Sprite @@ -256,8 +256,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitCMO - name: chief medical officer's jumpsuit - description: It's a jumpsuit worn by those with the experience to be Chief Medical Officer. It provides minor biological protection. + name: head of still just a week away's jumpsuit + description: It's a jumpsuit worn by those with the experience to be Head of Still Just a Week Away. It provides minor biological protection. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/cmo.rsi @@ -311,7 +311,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitHoP - name: head of personnel's jumpsuit + name: head of service's jumpsuit description: Rather bland and inoffensive. Perfect for vanishing off the face of the universe. components: - type: Sprite @@ -474,7 +474,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitQM - name: quartermaster's jumpsuit + name: head of supply's jumpsuit description: 'What can brown do for you?' components: - type: Sprite @@ -485,7 +485,7 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitQMTurtleneck - name: quartermasters's turtleneck + name: head of supply's turtleneck description: A sharp turtleneck made for the hardy work environment of supply. components: - type: Sprite @@ -496,8 +496,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitQMFormal - name: quartermasters's formal suit - description: Inspired by the quartermasters of military's past, the perfect outfit for supplying a formal occasion. + name: head of supply's formal suit + description: Inspired by the heads of supply of military's past, the perfect outfit for supplying a formal occasion. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/qmformal.rsi @@ -507,8 +507,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitResearchDirector - name: research director's turtleneck - description: It's a turtleneck worn by those with the know-how to achieve the position of Research Director. Its fabric provides minor protection from biological contaminants. + name: head of science's turtleneck + description: It's a turtleneck worn by those with the know-how to achieve the position of Head of Science. Its fabric provides minor protection from biological contaminants. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/rnd.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml index d6999a0a265dd4..c03764f1c7d0b2 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml @@ -76,8 +76,8 @@ - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitChiefEngineerNT - name: chief engineer jumpsuit - description: It is often joked that the role of the combat-sector Chief Engineer is where the actual, logistically-minded engineers are promoted to. Good luck. + name: head of singularity jumpsuit + description: It is often joked that the role of the combat-sector Head of Singularity is where the actual, logistically-minded engineers are promoted to. Good luck. components: - type: Sprite sprite: Clothing/Uniforms/Jumpsuit/ce_nt.rsi diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/legallydistinctspaceferret.yml b/Resources/Prototypes/Entities/Mobs/NPCs/legallydistinctspaceferret.yml new file mode 100644 index 00000000000000..20bfbff11284ca --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/NPCs/legallydistinctspaceferret.yml @@ -0,0 +1,305 @@ +- type: entity + name: Legally Distinct Space Ferret + id: MobLegallyDistinctSpaceFerret + parent: MobBaseAncestor + description: There's apparently a cult who worship these adorable vermin. It's a shame they cause Brainrot. Skug. + components: + # Basics + - type: LegallyDistinctSpaceFerret + roleIntroSfx: /Audio/Animals/wawa_intro.ogg + antagProtoId: LegallyDistinctSpaceFerret + roleBriefing: legallydistinctspaceferret-role-briefing + roleGreeting: legallydistinctspaceferret-role-greeting + - type: BrainrotAura + - type: CanBackflip + clappaSfx: /Audio/Animals/slugclappa.ogg + - type: CanHibernate + tooFarFromHibernationSpot: legallydistinctspaceferret-out-of-range + notEnoughNutrientsMessage: legallydistinctspaceferret-not-enough-nutrients + spriteStateId: legallydistinctspaceferret_eepy + - type: NameIdentifier + group: LegallyDistinctSpaceFerret + - type: ReplacementAccent + accent: legallydistinctspaceferret + - type: Sprite + drawdepth: SmallMobs + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + sprite: Mobs/Animals/legallydistinctspaceferret.rsi + state: legallydistinctspaceferret + - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + - type: RandomSprite + getAllGroups: true + available: + - enum.DamageStateVisualLayers.Base: + legallydistinctspaceferret: LegallyDistinctSpaceFerretColors + - type: DamageStateVisuals + states: + Alive: + Base: legallydistinctspaceferret + Critical: + Base: legallydistinctspaceferret_oof + Dead: + Base: legallydistinctspaceferret_rip + - type: MobThresholds + thresholds: + 0: Alive + 60: Critical + 125: Dead + - type: Temperature + heatDamageThreshold: 360 + coldDamageThreshold: 285 + currentTemperature: 310.15 + specificHeat: 42 + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeat + amount: 4 # Good eatin', though. You monster. + # They wawa + - type: Speech + speechVerb: Wawa + speechSounds: Wawa + - type: TypingIndicator + proto: moth + # They hard to pet + - type: InteractionPopup + successChance: 0.5 + interactSuccessString: petting-success-legallydistinctspaceferret + interactFailureString: petting-failure-legallydistinctspaceferret + interactSuccessSpawn: EffectHearts + interactSuccessSound: + path: /Audio/Animals/wawa_chillin.ogg + interactFailureSound: + path: /Audio/Animals/wawa_chatter.ogg + # They nyoom and go under doors/tables + - type: MovementSpeedModifier + baseWalkSpeed: 5 # nyoom + baseSprintSpeed: 7 # NYOOOOOM + - type: MeleeWeapon + soundHit: + path: /Audio/Effects/bite.ogg + angle: 30 + animation: WeaponArcBite + damage: + types: + Piercing: 15 # NOM - Do NOT mess with skugs. + - type: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.2 + density: 120 + mask: + - SmallMobMask + layer: + - SmallMobLayer + # Round impact + - type: GhostRole + prob: 1 + makeSentient: true + name: ghost-role-information-legallydistinctspaceferret-name + description: ghost-role-information-legallydistinctspaceferret-description + - type: Food + - type: Hunger + baseDecayRate: 0.3 + - type: GenericAntag + rule: LegallyDistinctSpaceFerretRule + # L.D.S.F.'s can have IDs because ... why not, honestly + - type: Inventory + templateId: legallydistinctspaceferret + - type: InventorySlots + + # Midround antagonist, spawned via random event +- type: entity + parent: BaseGameRule + id: LegallyDistinctSpaceFerretSpawn + noSpawn: true + components: + - type: StationEvent + weight: 10 + duration: 1 + minimumPlayers: 10 + - type: LegallyDistinctSpaceFerretSpawnRule + +- type: entity + id: SpawnPointGhostLegallyDistinctSpaceFerret + name: ghost role spawn point + suffix: legally distinct space ferret + parent: MarkerBase + components: + - type: GhostRole + name: ghost-role-information-legallydistinctspaceferret-name + description: ghost-role-information-legallydistinctspaceferret-description + rules: ghost-role-information-legallydistinctspaceferret-rules + - type: GhostRoleMobSpawner + prototype: MobLegallyDistinctSpaceFerret + - type: Sprite + sprite: Mobs/Animals/legallydistinctspaceferret.rsi + layers: + - state: legallydistinctspaceferret_eepy + +- type: entity + noSpawn: true + parent: BaseGameRule + id: LegallyDistinctSpaceFerretRule + components: + - type: GenericAntagRule + agentName: legallydistinctspaceferret-round-end-agent-name + objectives: + - ConsumeNutrientsObjective + - HibernateObjective + +- type: entity + abstract: true + parent: BaseObjective + id: BaseLegallyDistinctSpaceFerretObjective + components: + - type: Objective + difficulty: 1.5 + issuer: legallydistinctspaceferret + - type: RoleRequirement + roles: + components: + - LegallyDistinctSpaceFerretRole + +- type: entity + parent: BaseLegallyDistinctSpaceFerretObjective + id: ConsumeNutrientsObjective + description: Consume enough food to survive. + components: + - type: Objective + icon: + sprite: Mobs/Animals/legallydistinctspaceferret.rsi + state: legallydistinctspaceferret_eepy + - type: ConsumeNutrientsCondition + nutrientsRequired: 10.0 + +- type: entity + parent: BaseLegallyDistinctSpaceFerretObjective + id: HibernateObjective + description: Hibernate in a gas scrubber. + components: + - type: Objective + icon: + sprite: Mobs/Animals/legallydistinctspaceferret.rsi + state: legallydistinctspaceferret_eepy + - type: HibernateCondition + successMessage: legallydistinctspaceferret-you-win-popup + successSfx: /Audio/Animals/wawa_outro.ogg + +- type: accent + id: legallydistinctspaceferret + fullReplacements: + - accent-words-legallydistinctspaceferret-1 + - accent-words-legallydistinctspaceferret-2 + - accent-words-legallydistinctspaceferret-3 + - accent-words-legallydistinctspaceferret-4 + - accent-words-legallydistinctspaceferret-5 + - accent-words-legallydistinctspaceferret-6 + - accent-words-legallydistinctspaceferret-7 + - accent-words-legallydistinctspaceferret-8 + +- type: speechVerb + id: Wawa + speechVerbStrings: + - chat-speech-verb-wawa-1 + - chat-speech-verb-wawa-2 + - chat-speech-verb-wawa-3 + +- type: palette + id: LegallyDistinctSpaceFerretColors + name: LegallyDistinctSpaceFerretColors + colors: + Default: "#ffffff" + Innocent: "#f6f439" + Angry: "#dc5864" + Eldritch: "#dc5864" + Forgotten: "#111111" + Fat: "#fefcab" + WarCriminal: "#ab3430" + Cocaine: "#679cfe" + Mutant: "#7824a0" + Damned: "#98e652" + +- type: entity + id: ActionBackflip + name: Backflip + description: DO A BACKFLIP! + noSpawn: true + components: + - type: InstantAction + useDelay: 3 + icon: deprecated.rsi/deprecated.png + event: !type:BackflipActionEvent + checkCanInteract: false + +- type: entity + id: ActionEepy + name: Eepy + description: Hibernate. This ends your time as a Legally Distinct Space Ferret. Happy April Fools! + noSpawn: true + components: + - type: InstantAction + useDelay: 100 + icon: { sprite: Mobs/Animals/legallydistinctspaceferret.rsi, state: legallydistinctspaceferret_eepy } + event: !type:EepyActionEvent + checkCanInteract: false + +- type: speechSounds + id: Wawa + saySound: + path: /Audio/Animals/wawa_statement.ogg + askSound: + path: /Audio/Animals/wawa_question.ogg + exclaimSound: + path: /Audio/Animals/wawa_exclaim.ogg + +- type: antag + id: LegallyDistinctSpaceFerret + name: roles-antag-legallydistinctspaceferret-agent-name + antagonist: true + setPreference: false + objective: roles-antag-legallydistinctspaceferret-objective + +- type: inventoryTemplate + id: legallydistinctspaceferret + slots: + - name: head + slotTexture: head + slotFlags: HEAD + uiWindowPos: 1,2 + strippingWindowPos: 0,0 + displayName: Head + - name: ears + slotTexture: ears + slotFlags: EARS + stripTime: 3 + uiWindowPos: 0,2 + strippingWindowPos: 1,2 + displayName: Ears + - name: mask + slotTexture: mask + slotFlags: MASK + uiWindowPos: 0,1 + strippingWindowPos: 1,1 + displayName: Mask + - name: id + slotTexture: id + slotFlags: IDCARD + slotGroup: SecondHotbar + stripTime: 6 + uiWindowPos: 2,1 + strippingWindowPos: 2,4 + displayName: ID + +- type: nameIdentifierGroup + id: LegallyDistinctSpaceFerret + minValue: 1 + maxValue: 99 # I fucking dare you to spawn more than 100 wawa diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 747268466a6315..769a4b1ebd4c95 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -521,7 +521,7 @@ name: Renault parent: MobFox id: MobFoxRenault - description: The captain's trustworthy fox. + description: The head of station's trustworthy fox. components: - type: InteractionPopup successChance: 1 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml index 0b2af4c97f4dff..0da1ad7dfa4f58 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_flasks.yml @@ -57,8 +57,8 @@ - type: entity parent: FlaskBase id: DrinkFlask - name: captain's flask - description: A metal flask belonging to the captain + name: head of station's flask + description: A metal flask belonging to the head of station components: - type: Sprite sprite: Objects/Consumable/Drinks/flask.rsi diff --git a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml index 75cca712214e92..296b45b696c26f 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/encryption_keys.yml @@ -45,7 +45,7 @@ parent: EncryptionKey id: EncryptionKeyCentCom name: central command encryption key - description: An encryption key used by captain's bosses. + description: An encryption key used by head of station's bosses. components: - type: EncryptionKey channels: diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 0056f965a5cc7d..9140c93213068b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -314,7 +314,7 @@ state: pda-chaplain - type: entity - name: quartermaster PDA + name: head of supply PDA parent: BasePDA id: QuartermasterPDA description: PDA for the guy that orders the guns. @@ -428,7 +428,7 @@ - type: entity parent: BasePDA id: CaptainPDA - name: captain PDA + name: head of station PDA description: Surprisingly no different from your PDA. components: - type: Pda @@ -448,7 +448,7 @@ - type: entity parent: BasePDA id: HoPPDA - name: head of personnel PDA + name: head of service PDA description: Looks like it's been chewed on. components: - type: Pda @@ -469,7 +469,7 @@ - type: entity parent: BasePDA id: CEPDA - name: chief engineer PDA + name: head of singularity PDA description: Looks like it's barely been used. components: - type: Pda @@ -499,7 +499,7 @@ - type: entity parent: BaseMedicalPDA id: CMOPDA - name: chief medical officer PDA + name: head of still just a week away PDA description: Extraordinarily shiny and sterile. Has a built-in health analyzer. components: - type: Pda @@ -563,7 +563,7 @@ - type: entity parent: BasePDA id: RnDPDA - name: research director PDA + name: head of science PDA description: It appears surprisingly ordinary. components: - type: Pda diff --git a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml index 6cf66ba04211e7..f9c65010ef6c66 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml @@ -140,7 +140,7 @@ - type: entity parent: DefaultStationBeaconCommand id: DefaultStationBeaconCaptainsQuarters - suffix: Captain's Quarters + suffix: Head of Station's Quarters components: - type: NavMapBeacon text: station-beacon-captain diff --git a/Resources/Prototypes/Entities/Objects/Fun/figurines.yml b/Resources/Prototypes/Entities/Objects/Fun/figurines.yml index 61ce7079f75cff..8965b1bc1af434 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/figurines.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/figurines.yml @@ -23,7 +23,7 @@ - type: entity parent: BaseFigurine id: ToyFigurineHeadOfPersonnel - name: head of personnel figure + name: head of service figure description: A figurine depicting the glorious head of all personnel, away from their office as usual. components: - type: Sprite @@ -96,8 +96,8 @@ - type: entity parent: BaseFigurine id: ToyFigurineCaptain - name: captain figure - description: A figurine depicting the standard outfit of a captain belonging to a civilian-sector Nanotrasen vessel. + name: head of station figure + description: A figurine depicting the standard outfit of a head of station belonging to a civilian-sector Nanotrasen vessel. components: - type: Sprite state: captain @@ -168,7 +168,7 @@ - type: entity parent: BaseFigurine id: ToyFigurineQuartermaster - name: quartermaster figure + name: head of supply figure description: A figurine depicting the glorious head of the Cargo department. components: - type: Sprite @@ -177,7 +177,7 @@ - type: entity parent: BaseFigurine id: ToyFigurineChiefEngineer - name: chief engineer figure + name: head of singularity figure description: A figurine depicting the glorious head of the Engineering department. components: - type: Sprite @@ -204,7 +204,7 @@ - type: entity parent: BaseFigurine id: ToyFigurineResearchDirector - name: research director figure + name: head of science figure description: A figurine depicting the glorious head of the Science department. components: - type: Sprite @@ -222,7 +222,7 @@ - type: entity parent: BaseFigurine id: ToyFigurineChiefMedicalOfficer - name: chief medical officer figure + name: head of still just a week away figure description: A figurine depicting the glorious head of the Medical department. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml index df00d2eced9951..c0a266368be9d3 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml @@ -54,7 +54,7 @@ - type: entity id: BedsheetCaptain parent: BedsheetBase - name: captain's bedsheet + name: head of station's bedsheet description: It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index 553fdd3362a39e..811dd66b3b5a5d 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -102,7 +102,7 @@ - type: entity parent: IDCardStandard id: CaptainIDCard - name: captain ID card + name: head of station ID card components: - type: Sprite layers: @@ -219,7 +219,7 @@ - type: entity parent: IDCardStandard id: QuartermasterIDCard - name: quartermaster ID card + name: head of supply ID card components: - type: Sprite layers: @@ -366,7 +366,7 @@ - type: entity parent: IDCardStandard id: HoPIDCard - name: head of personnel ID card + name: head of service ID card components: - type: Sprite layers: @@ -380,7 +380,7 @@ - type: entity parent: IDCardStandard id: CEIDCard - name: chief engineer ID card + name: head of singularity ID card components: - type: Sprite layers: @@ -394,7 +394,7 @@ - type: entity parent: IDCardStandard id: CMOIDCard - name: chief medical officer ID card + name: head of still just a week away ID card components: - type: Sprite layers: @@ -408,7 +408,7 @@ - type: entity parent: IDCardStandard id: RDIDCard - name: research director ID card + name: head of science ID card components: - type: Sprite layers: diff --git a/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml b/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml index 301aed66849d66..2041ec3fb8f033 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml @@ -38,7 +38,7 @@ maxDistance: 5 - type: entity - name: captain's rubber stamp + name: head of station's rubber stamp parent: RubberStampBase id: RubberStampCaptain suffix: DO NOT MAP @@ -93,7 +93,7 @@ - ClownRubberStamp - type: entity - name: chief engineer's rubber stamp + name: head of singularity's rubber stamp parent: RubberStampBase id: RubberStampCE suffix: DO NOT MAP @@ -106,7 +106,7 @@ state: stamp-ce - type: entity - name: chief medical officer's rubber stamp + name: head of still just a week away's rubber stamp parent: RubberStampBase id: RubberStampCMO suffix: DO NOT MAP @@ -119,7 +119,7 @@ state: stamp-cmo - type: entity - name: head of personnel's rubber stamp + name: head of service's rubber stamp parent: RubberStampBase id: RubberStampHop suffix: DO NOT MAP @@ -159,7 +159,7 @@ state: stamp-mime - type: entity - name: quartermaster's rubber stamp + name: head of supply's rubber stamp parent: RubberStampBase id: RubberStampQm suffix: DO NOT MAP @@ -172,7 +172,7 @@ state: stamp-qm - type: entity - name: research director's rubber stamp + name: head of science's rubber stamp parent: RubberStampBase id: RubberStampRd suffix: DO NOT MAP diff --git a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml index f40f47115bb7f7..0bdc3e317474c4 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/jetpacks.yml @@ -142,7 +142,7 @@ - type: entity id: JetpackCaptain parent: BaseJetpack - name: captain's jetpack + name: head of station's jetpack suffix: Empty components: - type: Sprite @@ -165,7 +165,7 @@ - type: entity id: JetpackCaptainFilled parent: JetpackCaptain - name: captain's jetpack + name: head of station's jetpack suffix: Filled components: - type: GasTank diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 05cac3ae7b7ce3..036c0018f55b0a 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -1,8 +1,8 @@ - type: entity - name: captain's sabre + name: head of station's sabre parent: BaseItem id: CaptainSabre - description: A ceremonial weapon belonging to the captain of the station. + description: A ceremonial weapon belonging to the head of station. components: - type: Sharp - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml index 7e78f66efa6f69..c5f4dd08c3a1f1 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/fax_machine.yml @@ -99,7 +99,7 @@ - type: entity parent: FaxMachineBase id: FaxMachineCaptain - name: captain long range fax machine + name: head of station long range fax machine suffix: NukeCodes components: - type: FaxMachine diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 88ae5bb6d7ec44..e6f0dc14d5fb09 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -1197,7 +1197,7 @@ parent: VendingMachine id: VendingMachineGames name: Good Clean Fun - description: Vends things that the Captain and Head of Personnel are probably not going to appreciate you fiddling with instead of your job... + description: Vends things that the Head of Station and Head of Service are probably not going to appreciate you fiddling with instead of your job... components: - type: VendingMachine pack: GoodCleanFunInventory diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml index 647eae27724774..7db30fa47ef621 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/generator.yml @@ -34,3 +34,14 @@ - type: GuideHelp guides: [ Singularity, Power ] +- type: entity + parent: SingularityGenerator + id: WehularityGenerator + name: wehvitational wehularity generator + description: An Odd Device which produces a Wehvitational Wehularity when set up. + components: + - type: Sprite + sprite: Structures/Power/Generation/Singularity/wehgenerator.rsi + state: icon + - type: SingularityGenerator + spawnId: Wehularity diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/wehularity.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/wehularity.yml new file mode 100644 index 00000000000000..6d3d91da0dd87c --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/wehularity.yml @@ -0,0 +1,102 @@ +- type: entity + id: Wehularity + name: wehvitational wehularity + description: A mesmerizing swirl of weh that wehs in everyweh. If it's weh-ing towards you, weh. + components: + - type: Clickable + - type: AmbientSound + volume: -4 + range: 14 + sound: + path: /Audio/Effects/singularity.ogg + - type: Physics + bodyType: Dynamic + bodyStatus: InAir + - type: CanMoveInAir + - type: EventHorizon # To make the singularity consume things. + radius: 0.5 + canBreachContainment: false + colliderFixtureId: EventHorizonCollider + consumerFixtureId: EventHorizonConsumer + - type: GravityWell # To make the singularity attract things. + baseRadialAcceleration: 10 + maxRange: 4 + - type: Fixtures + fixtures: + EventHorizonCollider: + shape: + !type:PhysShapeCircle + radius: 0.35 + hard: true + restitution: 0.8 + density: 99999 + mask: + - AllMask + layer: + - AllMask + EventHorizonConsumer: + shape: + !type:PhysShapeCircle + radius: 0.35 + hard: false + mask: + - AllMask + layer: + - AllMask + - type: Singularity + energy: 180 + level: 1 + radsPerLevel: 2 + energyLoss: 1 + - type: RandomWalk # To make the singularity move around. + maxSpeed: 2.5 + minSpeed: 1.875 + - type: SingularityDistortion + falloffPower: 2.529822 + intensity: 3645 + - type: RadiationSource + slope: 0.2 # its emit really far away + intensity: 2 + - type: PointLight + enabled: true + radius: 10 + - type: Appearance + - type: GuideHelp + guides: [ Singularity, Power ] # uhhh.. I would hoped they'd have read the manual before ever getting in viewing distance... + - type: WarpPoint + follow: true + location: singularity + - type: Sprite + sprite: Structures/Power/Generation/Singularity/wehularity_1.rsi + shader: unshaded + layers: + - map: [ "VisualLevel" ] + state: wehularity_1 + - type: GenericVisualizer + visuals: + enum.SingularityAppearanceKeys.Singularity: + VisualLevel: + 1: + sprite: Structures/Power/Generation/Singularity/wehularity_1.rsi + state: wehularity_1 + scale: 1.0,1.0 + 2: + sprite: Structures/Power/Generation/Singularity/wehularity_2.rsi + state: wehularity_2 + scale: 1.0,1.0 + 3: + sprite: Structures/Power/Generation/Singularity/wehularity_3.rsi + state: wehularity_3 + scale: 1.0,1.0 + 4: + sprite: Structures/Power/Generation/Singularity/wehularity_4.rsi + state: wehularity_4 + scale: 1.0,1.0 + 5: + sprite: Structures/Power/Generation/Singularity/wehularity_5.rsi + state: wehularity_5 + scale: 1.5,1.5 + 6: + sprite: Structures/Power/Generation/Singularity/wehularity_6.rsi + state: wehularity_6 + scale: .9,.9 diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml index 0207a8977ba485..81877cf87aa992 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml @@ -22,7 +22,7 @@ - type: entity id: LockerQuarterMaster parent: LockerBaseSecure - name: quartermaster's locker + name: head of supply's locker components: - type: Appearance - type: EntityStorageVisuals @@ -50,7 +50,7 @@ - type: entity id: LockerCaptain parent: LockerBaseSecure - name: captain's locker + name: head of station's locker components: - type: Appearance - type: EntityStorageVisuals @@ -63,7 +63,7 @@ - type: entity id: LockerHeadOfPersonnel parent: LockerBaseSecure - name: head of personnel's locker + name: head of service's locker components: - type: Appearance - type: EntityStorageVisuals @@ -77,7 +77,7 @@ - type: entity id: LockerChiefEngineer parent: LockerBaseSecure - name: chief engineer's locker + name: head of singularity's locker components: - type: Appearance - type: EntityStorageVisuals @@ -244,7 +244,7 @@ - type: entity id: LockerChiefMedicalOfficer parent: LockerBaseSecure - name: chief medical officer's locker + name: head of still just a week away's locker components: - type: Appearance - type: EntityStorageVisuals @@ -258,7 +258,7 @@ - type: entity id: LockerResearchDirector parent: LockerBase - name: research director's locker + name: head of science's locker components: - type: Appearance - type: EntityStorageVisuals diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 51cec45457466d..fd38d35192a1ce 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -19,7 +19,7 @@ startingGear: QuartermasterGear icon: "JobIconQuarterMaster" supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - Cargo - Salvage diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index 2dcc8ad1376e73..4837caafc3e433 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -6,7 +6,7 @@ startingGear: ServiceWorkerGear icon: "JobIconServiceWorker" supervisors: job-supervisors-service - canBeAntag: false + canBeAntag: true access: - Service - Maintenance diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/visitor.yml b/Resources/Prototypes/Roles/Jobs/Civilian/visitor.yml index d16be5c350ab83..7d8da7f4b43fc1 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/visitor.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/visitor.yml @@ -3,7 +3,7 @@ name: job-name-visitor description: job-description-visitor playTimeTracker: JobVisitor - canBeAntag: false + canBeAntag: true icon: JobIconVisitor setPreference: false overrideConsoleVisibility: true diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index 54fe733fb366c2..c3894dc1bb9da8 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -22,7 +22,7 @@ requireAdminNotify: true joinNotifyCrew: true supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess special: diff --git a/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml b/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml index 37c73f38e02c74..d6af4ce38cd9eb 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/centcom_official.yml @@ -7,7 +7,7 @@ startingGear: CentcomGear icon: "JobIconNanotrasen" supervisors: job-supervisors-hos - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 8728ac41e319ba..a1964407c053be 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -21,7 +21,7 @@ icon: "JobIconHeadOfPersonnel" requireAdminNotify: true supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - Command - HeadOfPersonnel diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 027280e8592bac..70c1b1921ee7ec 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -20,7 +20,7 @@ icon: "JobIconChiefEngineer" requireAdminNotify: true supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - Maintenance - Engineering diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 1a166dbdf9cfbe..9a66a0c0cd6f0f 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -13,7 +13,7 @@ startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" supervisors: job-supervisors-engineering - canBeAntag: false + canBeAntag: true access: - Maintenance - Engineering diff --git a/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml b/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml index d54baba3dbd72c..7eea7ecbac81d6 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/emergencyresponseteam.yml @@ -8,7 +8,7 @@ startingGear: ERTLeaderGearEVA icon: "JobIconNanotrasen" supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: @@ -76,7 +76,7 @@ startingGear: ERTEngineerGearEVA icon: "JobIconNanotrasen" supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: @@ -125,7 +125,7 @@ startingGear: ERTEngineerGearEVA icon: "JobIconNanotrasen" supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: @@ -193,7 +193,7 @@ startingGear: ERTMedicalGearEVA icon: "JobIconNanotrasen" supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: @@ -240,7 +240,7 @@ startingGear: ERTJanitorGearEVA icon: "JobIconNanotrasen" supervisors: job-supervisors-centcom - canBeAntag: false + canBeAntag: true accessGroups: - AllAccess access: diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index c6af95ad6c30e3..2d6793b124f56e 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -22,7 +22,7 @@ icon: "JobIconChiefMedicalOfficer" requireAdminNotify: true supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - Medical - Command diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 964934b44f23bd..7cc3753db39197 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -11,7 +11,7 @@ startingGear: MedicalInternGear icon: "JobIconMedicalIntern" supervisors: job-supervisors-medicine - canBeAntag: false + canBeAntag: true access: - Medical - Maintenance diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index fe829110051bef..a15f02fee9a035 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -6,7 +6,7 @@ requirements: - !type:OverallPlaytimeRequirement time: 216000 #60 hrs - canBeAntag: false + canBeAntag: true icon: JobIconBorg supervisors: job-supervisors-rd jobEntity: PlayerBorgGeneric diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 6e6d84d8baac93..5f7be2bd26d020 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -11,7 +11,7 @@ startingGear: ResearchAssistantGear icon: "JobIconResearchAssistant" supervisors: job-supervisors-science - canBeAntag: false + canBeAntag: true access: - Research - Maintenance diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index b36fc37389e306..59896ca65bb027 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -14,7 +14,7 @@ icon: "JobIconResearchDirector" requireAdminNotify: true supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - Research - Command diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index e2d4d490bb17dc..0b73f0040c87ea 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -10,7 +10,7 @@ startingGear: DetectiveGear icon: "JobIconDetective" supervisors: job-supervisors-hos - canBeAntag: false + canBeAntag: true access: - Security - Brig diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index eb1e31c1e76dc7..435478b17916c5 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -20,7 +20,7 @@ icon: "JobIconHeadOfSecurity" requireAdminNotify: true supervisors: job-supervisors-captain - canBeAntag: false + canBeAntag: true access: - HeadOfSecurity - Command diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index 2d472385ba3318..b2acc1a00bfa58 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -13,7 +13,7 @@ startingGear: SecurityCadetGear icon: "JobIconSecurityCadet" supervisors: job-supervisors-security - canBeAntag: false + canBeAntag: true access: - Security - Brig diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 0c90d267613919..8a2f1d20ab43ce 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -10,7 +10,7 @@ startingGear: SecurityOfficerGear icon: "JobIconSecurityOfficer" supervisors: job-supervisors-hos - canBeAntag: false + canBeAntag: true access: - Security - Brig diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index a39c5b4de2240b..a4a34c0e114c32 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -10,7 +10,7 @@ startingGear: WardenGear icon: "JobIconWarden" supervisors: job-supervisors-hos - canBeAntag: false + canBeAntag: true access: - Security - Brig diff --git a/Resources/Prototypes/SoundCollections/body_fall.yml b/Resources/Prototypes/SoundCollections/body_fall.yml index 1e74fb83f2a5b0..b13dc3cb90eee4 100644 --- a/Resources/Prototypes/SoundCollections/body_fall.yml +++ b/Resources/Prototypes/SoundCollections/body_fall.yml @@ -5,3 +5,4 @@ - /Audio/Effects/bodyfall2.ogg - /Audio/Effects/bodyfall3.ogg - /Audio/Effects/bodyfall4.ogg + - /Audio/Effects/oof.ogg diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml b/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml index 5f6d4ea9376aaa..59ba98361b4760 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Revolutionaries.xml @@ -4,7 +4,7 @@ - Revolutionaries are antagonists that are sponsored by the Syndicate to take over the station. ## Head Revolutionaries - + @@ -42,13 +42,13 @@ ## Objectives You must eliminate or exile all of the following Command staff on station in no particular order. - - Captain - - Head of Personnel - - Chief Engineer - - Research Director - - Quartermaster + - Head of Station + - Head of Service + - Head of Singularity + - Head of Science + - Head of Supply - Head of Security - - Chief Medical Officer + - Head of Still Just a Week Away Remember, your objective is to take over the station and not to destroy it so try to minimize damage where possible. Viva la revolución! diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml b/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml index 002ee56d115aa6..84b3074bee22c8 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml @@ -42,27 +42,27 @@ - Escape on the evacuation shuttle alive and uncuffed. - Help a randomly selected traitor finish 2/3 of their objectives. - Die a glorious death. - - Steal the Captain's [color=#a4885c]ID Card[/color]. + - Steal the Head of Station's [color=#a4885c]ID Card[/color]. - - Steal the Captain's [color=#a4885c]Antique Laser Pistol[/color]. + - Steal the Head of Station's [color=#a4885c]Antique Laser Pistol[/color]. - - Steal the Captain's [color=#a4885c]Jetpack[/color]. + - Steal the Head of Station's [color=#a4885c]Jetpack[/color]. - - Steal the Chief Medical Officer's [color=#a4885c]Hypospray[/color]. + - Steal the Head of Still Just a Week Away's [color=#a4885c]Hypospray[/color]. - - Steal the Research Director's [color=#a4885c]Hardsuit[/color]. + - Steal the Head of Science's [color=#a4885c]Hardsuit[/color]. - - Steal the Research Director's [color=#a4885c]Hand Teleporter[/color]. + - Steal the Head of Science's [color=#a4885c]Hand Teleporter[/color]. @@ -70,7 +70,7 @@ - - Steal the Chief Engineer's [color=#a4885c]Advanced Magboots[/color]. + - Steal the Head of Singularity's [color=#a4885c]Advanced Magboots[/color]. diff --git a/Resources/ServerInfo/Guidebook/Glossary.xml b/Resources/ServerInfo/Guidebook/Glossary.xml index d93b7c404252cb..dce96c329fc181 100644 --- a/Resources/ServerInfo/Guidebook/Glossary.xml +++ b/Resources/ServerInfo/Guidebook/Glossary.xml @@ -22,32 +22,20 @@ Refers to a user who has disconnected from the game. Disconnected users may stil ## Brig The main area of the security department. This is where prisoners are brought and held for their punishment. The Warden is in charge of the brig's smooth operation. -## Cap -Short for Captain. - ## Cargonia Reference to cargo declaring independance. Against the rules. ## CentCom/Central Command An administrative agency which oversees the Nanotrasen space station you inhabit. -## CE -Short for Chief Engineer, the head of the Engineering Department. - -## CMO -Short for Chief Medical Officer, the head of the Medical Department. - ## Crit/Critical Refers to the health state at which you fall unconscious and unable to move. While in critical, your health slowly decays until you die, unless you happen to get outside assistance. ## ERT An Emergency Response Team. These may be dispatched by Central Command for a number of purposes. -## HoP -Short for Head of Personnel, head of the Service Department. - ## HoS -Short for Head of Security. +Short for Head of Station, Head of Security, Head of Singularity, Head of Still Just a Week Away, Head of Supply, Head of Service or Head of Science. ## Insuls Short for Insulated Gloves. These are the yellow gloves most often worn by Engineers. They are offer complete protection from getting electrocuted from shocked things. Vastily more effective than their budget variety. @@ -58,12 +46,6 @@ Kill on sight. Someone has commited such a serious crime that they are deemed no ## Perma Short for Permanent Brig. This is for the most serious crime and means that a prisoner will never be released. Most stations have a dedicated, seperate area of security for the permanent brig. -## RD -Short for Research Director, the head of the Science Department. - -## QM -Short for Quartermaster, the head of the Cargo department. - ## Greytide/Greyshirt/Tider/Assistant Typically utilized to refer to a Passenger due to the color of their standard uniform, though this may be used to negatively refer to other crew members (not only passengers) who act unruly or commit various minor crimes. diff --git a/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret.png b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret.png new file mode 100644 index 00000000000000..7562f35fabd315 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret.png differ diff --git a/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_eepy.png b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_eepy.png new file mode 100644 index 00000000000000..e01ad555693c95 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_eepy.png differ diff --git a/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_oof.png b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_oof.png new file mode 100644 index 00000000000000..045d6ca15c5803 Binary files /dev/null and b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_oof.png differ diff --git a/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_rip.png b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_rip.png new file mode 100644 index 00000000000000..775b89641f810a Binary files /dev/null and b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/legallydistinctspaceferret_rip.png differ diff --git a/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/meta.json b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/meta.json new file mode 100644 index 00000000000000..9ff10c5326647b --- /dev/null +++ b/Resources/Textures/Mobs/Animals/legallydistinctspaceferret.rsi/meta.json @@ -0,0 +1,24 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Yogstation at https://github.com/yogstation13/Yogstation/blob/b5a72f35980b15404d3c507d2ad0af06010f6056/icons/mob/pets.dmi, some modifications by Hannah 'FairlySadPanda' Dawson.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "legallydistinctspaceferret", + "directions": 4 + }, + { + "name": "legallydistinctspaceferret_eepy" + }, + { + "name": "legallydistinctspaceferret_rip" + }, + { + "name": "legallydistinctspaceferret_oof" + } + ] +} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/icon.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/icon.png new file mode 100644 index 00000000000000..dcee7a289713bb Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/icon.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/meta.json new file mode 100644 index 00000000000000..e1f4f7c2a92c7c --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehgenerator.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/blob/68357f0b64a296d122ff1bdb2f13e9b0cb04a003/icons/obj/singularity.dmi", + "license": "CC-BY-SA-3.0", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + } + ] +} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/meta.json new file mode 100644 index 00000000000000..0377112850555b --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":32,"y":32},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/obj/singularity.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_1","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/wehularity_1.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/wehularity_1.png new file mode 100644 index 00000000000000..cc92fa0e35dcfa Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_1.rsi/wehularity_1.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/meta.json new file mode 100644 index 00000000000000..05c1f16cefe81c --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":96,"y":96},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/96x96.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_2","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/wehularity_2.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/wehularity_2.png new file mode 100644 index 00000000000000..405bb9aeafc27e Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_2.rsi/wehularity_2.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/meta.json new file mode 100644 index 00000000000000..5b7e06be8b70c3 --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":160,"y":160},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/160x160.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_3","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/wehularity_3.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/wehularity_3.png new file mode 100644 index 00000000000000..481b9d80c7b6cb Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_3.rsi/wehularity_3.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/meta.json new file mode 100644 index 00000000000000..a481bf659213d8 --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":224,"y":224},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/224x224.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_4","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/wehularity_4.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/wehularity_4.png new file mode 100644 index 00000000000000..65a480376d64fc Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_4.rsi/wehularity_4.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/meta.json new file mode 100644 index 00000000000000..cf09e03f0be733 --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":288,"y":288},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/288x288.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_5","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/wehularity_5.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/wehularity_5.png new file mode 100644 index 00000000000000..5185a941365a09 Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_5.rsi/wehularity_5.png differ diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/meta.json b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/meta.json new file mode 100644 index 00000000000000..d7dbb5a94ca019 --- /dev/null +++ b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/meta.json @@ -0,0 +1 @@ +{"version":1,"size":{"x":352,"y":352},"copyright":"Taken from https://github.com/vgstation-coders/vgstation13/blob/8eef5a676f66551bd0fb40d506486a6b3b2b0f1a/icons/effects/352x352.dmi","license":"CC-BY-SA-3.0","states":[{"name":"wehularity_6","directions":1,"delays":[[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1]]}]} diff --git a/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/wehularity_6.png b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/wehularity_6.png new file mode 100644 index 00000000000000..9699f1ee58062a Binary files /dev/null and b/Resources/Textures/Structures/Power/Generation/Singularity/wehularity_6.rsi/wehularity_6.png differ diff --git a/Resources/migration.yml b/Resources/migration.yml index 4d9ab7f1f92af8..49e22ae93d523c 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -241,3 +241,6 @@ AirlockShuttleEasyPryLocked: AirlockExternalShuttleLocked ClothingBackpackFilledDetective: ClothingBackpackSecurityFilledDetective ClothingBackpackDuffelFilledDetective: ClothingBackpackDuffelSecurityFilledDetective ClothingBackpackSatchelFilledDetective: ClothingBackpackSatchelSecurityFilledDetective + +# 2024-04-1 +SingularityGenerator: WehularityGenerator