Thieves can innately pickpocket - thieving gloves rework (#38123)
* Thieves can innately pickpocket (#107) Pickpocketing a skyrim guard's armor off (cherry picked from commit 21b9f1ddb251ea3c7c6803e78871abefcaecbfb4) * this isnt moff * Make predicted, cleanup * !skating-basketball * orks are NOT the best trollface * Implement much more sensible component replication prevention --------- Co-authored-by: DuckManZach <144298822+duckmanzach@users.noreply.github.com>
This commit is contained in:
@@ -1,22 +1,44 @@
|
||||
using Content.Shared.Alert;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Strip.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Give this to an entity when you want to decrease stripping times
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[AutoGenerateComponentState(fieldDeltas: true)]
|
||||
public sealed partial class ThievingComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// How much the strip time should be shortened by
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("stripTimeReduction")]
|
||||
[DataField, AutoNetworkedField]
|
||||
public TimeSpan StripTimeReduction = TimeSpan.FromSeconds(0.5f);
|
||||
|
||||
/// <summary>
|
||||
/// Should it notify the user if they're stripping a pocket?
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("stealthy")]
|
||||
[DataField, AutoNetworkedField]
|
||||
public bool Stealthy;
|
||||
|
||||
/// <summary>
|
||||
/// Variable pointing at the Alert modal
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public ProtoId<AlertPrototype> StealthyAlertProtoId = "Stealthy";
|
||||
|
||||
/// <summary>
|
||||
/// Prevent component replication to clients other than the owner,
|
||||
/// doesn't affect prediction.
|
||||
/// Get mogged.
|
||||
/// </summary>
|
||||
public override bool SendOnlyToOwner => true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised to toggle the thieving component.
|
||||
/// </summary>
|
||||
public sealed partial class ToggleThievingEvent : BaseAlertEvent;
|
||||
|
||||
|
||||
@@ -1,23 +1,54 @@
|
||||
using Content.Shared.Alert;
|
||||
using Content.Shared.Inventory;
|
||||
using Content.Shared.Strip;
|
||||
using Content.Shared.Strip.Components;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Strip;
|
||||
|
||||
public sealed class ThievingSystem : EntitySystem
|
||||
public sealed partial class ThievingSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly AlertsSystem _alertsSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<ThievingComponent, BeforeStripEvent>(OnBeforeStrip);
|
||||
SubscribeLocalEvent<ThievingComponent, InventoryRelayedEvent<BeforeStripEvent>>((e, c, ev) => OnBeforeStrip(e, c, ev.Args));
|
||||
SubscribeLocalEvent<ThievingComponent, InventoryRelayedEvent<BeforeStripEvent>>((e, c, ev) =>
|
||||
OnBeforeStrip(e, c, ev.Args));
|
||||
SubscribeLocalEvent<ThievingComponent, ToggleThievingEvent>(OnToggleStealthy);
|
||||
SubscribeLocalEvent<ThievingComponent, ComponentInit>(OnCompInit);
|
||||
SubscribeLocalEvent<ThievingComponent, ComponentRemove>(OnCompRemoved);
|
||||
}
|
||||
|
||||
private void OnBeforeStrip(EntityUid uid, ThievingComponent component, BeforeStripEvent args)
|
||||
{
|
||||
args.Stealth |= component.Stealthy;
|
||||
if (args.Stealth)
|
||||
{
|
||||
args.Additive -= component.StripTimeReduction;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCompInit(Entity<ThievingComponent> entity, ref ComponentInit args)
|
||||
{
|
||||
_alertsSystem.ShowAlert(entity, entity.Comp.StealthyAlertProtoId, 1);
|
||||
}
|
||||
|
||||
private void OnCompRemoved(Entity<ThievingComponent> entity, ref ComponentRemove args)
|
||||
{
|
||||
_alertsSystem.ClearAlert(entity, entity.Comp.StealthyAlertProtoId);
|
||||
}
|
||||
|
||||
private void OnToggleStealthy(Entity<ThievingComponent> ent, ref ToggleThievingEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
ent.Comp.Stealthy = !ent.Comp.Stealthy;
|
||||
_alertsSystem.ShowAlert(ent.Owner, ent.Comp.StealthyAlertProtoId, (short)(ent.Comp.Stealthy ? 1 : 0));
|
||||
DirtyField(ent.AsNullable(), nameof(ent.Comp.Stealthy), null);
|
||||
|
||||
args.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,3 +116,6 @@ alerts-revenant-corporeal-desc = You have manifested physically. People around y
|
||||
|
||||
alerts-rooted-name = Rooted
|
||||
alerts-rooted-desc = You are attached to the ground. You can't slip, but you absorb fluids under you.
|
||||
|
||||
alerts-stealthy-name = Pickpocketing
|
||||
alerts-stealthy-desc = Whether you are currently pickpocketing. Click to toggle.
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
- alertType: Magboots
|
||||
- alertType: Rooted
|
||||
- alertType: Pacified
|
||||
- alertType: Stealthy
|
||||
|
||||
- type: entity
|
||||
id: AlertSpriteView
|
||||
@@ -438,6 +439,19 @@
|
||||
name: alerts-pacified-name
|
||||
description: alerts-pacified-desc
|
||||
|
||||
- type: alert
|
||||
id: Stealthy
|
||||
clickEvent: !type:ToggleThievingEvent
|
||||
icons:
|
||||
- sprite: /Textures/Interface/Alerts/stealthy.rsi
|
||||
state: stealthy-off
|
||||
- sprite: /Textures/Interface/Alerts/stealthy.rsi
|
||||
state: stealthy-on
|
||||
name: alerts-stealthy-name
|
||||
description: alerts-stealthy-desc
|
||||
minSeverity: 0
|
||||
maxSeverity: 1
|
||||
|
||||
- type: alert
|
||||
id: Adrenaline
|
||||
icons:
|
||||
|
||||
@@ -1593,20 +1593,6 @@
|
||||
categories:
|
||||
- UplinkWearables
|
||||
|
||||
# TODO: Revert back to normal thieving gloves when clothes dyeing is added
|
||||
- type: listing
|
||||
id: UplinkgClothingThievingGloves
|
||||
name: uplink-clothing-chameleon-thieving-gloves-name
|
||||
description: uplink-clothing-chameleon-thieving-gloves-desc
|
||||
productEntity: ClothingHandsChameleonThief
|
||||
discountCategory: veryRareDiscounts
|
||||
discountDownTo:
|
||||
Telecrystal: 3
|
||||
cost:
|
||||
Telecrystal: 5
|
||||
categories:
|
||||
- UplinkWearables
|
||||
|
||||
- type: listing
|
||||
id: UplinkClothingOuterVestWeb
|
||||
name: uplink-clothing-outer-vest-web-name
|
||||
|
||||
@@ -27,6 +27,9 @@
|
||||
startingGear: ThiefGear
|
||||
components:
|
||||
- type: Pacified
|
||||
- type: Thieving
|
||||
stripTimeReduction: 2
|
||||
stealthy: true
|
||||
mindRoles:
|
||||
- MindRoleThief
|
||||
briefing:
|
||||
|
||||
@@ -15,4 +15,3 @@
|
||||
back:
|
||||
- ThiefBeacon
|
||||
- SatchelThief
|
||||
- ClothingHandsChameleonThief
|
||||
|
||||
17
Resources/Textures/Interface/Alerts/stealthy.rsi/meta.json
Normal file
17
Resources/Textures/Interface/Alerts/stealthy.rsi/meta.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"version": 1,
|
||||
"license": "CC-BY-SA-3.0",
|
||||
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Edited by DuckManZach (github)",
|
||||
"size": {
|
||||
"x": 32,
|
||||
"y": 32
|
||||
},
|
||||
"states": [
|
||||
{
|
||||
"name": "stealthy-off"
|
||||
},
|
||||
{
|
||||
"name": "stealthy-on"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 636 B |
BIN
Resources/Textures/Interface/Alerts/stealthy.rsi/stealthy-on.png
Normal file
BIN
Resources/Textures/Interface/Alerts/stealthy.rsi/stealthy-on.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 685 B |
Reference in New Issue
Block a user