Skip to content

Commit

Permalink
Merge branch 'master' into SusVend-Restock
Browse files Browse the repository at this point in the history
  • Loading branch information
MilonPL authored Nov 28, 2024
2 parents 04026f5 + bf7a8d9 commit 763f9f8
Show file tree
Hide file tree
Showing 13 changed files with 177 additions and 14 deletions.
32 changes: 32 additions & 0 deletions Content.Server/_CD/Engraving/EngraveableComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
namespace Content.Server._CD.Engraving;

/// <summary>
/// Allows an items' description to be modified with an engraving
/// </summary>
[RegisterComponent, Access(typeof(EngraveableSystem))]
public sealed partial class EngraveableComponent : Component
{
/// <summary>
/// Message given to user to notify them a message was sent
/// </summary>
[DataField]
public string EngravedMessage = string.Empty;

/// <summary>
/// The inspect text to use when there is no engraving
/// </summary>
[DataField]
public LocId NoEngravingText = "engraving-dogtags-no-message";

/// <summary>
/// The message to use when successfully engraving the item
/// </summary>
[DataField]
public LocId EngraveSuccessMessage = "engraving-dogtags-succeed";

/// <summary>
/// The inspect text to use when there is an engraving. The message will be shown seperately afterwards.
/// </summary>
[DataField]
public LocId HasEngravingText = "engraving-dogtags-has-message";
}
83 changes: 83 additions & 0 deletions Content.Server/_CD/Engraving/EngraveableSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
using Content.Server.Administration;
using Content.Server.Administration.Logs;
using Content.Server.Popups;
using Content.Shared.Database;
using Content.Shared.Popups;
using Content.Shared.Examine;
using Content.Shared.Verbs;
using Robust.Shared.Player;
using Robust.Shared.Utility;

namespace Content.Server._CD.Engraving;

public sealed class EngraveableSystem : EntitySystem
{
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly QuickDialogSystem _dialog = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<EngraveableComponent, ExaminedEvent>(OnExamined);
SubscribeLocalEvent<EngraveableComponent, GetVerbsEvent<ActivationVerb>>(AddEngraveVerb);
}

private void OnExamined(Entity<EngraveableComponent> ent, ref ExaminedEvent args)
{
var msg = new FormattedMessage();
msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.EngravedMessage == string.Empty
? ent.Comp.NoEngravingText
: ent.Comp.HasEngravingText));

if (ent.Comp.EngravedMessage != string.Empty)
msg.AddMarkupPermissive(Loc.GetString(ent.Comp.EngravedMessage));

args.PushMessage(msg, 1);
}

private void AddEngraveVerb(Entity<EngraveableComponent> ent, ref GetVerbsEvent<ActivationVerb> args)
{
// First check if it's already been engraved. If it has, don't let them do it again.
if (ent.Comp.EngravedMessage != string.Empty)
return;

// We need an actor to give the verb.
if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor))
return;

// Make sure ghosts can't engrave stuff.
if (!args.CanInteract)
return;

var engraveVerb = new ActivationVerb
{
Text = Loc.GetString("engraving-verb-engrave"),
Act = () =>
{
_dialog.OpenDialog(actor.PlayerSession,
Loc.GetString("engraving-verb-engrave"),
Loc.GetString("engraving-popup-ui-message"),
(string message) =>
{
// If either the actor or comp have magically vanished
if (actor.PlayerSession.AttachedEntity == null || !HasComp<EngraveableComponent>(ent))
return;

ent.Comp.EngravedMessage = message;
_popup.PopupEntity(Loc.GetString(ent.Comp.EngraveSuccessMessage),
actor.PlayerSession.AttachedEntity.Value,
actor.PlayerSession,
PopupType.Medium);
_adminLogger.Add(LogType.Action,
LogImpact.Low,
$"{ToPrettyString(actor.PlayerSession.AttachedEntity):player} engraved an item with message: {message}");
});
},
Impact = LogImpact.Low,
};
engraveVerb.Impact = LogImpact.Low;
args.Verbs.Add(engraveVerb);
}
}
2 changes: 1 addition & 1 deletion Content.Shared/Silicons/Borgs/BorgTypePrototype.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace Content.Shared.Silicons.Borgs;
/// Information for a borg type that can be selected by <see cref="BorgSwitchableTypeComponent"/>.
/// </summary>
/// <seealso cref="SharedBorgSwitchableTypeSystem"/>
[Prototype]
[Prototype(-5)] // DeltaV - force load after shaders
public sealed partial class BorgTypePrototype : IPrototype
{
[ValidatePrototypeId<SoundCollectionPrototype>]
Expand Down
28 changes: 15 additions & 13 deletions Resources/Changelog/DeltaVChangelog.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,4 @@
Entries:
- author: TadJohnson00
changes:
- message: Pride vend has received an adjusted inventory. Make sure to check out
the new cloaks available!
type: Tweak
id: 213
time: '2024-01-30T14:22:13.0000000+00:00'
- author: Colin-Tel
changes:
- message: Updated Asterisk Station.
type: Tweak
id: 214
time: '2024-01-30T21:09:41.0000000+00:00'
- author: DebugOk
changes:
- message: You should be able to exit cryo even after leaving now, meaning it just
Expand Down Expand Up @@ -3777,3 +3764,18 @@
id: 712
time: '2024-11-28T07:22:06.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/2299
- author: Kr8art
changes:
- message: Added customizable dogtags from Cosmatic Drift to the trinket loadout!
type: Add
id: 713
time: '2024-11-28T12:04:17.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/2301
- author: Kr8art
changes:
- message: The nuke core container now displays an appropriate message when hasty
syndicate agents try to insert the nuke core while it is still closed!
type: Fix
id: 714
time: '2024-11-28T19:36:26.0000000+00:00'
url: https://github.com/DeltaV-Station/Delta-v/pull/2309
6 changes: 6 additions & 0 deletions Resources/Locale/en-US/_CD/engraving/engraving.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
engraving-verb-engrave = Engrave
engraving-popup-ui-message = Description
engraving-dogtags-no-message = The dogtags don't seem to have any kind of engraving.
engraving-dogtags-has-message = The dogtags are engraved with a message that reads:{" "}
engraving-dogtags-succeed = You successfully engrave the dogtags with your message.
1 change: 1 addition & 0 deletions Resources/Locale/en-US/nuke/nuke-core-container.ftl
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
nuke-core-container-whitelist-fail-popup = That doesn't fit into the container.
nuke-core-container-sealed-popup = The {$container} is sealed shut!
nuke-core-container-closed-fail-popup = You need to open the container first!
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
whitelist:
tags:
- PlutoniumCore
lockedFailPopup: nuke-core-container-closed-fail-popup
whitelistFailPopup: nuke-core-container-whitelist-fail-popup
- type: GenericVisualizer
visuals:
Expand Down
1 change: 1 addition & 0 deletions Resources/Prototypes/Loadouts/loadout_groups.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
- SilverRing # DeltaV
- Cane # DeltaV
- WhiteCane #DeltaV
- CDDogtags # _CD

- type: loadoutGroup
id: Glasses
Expand Down
14 changes: 14 additions & 0 deletions Resources/Prototypes/_CD/Entities/Objects/Misc/dogtags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
- type: entity
id: CDDogtags
parent: ClothingNeckBase
name: dogtags
description: A set of dogtags, hanging from a small piece of cord for wearing and carrying.
components:
- type: Sprite
sprite: _CD/Objects/Misc/dogtags.rsi
layers:
- state: dogtag
- type: Clothing
sprite: _CD/Objects/Misc/dogtags.rsi
- type: Appearance
- type: Engraveable
5 changes: 5 additions & 0 deletions Resources/Prototypes/_CD/Loadouts/Miscellaneous/trinkets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- type: loadout
id: CDDogtags
storage:
back:
- CDDogtags
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions Resources/Textures/_CD/Objects/Misc/dogtags.rsi/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from cmss13 at https://github.com/cmss13-devs/cmss13/blob/a2d5ca6e69725341f0fa261a4a3f89c737e843b3/icons/obj/items/card.dmi",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "dogtag"
},
{
"name": "equipped-NECK",
"directions": 4
}
]
}

0 comments on commit 763f9f8

Please sign in to comment.