add exploding pen from goldeneye (#14421)
This commit is contained in:
@@ -15,7 +15,7 @@ namespace Content.Server.Explosion.Components
|
|||||||
public List<float>? DelayOptions = null;
|
public List<float>? DelayOptions = null;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If not null, this timer will periodically play this sound wile active.
|
/// If not null, this timer will periodically play this sound while active.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("beepSound")]
|
[DataField("beepSound")]
|
||||||
public SoundSpecifier? BeepSound;
|
public SoundSpecifier? BeepSound;
|
||||||
@@ -44,5 +44,11 @@ namespace Content.Server.Explosion.Components
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
[DataField("canToggleStartOnStick")]
|
[DataField("canToggleStartOnStick")]
|
||||||
public bool AllowToggleStartOnStick;
|
public bool AllowToggleStartOnStick;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether you can examine the item to see its timer or not.
|
||||||
|
/// </summary>
|
||||||
|
[DataField("examinable")]
|
||||||
|
public bool Examinable = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public sealed partial class TriggerSystem
|
|||||||
|
|
||||||
private void OnExamined(EntityUid uid, OnUseTimerTriggerComponent component, ExaminedEvent args)
|
private void OnExamined(EntityUid uid, OnUseTimerTriggerComponent component, ExaminedEvent args)
|
||||||
{
|
{
|
||||||
if (args.IsInDetailsRange)
|
if (args.IsInDetailsRange && component.Examinable)
|
||||||
args.PushText(Loc.GetString("examine-trigger-timer", ("time", component.Delay)));
|
args.PushText(Loc.GetString("examine-trigger-timer", ("time", component.Delay)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
Content.Server/Paper/ActivateOnPaperOpenedComponent.cs
Normal file
10
Content.Server/Paper/ActivateOnPaperOpenedComponent.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
namespace Content.Server.Paper;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Activates the item when used to write on paper, as if Z was pressed.
|
||||||
|
/// </summary>
|
||||||
|
[RegisterComponent]
|
||||||
|
[Access(typeof(PaperSystem))]
|
||||||
|
public sealed class ActivateOnPaperOpenedComponent : Component
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -16,11 +16,12 @@ namespace Content.Server.Paper
|
|||||||
{
|
{
|
||||||
public sealed class PaperSystem : EntitySystem
|
public sealed class PaperSystem : EntitySystem
|
||||||
{
|
{
|
||||||
[Dependency] private readonly TagSystem _tagSystem = default!;
|
|
||||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
|
||||||
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
|
|
||||||
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
[Dependency] private readonly IAdminLogManager _adminLogger = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
|
[Dependency] private readonly SharedInteractionSystem _interaction = default!;
|
||||||
|
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||||
|
[Dependency] private readonly TagSystem _tagSystem = default!;
|
||||||
|
[Dependency] private readonly UserInterfaceSystem _uiSystem = default!;
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
@@ -31,6 +32,8 @@ namespace Content.Server.Paper
|
|||||||
SubscribeLocalEvent<PaperComponent, ExaminedEvent>(OnExamined);
|
SubscribeLocalEvent<PaperComponent, ExaminedEvent>(OnExamined);
|
||||||
SubscribeLocalEvent<PaperComponent, InteractUsingEvent>(OnInteractUsing);
|
SubscribeLocalEvent<PaperComponent, InteractUsingEvent>(OnInteractUsing);
|
||||||
SubscribeLocalEvent<PaperComponent, PaperInputTextMessage>(OnInputTextMessage);
|
SubscribeLocalEvent<PaperComponent, PaperInputTextMessage>(OnInputTextMessage);
|
||||||
|
|
||||||
|
SubscribeLocalEvent<ActivateOnPaperOpenedComponent, PaperWriteEvent>(OnPaperWrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnInit(EntityUid uid, PaperComponent paperComp, ComponentInit args)
|
private void OnInit(EntityUid uid, PaperComponent paperComp, ComponentInit args)
|
||||||
@@ -81,6 +84,8 @@ namespace Content.Server.Paper
|
|||||||
{
|
{
|
||||||
if (_tagSystem.HasTag(args.Used, "Write"))
|
if (_tagSystem.HasTag(args.Used, "Write"))
|
||||||
{
|
{
|
||||||
|
var writeEvent = new PaperWriteEvent(uid, args.User);
|
||||||
|
RaiseLocalEvent(args.Used, ref writeEvent);
|
||||||
if (!TryComp<ActorComponent>(args.User, out var actor))
|
if (!TryComp<ActorComponent>(args.User, out var actor))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -124,6 +129,11 @@ namespace Content.Server.Paper
|
|||||||
UpdateUserInterface(uid, paperComp);
|
UpdateUserInterface(uid, paperComp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnPaperWrite(EntityUid uid, ActivateOnPaperOpenedComponent comp, ref PaperWriteEvent args)
|
||||||
|
{
|
||||||
|
_interaction.UseInHandInteraction(args.User, uid);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Accepts the name and state to be stamped onto the paper, returns true if successful.
|
/// Accepts the name and state to be stamped onto the paper, returns true if successful.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -170,4 +180,10 @@ namespace Content.Server.Paper
|
|||||||
_uiSystem.GetUiOrNull(uid, PaperUiKey.Key)?.SetState(new PaperBoundUserInterfaceState(paperComp.Content, paperComp.StampedBy, paperComp.Mode));
|
_uiSystem.GetUiOrNull(uid, PaperUiKey.Key)?.SetState(new PaperBoundUserInterfaceState(paperComp.Content, paperComp.StampedBy, paperComp.Mode));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event fired when using a pen on paper, opening the UI.
|
||||||
|
/// </summary>
|
||||||
|
[ByRefEvent]
|
||||||
|
public record struct PaperWriteEvent(EntityUid User, EntityUid Paper);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ uplink-c4-bundle-desc = Because sometimes quantity is quality. Contains 8 C-4 pl
|
|||||||
uplink-emp-grenade-name = Emp Grenade
|
uplink-emp-grenade-name = Emp Grenade
|
||||||
uplink-emp-grenade-desc = Releases electromagnetic pulses that disrupt or damage many electronic devices or drain power cells.
|
uplink-emp-grenade-desc = Releases electromagnetic pulses that disrupt or damage many electronic devices or drain power cells.
|
||||||
|
|
||||||
|
uplink-exploding-pen-name = Exploding pen
|
||||||
|
uplink-exploding-pen-desc = A class IV explosive device contained within a standard pen. Comes with a 4 second fuse.
|
||||||
|
|
||||||
# Ammo
|
# Ammo
|
||||||
uplink-pistol-magazine-name = Pistol Magazine (.35 auto)
|
uplink-pistol-magazine-name = Pistol Magazine (.35 auto)
|
||||||
uplink-pistol-magazine-desc = Pistol magazine with 10 catridges. Compatible with Viper.
|
uplink-pistol-magazine-desc = Pistol magazine with 10 catridges. Compatible with Viper.
|
||||||
|
|||||||
@@ -152,6 +152,16 @@
|
|||||||
categories:
|
categories:
|
||||||
- UplinkExplosives
|
- UplinkExplosives
|
||||||
|
|
||||||
|
- type: listing
|
||||||
|
id: UplinkExplodingPen
|
||||||
|
name: uplink-exploding-pen-name
|
||||||
|
description: uplink-exploding-pen-desc
|
||||||
|
productEntity: PenExploding
|
||||||
|
cost:
|
||||||
|
Telecrystal: 5
|
||||||
|
categories:
|
||||||
|
- UplinkExplosives
|
||||||
|
|
||||||
# Ammo
|
# Ammo
|
||||||
|
|
||||||
- type: listing
|
- type: listing
|
||||||
@@ -568,7 +578,7 @@
|
|||||||
blacklist:
|
blacklist:
|
||||||
components:
|
components:
|
||||||
- SurplusBundle
|
- SurplusBundle
|
||||||
|
|
||||||
- type: listing
|
- type: listing
|
||||||
id: uplinkRevolverCapGunFake
|
id: uplinkRevolverCapGunFake
|
||||||
name: uplink-revolver-cap-gun-fake-name
|
name: uplink-revolver-cap-gun-fake-name
|
||||||
@@ -750,7 +760,7 @@
|
|||||||
Telecrystal: 8
|
Telecrystal: 8
|
||||||
categories:
|
categories:
|
||||||
- UplinkMisc
|
- UplinkMisc
|
||||||
|
|
||||||
- type: listing
|
- type: listing
|
||||||
id: UplinkStimkit
|
id: UplinkStimkit
|
||||||
name: uplink-stimkit-name
|
name: uplink-stimkit-name
|
||||||
@@ -760,7 +770,7 @@
|
|||||||
Telecrystal: 12
|
Telecrystal: 12
|
||||||
categories:
|
categories:
|
||||||
- UplinkMisc
|
- UplinkMisc
|
||||||
|
|
||||||
- type: listing
|
- type: listing
|
||||||
id: UplinkStimpackExperimental
|
id: UplinkStimpackExperimental
|
||||||
name: uplink-experimental-stimpack-name
|
name: uplink-experimental-stimpack-name
|
||||||
|
|||||||
18
Resources/Prototypes/Entities/Objects/Weapons/Bombs/pen.yml
Normal file
18
Resources/Prototypes/Entities/Objects/Weapons/Bombs/pen.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
- type: entity
|
||||||
|
name: pen
|
||||||
|
suffix: Exploding
|
||||||
|
parent: Pen
|
||||||
|
description: A dark ink pen.
|
||||||
|
id: PenExploding
|
||||||
|
components:
|
||||||
|
- type: OnUseTimerTrigger
|
||||||
|
delay: 4
|
||||||
|
examinable: false
|
||||||
|
- type: Explosive
|
||||||
|
explosionType: Default
|
||||||
|
maxIntensity: 8
|
||||||
|
intensitySlope: 5
|
||||||
|
totalIntensity: 20
|
||||||
|
canCreateVacuum: false
|
||||||
|
- type: ActivateOnPaperOpened
|
||||||
|
- type: ExplodeOnTrigger
|
||||||
Reference in New Issue
Block a user