diff --git a/Content.Client/Paper/UI/PaperWindow.xaml.cs b/Content.Client/Paper/UI/PaperWindow.xaml.cs index 666ea124b37..ee014ef98db 100644 --- a/Content.Client/Paper/UI/PaperWindow.xaml.cs +++ b/Content.Client/Paper/UI/PaperWindow.xaml.cs @@ -253,10 +253,7 @@ public void Populate(SharedPaperComponent.PaperBoundUserInterfaceState state) StampDisplay.RemoveStamps(); foreach(var stamper in state.StampedBy) { - if (stamper.StampedBorderless) - StampDisplay.AddStamp(new StampWidget(true) { StampInfo = stamper }); - else - StampDisplay.AddStamp(new StampWidget { StampInfo = stamper }); + StampDisplay.AddStamp(new StampWidget { StampInfo = stamper }); } } diff --git a/Content.Client/Paper/UI/StampWidget.xaml.cs b/Content.Client/Paper/UI/StampWidget.xaml.cs index 66e1e162f26..face056ec6e 100644 --- a/Content.Client/Paper/UI/StampWidget.xaml.cs +++ b/Content.Client/Paper/UI/StampWidget.xaml.cs @@ -23,9 +23,10 @@ public float Orientation public StampDisplayInfo StampInfo { set { - StampedByLabel.Text = Loc.GetString(value.StampedName); + StampedByLabel.Text = value.Type is StampType.Signature ? value.StampedName : Loc.GetString(value.StampedName); StampedByLabel.FontColorOverride = value.StampedColor; ModulateSelfOverride = value.StampedColor; + PanelOverride = value.Type is StampType.Signature ? null : _borderTexture; } } @@ -45,23 +46,6 @@ public StampWidget() _stampShader = prototypes.Index("PaperStamp").InstanceUnique(); } - public StampWidget(bool borderless) - { - RobustXamlLoader.Load(this); - var resCache = IoCManager.Resolve(); - var borderImage = resCache.GetResource( - "/Textures/Interface/Paper/paper_stamp_noborder.svg.96dpi.png"); - _borderTexture = new StyleBoxTexture - { - Texture = borderImage, - }; - _borderTexture.SetPatchMargin(StyleBoxTexture.Margin.All, 7.0f); - PanelOverride = _borderTexture; - - var prototypes = IoCManager.Resolve(); - _stampShader = prototypes.Index("PaperStamp").InstanceUnique(); - } - protected override void Draw(DrawingHandleScreen handle) { _stampShader?.SetParameter("objCoord", GlobalPosition * UIScale * new Vector2(1, -1)); diff --git a/Content.Client/Preferences/UI/LoadoutContainer.xaml.cs b/Content.Client/Preferences/UI/LoadoutContainer.xaml.cs index a54ae970725..ba4ac4e8ce6 100644 --- a/Content.Client/Preferences/UI/LoadoutContainer.xaml.cs +++ b/Content.Client/Preferences/UI/LoadoutContainer.xaml.cs @@ -36,17 +36,28 @@ public LoadoutContainer(ProtoId proto, bool disabled, Formatte if (_protoManager.TryIndex(proto, out var loadProto)) { - var ent = _entManager.System().GetFirstOrNull(loadProto); + // Frontier: overrideable prototype fields (description, name, icon [via entity]) Price.Text = "$" + loadProto.Price; - if (ent != null) + + bool hasDescription = !string.IsNullOrEmpty(loadProto.Description); + bool hasEntity = !string.IsNullOrEmpty(loadProto.PreviewEntity?.Id); + + EntProtoId? ent = null; + if (!hasEntity || !hasDescription) { + ent = _entManager.System().GetFirstOrNull(loadProto); + } + var finalEnt = hasEntity ? loadProto.PreviewEntity : ent; + if (finalEnt != null) { - _entity = _entManager.SpawnEntity(ent, MapCoordinates.Nullspace); + _entity = _entManager.SpawnEntity(finalEnt, MapCoordinates.Nullspace); Sprite.SetEntity(_entity); var spriteTooltip = new Tooltip(); - spriteTooltip.SetMessage(FormattedMessage.FromUnformatted(_entManager.GetComponent(_entity.Value).EntityDescription)); + var description = hasDescription ? loadProto.Description : _entManager.GetComponent(_entity.Value).EntityDescription; + spriteTooltip.SetMessage(FormattedMessage.FromUnformatted(description)); Sprite.TooltipSupplier = _ => spriteTooltip; } + // End Frontier } } diff --git a/Content.Client/Preferences/UI/LoadoutGroupContainer.xaml.cs b/Content.Client/Preferences/UI/LoadoutGroupContainer.xaml.cs index 8dc1c405394..374b63b9f29 100644 --- a/Content.Client/Preferences/UI/LoadoutGroupContainer.xaml.cs +++ b/Content.Client/Preferences/UI/LoadoutGroupContainer.xaml.cs @@ -77,7 +77,7 @@ public void RefreshLoadouts(RoleLoadout loadout, ICommonSession session, IDepend var enabled = loadout.IsValid(session, loadoutProto, collection, out var reason); var loadoutContainer = new LoadoutContainer(loadoutProto, !enabled, reason); loadoutContainer.Select.Pressed = pressed; - loadoutContainer.Text = loadoutSystem.GetName(loadProto); + loadoutContainer.Text = string.IsNullOrEmpty(loadProto.Name) ? loadoutSystem.GetName(loadProto) : loadProto.Name; // Frontier: allow overriding loadout names loadoutContainer.Select.OnPressed += args => { diff --git a/Content.Server/Paper/PaperSystem.cs b/Content.Server/Paper/PaperSystem.cs index 531517d5df7..30a8883ebeb 100644 --- a/Content.Server/Paper/PaperSystem.cs +++ b/Content.Server/Paper/PaperSystem.cs @@ -12,6 +12,7 @@ using Robust.Shared.Utility; using Robust.Shared.Audio; using Content.Server.Access.Systems; +using Content.Server.Crayon; using Content.Shared.Hands; using Robust.Shared.Audio.Systems; using static Content.Shared.Paper.SharedPaperComponent; @@ -45,9 +46,8 @@ public override void Initialize() SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnHandPickUp); - - SubscribeLocalEvent>(OnVerb); + // FRONTIER - Sign verb hook + SubscribeLocalEvent>(AddSignVerb); } private void OnMapInit(EntityUid uid, PaperComponent paperComp, MapInitEvent args) @@ -71,7 +71,6 @@ private void OnInit(EntityUid uid, PaperComponent paperComp, ComponentInit args) if (paperComp.StampState != null) _appearance.SetData(uid, PaperVisuals.Stamp, paperComp.StampState, appearance); } - } private void BeforeUIOpen(EntityUid uid, PaperComponent paperComp, BeforeActivatableUIOpenEvent args) @@ -96,12 +95,37 @@ private void OnExamined(EntityUid uid, PaperComponent paperComp, ExaminedEvent a if (paperComp.StampedBy.Count > 0) { - var commaSeparated = - string.Join(", ", paperComp.StampedBy.Select(s => Loc.GetString(s.StampedName))); - args.PushMarkup( - Loc.GetString( - "paper-component-examine-detail-stamped-by", ("paper", uid), ("stamps", commaSeparated)) - ); + // BEGIN FRONTIER MODIFICATION - Make stamps and signatures render separately. + // Separate into stamps and signatures. + var stamps = paperComp.StampedBy.FindAll(s => s.Type == StampType.RubberStamp); + var signatures = paperComp.StampedBy.FindAll(s => s.Type == StampType.Signature); + + // If we have stamps, render them. + if (stamps.Count > 0) + { + var joined = string.Join(", ", stamps.Select(s => Loc.GetString(s.StampedName))); + args.PushMarkup( + Loc.GetString( + "paper-component-examine-detail-stamped-by", + ("paper", uid), + ("stamps", joined) + ) + ); + } + + // Ditto for signatures. + if (signatures.Count > 0) + { + var joined = string.Join(", ", signatures.Select(s => s.StampedName)); + args.PushMarkup( + Loc.GetString( + "paper-component-examine-detail-signed-by", + ("paper", uid), + ("stamps", joined) + ) + ); + } + // END FRONTIER MODIFICATION } } } @@ -112,35 +136,36 @@ private void OnInteractUsing(EntityUid uid, PaperComponent paperComp, InteractUs var editable = paperComp.StampedBy.Count == 0 || _tagSystem.HasTag(args.Used, "WriteIgnoreStamps"); if (_tagSystem.HasTag(args.Used, "Write") && editable) { - if (TryComp(args.Used, out var penComp) && penComp.Pen == PenMode.PenSign); - else // Frontier - Else the rest - { - var writeEvent = new PaperWriteEvent(uid, args.User); - RaiseLocalEvent(args.Used, ref writeEvent); - if (!TryComp(args.User, out var actor)) - return; - - paperComp.Mode = PaperAction.Write; - _uiSystem.OpenUi(uid, PaperUiKey.Key, args.User); - UpdateUserInterface(uid, paperComp); - args.Handled = true; + var writeEvent = new PaperWriteEvent(uid, args.User); + RaiseLocalEvent(args.Used, ref writeEvent); + + // Frontier - Restrict writing to entities with ActorComponent, players only + if (!TryComp(args.User, out var actor)) return; - } + + paperComp.Mode = PaperAction.Write; + _uiSystem.OpenUi(uid, PaperUiKey.Key, args.User); + UpdateUserInterface(uid, paperComp); + args.Handled = true; + return; } // If a stamp, attempt to stamp paper - if (TryComp(args.Used, out var stampComp) && TryStamp(uid, GetStampInfo(stampComp), stampComp.StampState, paperComp)) + if (TryComp(args.Used, out var stampComp) && + TryStamp(uid, GetStampInfo(stampComp), stampComp.StampState, paperComp)) { if (stampComp.StampedPersonal) // Frontier - stampComp.StampedName = Loc.GetString("stamp-component-signee-name", ("user", args.User)); // Frontier + stampComp.StampedName = + Loc.GetString("stamp-component-signee-name", ("user", args.User)); // Frontier // successfully stamped, play popup var stampPaperOtherMessage = Loc.GetString("paper-component-action-stamp-paper-other", - ("user", args.User), ("target", args.Target), ("stamp", args.Used)); + ("user", args.User), ("target", args.Target), ("stamp", args.Used)); - _popupSystem.PopupEntity(stampPaperOtherMessage, args.User, Filter.PvsExcept(args.User, entityManager: EntityManager), true); + _popupSystem.PopupEntity(stampPaperOtherMessage, args.User, + Filter.PvsExcept(args.User, entityManager: EntityManager), true); var stampPaperSelfMessage = Loc.GetString("paper-component-action-stamp-paper-self", - ("target", args.Target), ("stamp", args.Used)); + ("target", args.Target), ("stamp", args.Used)); _popupSystem.PopupEntity(stampPaperSelfMessage, args.User, args.User); _audio.PlayPvs(stampComp.Sound, uid); @@ -154,8 +179,7 @@ private static StampDisplayInfo GetStampInfo(StampComponent stamp) return new StampDisplayInfo { StampedName = stamp.StampedName, - StampedColor = stamp.StampedColor, - StampedBorderless = stamp.StampedBorderless + StampedColor = stamp.StampedColor }; } @@ -205,110 +229,118 @@ public bool TryStamp(EntityUid uid, StampDisplayInfo stampInfo, string spriteSta _appearance.SetData(uid, PaperVisuals.Stamp, paperComp.StampState, appearance); } } + return true; } - public void SetContent(EntityUid uid, string content, PaperComponent? paperComp = null) + // FRONTIER - Pen signing: Adds the sign verb for pen signing + private void AddSignVerb(EntityUid uid, PaperComponent component, GetVerbsEvent args) { - if (!Resolve(uid, ref paperComp)) + if (!args.CanAccess || !args.CanInteract) return; - paperComp.Content = content + '\n'; - UpdateUserInterface(uid, paperComp); - - if (!TryComp(uid, out var appearance)) + // Sanity check + if (uid != args.Target) return; - var status = string.IsNullOrWhiteSpace(content) - ? PaperStatus.Blank - : PaperStatus.Written; - - _appearance.SetData(uid, PaperVisuals.Status, status, appearance); - } - - public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null) - { - if (!Resolve(uid, ref paperComp)) + // Pens have a `Write` tag. + if (!args.Using.HasValue || !_tagSystem.HasTag(args.Using.Value, "Write")) return; - _uiSystem.SetUiState(uid, PaperUiKey.Key, new PaperBoundUserInterfaceState(paperComp.Content, paperComp.StampedBy, paperComp.Mode)); - } - - private void OnHandPickUp(EntityUid uid, StampComponent stampComp, GotEquippedHandEvent args) - { - if (stampComp.StampedPersonal) + AlternativeVerb verb = new() { - if (stampComp.StampedPersonal) // Frontier - stampComp.StampedName = Loc.GetString("stamp-component-signee-name", ("user", args.User)); // Frontier - } + Act = () => + { + TrySign(args.Target, args.User, args.Using.Value, component); + }, + Text = Loc.GetString("paper-component-verb-sign") + // Icon = Don't have an icon yet. Todo for later. + }; + args.Verbs.Add(verb); } - private void OnVerb(EntityUid uid, PenComponent component, GetVerbsEvent args) + // FRONTIER - TrySign method, attempts to place a signature + public bool TrySign(EntityUid paper, EntityUid signer, EntityUid pen, PaperComponent paperComp) { - // standard interaction checks - if (!args.CanAccess || !args.CanInteract || args.Hands == null) - return; - args.Verbs.UnionWith(new[] + // Generate display information. + StampDisplayInfo info = new StampDisplayInfo { - CreateVerb(uid, component, args.User, PenMode.PenWrite), - CreateVerb(uid, component, args.User, PenMode.PenSign) - }); - } + StampedName = Name(signer), + StampedColor = Color.FromHex("#333333"), + Type = StampType.Signature + }; - private Verb CreateVerb(EntityUid uid, PenComponent component, EntityUid userUid, PenMode mode) - { - return new Verb() + // Get Crayon component, and if present set custom color from crayon + if (TryComp(pen, out var crayon)) { - Text = GetModeName(mode), - Disabled = component.Pen == mode, - Priority = -(int) mode, // sort them in descending order - Category = VerbCategory.Pen, - Act = () => SetPen(uid, mode, userUid, component) - }; - } + info.StampedColor = crayon.Color; + crayon.Charges -= 1; + } - private string GetModeName(PenMode mode) - { - string name; - switch (mode) + // Try stamp with the info, return false if failed. + if (TryStamp(paper, info, "paper_stamp-generic", paperComp)) { - case PenMode.PenWrite: - name = "pen-mode-write"; - break; - case PenMode.PenSign: - name = "pen-mode-sign"; - break; - default: - return ""; + // Signing successful, popup time. + + _popupSystem.PopupEntity( + Loc.GetString( + "paper-component-action-signed-other", + ("user", signer), + ("target", paper) + ), + signer, + Filter.PvsExcept(signer, entityManager: EntityManager), + true + ); + + _popupSystem.PopupEntity( + Loc.GetString( + "paper-component-action-signed-self", + ("target", paper) + ), + signer, + signer + ); + + _audio.PlayPvs(paperComp.Sound, paper); + + _adminLogger.Add(LogType.Verb, LogImpact.Low, + $"{ToPrettyString(signer):player} has signed {ToPrettyString(paper):paper}."); + + UpdateUserInterface(paper, paperComp); + + return true; } - return Loc.GetString(name); + return false; } - public void SetPen(EntityUid uid, PenMode mode, EntityUid? userUid = null, - PenComponent? component = null) + public void SetContent(EntityUid uid, string content, PaperComponent? paperComp = null) { - if (!Resolve(uid, ref component)) + if (!Resolve(uid, ref paperComp)) return; - component.Pen = mode; + paperComp.Content = content + '\n'; + UpdateUserInterface(uid, paperComp); - if (userUid != null) - { - var msg = Loc.GetString("pen-mode-state", ("mode", GetModeName(mode))); - _popupSystem.PopupEntity(msg, uid, userUid.Value); - } + if (!TryComp(uid, out var appearance)) + return; + + var status = string.IsNullOrWhiteSpace(content) + ? PaperStatus.Blank + : PaperStatus.Written; + + _appearance.SetData(uid, PaperVisuals.Status, status, appearance); } - public PenStatus? GetPenState(EntityUid uid, PenComponent? pen = null, TransformComponent? transform = null) + public void UpdateUserInterface(EntityUid uid, PaperComponent? paperComp = null) { - if (!Resolve(uid, ref pen, ref transform)) - return null; + if (!Resolve(uid, ref paperComp)) + return; - // finally, form pen status - var status = new PenStatus(GetNetEntity(uid)); - return status; + _uiSystem.SetUiState(uid, PaperUiKey.Key, + new PaperBoundUserInterfaceState(paperComp.Content, paperComp.StampedBy, paperComp.Mode)); } } diff --git a/Content.Server/Paper/PenComponent.cs b/Content.Server/Paper/PenComponent.cs deleted file mode 100644 index d82ee0f6ed1..00000000000 --- a/Content.Server/Paper/PenComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.Paper; -using Robust.Shared.GameStates; - -namespace Content.Server.Paper -{ - [RegisterComponent] - [Access(typeof(PaperSystem))] - public sealed partial class PenComponent : Component - { - /// - /// Current pen mode. Can be switched by user verbs. - /// - [DataField("mode")] - public PenMode Pen = PenMode.PenWrite; - } -} diff --git a/Content.Shared/Paper/PenComponent.cs b/Content.Shared/Paper/PenComponent.cs deleted file mode 100644 index 84fc6863757..00000000000 --- a/Content.Shared/Paper/PenComponent.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared.Paper -{ - [Serializable, NetSerializable] - public sealed class PenStatus - { - public PenStatus(NetEntity penUid) - { - PenUid = penUid; - } - - public NetEntity PenUid; - } - - [Serializable, NetSerializable] - public enum PenMode : byte - { - /// - /// Frontier - The normal mode of a pen. - /// - PenWrite = 0, - - /// - /// Frontier - The sign mode of a pen. - /// - PenSign = 1, - } -} diff --git a/Content.Shared/Paper/StampComponent.cs b/Content.Shared/Paper/StampComponent.cs index cc788cca592..54315a9a39c 100644 --- a/Content.Shared/Paper/StampComponent.cs +++ b/Content.Shared/Paper/StampComponent.cs @@ -23,10 +23,17 @@ public partial struct StampDisplayInfo [DataField("stampedColor")] public Color StampedColor; - [DataField("stampedBorderless")] - public bool StampedBorderless; + [DataField("stampType")] + public StampType Type = StampType.RubberStamp; }; +// FRONTIER - Stamp types, put it into an enum for modularity purposes. +public enum StampType +{ + RubberStamp, + Signature +} + [RegisterComponent] public sealed partial class StampComponent : Component { diff --git a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs index c84a30d0e3f..1e44a4fa51d 100644 --- a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs +++ b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs @@ -1,6 +1,7 @@ using Content.Shared.Preferences.Loadouts.Effects; using Content.Shared.Roles; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Shared.Preferences.Loadouts; @@ -29,4 +30,25 @@ public sealed partial class LoadoutPrototype : IPrototype /// [DataField] public int Price = 0; + + /// + /// Frontier - optional name of the loadout as it appears in the menu + /// + [DataField] + public string Name = ""; + + /// + /// Frontier - optional description of the loadout as it appears in the menu + /// + [DataField] + public string Description = ""; + + /// + /// Frontier - optional entity to use for its sprite in the loadout as it appears in the menu + /// + /// + /// Currently, if not defaulted, this will be the fallback entity used to get the description if an override is not provided here. + /// + [DataField] + public EntProtoId? PreviewEntity = default!; } diff --git a/Content.Shared/_NF/Materials/Components/ConstructionMaterialsComponent.cs b/Content.Shared/_NF/Materials/Components/ConstructionMaterialsComponent.cs new file mode 100644 index 00000000000..ab16c35e8a2 --- /dev/null +++ b/Content.Shared/_NF/Materials/Components/ConstructionMaterialsComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.Materials.Components; + +[RegisterComponent] +public sealed partial class ConstructionMaterialsComponent : Component +{ + +} diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 419cfa46f99..706f0a2c02a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -4893,3 +4893,73 @@ Entries: message: Fix grimforged golems dropping too many fragments id: 5022 time: '2024-06-10T15:37:04.0000000+00:00' +- author: whatston3 + changes: + - type: Fix + message: Filled belts are now labelled as such in the Loadout window. + id: 5023 + time: '2024-06-11T18:11:38.0000000+00:00' +- author: ErhardSteinhauer + changes: + - type: Add + message: >- + Added construction bags: similar in function to ore bags, but for + construction materials. Available through loadouts, can be printed from + engineering techfab or protolathe after completing the T1 industrial + research. + id: 5024 + time: '2024-06-11T18:52:06.0000000+00:00' +- author: TsjipTsjip + changes: + - type: Tweak + message: >- + Pen signing is now a right click verb which can be quickly activated + with alt-click. + - type: Remove + message: >- + Pen write/sign mode, everything is bundled into primary verb and alt + verb now. + - type: Add + message: >- + Crayons can now be used to sign papers and pass their color to the + signature. Works with rainbow! + id: 5025 + time: '2024-06-11T19:17:44.0000000+00:00' +- author: dvir01 + changes: + - type: Add + message: Pet cats can now wear the carp suit. + id: 5026 + time: '2024-06-11T22:03:34.0000000+00:00' +- author: GentleButter + changes: + - type: Add + message: Added new lobby art, Handsome Killer. + id: 5027 + time: '2024-06-12T01:48:58.0000000+00:00' +- author: erhardsteinhauer + changes: + - type: Add + message: Added hostile mercenaries to expedition enemy faction pool. + - type: Add + message: Added hostile salvagers to expedition enemy faction pool. + - type: Add + message: Added hostile robots to expedition enemy faction pool. + - type: Add + message: >- + Added aberrant flesh to expedition enemy faction pool, new sprites by + wax391 (discord). + - type: Add + message: Added argocytes to expedition enemy faction pool. + - type: Add + message: >- + Added dinosaurs to expedition enemy faction pool. Original mobs by + Vonsant, sprites by belay5 (discord). + - type: Add + message: Wearable IFF strobe. Can be printed from salvage techfab. + - type: Add + message: Turbo laser. + - type: Fix + message: Fixed solution transfer from syndie darts. + id: 5028 + time: '2024-06-12T10:47:24.0000000+00:00' diff --git a/Resources/Locale/en-US/_NF/advertisements/mobchatter/mercenaryhumanoidmob.ftl b/Resources/Locale/en-US/_NF/advertisements/mobchatter/mercenaryhumanoidmob.ftl new file mode 100644 index 00000000000..e9bec8e5293 --- /dev/null +++ b/Resources/Locale/en-US/_NF/advertisements/mobchatter/mercenaryhumanoidmob.ftl @@ -0,0 +1,20 @@ +advertisement-mercenaryhumanoid-1 = Contact! +advertisement-mercenaryhumanoid-2 = In position! Over. +advertisement-mercenaryhumanoid-3 = Sights are cold! +advertisement-mercenaryhumanoid-4 = Radio check. Over. +advertisement-mercenaryhumanoid-5 = Check in. What's your status? Over. +advertisement-mercenaryhumanoid-6 = Spread out! +advertisement-mercenaryhumanoid-7 = Keep your eyes open! +advertisement-mercenaryhumanoid-8 = Lost contact with the lookout. Over. +advertisement-mercenaryhumanoid-9 = Finishing my patrol and heading back. Over. +advertisement-mercenaryhumanoid-10 = Command, what's the sitrep? Over. +advertisement-mercenaryhumanoid-11 = Target on the move! +advertisement-mercenaryhumanoid-12 = Command, we've lost contact with the search team! +advertisement-mercenaryhumanoid-13 = Fan out! +advertisement-mercenaryhumanoid-14 = Any word on those reinforcements? Over. +advertisement-mercenaryhumanoid-15 = I could use some reinforcements, command! +advertisement-mercenaryhumanoid-16 = Orders received and understood! Over. +advertisement-mercenaryhumanoid-17 = Watch your step. +advertisement-mercenaryhumanoid-18 = Confirmed. Over. +advertisement-mercenaryhumanoid-19 = In here. Over. +advertisement-mercenaryhumanoid-20 = Neutralize the target! diff --git a/Resources/Locale/en-US/_NF/paper/paper-component.ftl b/Resources/Locale/en-US/_NF/paper/paper-component.ftl new file mode 100644 index 00000000000..83c457595db --- /dev/null +++ b/Resources/Locale/en-US/_NF/paper/paper-component.ftl @@ -0,0 +1,6 @@ +paper-component-verb-sign = Sign + +paper-component-action-signed-self = You sign {THE($target)}. +paper-component-action-signed-other = {CAPITALIZE(THE($user))} signs {THE($target)}. + +paper-component-examine-detail-signed-by = {CAPITALIZE(THE($paper))} {CONJUGATE-HAVE($paper)} been signed by: {$stamps}. diff --git a/Resources/Locale/en-US/_NF/research/technologies.ftl b/Resources/Locale/en-US/_NF/research/technologies.ftl index 450e9a9d736..d7d99f28597 100644 --- a/Resources/Locale/en-US/_NF/research/technologies.ftl +++ b/Resources/Locale/en-US/_NF/research/technologies.ftl @@ -6,4 +6,5 @@ research-technology-hardsuits-advanced = Advanced Hardsuits research-technology-hardsuits-experimental-industrial = Experimental Salvager Hardsuit research-technology-hardsuits-armored = Armored Hardsuits research-technology-hardsuits-armored-advanced = Advanced Armored Hardsuits -research-technology-hardsuits-experimental-rd = Experimental Research Hardsuit \ No newline at end of file +research-technology-hardsuits-experimental-rd = Experimental Research Hardsuit +research-technology-construction-bags = Construction Bags \ No newline at end of file diff --git a/Resources/Maps/_NF/Outpost/frontier.yml b/Resources/Maps/_NF/Outpost/frontier.yml index 4cbef46386f..dc20f0d9254 100644 --- a/Resources/Maps/_NF/Outpost/frontier.yml +++ b/Resources/Maps/_NF/Outpost/frontier.yml @@ -31729,8 +31729,7 @@ entities: - type: Paper stampState: paper_stamp-centcom stampedBy: - - stampedBorderless: False - stampedColor: '#004200FF' + - stampedColor: '#004200FF' stampedName: Sergeant Stamps-the-Papers content: >2 @@ -31811,8 +31810,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#CC6600FF' + - stampedColor: '#CC6600FF' stampedName: NanoTrasen Engineering content: > [color=#cc6600]◥[bold]N[/bold]◣ [bold]Nanotrasen Engineering[/bold][/color] diff --git a/Resources/Maps/_NF/POI/nfsd.yml b/Resources/Maps/_NF/POI/nfsd.yml index d49502085b8..3974f8072b0 100644 --- a/Resources/Maps/_NF/POI/nfsd.yml +++ b/Resources/Maps/_NF/POI/nfsd.yml @@ -13544,8 +13544,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#CC6600FF' + - stampedColor: '#CC6600FF' stampedName: NanoTrasen Engineering content: > [color=#cc6600]◥[bold]N[/bold]◣ [bold]Nanotrasen Engineering[/bold][/color] diff --git a/Resources/Maps/_NF/Shuttles/Nfsd/opportunity.yml b/Resources/Maps/_NF/Shuttles/Nfsd/opportunity.yml index b45266c6310..e2af7659325 100644 --- a/Resources/Maps/_NF/Shuttles/Nfsd/opportunity.yml +++ b/Resources/Maps/_NF/Shuttles/Nfsd/opportunity.yml @@ -4782,8 +4782,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#C69B17FF' + - stampedColor: '#C69B17FF' stampedName: stamp-component-stamped-name-ce content: >- [color=#1a6295]█▄ █ ▀█▀ [head=3]Galaxywise Shipyards[/head] diff --git a/Resources/Maps/_NF/Shuttles/bookworm.yml b/Resources/Maps/_NF/Shuttles/bookworm.yml index 05f72958206..db648c8a319 100644 --- a/Resources/Maps/_NF/Shuttles/bookworm.yml +++ b/Resources/Maps/_NF/Shuttles/bookworm.yml @@ -2631,8 +2631,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#C69B17FF' + - stampedColor: '#C69B17FF' stampedName: stamp-component-stamped-name-ce content: >2 @@ -2662,7 +2661,7 @@ entities: 5. Check distro mixer and pump settings, then turn on. - 6. Check gyro is turned on. + 6. Check gyro is turned on. 7. Check all APCs are functioning and charged. - uid: 387 @@ -2675,8 +2674,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#C69B17FF' + - stampedColor: '#C69B17FF' stampedName: stamp-component-stamped-name-ce content: >2 @@ -2706,7 +2704,7 @@ entities: 5. Check distro mixer and pump settings, then turn on. - 6. Check gyro is turned on. + 6. Check gyro is turned on. 7. Check all APCs are functioning and charged. - proto: PaperBin20 diff --git a/Resources/Maps/_NF/Shuttles/bulker.yml b/Resources/Maps/_NF/Shuttles/bulker.yml index 821adbec4a1..6aeedb8a024 100644 --- a/Resources/Maps/_NF/Shuttles/bulker.yml +++ b/Resources/Maps/_NF/Shuttles/bulker.yml @@ -2871,19 +2871,18 @@ entities: type: Transform - stampState: paper_stamp-qm stampedBy: - - stampedBorderless: False - stampedColor: '#A23E3EFF' + - stampedColor: '#A23E3EFF' stampedName: stamp-component-stamped-name-qm content: >- - [color=#B50F1D]██░░██░░█░██░░░░░██[/color] + [color=#B50F1D]██░░██░░█░██░░░░░██[/color] - [color=#B50F1D]█░░░██░█░░██░░░░░░█[/color] + [color=#B50F1D]█░░░██░█░░██░░░░░░█[/color] - [color=#B50F1D]█░░░███░░░██░░░░░░█[/color] [head=3]Kosmologistika[/head] + [color=#B50F1D]█░░░███░░░██░░░░░░█[/color] [head=3]Kosmologistika[/head] - [color=#B50F1D]█░░░███░░░██░░░░░░█[/color] [head=3]Corporation[/head] + [color=#B50F1D]█░░░███░░░██░░░░░░█[/color] [head=3]Corporation[/head] - [color=#B50F1D]█░░░██░█░░██░░░░░░█[/color] + [color=#B50F1D]█░░░██░█░░██░░░░░░█[/color] [color=#B50F1D]██░░██░░█░█████░░██[/color] diff --git a/Resources/Maps/_NF/Shuttles/hauler.yml b/Resources/Maps/_NF/Shuttles/hauler.yml index b46e5417fc2..97c1ceef3fd 100644 --- a/Resources/Maps/_NF/Shuttles/hauler.yml +++ b/Resources/Maps/_NF/Shuttles/hauler.yml @@ -4330,11 +4330,9 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#C69B17FF' + - stampedColor: '#C69B17FF' stampedName: stamp-component-stamped-name-ce - - stampedBorderless: False - stampedColor: '#00BE00FF' + - stampedColor: '#00BE00FF' stampedName: stamp-component-stamped-name-approved content: >- [head=1] =======================[/head] diff --git a/Resources/Maps/_NF/Shuttles/lyrae.yml b/Resources/Maps/_NF/Shuttles/lyrae.yml index 14f4f3faaed..11badd333ed 100644 --- a/Resources/Maps/_NF/Shuttles/lyrae.yml +++ b/Resources/Maps/_NF/Shuttles/lyrae.yml @@ -3669,8 +3669,7 @@ entities: - type: Paper stampState: paper_stamp-ce stampedBy: - - stampedBorderless: False - stampedColor: '#C69B17FF' + - stampedColor: '#C69B17FF' stampedName: stamp-component-stamped-name-ce content: >2- @@ -3700,7 +3699,7 @@ entities: 5. Check distro mixer and pump settings, then turn on. - 6. Check gyro is turned on. + 6. Check gyro is turned on. 7. Check all APCs are functioning and charged.[/bold] - proto: PaperBin5 diff --git a/Resources/Maps/_NF/Shuttles/vagabond.yml b/Resources/Maps/_NF/Shuttles/vagabond.yml index 09f6320064d..724cb6142b2 100644 --- a/Resources/Maps/_NF/Shuttles/vagabond.yml +++ b/Resources/Maps/_NF/Shuttles/vagabond.yml @@ -4257,8 +4257,7 @@ entities: - type: Paper stampState: paper_stamp-ok stampedBy: - - stampedBorderless: False - stampedColor: '#00BE00FF' + - stampedColor: '#00BE00FF' stampedName: stamp-component-stamped-name-approved content: >- [color=#cb0000]  ▐║   ║ diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index cc6f0131adf..406f18bf908 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -242,3 +242,6 @@ - type: ContainerContainer containers: toggleable-clothing: !type:ContainerSlot {} + - type: Tag + tags: + - CatWearable # Frontier diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index 0eaccf65410..ed1f7ba84f6 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -82,6 +82,7 @@ name: cloth suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Healing damageContainers: - Biological @@ -161,6 +162,7 @@ name: durathread suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Stack stackType: Durathread baseLayer: base @@ -219,6 +221,7 @@ name: wood suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Material - type: PhysicalComposition materialComposition: @@ -485,6 +488,7 @@ name: bananium suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Material - type: PhysicalComposition materialComposition: @@ -546,6 +550,7 @@ description: A webby material. suffix: Full components: + - type: ConstructionMaterials # Frontier - type: PhysicalComposition materialComposition: WebSilk: 100 @@ -602,6 +607,7 @@ name: bones suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Material # Frontier - type: PhysicalComposition # Frontier materialComposition: # Frontier diff --git a/Resources/Prototypes/Entities/Objects/Materials/parts.yml b/Resources/Prototypes/Entities/Objects/Materials/parts.yml index 71adedab0ed..f0874fc71c1 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/parts.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/parts.yml @@ -68,6 +68,7 @@ Quantity: 4.5 - ReagentId: Carbon Quantity: 0.5 + - type: ConstructionMaterials # Frontier - type: entity parent: PartRodMetal diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index cf45a48b857..18a73ff1d84 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -307,8 +307,6 @@ - type: PhysicalComposition materialComposition: Steel: 25 - - type: Pen # Frontier - mode: PenWrite # Frontier - type: Stamp stampedColor: "#000001" stampState: "paper_stamp-generic" diff --git a/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml b/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml index b0f69eb9543..84ec5aef004 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml @@ -5,6 +5,7 @@ description: A folded membrane which rapidly expands into a large cubical shape on activation. suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Stack stackType: InflatableWall count: 10 @@ -33,6 +34,7 @@ description: A folded membrane which rapidly expands into a large cubical shape on activation. suffix: Full components: + - type: ConstructionMaterials # Frontier - type: Stack stackType: InflatableDoor count: 4 diff --git a/Resources/Prototypes/Entities/Structures/Decoration/banners.yml b/Resources/Prototypes/Entities/Structures/Decoration/banners.yml index 1d8505533f2..01d7a0668a9 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/banners.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/banners.yml @@ -19,12 +19,12 @@ radius: 0.2 density: 190 mask: - - MachineMask - layer: - - Opaque - - MidImpassable - - HighImpassable - - BulletImpassable + - TableMask # Frontier - MachineMask