diff --git a/Content.Client/Station/StationSpawningSystem.cs b/Content.Client/Station/StationSpawningSystem.cs index 65da518d22..71dce5a78f 100644 --- a/Content.Client/Station/StationSpawningSystem.cs +++ b/Content.Client/Station/StationSpawningSystem.cs @@ -2,7 +2,4 @@ using Content.Shared.Station; namespace Content.Client.Station; -public sealed class StationSpawningSystem : SharedStationSpawningSystem -{ - -} +public sealed class StationSpawningSystem : SharedStationSpawningSystem; diff --git a/Content.IntegrationTests/Tests/Utility/EntityWhitelistTest.cs b/Content.IntegrationTests/Tests/Utility/EntityWhitelistTest.cs index 6b47ec4d8e..19b25816fa 100644 --- a/Content.IntegrationTests/Tests/Utility/EntityWhitelistTest.cs +++ b/Content.IntegrationTests/Tests/Utility/EntityWhitelistTest.cs @@ -64,7 +64,8 @@ namespace Content.IntegrationTests.Tests.Utility var testMap = await pair.CreateTestMap(); var mapCoordinates = testMap.MapCoords; - var sEntities = server.ResolveDependency(); + var sEntities = server.EntMan; + var sys = server.System(); await server.WaitAssertion(() => { @@ -80,22 +81,14 @@ namespace Content.IntegrationTests.Tests.Utility Components = new[] { $"{ValidComponent}" }, Tags = new() { "WhitelistTestValidTag" } }; - whitelistInst.UpdateRegistrations(); - Assert.That(whitelistInst, Is.Not.Null); Assert.Multiple(() => { - Assert.That(whitelistInst.Components, Is.Not.Null); - Assert.That(whitelistInst.Tags, Is.Not.Null); - }); + Assert.That(sys.IsValid(whitelistInst, validComponent), Is.True); + Assert.That(sys.IsValid(whitelistInst, WhitelistTestValidTag), Is.True); - Assert.Multiple(() => - { - Assert.That(whitelistInst.IsValid(validComponent), Is.True); - Assert.That(whitelistInst.IsValid(WhitelistTestValidTag), Is.True); - - Assert.That(whitelistInst.IsValid(invalidComponent), Is.False); - Assert.That(whitelistInst.IsValid(WhitelistTestInvalidTag), Is.False); + Assert.That(sys.IsValid(whitelistInst, invalidComponent), Is.False); + Assert.That(sys.IsValid(whitelistInst, WhitelistTestInvalidTag), Is.False); }); // Test from serialized @@ -111,11 +104,11 @@ namespace Content.IntegrationTests.Tests.Utility Assert.Multiple(() => { - Assert.That(whitelistSer.IsValid(validComponent), Is.True); - Assert.That(whitelistSer.IsValid(WhitelistTestValidTag), Is.True); + Assert.That(sys.IsValid(whitelistSer, validComponent), Is.True); + Assert.That(sys.IsValid(whitelistSer, WhitelistTestValidTag), Is.True); - Assert.That(whitelistSer.IsValid(invalidComponent), Is.False); - Assert.That(whitelistSer.IsValid(WhitelistTestInvalidTag), Is.False); + Assert.That(sys.IsValid(whitelistSer, invalidComponent), Is.False); + Assert.That(sys.IsValid(whitelistSer, WhitelistTestInvalidTag), Is.False); }); }); await pair.CleanReturnAsync(); diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index 848170ba9d..0b49d7e4bf 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -96,6 +96,16 @@ public sealed class AlertLevelSystem : EntitySystem RaiseLocalEvent(new AlertLevelPrototypeReloadedEvent()); } + public string GetLevel(EntityUid station, AlertLevelComponent? alert = null) + { + if (!Resolve(station, ref alert)) + { + return string.Empty; + } + + return alert.CurrentLevel; + } + public float GetAlertLevelDelay(EntityUid station, AlertLevelComponent? alert = null) { if (!Resolve(station, ref alert)) diff --git a/Content.Server/Atmos/Components/BreathToolComponent.cs b/Content.Server/Atmos/Components/BreathToolComponent.cs index f3688ef7ff..ae17a5d872 100644 --- a/Content.Server/Atmos/Components/BreathToolComponent.cs +++ b/Content.Server/Atmos/Components/BreathToolComponent.cs @@ -12,9 +12,10 @@ namespace Content.Server.Atmos.Components /// /// Tool is functional only in allowed slots /// - [DataField("allowedSlots")] + [DataField] public SlotFlags AllowedSlots = SlotFlags.MASK | SlotFlags.HEAD; public bool IsFunctional; + public EntityUid? ConnectedInternalsEntity; } } diff --git a/Content.Server/Body/Systems/InternalsSystem.cs b/Content.Server/Body/Systems/InternalsSystem.cs index 972967fb15..8afd1c767f 100644 --- a/Content.Server/Body/Systems/InternalsSystem.cs +++ b/Content.Server/Body/Systems/InternalsSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.DoAfter; using Content.Shared.Hands.Components; using Content.Shared.Internals; using Content.Shared.Inventory; +using Content.Shared.Roles; using Content.Shared.Verbs; using Robust.Shared.Containers; using Robust.Shared.Utility; @@ -23,17 +24,29 @@ public sealed class InternalsSystem : EntitySystem [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; - public const SlotFlags InventorySlots = SlotFlags.POCKET | SlotFlags.BELT; + private EntityQuery _internalsQuery; public override void Initialize() { base.Initialize(); + _internalsQuery = GetEntityQuery(); + SubscribeLocalEvent(OnInhaleLocation); SubscribeLocalEvent(OnInternalsStartup); SubscribeLocalEvent(OnInternalsShutdown); SubscribeLocalEvent>(OnGetInteractionVerbs); SubscribeLocalEvent(OnDoAfter); + + SubscribeLocalEvent(OnStartingGear); + } + + private void OnStartingGear(ref StartingGearEquippedEvent ev) + { + if (!_internalsQuery.TryComp(ev.Entity, out var internals) || internals.BreathToolEntity == null) + return; + + ToggleInternals(ev.Entity, ev.Entity, force: false, internals); } private void OnGetInteractionVerbs( @@ -217,7 +230,7 @@ public sealed class InternalsSystem : EntitySystem if (component.BreathToolEntity is null || !AreInternalsWorking(component)) return 2; - // If pressure in the tank is below low pressure threshhold, flash warning on internals UI + // If pressure in the tank is below low pressure threshold, flash warning on internals UI if (TryComp(component.GasTankEntity, out var gasTank) && gasTank.IsLowPressure) { diff --git a/Content.Server/GameTicking/Rules/GameRuleSystem.cs b/Content.Server/GameTicking/Rules/GameRuleSystem.cs index c167ae7b6c..05374aa139 100644 --- a/Content.Server/GameTicking/Rules/GameRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/GameRuleSystem.cs @@ -26,7 +26,7 @@ public abstract partial class GameRuleSystem : EntitySystem where T : ICompon SubscribeLocalEvent(OnGameRuleAdded); SubscribeLocalEvent(OnGameRuleStarted); SubscribeLocalEvent(OnGameRuleEnded); - SubscribeLocalEvent(OnRoundEndTextAppend); + SubscribeLocalEvent(OnRoundEndTextAppend); } private void OnStartAttempt(RoundStartAttemptEvent args) @@ -70,11 +70,16 @@ public abstract partial class GameRuleSystem : EntitySystem where T : ICompon Ended(uid, component, ruleData, args); } - private void OnRoundEndTextAppend(Entity ent, ref RoundEndTextAppendEvent args) + private void OnRoundEndTextAppend(RoundEndTextAppendEvent ev) { - if (!TryComp(ent, out var ruleData)) - return; - AppendRoundEndText(ent, ent, ruleData, ref args); + var query = AllEntityQuery(); + while (query.MoveNext(out var uid, out var comp)) + { + if (!TryComp(uid, out var ruleData)) + continue; + + AppendRoundEndText(uid, comp, ruleData, ref ev); + } } /// diff --git a/Content.Server/Geras/GerasSystem.cs b/Content.Server/Geras/GerasSystem.cs index e25ea8f028..e7999d64d8 100644 --- a/Content.Server/Geras/GerasSystem.cs +++ b/Content.Server/Geras/GerasSystem.cs @@ -1,7 +1,7 @@ -using Content.Server.Actions; using Content.Server.Polymorph.Systems; +using Content.Shared.Zombies; +using Content.Server.Actions; using Content.Server.Popups; -using Content.Shared.Actions; using Content.Shared.Geras; using Robust.Shared.Player; @@ -10,8 +10,9 @@ namespace Content.Server.Geras; /// public sealed class GerasSystem : SharedGerasSystem { - [Dependency] private readonly ActionsSystem _actionsSystem = default!; [Dependency] private readonly PolymorphSystem _polymorphSystem = default!; + [Dependency] private readonly MetaDataSystem _metaDataSystem = default!; + [Dependency] private readonly ActionsSystem _actionsSystem = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; /// @@ -19,6 +20,12 @@ public sealed class GerasSystem : SharedGerasSystem { SubscribeLocalEvent(OnMorphIntoGeras); SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnZombification); + } + + private void OnZombification(EntityUid uid, GerasComponent component, EntityZombifiedEvent args) + { + _actionsSystem.RemoveAction(uid, component.GerasActionEntity); } private void OnMapInit(EntityUid uid, GerasComponent component, MapInitEvent args) @@ -29,6 +36,9 @@ public sealed class GerasSystem : SharedGerasSystem private void OnMorphIntoGeras(EntityUid uid, GerasComponent component, MorphIntoGeras args) { + if (HasComp(uid)) + return; // i hate zomber. + var ent = _polymorphSystem.PolymorphEntity(uid, component.GerasPolymorphId); if (!ent.HasValue) @@ -36,6 +46,7 @@ public sealed class GerasSystem : SharedGerasSystem _popupSystem.PopupEntity(Loc.GetString("geras-popup-morph-message-others", ("entity", ent.Value)), ent.Value, Filter.PvsExcept(ent.Value), true); _popupSystem.PopupEntity(Loc.GetString("geras-popup-morph-message-user"), ent.Value, ent.Value); + args.Handled = true; } } diff --git a/Content.Server/Speech/Components/ReplacementAccentComponent.cs b/Content.Server/Speech/Components/ReplacementAccentComponent.cs index ac4e9fbafe..e7f57b80d0 100644 --- a/Content.Server/Speech/Components/ReplacementAccentComponent.cs +++ b/Content.Server/Speech/Components/ReplacementAccentComponent.cs @@ -32,5 +32,11 @@ namespace Content.Server.Speech.Components { [DataField("accent", customTypeSerializer: typeof(PrototypeIdSerializer), required: true)] public string Accent = default!; + + /// + /// Allows you to substitute words, not always, but with some chance + /// + [DataField] + public float ReplacementChance = 1f; } } diff --git a/Content.Server/Speech/EntitySystems/ReplacementAccentSystem.cs b/Content.Server/Speech/EntitySystems/ReplacementAccentSystem.cs index 36fa7e07ad..c332c6cda8 100644 --- a/Content.Server/Speech/EntitySystems/ReplacementAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/ReplacementAccentSystem.cs @@ -24,6 +24,9 @@ namespace Content.Server.Speech.EntitySystems private void OnAccent(EntityUid uid, ReplacementAccentComponent component, AccentGetEvent args) { + if (!_random.Prob(component.ReplacementChance)) + return; + args.Message = ApplyReplacements(args.Message, component.Accent); } @@ -46,6 +49,12 @@ namespace Content.Server.Speech.EntitySystems if (prototype.WordReplacements == null) return message; + // Prohibition of repeated word replacements. + // All replaced words placed in the final message are placed here as dashes (___) with the same length. + // The regex search goes through this buffer message, from which the already replaced words are crossed out, + // ensuring that the replaced words cannot be replaced again. + var maskMessage = message; + foreach (var (first, replace) in prototype.WordReplacements) { var f = _loc.GetString(first); @@ -53,10 +62,10 @@ namespace Content.Server.Speech.EntitySystems // this is kind of slow but its not that bad // essentially: go over all matches, try to match capitalization where possible, then replace // rather than using regex.replace - for (int i = Regex.Count(message, $@"(? 0; i--) + for (int i = Regex.Count(maskMessage, $@"(? 0; i--) { // fetch the match again as the character indices may have changed - Match match = Regex.Match(message, $@"(? public override void Initialize() { + base.Initialize(); Subs.CVar(_configurationManager, CCVars.ICRandomCharacters, e => _randomizeCharacters = e, true); _spawnerCallbacks = new Dictionary>() @@ -181,7 +182,7 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem if (prototype?.StartingGear != null) { var startingGear = _prototypeManager.Index(prototype.StartingGear); - EquipStartingGear(entity.Value, startingGear); + EquipStartingGear(entity.Value, startingGear, raiseEvent: false); } // Run loadouts after so stuff like storage loadouts can get @@ -217,11 +218,14 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem } // Handle any extra data here. - EquipStartingGear(entity.Value, startingGear); + EquipStartingGear(entity.Value, startingGear, raiseEvent: false); } } } + var gearEquippedEv = new StartingGearEquippedEvent(entity.Value); + RaiseLocalEvent(entity.Value, ref gearEquippedEv, true); + if (profile != null) { if (prototype != null) diff --git a/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs b/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs new file mode 100644 index 0000000000..6907aa6176 --- /dev/null +++ b/Content.Server/StationEvents/Components/AlertLevelInterceptionRuleComponent.cs @@ -0,0 +1,15 @@ +using Content.Server.StationEvents.Events; +using Content.Server.AlertLevel; +using Robust.Shared.Prototypes; + +namespace Content.Server.StationEvents.Components; + +[RegisterComponent, Access(typeof(AlertLevelInterceptionRule))] +public sealed partial class AlertLevelInterceptionRuleComponent : Component +{ + /// + /// Alert level to set the station to when the event starts. + /// + [DataField] + public string AlertLevel = "blue"; +} diff --git a/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs new file mode 100644 index 0000000000..a78a542d3b --- /dev/null +++ b/Content.Server/StationEvents/Events/AlertLevelInterceptionRule.cs @@ -0,0 +1,23 @@ +using Content.Server.GameTicking.Components; +using Content.Server.StationEvents.Components; +using Content.Server.AlertLevel; + +namespace Content.Server.StationEvents.Events; + +public sealed class AlertLevelInterceptionRule : StationEventSystem +{ + [Dependency] private readonly AlertLevelSystem _alertLevelSystem = default!; + + protected override void Started(EntityUid uid, AlertLevelInterceptionRuleComponent component, GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + if (!TryGetRandomStation(out var chosenStation)) + return; + if (_alertLevelSystem.GetLevel(chosenStation.Value) != "green") + return; + + _alertLevelSystem.SetLevel(chosenStation.Value, component.AlertLevel, true, true, true); + } +} \ No newline at end of file diff --git a/Content.Shared/Geras/SharedGerasSystem.cs b/Content.Shared/Geras/SharedGerasSystem.cs index f5dea466a2..8c998371b6 100644 --- a/Content.Shared/Geras/SharedGerasSystem.cs +++ b/Content.Shared/Geras/SharedGerasSystem.cs @@ -3,7 +3,7 @@ using Content.Shared.Actions; namespace Content.Shared.Geras; /// -/// A Geras is the small morph of a slime. This system handles exactly that. +/// Geras is the god of old age, and A geras is the small morph of a slime. This system allows the slimes to have the morphing action. /// public abstract class SharedGerasSystem : EntitySystem { diff --git a/Content.Shared/Inventory/InventorySystem.Slots.cs b/Content.Shared/Inventory/InventorySystem.Slots.cs index 1da44155b9..e0f2a69557 100644 --- a/Content.Shared/Inventory/InventorySystem.Slots.cs +++ b/Content.Shared/Inventory/InventorySystem.Slots.cs @@ -151,7 +151,6 @@ public partial class InventorySystem : EntitySystem slotDefinitions = null; return false; } - slotDefinitions = inv.Slots; return true; } diff --git a/Content.Shared/Roles/StartingGearEquippedEvent.cs b/Content.Shared/Roles/StartingGearEquippedEvent.cs new file mode 100644 index 0000000000..41b6caccff --- /dev/null +++ b/Content.Shared/Roles/StartingGearEquippedEvent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Roles; + +/// +/// Raised directed on an entity when a new starting gear prototype has been equipped. +/// +[ByRefEvent] +public record struct StartingGearEquippedEvent(EntityUid Entity) +{ + public readonly EntityUid Entity = Entity; +} diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index 363fb3f91e..8a063938ee 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -17,12 +17,24 @@ public abstract class SharedStationSpawningSystem : EntitySystem [Dependency] private readonly SharedStorageSystem _storage = default!; [Dependency] private readonly SharedTransformSystem _xformSystem = default!; + private EntityQuery _handsQuery; + private EntityQuery _inventoryQuery; + private EntityQuery _storageQuery; + private EntityQuery _xformQuery; + + public override void Initialize() + { + base.Initialize(); + _handsQuery = GetEntityQuery(); + _inventoryQuery = GetEntityQuery(); + _storageQuery = GetEntityQuery(); + _xformQuery = GetEntityQuery(); + } + /// - /// Equips starting gear onto the given entity. + /// /// - /// Entity to load out. - /// Starting gear to use. - public void EquipStartingGear(EntityUid entity, ProtoId? startingGear) + public void EquipStartingGear(EntityUid entity, ProtoId? startingGear, bool raiseEvent = true) { PrototypeManager.TryIndex(startingGear, out var gearProto); EquipStartingGear(entity, gearProto); @@ -33,11 +45,14 @@ public abstract class SharedStationSpawningSystem : EntitySystem /// /// Entity to load out. /// Starting gear to use. - public void EquipStartingGear(EntityUid entity, StartingGearPrototype? startingGear) + /// Should we raise the event for equipped. Set to false if you will call this manually + public void EquipStartingGear(EntityUid entity, StartingGearPrototype? startingGear, bool raiseEvent = true) { if (startingGear == null) return; + var xform = _xformQuery.GetComponent(entity); + if (InventorySystem.TryGetSlots(entity, out var slotDefinitions)) { foreach (var slot in slotDefinitions) @@ -45,16 +60,16 @@ public abstract class SharedStationSpawningSystem : EntitySystem var equipmentStr = startingGear.GetGear(slot.Name); if (!string.IsNullOrEmpty(equipmentStr)) { - var equipmentEntity = EntityManager.SpawnEntity(equipmentStr, EntityManager.GetComponent(entity).Coordinates); + var equipmentEntity = EntityManager.SpawnEntity(equipmentStr, xform.Coordinates); InventorySystem.TryEquip(entity, equipmentEntity, slot.Name, silent: true, force:true); } } } - if (TryComp(entity, out HandsComponent? handsComponent)) + if (_handsQuery.TryComp(entity, out var handsComponent)) { var inhand = startingGear.Inhand; - var coords = EntityManager.GetComponent(entity).Coordinates; + var coords = xform.Coordinates; foreach (var prototype in inhand) { var inhandEntity = EntityManager.SpawnEntity(prototype, coords); @@ -70,7 +85,7 @@ public abstract class SharedStationSpawningSystem : EntitySystem { var coords = _xformSystem.GetMapCoordinates(entity); var ents = new ValueList(); - TryComp(entity, out InventoryComponent? inventoryComp); + _inventoryQuery.TryComp(entity, out var inventoryComp); foreach (var (slot, entProtos) in startingGear.Storage) { @@ -84,7 +99,7 @@ public abstract class SharedStationSpawningSystem : EntitySystem if (inventoryComp != null && InventorySystem.TryGetSlotEntity(entity, slot, out var slotEnt, inventoryComponent: inventoryComp) && - TryComp(slotEnt, out StorageComponent? storage)) + _storageQuery.TryComp(slotEnt, out var storage)) { foreach (var ent in ents) { @@ -93,5 +108,11 @@ public abstract class SharedStationSpawningSystem : EntitySystem } } } + + if (raiseEvent) + { + var ev = new StartingGearEquippedEvent(entity); + RaiseLocalEvent(entity, ref ev, true); + } } } diff --git a/Content.Shared/Tag/TagSystem.cs b/Content.Shared/Tag/TagSystem.cs index fdb7de1f75..7bcb887a41 100644 --- a/Content.Shared/Tag/TagSystem.cs +++ b/Content.Shared/Tag/TagSystem.cs @@ -1,3 +1,4 @@ +using System.Diagnostics; using System.Linq; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -185,6 +186,7 @@ public sealed class TagSystem : EntitySystem /// /// Checks if a tag has been added to an entity. /// + [Obsolete] public bool HasTag(EntityUid entity, string id, EntityQuery tagQuery) { return tagQuery.TryGetComponent(entity, out var component) && @@ -243,7 +245,7 @@ public sealed class TagSystem : EntitySystem /// public bool HasAllTags(EntityUid entity, List> ids) { - return TryComp(entity, out var component) && + return _tagQuery.TryComp(entity, out var component) && HasAllTags(component, ids); } @@ -521,16 +523,18 @@ public sealed class TagSystem : EntitySystem /// public bool HasAllTags(TagComponent component, List> ids) { - var stringIds = new List(); - foreach (var tag in ids) + foreach (var id in ids) { - stringIds.Add(tag.Id); + AssertValidTag(id); + + if (!component.Tags.Contains(id)) + return false; + } - return HasAllTags(component, stringIds); + return true; } - /// /// Checks if any of the given tags have been added. /// @@ -552,7 +556,6 @@ public sealed class TagSystem : EntitySystem return false; } - /// /// Checks if any of the given tags have been added. /// @@ -619,13 +622,15 @@ public sealed class TagSystem : EntitySystem /// public bool HasAnyTag(TagComponent comp, List> ids) { - var stringIds = new List(); - foreach (var tag in ids) + foreach (var id in ids) { - stringIds.Add(tag.Id); + AssertValidTag(id); + + if (comp.Tags.Contains(id)) + return true; } - return HasAnyTag(comp, stringIds); + return false; } /// diff --git a/Content.Shared/UserInterface/ActivatableUISystem.cs b/Content.Shared/UserInterface/ActivatableUISystem.cs index 5d408012bd..3ac8835dd0 100644 --- a/Content.Shared/UserInterface/ActivatableUISystem.cs +++ b/Content.Shared/UserInterface/ActivatableUISystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Containers; @@ -27,6 +28,7 @@ public sealed partial class ActivatableUISystem : EntitySystem { base.Initialize(); + SubscribeLocalEvent(OnUseInHand); SubscribeLocalEvent(OnActivate); SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnHandDeselected); @@ -99,6 +101,9 @@ public sealed partial class ActivatableUISystem : EntitySystem if (!args.CanAccess) return false; + if (!component.RequiredItems?.IsValid(args.Using ?? default, EntityManager) ?? false) + return false; + if (component.RequireHands) { if (args.Hands == null) @@ -117,6 +122,20 @@ public sealed partial class ActivatableUISystem : EntitySystem return args.CanInteract || component.AllowSpectator && HasComp(args.User); } + private void OnUseInHand(EntityUid uid, ActivatableUIComponent component, UseInHandEvent args) + { + if (args.Handled) + return; + + if (component.VerbOnly) + return; + + if (component.RequiredItems != null) + return; + + args.Handled = InteractUI(args.User, uid, component); + } + private void OnActivate(EntityUid uid, ActivatableUIComponent component, ActivateInWorldEvent args) { if (args.Handled) diff --git a/Content.Shared/Whitelist/EntityWhitelist.cs b/Content.Shared/Whitelist/EntityWhitelist.cs index 7fa6ce7f82..895759be95 100644 --- a/Content.Shared/Whitelist/EntityWhitelist.cs +++ b/Content.Shared/Whitelist/EntityWhitelist.cs @@ -38,8 +38,8 @@ public sealed partial class EntityWhitelist [DataField] public List>? Sizes; - [NonSerialized] - private List? _registrations; + [NonSerialized, Access(typeof(EntityWhitelistSystem))] + public List? Registrations; /// /// Tags that are allowed in the whitelist. @@ -55,67 +55,13 @@ public sealed partial class EntityWhitelist [DataField] public bool RequireAll; - public void UpdateRegistrations() + [Obsolete("Use WhitelistSystem")] + public bool IsValid(EntityUid uid, IEntityManager? man = null) { + var sys = man?.System() ?? + IoCManager.Resolve().GetEntitySystem(); - if (Components == null) - return; + return sys.IsValid(this, uid); - var compFact = IoCManager.Resolve(); - _registrations = new List(); - foreach (var name in Components) - { - var availability = compFact.GetComponentAvailability(name); - if (compFact.TryGetRegistration(name, out var registration) - && availability == ComponentAvailability.Available) - { - _registrations.Add(registration); - } - else if (availability == ComponentAvailability.Unknown) - { - Logger.Warning($"Unknown component name {name} passed to EntityWhitelist!"); - } - } - } - - /// - /// Returns whether a given entity fits the whitelist. - /// - public bool IsValid(EntityUid uid, IEntityManager? entityManager = null) - { - if (Components != null && _registrations == null) - UpdateRegistrations(); - - IoCManager.Resolve(ref entityManager); - if (_registrations != null) - { - foreach (var reg in _registrations) - { - if (entityManager.HasComponent(uid, reg.Type)) - { - if (!RequireAll) - return true; - } - else if (RequireAll) - return false; - } - } - - if (Sizes != null && entityManager.TryGetComponent(uid, out ItemComponent? itemComp)) - { - if (Sizes.Contains(itemComp.Size)) - return true; - } - - if (Tags != null && entityManager.TryGetComponent(uid, out TagComponent? tags)) - { - var tagSystem = entityManager.System(); - return RequireAll ? tagSystem.HasAllTags(tags, Tags) : tagSystem.HasAnyTag(tags, Tags); - } - - if (RequireAll) - return true; - - return false; } } diff --git a/Content.Shared/Whitelist/EntityWhitelistSystem.cs b/Content.Shared/Whitelist/EntityWhitelistSystem.cs new file mode 100644 index 0000000000..d73646b7e9 --- /dev/null +++ b/Content.Shared/Whitelist/EntityWhitelistSystem.cs @@ -0,0 +1,84 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Item; +using Content.Shared.Tag; + +namespace Content.Shared.Whitelist; + +public sealed class EntityWhitelistSystem : EntitySystem +{ + [Dependency] private readonly IComponentFactory _factory = default!; + [Dependency] private readonly TagSystem _tag = default!; + + private EntityQuery _itemQuery; + + public override void Initialize() + { + base.Initialize(); + _itemQuery = GetEntityQuery(); + } + + /// + public bool IsValid(EntityWhitelist list, [NotNullWhen(true)] EntityUid? uid) + { + return uid != null && IsValid(list, uid.Value); + } + + /// + /// Checks whether a given entity satisfies a whitelist. + /// + public bool IsValid(EntityWhitelist list, EntityUid uid) + { + if (list.Components != null) + EnsureRegistrations(list); + + if (list.Registrations != null) + { + foreach (var reg in list.Registrations) + { + if (HasComp(uid, reg.Type)) + { + if (!list.RequireAll) + return true; + } + else if (list.RequireAll) + return false; + } + } + + if (list.Sizes != null && _itemQuery.TryComp(uid, out var itemComp)) + { + if (list.Sizes.Contains(itemComp.Size)) + return true; + } + + if (list.Tags != null) + { + return list.RequireAll + ? _tag.HasAllTags(uid, list.Tags) + : _tag.HasAnyTag(uid, list.Tags); + } + + return list.RequireAll; + } + + private void EnsureRegistrations(EntityWhitelist list) + { + if (list.Components == null) + return; + + list.Registrations = new List(); + foreach (var name in list.Components) + { + var availability = _factory.GetComponentAvailability(name); + if (_factory.TryGetRegistration(name, out var registration) + && availability == ComponentAvailability.Available) + { + list.Registrations.Add(registration); + } + else if (availability == ComponentAvailability.Unknown) + { + Log.Warning($"Unknown component name {name} passed to EntityWhitelist!"); + } + } + } +} diff --git a/Resources/Audio/Announcements/attributions.yml b/Resources/Audio/Announcements/attributions.yml index 7bc8886f93..593095a660 100644 --- a/Resources/Audio/Announcements/attributions.yml +++ b/Resources/Audio/Announcements/attributions.yml @@ -42,3 +42,8 @@ license: "CC-BY-SA-3.0" copyright: "Paradise, volume and pitch changed, merged with redalert.ogg" source: "https://github.com/ParadiseSS13/Paradise/blob/07b26ee6b4a11a0607986d322ee007020569feae/sound/effects/siren.ogg" + +- files: ["intercept.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from tgstation" + source: "https://github.com/tgstation/tgstation/blob/95731342b97167d7883ff091d389f79c36442ee6/sound/ai/default/intercept.ogg" diff --git a/Resources/Audio/Announcements/intercept.ogg b/Resources/Audio/Announcements/intercept.ogg new file mode 100644 index 0000000000..3569a07d40 Binary files /dev/null and b/Resources/Audio/Announcements/intercept.ogg differ diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 718882f086..3c9d0efaa1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,84 +1,4 @@ Entries: -- author: metalgearsloth - changes: - - message: Remove executions pending code rewrite. - type: Remove - id: 6017 - time: '2024-02-25T11:36:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25555 -- author: Krunk - changes: - - message: Candy bowls function properly again! - type: Fix - id: 6018 - time: '2024-02-25T13:08:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25514 -- author: Whisper - changes: - - message: Added juice that makes you Weh! Juice a lizard plushie today! - type: Add - id: 6019 - time: '2024-02-25T13:54:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25132 -- author: wafehling - changes: - - message: Secret mode has become more secret, with the 4th option Survival added - to the rotation. - type: Tweak - id: 6020 - time: '2024-02-25T21:15:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25568 -- author: Tayrtahn - changes: - - message: Added a live preview display to reagent dispensers. - type: Add - id: 6021 - time: '2024-02-25T23:03:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25391 -- author: Krunk - changes: - - message: Fixed grid inventory occasionally messing with your item rotation. - type: Fix - id: 6022 - time: '2024-02-25T23:24:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25510 -- author: Ubaser - changes: - - message: Satchels no longer have darkened space representing a gap, and is instead - transparent. - type: Tweak - id: 6023 - time: '2024-02-25T23:24:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25147 -- author: TheShuEd - changes: - - message: Huge flora anomaly nerf - type: Tweak - id: 6024 - time: '2024-02-25T23:41:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25499 -- author: OctoRocket - changes: - - message: Removed the hands requirement to read paper. - type: Tweak - id: 6025 - time: '2024-02-26T02:40:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25580 -- author: SlamBamActionman - changes: - - message: Self-uncuff damage has been removed, but attempting to self-uncuff now - has a cooldown instead. - type: Tweak - id: 6026 - time: '2024-02-26T02:41:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25161 -- author: deltanedas - changes: - - message: Traitors can now be asked to steal the CMO's Handheld Crew Monitor. - type: Tweak - id: 6027 - time: '2024-02-26T03:40:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/25563 - author: MACMAN2003 changes: - message: You can now make LED light tubes and LED light bulbs at an autolathe. @@ -3860,3 +3780,97 @@ id: 6516 time: '2024-05-02T17:09:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/27628 +- author: ElectroJr + changes: + - message: Fixed various interactions not prioritizing opening a UI. No more trying + to eat mission critical faxes. + type: Fix + id: 6517 + time: '2024-05-02T23:37:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27631 +- author: Plykiya + changes: + - message: Blast grenades have had their manufacturing cost tripled. + type: Tweak + - message: Blast grenades are now part of the Basic Shuttle Armament research and + can be printed at the secfab. + type: Tweak + id: 6518 + time: '2024-05-03T00:03:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27580 +- author: Vasilis, Dutch-VanDerLinde + changes: + - message: A new event has been added, syndicate sleeper agents, which raises the + alert level and selects 1-2 players to be traitors rarely throughout the round. + type: Add + id: 6519 + time: '2024-05-03T00:13:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27501 +- author: Errant + changes: + - message: Space Ninjas now automatically turn their internals on when they spawn. + type: Tweak + id: 6520 + time: '2024-05-03T01:24:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/25083 +- author: Hanzdegloker + changes: + - message: Added 6 new energy drink based mixed drinks. + type: Add + - message: Added Red Bool energy drink back to the soda dispenser and gave it a + new canned sprite. + type: Add + id: 6521 + time: '2024-05-03T06:57:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27597 +- author: DuskyJay + changes: + - message: Allowed EMP implants to be used while stunned or cuffed. + type: Tweak + id: 6522 + time: '2024-05-03T07:51:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27644 +- author: Just-a-Unity-Dev + changes: + - message: Fixed Geras not having their speed buff. + type: Fix + - message: Geras are no longer immune to other AI mobs. + type: Fix + - message: Slimes can no longer morph into a Geras when zombified. + type: Fix + - message: Lowered the Geras death threshold. + type: Tweak + id: 6523 + time: '2024-05-03T17:26:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27308 +- author: nikthechampiongr + changes: + - message: Ninjas will no longer be pointed to random wreckage in space. + type: Fix + id: 6524 + time: '2024-05-03T20:23:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27552 +- author: Dutch-VanDerLinde + changes: + - message: Fixed nuclear operatives, zombies, and head revolutionary round end summaries + not showing. + type: Fix + id: 6525 + time: '2024-05-04T00:03:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27654 +- author: TheShuEd + changes: + - message: Added Train station! + type: Add + id: 6526 + time: '2024-05-04T11:10:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27534 +- author: TheShuEd + changes: + - message: "Added Pathological Liar trait accent. The accent has a 15% chance of\ + \ inverting your message to the opposite. Replacing \u201CYes\u201D with \u201C\ + No\u201D, \u201CCan\u201D with \u201Ccan't\u201D and so on." + type: Add + id: 6527 + time: '2024-05-04T11:11:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/27618 diff --git a/Resources/Locale/en-US/accessories/vox-facial-hair.ftl b/Resources/Locale/en-US/accessories/vox-facial-hair.ftl index 48b19ca74b..a63b0b5a39 100644 --- a/Resources/Locale/en-US/accessories/vox-facial-hair.ftl +++ b/Resources/Locale/en-US/accessories/vox-facial-hair.ftl @@ -1,5 +1,5 @@ -marking-VoxFacialHairColonel = Vox Colonel -marking-VoxFacialHairFu = Quill Fu -marking-VoxFacialHairNeck = Neck Quills -marking-VoxFacialHairBeard = Quill Beard -marking-VoxFacialHairRuffBeard = Ruff Beard +marking-VoxFacialHairBeard = Vox Beard (Quills) +marking-VoxFacialHairColonel = Vox Moustache (Colonel) +marking-VoxFacialHairFu = Vox Moustache (Quill Fu) +marking-VoxFacialHairNeck = Vox Beard (Neck Quills) +marking-VoxFacialHairMane = Vox Beard (Mane) diff --git a/Resources/Locale/en-US/accessories/vox-hair.ftl b/Resources/Locale/en-US/accessories/vox-hair.ftl index cf98d0b4f9..94483fd6a6 100644 --- a/Resources/Locale/en-US/accessories/vox-hair.ftl +++ b/Resources/Locale/en-US/accessories/vox-hair.ftl @@ -1,13 +1,22 @@ -marking-VoxHairShortQuills = Short Vox Quills -marking-VoxHairKingly = Vox Kingly marking-VoxHairAfro = Vox Afro -marking-VoxHairMohawk = Vox Mohawk -marking-VoxHairYasuhiro = Vox Yasuhiro +marking-VoxHairBraids = Vox Braids +marking-VoxHairCrestedQuills = Vox Crested Quills +marking-VoxHairEmperorQuills = Vox Emperor Quills +marking-VoxHairFlowing = Vox Flowing +marking-VoxHairHawk = Vox Hawk marking-VoxHairHorns = Vox Horns -marking-VoxHairNights = Vox Nights -marking-VoxHairSurf = Vox Surf -marking-VoxHairCropped = Vox Cropped -marking-VoxHairRuffhawk = Vox Ruffhawk -marking-VoxHairRows = Vox Rows +marking-VoxHairKeelQuills = Vox Keel Quills +marking-VoxHairKeetQuills = Vox Keet Quills +marking-VoxHairKingly = Vox Kingly +marking-VoxHairLongBraid = Vox Long Braid marking-VoxHairMange = Vox Mange +marking-VoxHairMohawk = Vox Mohawk +marking-VoxHairNights = Vox Nights marking-VoxHairPony = Vox Pony +marking-VoxHairRazorClipped = Vox Razor (Clipped) +marking-VoxHairRazor = Vox Razor +marking-VoxHairSortBraid = Vox Short Braid +marking-VoxHairShortQuills = Vox Short Quills +marking-VoxHairSurf = Vox Surf +marking-VoxHairTielQuills = Vox Tiel Quills +marking-VoxHairYasu = Vox Yasuhiro diff --git a/Resources/Locale/en-US/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/flavors/flavor-profiles.ftl index f861624fb6..39b185bd02 100644 --- a/Resources/Locale/en-US/flavors/flavor-profiles.ftl +++ b/Resources/Locale/en-US/flavors/flavor-profiles.ftl @@ -243,6 +243,12 @@ flavor-complex-atomic-cola = like hoarding bottle caps flavor-complex-cuba-libre = like spiked cola flavor-complex-gin-tonic = like spiked lemon-lime soda flavor-complex-screwdriver = like spiked orange juice +flavor-complex-vodka-red-bool = like a heart attack +flavor-complex-irish-bool = caffine and Ireland +flavor-complex-xeno-basher = like killing bugs +flavor-complex-budget-insuls-drink = like door hacking +flavor-complex-watermelon-wakeup = like a sweet wakeup call +flavor-complex-rubberneck = like synthetics flavor-complex-irish-car-bomb = like a spiked cola float flavor-complex-themartinez = like violets and lemon vodka flavor-complex-cogchamp = like brass diff --git a/Resources/Locale/en-US/job/job-supervisors.ftl b/Resources/Locale/en-US/job/job-supervisors.ftl index 442852daa1..d92065a40b 100644 --- a/Resources/Locale/en-US/job/job-supervisors.ftl +++ b/Resources/Locale/en-US/job/job-supervisors.ftl @@ -1,4 +1,4 @@ -job-supervisors-centcom = CentCom official +job-supervisors-centcom = Central Command job-supervisors-captain = the captain job-supervisors-hop = the head of personnel job-supervisors-hos = the head of security diff --git a/Resources/Locale/en-US/markings/vox_tattoos.ftl b/Resources/Locale/en-US/markings/vox_tattoos.ftl new file mode 100644 index 0000000000..f7f3c7292c --- /dev/null +++ b/Resources/Locale/en-US/markings/vox_tattoos.ftl @@ -0,0 +1,11 @@ +marking-TattooVoxHeartLeftArm-heart_l_arm = Vox Left Arm Tattoo (Heart) +marking-TattooVoxHeartLeftArm = Vox Left Arm Tattoo (Heart) + +marking-TattooVoxHeartRightArm-heart_r_arm = Vox Right Arm Tattoo (Heart) +marking-TattooVoxHeartRightArm = Vox Right Arm Tattoo (Heart) + +marking-TattooVoxHiveChest-hive_s = Vox Chest Tattoo (hive) +marking-TattooVoxHiveChest = Vox Chest Tattoo (hive) + +marking-TattooVoxNightlingChest-nightling_s = Vox Chest Tattoo (nightling) +marking-TattooVoxNightlingChest = Vox Chest Tattoo (nightling) diff --git a/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl b/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl index 4c38e92558..1cac0495b0 100644 --- a/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl +++ b/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl @@ -261,3 +261,21 @@ reagent-desc-whiskey-soda = For the more refined griffon. reagent-name-white-russian = white russian reagent-desc-white-russian = That's just, like, your opinion, man... + +reagent-name-vodka-red-bool = vodka red bool +reagent-desc-vodka-red-bool = Because heart failure and liver failure go hand in hand. + +reagent-name-xeno-basher = xeno basher +reagent-desc-xeno-basher = The perfect drink before an expedition. + +reagent-name-irish-bool = irish bool +reagent-desc-irish-bool = Like a bool in a Ireland shop. + +reagent-name-budget-insuls = budget insuls +reagent-desc-budget-insuls = A tider's preferred drink. + +reagent-name-watermelon-wakeup = watermelon wakeup +reagent-desc-watermelon-wakeup = If you want to be awake, this will do it... Also sweet. + +reagent-name-rubberneck = rubberneck +reagent-desc-rubberneck = A popular drink amongst those adhering to an all synthetic diet. diff --git a/Resources/Locale/en-US/speech/speech-liar.ftl b/Resources/Locale/en-US/speech/speech-liar.ftl new file mode 100644 index 0000000000..1cd0a778b1 --- /dev/null +++ b/Resources/Locale/en-US/speech/speech-liar.ftl @@ -0,0 +1,132 @@ +liar-word-1 = yes +liar-word-replacement-1 = no + +liar-word-2 = no +liar-word-replacement-2 = yes + +liar-word-3 = yeah +liar-word-replacement-3 = nah + +liar-word-4 = nah +liar-word-replacement-4 = yeah + +liar-word-5 = yep +liar-word-replacement-5 = nope + +liar-word-6 = nope +liar-word-replacement-6 = yep + +liar-word-7 = sure +liar-word-replacement-7 = nah + +liar-word-8 = was +liar-word-replacement-8 = wasnt + +liar-word-9 = wasnt +liar-word-replacement-9 = was + +liar-word-10 = was +liar-word-replacement-10 = wasnt + +liar-word-11 = is +liar-word-replacement-11 = isnt + +liar-word-12 = will +liar-word-replacement-12 = wont + +liar-word-12 = not +liar-word-replacement-12 = "" + +liar-word-13 = dont +liar-word-replacement-13 = "" + +liar-word-14 = can +liar-word-replacement-14 = cant + +liar-word-15 = cant +liar-word-replacement-15 = can + +liar-word-16 = should +liar-word-replacement-16 = shouldnt + +liar-word-17 = dead +liar-word-replacement-17 = alive + +liar-word-18 = alive +liar-word-replacement-18 = dead + +liar-word-19 = does +liar-word-replacement-19 = doesnt + +liar-word-20 = did +liar-word-replacement-20 = didnt + +liar-word-21 = didnt +liar-word-replacement-21 = "" + +liar-word-22 = nothing +liar-word-replacement-22 = something + +liar-word-23 = something +liar-word-replacement-23 = nothing + +liar-word-24 = somebody +liar-word-replacement-24 = nobody + +liar-word-25 = nobody +liar-word-replacement-25 = somebody + +liar-word-26 = can +liar-word-replacement-26 = "can't" + +liar-word-27 = "can't" +liar-word-replacement-27 = can + +liar-word-28 = should +liar-word-replacement-28 = "shouldn't" + +liar-word-29 = do +liar-word-replacement-29 = "don't" + +liar-word-30 = "don't" +liar-word-replacement-30 = "" + +liar-word-31 = does +liar-word-replacement-31 = "doesn't" + +liar-word-32 = did +liar-word-replacement-32 = "didn't" + +liar-word-33 = "didn't" +liar-word-replacement-33 = did + +liar-word-34 = ye +liar-word-34-2 = ya +liar-word-replacement-34 = na + +liar-word-35 = na +liar-word-replacement-35 = ye + +liar-word-36 = yuh +liar-word-replacement-36 = nuh + +liar-word-37 = nuh +liar-word-replacement-37 = yuh + +liar-word-38 = love +liar-word-replacement-38 = hate + +liar-word-39 = hate +liar-word-replacement-39 = love + +liar-word-40 = like +liar-word-replacement-40 = don't like + +liar-word-41 = good +liar-word-replacement-41 = bad + +liar-word-42 = bad +liar-word-replacement-42 = good + +liar-word-42 = want +liar-word-replacement-42 = "don't want" diff --git a/Resources/Locale/en-US/station-events/events/immovable-rod.ftl b/Resources/Locale/en-US/station-events/events/immovable-rod.ftl index 1b0e0a478b..06abcc85c3 100644 --- a/Resources/Locale/en-US/station-events/events/immovable-rod.ftl +++ b/Resources/Locale/en-US/station-events/events/immovable-rod.ftl @@ -1 +1 @@ -station-event-immovable-rod-start-announcement = What the fuck was that?!? +station-event-immovable-rod-start-announcement = High velocity unidentified object is on a collision course with the station. Impact imminent. diff --git a/Resources/Locale/en-US/station-events/events/intercept.ftl b/Resources/Locale/en-US/station-events/events/intercept.ftl new file mode 100644 index 0000000000..3f84b027be --- /dev/null +++ b/Resources/Locale/en-US/station-events/events/intercept.ftl @@ -0,0 +1 @@ +station-event-communication-interception = Attention! Enemy communication intercepted. Security level elevated. diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index fa17dc23ec..c387f29753 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -38,3 +38,6 @@ trait-southern-desc = You have a different way of speakin'. trait-snoring-name = Snoring trait-snoring-desc = You will snore while sleeping. + +trait-liar-name = Pathological liar +trait-liar-desc = You can hardly bring yourself to tell the truth. Sometimes you lie anyway. \ No newline at end of file diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index fa9d39add2..30c739b845 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -425,3 +425,50 @@ chatsan-word-42: chatsan-replacement-42 chatsan-word-43: chatsan-replacement-43 chatsan-word-44: chatsan-replacement-44 + +- type: accent + id: liar + wordReplacements: + liar-word-1: liar-word-replacement-1 + liar-word-2: liar-word-replacement-2 + liar-word-3: liar-word-replacement-3 + liar-word-4: liar-word-replacement-4 + liar-word-5: liar-word-replacement-5 + liar-word-6: liar-word-replacement-6 + liar-word-7: liar-word-replacement-7 + liar-word-8: liar-word-replacement-8 + liar-word-9: liar-word-replacement-9 + liar-word-10: liar-word-replacement-10 + liar-word-11: liar-word-replacement-11 + liar-word-12: liar-word-replacement-12 + liar-word-13: liar-word-replacement-13 + liar-word-14: liar-word-replacement-14 + liar-word-15: liar-word-replacement-15 + liar-word-16: liar-word-replacement-16 + liar-word-17: liar-word-replacement-17 + liar-word-18: liar-word-replacement-18 + liar-word-19: liar-word-replacement-19 + liar-word-20: liar-word-replacement-20 + liar-word-21: liar-word-replacement-21 + liar-word-22: liar-word-replacement-22 + liar-word-23: liar-word-replacement-23 + liar-word-24: liar-word-replacement-24 + liar-word-25: liar-word-replacement-25 + liar-word-26: liar-word-replacement-26 + liar-word-27: liar-word-replacement-27 + liar-word-28: liar-word-replacement-28 + liar-word-29: liar-word-replacement-29 + liar-word-30: liar-word-replacement-30 + liar-word-31: liar-word-replacement-31 + liar-word-32: liar-word-replacement-32 + liar-word-33: liar-word-replacement-33 + liar-word-34: liar-word-replacement-34 + liar-word-34-2: liar-word-replacement-34 + liar-word-35: liar-word-replacement-35 + liar-word-36: liar-word-replacement-36 + liar-word-37: liar-word-replacement-37 + liar-word-38: liar-word-replacement-38 + liar-word-39: liar-word-replacement-39 + liar-word-40: liar-word-replacement-40 + liar-word-41: liar-word-replacement-41 + liar-word-42: liar-word-replacement-42 \ No newline at end of file diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index be66691564..fb156a732e 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -129,6 +129,7 @@ noSpawn: true components: - type: InstantAction + checkCanInteract: false charges: 3 useDelay: 5 itemIconStyle: BigAction diff --git a/Resources/Prototypes/Catalog/ReagentDispensers/beverage.yml b/Resources/Prototypes/Catalog/ReagentDispensers/beverage.yml index 975541a502..4689e26f8e 100644 --- a/Resources/Prototypes/Catalog/ReagentDispensers/beverage.yml +++ b/Resources/Prototypes/Catalog/ReagentDispensers/beverage.yml @@ -6,6 +6,7 @@ - DrinkColaBottleFull - DrinkCreamCartonXL - DrinkDrGibbJug + - DrinkEnergyDrinkJug - DrinkGreenTeaJug - DrinkIceJug - DrinkJuiceLimeCartonXL diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml index a309b1d61d..e4f4440bd3 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml @@ -18,6 +18,7 @@ DrinkCognacBottleFull: 4 DrinkCoconutWaterCarton: 3 DrinkColaBottleFull: 4 + DrinkEnergyDrinkCan: 8 DrinkMilkCarton: 2 DrinkCreamCarton: 5 DrinkGinBottleFull: 3 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/discount.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/discount.yml index ddf7943217..fc8492dcf1 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/discount.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/discount.yml @@ -4,6 +4,7 @@ FoodSnackCheesie: 3 FoodSnackChips: 3 FoodSnackBoritos: 3 + DrinkEnergyDrinkCan: 4 FoodSnackPopcorn: 3 FoodSnackEnergy: 3 CigPackMixed: 2 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml index ff9e512432..f8fc2998d7 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml @@ -32,6 +32,7 @@ - DrinkBloodyMaryGlass - DrinkBooger - DrinkBraveBullGlass + - BudgetInsulsDrinkGlass - DrinkCarrotJuice - DrinkCoconutRum - DrinkChocolateGlass @@ -57,6 +58,7 @@ - DrinkIcedGreenTeaGlass - DrinkIcedBeerGlass - DrinkIceCreamGlass + - IrishBoolGlass - DrinkIrishCarBomb - DrinkIrishCoffeeGlass - DrinkLemonadeGlass @@ -78,6 +80,7 @@ - DrinkRewriter - DrinkRoyRogersGlass - DrinkRootBeerFloatGlass + - RubberneckGlass - DrinkRumGlass - DrinkSakeGlass - DrinkSbitenGlass @@ -91,12 +94,15 @@ - DrinkThreeMileIslandGlass - DrinkToxinsSpecialGlass - DrinkVodkaMartiniGlass + - DrinkVodkaRedBool - DrinkVodkaTonicGlass - DrinkWatermelonJuice + - DrinkWatermelonWakeup - DrinkWhiskeyColaGlass - DrinkWhiskeySodaGlass - DrinkWhiteRussianGlass - DrinkWineGlass + - XenoBasherGlass - DrinkShakeBlue - DrinkShakeWhite - DrinkTheMartinez diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml index d4cc4b00e3..6ec5f8999a 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml @@ -1,27 +1,3 @@ -- type: marking - id: VoxFacialHairColonel - bodyPart: FacialHair - markingCategory: FacialHair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_facial_hair.rsi - state: vox_colonel_s -- type: marking - id: VoxFacialHairFu - bodyPart: FacialHair - markingCategory: FacialHair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_facial_hair.rsi - state: vox_fu_s -- type: marking - id: VoxFacialHairNeck - bodyPart: FacialHair - markingCategory: FacialHair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_facial_hair.rsi - state: vox_neck_s - type: marking id: VoxFacialHairBeard bodyPart: FacialHair @@ -29,12 +5,40 @@ speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi - state: vox_beard_s + state: beard_s + - type: marking - id: VoxFacialHairRuffBeard + id: VoxFacialHairColonel bodyPart: FacialHair markingCategory: FacialHair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi - state: vox_ruff_beard_s + state: colonel_s + +- type: marking + id: VoxFacialHairFu + bodyPart: FacialHair + markingCategory: FacialHair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_facial_hair.rsi + state: fu_s + +- type: marking + id: VoxFacialHairMane + bodyPart: FacialHair + markingCategory: FacialHair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_facial_hair.rsi + state: mane_s + +- type: marking + id: VoxFacialHairNeck + bodyPart: FacialHair + markingCategory: FacialHair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_facial_hair.rsi + state: neck_s diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml index 975de63204..9a847b40a9 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml @@ -1,19 +1,3 @@ -- type: marking - id: VoxHairShortQuills - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_hair.rsi - state: vox_shortquills_s -- type: marking - id: VoxHairKingly - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_hair.rsi - state: vox_kingly_s - type: marking id: VoxHairAfro bodyPart: Hair @@ -21,23 +5,53 @@ speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_afro_s + state: afro_s + - type: marking - id: VoxHairMohawk + id: VoxHairBraids bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_mohawk_s + state: braid_s + - type: marking - id: VoxHairYasuhiro + id: VoxHairCrestedQuills bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_yasu_s + state: crestedquills_s + +- type: marking + id: VoxHairEmperorQuills + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: emperorquills_s + +- type: marking + id: VoxHairFlowing + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: flowing_s + +- type: marking + id: VoxHairHawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: hawk_s + - type: marking id: VoxHairHorns bodyPart: Hair @@ -45,47 +59,44 @@ speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_horns_s + state: horns_s + - type: marking - id: VoxHairNights + id: VoxHairKeelQuills bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_nights_s + state: keelquills_s + - type: marking - id: VoxHairSurf + id: VoxHairKeetQuills bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_surf_s + state: keetquills_s + - type: marking - id: VoxHairCropped + id: VoxHairKingly bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_cropped_s + state: kingly_s + - type: marking - id: VoxHairRuffhawk + id: VoxHairLongBraid bodyPart: Hair markingCategory: Hair speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_ruff_hawk_s -- type: marking - id: VoxHairRows - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [Vox] - sprites: - - sprite: Mobs/Customization/vox_hair.rsi - state: vox_rows_s + state: afro_s + - type: marking id: VoxHairMange bodyPart: Hair @@ -93,7 +104,26 @@ speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_mange_s + state: mange_s + +- type: marking + id: VoxHairMohawk + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: mohawk_s + +- type: marking + id: VoxHairNights + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: nights_s + - type: marking id: VoxHairPony bodyPart: Hair @@ -101,4 +131,67 @@ speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi - state: vox_pony_s + state: ponytail_s + +- type: marking + id: VoxHairRazorClipped + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: razor_clipped_s + +- type: marking + id: VoxHairRazor + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: razor_s + +- type: marking + id: VoxHairSortBraid + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: short_braid_s + +- type: marking + id: VoxHairShortQuills + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: shortquills_s + +- type: marking + id: VoxHairSurf + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: surf_s + +- type: marking + id: VoxHairTielQuills + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: tielquills_s + +- type: marking + id: VoxHairYasu + bodyPart: Hair + markingCategory: Hair + speciesRestriction: [Vox] + sprites: + - sprite: Mobs/Customization/vox_hair.rsi + state: yasu_s \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml new file mode 100644 index 0000000000..c61cfea0c6 --- /dev/null +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml @@ -0,0 +1,55 @@ +- type: marking + id: TattooVoxHeartLeftArm + bodyPart: LArm + markingCategory: Arms + speciesRestriction: [Vox] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: Mobs/Customization/vox_tattoos.rsi + state: heart_l_arm + +- type: marking + id: TattooVoxHeartRightArm + bodyPart: RArm + markingCategory: Arms + speciesRestriction: [Vox] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: Mobs/Customization/vox_tattoos.rsi + state: heart_r_arm + +- type: marking + id: TattooVoxHiveChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Vox] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: Mobs/Customization/vox_tattoos.rsi + state: hive_s + +- type: marking + id: TattooVoxNightlingChest + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Vox] + coloring: + default: + type: + !type:TattooColoring + fallbackColor: "#666666" + sprites: + - sprite: Mobs/Customization/vox_tattoos.rsi + state: nightling_s diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 00de018025..b3a80f90c7 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -147,6 +147,16 @@ noSpawn: true components: # they portable... + - type: MovementSpeedModifier + baseWalkSpeed: 3 + baseSprintSpeed: 5 # +.5 from normal movement speed + - type: MobThresholds + thresholds: + 0: Alive + 80: Dead # weak af tho + - type: NpcFactionMember + factions: + - NanoTrasen - type: MultiHandedItem - type: Item size: Huge diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml index b9f265e0bc..b332f573fb 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml @@ -1,6 +1,7 @@ - type: entity save: false - name: Urisst' Mzhand + name: Urist McScales + suffix: Urisst' Mzhand parent: BaseMobReptilian id: MobReptilian diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index a729eed9c8..42814f7fd8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -503,6 +503,22 @@ sprite: Objects/Consumable/Drinks/bravebullglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: BudgetInsulsDrinkGlass + suffix: budget insuls + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: BudgetInsulsDrink + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/budgetinsulsdrink.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkCarrotJuice @@ -535,6 +551,22 @@ sprite: Objects/Consumable/Drinks/chocolateglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: RubberneckGlass + suffix: rubberneck + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Rubberneck + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/rubberneck.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkCoconutRum @@ -1061,6 +1093,22 @@ sprite: Objects/Consumable/Drinks/icecreamglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: IrishBoolGlass + suffix: irish bool + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: IrishBool + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/beerglass.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkIrishCarBomb @@ -2054,6 +2102,22 @@ sprite: Objects/Consumable/Drinks/martiniglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkVodkaRedBool + suffix: vodka red bool + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: VodkaRedBool + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/ginvodkaglass.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkVodkaTonicGlass @@ -2100,6 +2164,22 @@ - ReagentId: JuiceWatermelon Quantity: 30 +- type: entity + parent: DrinkGlass + id: DrinkWatermelonWakeup + suffix: watermelon wakeup + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: WatermelonWakeup + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/champagneglass.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkWhiskeyColaGlass @@ -2180,6 +2260,22 @@ sprite: Objects/Consumable/Drinks/wineglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: XenoBasherGlass + suffix: xeno basher + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: XenoBasher + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/xenobasher.rsi + state: icon + # TODO: MOVE - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml b/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml index b104b5787a..4d36af4459 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pinpointer.yml @@ -106,5 +106,5 @@ - type: Icon state: pinpointer-station - type: Pinpointer - component: BecomesStation + component: ResearchServer targetName: the station diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index b58544b02b..e4ae1c42e8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -165,7 +165,6 @@ emagStaticRecipes: - BoxLethalshot - BoxShotgunFlare - - GrenadeBlast - MagazineBoxLightRifle - MagazineBoxMagnum - MagazineBoxPistol @@ -187,6 +186,7 @@ - BoxBeanbag - BoxShotgunIncendiary - BoxShotgunUranium + - GrenadeBlast - GrenadeEMP - GrenadeFlash - MagazineBoxLightRifleIncendiary @@ -711,6 +711,7 @@ - BoxShotgunUranium - ExplosivePayload - FlashPayload + - GrenadeBlast - GrenadeEMP - GrenadeFlash - HoloprojectorSecurity @@ -731,6 +732,7 @@ - MagazineRifleUranium - MagazineShotgunBeanbag - MagazineShotgunIncendiary + - PortableRecharger - PowerCageHigh - PowerCageMedium - PowerCageSmall @@ -753,14 +755,6 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon - - PowerCageSmall - - PowerCageMedium - - PowerCageHigh - - ShuttleGunSvalinnMachineGunCircuitboard - - ShuttleGunPerforatorCircuitboard - - ShuttleGunFriendshipCircuitboard - - ShuttleGunDusterCircuitboard - - PortableRecharger - type: MaterialStorage whitelist: tags: diff --git a/Resources/Prototypes/Flavors/flavors.yml b/Resources/Prototypes/Flavors/flavors.yml index 47a1bc71aa..73ded93e0f 100644 --- a/Resources/Prototypes/Flavors/flavors.yml +++ b/Resources/Prototypes/Flavors/flavors.yml @@ -589,6 +589,36 @@ flavorType: Complex description: flavor-complex-irish-car-bomb +- type: flavor + id: vodkaredbool + flavorType: Complex + description: flavor-complex-vodka-red-bool + +- type: flavor + id: xenobasher + flavorType: Complex + description: flavor-complex-xeno-basher + +- type: flavor + id: irishbool + flavorType: Complex + description: flavor-complex-irish-bool + +- type: flavor + id: budgetinsulsdrink + flavorType: Complex + description: flavor-complex-budget-insuls-drink + +- type: flavor + id: watermelonwakeup + flavorType: Complex + description: flavor-complex-watermelon-wakeup + +- type: flavor + id: rubberneck + flavorType: Complex + description: flavor-complex-rubberneck + - type: flavor id: blackrussian flavorType: Complex diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index afc3a10cbd..6692efb3f5 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -454,6 +454,31 @@ - type: NukeopsRole prototype: Nukeops +- type: entity + id: SleeperAgentsRule + parent: BaseGameRule + noSpawn: true + components: + - type: StationEvent + earliestStart: 25 + weight: 15 + minimumPlayers: 15 + reoccurrenceDelay: 60 + startAnnouncement: station-event-communication-interception + startAudio: + path: /Audio/Announcements/intercept.ogg + - type: AlertLevelInterceptionRule + - type: TraitorRule + - type: AntagSelection + definitions: + - prefRoles: [ Traitor ] + min: 1 + max: 2 + playerRatio: 10 + mindComponents: + - type: TraitorRole + prototype: Traitor + - type: entity id: MassHallucinations parent: BaseGameRule @@ -476,11 +501,11 @@ noSpawn: true components: - type: StationEvent - endAnnouncement: station-event-immovable-rod-start-announcement - endAudio: + startAnnouncement: station-event-immovable-rod-start-announcement + startAudio: path: /Audio/Announcements/attention.ogg weight: 5 - duration: 25 + duration: 1 earliestStart: 45 minimumPlayers: 20 - type: ImmovableRodRule diff --git a/Resources/Prototypes/Maps/Pools/default.yml b/Resources/Prototypes/Maps/Pools/default.yml index a1e72a7683..1331dbd799 100644 --- a/Resources/Prototypes/Maps/Pools/default.yml +++ b/Resources/Prototypes/Maps/Pools/default.yml @@ -16,4 +16,4 @@ # - Saltern # - Packed # - Reach - #- Train <- return after station anchoring PR is finished and merged +# - Train diff --git a/Resources/Prototypes/Maps/train.yml b/Resources/Prototypes/Maps/train.yml index 244652e08b..4fff33b868 100644 --- a/Resources/Prototypes/Maps/train.yml +++ b/Resources/Prototypes/Maps/train.yml @@ -49,7 +49,7 @@ # #security # HeadOfSecurity: [ 1, 1 ] # Warden: [ 1, 1 ] -# SecurityOfficer: [ 4, 4 ] +# SecurityOfficer: [ 6, 6 ] # SecurityCadet: [ 2, 3 ] # Lawyer: [ 1, 2 ] # #supply diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index ce89f41d37..582f69b744 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -79,7 +79,7 @@ id: SlimeMorphGeras configuration: entity: MobSlimesGeras - transferName: false + transferName: true transferHumanoidAppearance: false inventory: Drop transferDamage: true diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index 963e5fcf45..8028b6376c 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -1769,3 +1769,165 @@ - !type:AdjustReagent reagent: Ethanol amount: 0.15 + +- type: reagent + id: VodkaRedBool + name: reagent-name-vodka-red-bool + parent: BaseAlcohol + desc: reagent-desc-vodka-red-bool + physicalDesc: reagent-physical-desc-strong-smelling + flavor: vodkaredbool + color: "#c4c27655" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/ginvodkaglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: true + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.10 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.25 + +- type: reagent + id: XenoBasher + name: reagent-name-xeno-basher + parent: BaseAlcohol + desc: reagent-desc-xeno-basher + physicalDesc: reagent-physical-desc-fizzy-and-creamy + flavor: xenobasher + color: "#4d6600" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/xenobasher.rsi + state: icon_empty + metamorphicMaxFillLevels: 2 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.15 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.15 + +- type: reagent + id: IrishBool + name: reagent-name-irish-bool + parent: BaseAlcohol + desc: reagent-desc-irish-bool + physicalDesc: reagent-physical-desc-bubbly + flavor: irishbool + color: "#71672e99" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/beerglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 6 + metamorphicFillBaseName: fill- + metamorphicChangeColor: true + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.10 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.15 + +- type: reagent + id: BudgetInsulsDrink + name: reagent-name-budget-insuls + parent: BaseAlcohol + desc: reagent-desc-budget-insuls + physicalDesc: reagent-physical-desc-strong-smelling + flavor: budgetinsulsdrink + color: "#dede73" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/budgetinsulsdrink.rsi + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.15 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.25 + +- type: reagent + id: WatermelonWakeup + name: reagent-name-watermelon-wakeup + parent: BaseAlcohol + desc: reagent-desc-watermelon-wakeup + physicalDesc: reagent-physical-desc-sweet + flavor: watermelonwakeup + color: "#d49dca" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/champagneglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: true + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.07 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.15 + +- type: reagent + id: Rubberneck + name: reagent-name-rubberneck + parent: BaseAlcohol + desc: reagent-desc-rubberneck + physicalDesc: reagent-physical-desc-strong-smelling + flavor: rubberneck + color: "#f0d74a" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/rubberneck.rsi + state: icon_empty + metamorphicMaxFillLevels: 3 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + metabolisms: + Drink: + effects: + - !type:SatiateThirst + factor: 1 + - !type:AdjustReagent + reagent: Ethanol + amount: 0.15 + - !type:AdjustReagent + reagent: Theobromine + amount: 0.05 + fizziness: 0.25 diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml index f8d3f41af9..d78b0351ce 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/soda.yml @@ -70,7 +70,7 @@ factor: 2 - !type:AdjustReagent reagent: Theobromine - amount: 0.05 + amount: 0.1 fizziness: 0.4 - type: reagent diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 2ab8e18372..1efbd3b42d 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -678,9 +678,9 @@ result: GrenadeBlast completetime: 3 materials: - Steel: 150 - Plastic: 100 - Gold: 50 + Steel: 450 + Plastic: 300 + Gold: 150 - type: latheRecipe id: GrenadeFlash @@ -700,4 +700,4 @@ Uranium: 2000 Plastic: 1000 Plasma: 500 - Glass: 500 \ No newline at end of file + Glass: 500 diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index c810ebb0ce..2a14c0ecd2 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -86,6 +86,16 @@ products: B52: 3 +- type: reaction + id: BudgetInsulsDrink + reactants: + Tequila: + amount: 1 + VodkaRedBool: + amount: 2 + products: + BudgetInsulsDrink: 3 + - type: reaction id: BlueHawaiian reactants: @@ -516,6 +526,16 @@ products: IcedTea: 3 +- type: reaction + id: IrishBool + reactants: + EnergyDrink: + amount: 1 + IrishCarBomb: + amount: 1 + products: + IrishBool: 2 + - type: reaction id: IrishCarBomb reactants: @@ -794,6 +814,18 @@ products: RoyRogers: 3 +- type: reaction + id: Rubberneck + reactants: + EnergyDrink: + amount: 2 + Moonshine: + amount: 1 + Sugar: + amount: 1 + products: + Rubberneck: 4 + - type: reaction id: Sbiten reactants: @@ -943,6 +975,16 @@ products: VodkaMartini: 3 +- type: reaction + id: VodkaRedBool + reactants: + Vodka: + amount: 1 + EnergyDrink: + amount: 2 + products: + VodkaRedBool: 3 + - type: reaction id: VodkaTonic reactants: @@ -963,6 +1005,18 @@ products: WhiskeyCola: 3 +- type: reaction + id: WatermelonWakeup + reactants: + JuiceWatermelon: + amount: 1 + Whiskey: + amount: 1 + EnergyDrink: + amount: 1 + products: + WatermelonWakeup: 3 + - type: reaction id: WhiteRussian reactants: @@ -983,6 +1037,16 @@ products: WhiskeySoda: 3 +- type: reaction + id: XenoBasher + reactants: + ManlyDorf: + amount: 2 + EnergyDrink: + amount: 1 + products: + XenoBasher: 3 + - type: reaction id: HotRamen minTemp: 323.15 diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 6c0e94e9e5..97b0c1e82b 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -156,6 +156,7 @@ - PowerCageMedium - MagazineGrenadeEmpty - GrenadeFlash + - GrenadeBlast - ShuttleGunSvalinnMachineGunCircuitboard - ShuttleGunPerforatorCircuitboard - ShuttleGunFriendshipCircuitboard diff --git a/Resources/Prototypes/Traits/neutral.yml b/Resources/Prototypes/Traits/neutral.yml index ba9bd8d886..d1e0afc83c 100644 --- a/Resources/Prototypes/Traits/neutral.yml +++ b/Resources/Prototypes/Traits/neutral.yml @@ -23,3 +23,12 @@ description: trait-southern-desc components: - type: SouthernAccent + +- type: trait + id: Liar + name: trait-liar-name + description: trait-liar-desc + components: + - type: ReplacementAccent + replacementChance: 0.15 + accent: liar diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/beard_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/beard_s.png new file mode 100644 index 0000000000..92aeea8f36 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/beard_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/colonel_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/colonel_s.png new file mode 100644 index 0000000000..2e657d675a Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/colonel_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/fu_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/fu_s.png new file mode 100644 index 0000000000..87f97eeaee Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/fu_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/mane_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/mane_s.png new file mode 100644 index 0000000000..08b120f500 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/mane_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json index c52ad8a2a2..64eebb8883 100644 --- a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/meta.json @@ -1 +1,31 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/blob/02ff588d59b3c560c685d9ca75e882d32a72d8cb/icons/mob/human_face.dmi", "states": [{"name": "vox_beard_s", "directions": 4}, {"name": "vox_colonel_s", "directions": 4}, {"name": "vox_fu_s", "directions": 4}, {"name": "vox_neck_s", "directions": 4}, {"name": "vox_ruff_beard_s", "directions": 4}, {"name": "vox_ruff_beard_s2", "directions": 4}]} +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/0f9ef5962f4422836c0a42f289fb24d018918cbc/icons/mob/sprite_accessories/vox/vox_facial_hair.dmi and greyscaled", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "colonel_s", + "directions": 4 + }, + { + "name": "fu_s", + "directions": 4 + }, + { + "name": "neck_s", + "directions": 4 + }, + { + "name": "beard_s", + "directions": 4 + }, + { + "name": "mane_s", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/neck_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/neck_s.png new file mode 100644 index 0000000000..f630e8ce8b Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/neck_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_beard_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_beard_s.png deleted file mode 100644 index 8e922e58de..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_beard_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_colonel_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_colonel_s.png deleted file mode 100644 index 8de4dd6803..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_colonel_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_fu_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_fu_s.png deleted file mode 100644 index e49e84baf0..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_fu_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_neck_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_neck_s.png deleted file mode 100644 index 9009717cee..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_neck_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s.png deleted file mode 100644 index 365f134c44..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s2.png b/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_facial_hair.rsi/vox_ruff_beard_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/afro_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/afro_s.png new file mode 100644 index 0000000000..74b09a0635 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/afro_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/braid_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/braid_s.png new file mode 100644 index 0000000000..ff2aa4acbc Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/braid_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/crestedquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/crestedquills_s.png new file mode 100644 index 0000000000..f089905438 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/crestedquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/emperorquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/emperorquills_s.png new file mode 100644 index 0000000000..899918e694 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/emperorquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/flowing_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/flowing_s.png new file mode 100644 index 0000000000..98139350d4 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/flowing_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/hawk_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/hawk_s.png new file mode 100644 index 0000000000..c262fc1d91 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/hawk_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/horns_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/horns_s.png new file mode 100644 index 0000000000..8891151c9f Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/horns_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/keelquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/keelquills_s.png new file mode 100644 index 0000000000..c3c947bcce Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/keelquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/keetquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/keetquills_s.png new file mode 100644 index 0000000000..910542dde1 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/keetquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/kingly_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/kingly_s.png new file mode 100644 index 0000000000..1d0a1d8d89 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/kingly_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/long_braid_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/long_braid_s.png new file mode 100644 index 0000000000..3df31052db Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/long_braid_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/mange_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/mange_s.png new file mode 100644 index 0000000000..afa934e880 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/mange_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_hair.rsi/meta.json index 2f14178424..9b08260bd6 100644 --- a/Resources/Textures/Mobs/Customization/vox_hair.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_hair.rsi/meta.json @@ -1 +1,99 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/blob/02ff588d59b3c560c685d9ca75e882d32a72d8cb/icons/mob/human_face.dmi", "states": [{"name": "vox_afro_s", "directions": 4}, {"name": "vox_afro_s2", "directions": 4}, {"name": "vox_bald_s", "directions": 4}, {"name": "vox_cropped_s", "directions": 4}, {"name": "vox_cropped_s2", "directions": 4}, {"name": "vox_horns_s", "directions": 4}, {"name": "vox_horns_s2", "directions": 4}, {"name": "vox_kingly_s", "directions": 4}, {"name": "vox_kingly_s2", "directions": 4}, {"name": "vox_mange_s", "directions": 4}, {"name": "vox_mange_s2", "directions": 4}, {"name": "vox_mohawk_s", "directions": 4}, {"name": "vox_mohawk_s2", "directions": 4}, {"name": "vox_nights_s", "directions": 4}, {"name": "vox_nights_s2", "directions": 4}, {"name": "vox_pony_s", "directions": 4}, {"name": "vox_pony_s2", "directions": 4}, {"name": "vox_rows_s", "directions": 4}, {"name": "vox_rows_s2", "directions": 4}, {"name": "vox_ruff_hawk_s", "directions": 4}, {"name": "vox_ruff_hawk_s2", "directions": 4}, {"name": "vox_shortquills_s", "directions": 4}, {"name": "vox_shortquills_s2", "directions": 4}, {"name": "vox_surf_s", "directions": 4}, {"name": "vox_surf_s2", "directions": 4}, {"name": "vox_yasu_s", "directions": 4}, {"name": "vox_yasu_s2", "directions": 4}]} +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/dcd1f5d88a8c5ba9634fc3fce67a76ada45f71dc/icons/mob/sprite_accessories/vox/vox_hair.dmi and greyscaled", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "crestedquills_s", + "directions": 4 + }, + { + "name": "emperorquills_s", + "directions": 4 + }, + { + "name": "keelquills_s", + "directions": 4 + }, + { + "name": "keetquills_s", + "directions": 4 + }, + { + "name": "shortquills_s", + "directions": 4 + }, + { + "name": "tielquills_s", + "directions": 4 + }, + { + "name": "kingly_s", + "directions": 4 + }, + { + "name": "afro_s", + "directions": 4 + }, + { + "name": "yasu_s", + "directions": 4 + }, + { + "name": "razor_s", + "directions": 4 + }, + { + "name": "razor_clipped_s", + "directions": 4 + }, + { + "name": "mohawk_s", + "directions": 4 + }, + { + "name": "horns_s", + "directions": 4 + }, + { + "name": "nights_s", + "directions": 4 + }, + { + "name": "hawk_s", + "directions": 4 + }, + { + "name": "long_braid_s", + "directions": 4 + }, + { + "name": "short_braid_s", + "directions": 4 + }, + { + "name": "mange_s", + "directions": 4 + }, + { + "name": "ponytail_s", + "directions": 4 + }, + { + "name": "braid_s", + "directions": 4 + }, + { + "name": "surf_s", + "directions": 4 + }, + { + "name": "flowing_s", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/mohawk_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/mohawk_s.png new file mode 100644 index 0000000000..b8466620b8 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/mohawk_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/nights_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/nights_s.png new file mode 100644 index 0000000000..68d2654dcd Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/nights_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/ponytail_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/ponytail_s.png new file mode 100644 index 0000000000..316f08fe9a Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/ponytail_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_clipped_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_clipped_s.png new file mode 100644 index 0000000000..e5ffe57daa Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_clipped_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_s.png new file mode 100644 index 0000000000..0b57cec2c1 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/razor_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/short_braid_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/short_braid_s.png new file mode 100644 index 0000000000..6f7a1e86ca Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/short_braid_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/shortquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/shortquills_s.png new file mode 100644 index 0000000000..a0d496aeed Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/shortquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/surf_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/surf_s.png new file mode 100644 index 0000000000..712ccb542f Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/surf_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/tielquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/tielquills_s.png new file mode 100644 index 0000000000..aa121bd331 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/tielquills_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s.png deleted file mode 100644 index 60b9b18c21..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_afro_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_bald_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_bald_s.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_bald_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s.png deleted file mode 100644 index 67574355ee..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_cropped_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s.png deleted file mode 100644 index dbb4ae8f28..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_horns_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s.png deleted file mode 100644 index 3f35429e14..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_kingly_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s.png deleted file mode 100644 index 138c58e690..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mange_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s.png deleted file mode 100644 index 0a5589b0ba..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_mohawk_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s.png deleted file mode 100644 index 0a587eafce..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_nights_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s.png deleted file mode 100644 index a9ff211389..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_pony_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s.png deleted file mode 100644 index cee8b9a103..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_rows_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s.png deleted file mode 100644 index 41c3cb6dec..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_ruff_hawk_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s.png deleted file mode 100644 index c83ef673a5..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_shortquills_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s.png deleted file mode 100644 index df2191cacd..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_surf_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s.png deleted file mode 100644 index 6461305e85..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s2.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s2.png deleted file mode 100644 index 0858c19f05..0000000000 Binary files a/Resources/Textures/Mobs/Customization/vox_hair.rsi/vox_yasu_s2.png and /dev/null differ diff --git a/Resources/Textures/Mobs/Customization/vox_hair.rsi/yasu_s.png b/Resources/Textures/Mobs/Customization/vox_hair.rsi/yasu_s.png new file mode 100644 index 0000000000..6ee3de1dad Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_hair.rsi/yasu_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_l_arm.png b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_l_arm.png new file mode 100644 index 0000000000..0ff82bbaf2 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_l_arm.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_r_arm.png b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_r_arm.png new file mode 100644 index 0000000000..774c96692c Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/heart_r_arm.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/hive_s.png b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/hive_s.png new file mode 100644 index 0000000000..8361f55864 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/hive_s.png differ diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json new file mode 100644 index 0000000000..725fbb6a0d --- /dev/null +++ b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from Paradise at https://github.com/ParadiseSS13/Paradise/blob/ef7a4d962915cb36b138eeb59663f0053d4906fe/icons/mob/sprite_accessories/vox/vox_body_markings.dmi and modified by Flareguy", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "heart_l_arm", + "directions": 4 + }, + { + "name": "heart_r_arm", + "directions": 4 + }, + { + "name": "hive_s", + "directions": 4 + }, + { + "name": "nightling_s", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/nightling_s.png b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/nightling_s.png new file mode 100644 index 0000000000..72b0b30fd5 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/vox_tattoos.rsi/nightling_s.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-1.png new file mode 100644 index 0000000000..aca8f4931d Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-2.png new file mode 100644 index 0000000000..4715162ebe Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-3.png new file mode 100644 index 0000000000..04bfd58d03 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon.png new file mode 100644 index 0000000000..04bfd58d03 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon_empty.png new file mode 100644 index 0000000000..4d446abc54 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/meta.json new file mode 100644 index 0000000000..14c43f186f --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/budgetinsulsdrink.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Glass and fillstates by Hanzdegloker on Github.", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon.png index 7a577d477c..e9e2aea716 100644 Binary files a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon.png and b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon_open.png b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon_open.png index b26d37e377..44688ef3e9 100644 Binary files a/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon_open.png and b/Resources/Textures/Objects/Consumable/Drinks/energy_drink.rsi/icon_open.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-1.png new file mode 100644 index 0000000000..f5afa0bed8 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-2.png new file mode 100644 index 0000000000..79bcdcfb8c Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-3.png new file mode 100644 index 0000000000..772aa80d6a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon.png new file mode 100644 index 0000000000..772aa80d6a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon_empty.png new file mode 100644 index 0000000000..416d1f7717 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/meta.json new file mode 100644 index 0000000000..a26c7355ae --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/rubberneck.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://tgstation13.org/wiki/images/archive/4/4e/20220514022531%21Rubberneck.png. Fill levels by Hanzdegloker on GitHub.", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-1.png new file mode 100644 index 0000000000..3aef3bd8ab Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-2.png new file mode 100644 index 0000000000..ce4411ee1e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon.png new file mode 100644 index 0000000000..ce4411ee1e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon_empty.png new file mode 100644 index 0000000000..85097b80cc Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/meta.json new file mode 100644 index 0000000000..9743bd909e --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/xenobasher.rsi/meta.json @@ -0,0 +1,23 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Created by Hanzdegloker on github", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + } + ] +}