Item strip delay dependant on slot. (#8900)

This commit is contained in:
keronshb
2022-06-19 20:55:59 -04:00
committed by GitHub
parent 634dbd53af
commit 76963c6d5a
4 changed files with 40 additions and 7 deletions

View File

@@ -9,13 +9,21 @@ namespace Content.Server.Strip
[Access(typeof(StrippableSystem))] [Access(typeof(StrippableSystem))]
public sealed class StrippableComponent : SharedStrippableComponent public sealed class StrippableComponent : SharedStrippableComponent
{ {
/// <summary>
/// How long it takes to open the strip menu.
/// This should be relatively short so it's not a hassle
/// but so it also doesn't open immediately during melee combat
/// </summary>
[ViewVariables] [ViewVariables]
[DataField("openDelay")] [DataField("openDelay")]
public float OpenDelay = 4f; public float OpenDelay = 1f;
/// <summary>
/// The strip delay for hands.
/// </summary>
[ViewVariables] [ViewVariables]
[DataField("delay")] [DataField("handDelay")]
public float StripDelay = 2f; public float HandStripDelay = 3f;
public override bool Drop(DragDropEvent args) public override bool Drop(DragDropEvent args)
{ {

View File

@@ -274,7 +274,13 @@ namespace Content.Server.Strip
return true; return true;
} }
var doAfterArgs = new DoAfterEventArgs(user, component.StripDelay, CancellationToken.None, component.Owner) if (!_inventorySystem.TryGetSlot(component.Owner, slot, out var slotDef))
{
Logger.Error($"{ToPrettyString(user)} attempted to place an item in a non-existent inventory slot ({slot}) on {ToPrettyString(component.Owner)}");
return;
}
var doAfterArgs = new DoAfterEventArgs(user, slotDef.StripTime, CancellationToken.None, component.Owner)
{ {
ExtraCheck = Check, ExtraCheck = Check,
BreakOnStun = true, BreakOnStun = true,
@@ -328,7 +334,7 @@ namespace Content.Server.Strip
return true; return true;
} }
var doAfterArgs = new DoAfterEventArgs(user, component.StripDelay, CancellationToken.None, component.Owner) var doAfterArgs = new DoAfterEventArgs(user, component.HandStripDelay, CancellationToken.None, component.Owner)
{ {
ExtraCheck = Check, ExtraCheck = Check,
BreakOnStun = true, BreakOnStun = true,
@@ -374,7 +380,13 @@ namespace Content.Server.Strip
return true; return true;
} }
var doAfterArgs = new DoAfterEventArgs(user, component.StripDelay, CancellationToken.None, component.Owner) if (!_inventorySystem.TryGetSlot(component.Owner, slot, out var slotDef))
{
Logger.Error($"{ToPrettyString(user)} attempted to place an item in a non-existent inventory slot ({slot}) on {ToPrettyString(component.Owner)}");
return;
}
var doAfterArgs = new DoAfterEventArgs(user, slotDef.StripTime, CancellationToken.None, component.Owner)
{ {
ExtraCheck = Check, ExtraCheck = Check,
BreakOnStun = true, BreakOnStun = true,
@@ -425,7 +437,7 @@ namespace Content.Server.Strip
return true; return true;
} }
var doAfterArgs = new DoAfterEventArgs(user, component.StripDelay, CancellationToken.None, component.Owner) var doAfterArgs = new DoAfterEventArgs(user, component.HandStripDelay, CancellationToken.None, component.Owner)
{ {
ExtraCheck = Check, ExtraCheck = Check,
BreakOnStun = true, BreakOnStun = true,

View File

@@ -21,6 +21,8 @@ public sealed class SlotDefinition
[DataField("slotFlags")] public SlotFlags SlotFlags { get; } = SlotFlags.PREVENTEQUIP; [DataField("slotFlags")] public SlotFlags SlotFlags { get; } = SlotFlags.PREVENTEQUIP;
[DataField("stripTime")] public float StripTime { get; } = 3f;
[DataField("uiContainer")] public SlotUIContainer UIContainer { get; } = SlotUIContainer.None; [DataField("uiContainer")] public SlotUIContainer UIContainer { get; } = SlotUIContainer.None;
[DataField("uiWindowPos", required: true)] public Vector2i UIWindowPosition { get; } [DataField("uiWindowPos", required: true)] public Vector2i UIWindowPosition { get; }

View File

@@ -4,18 +4,21 @@
- name: shoes - name: shoes
slotTexture: shoes slotTexture: shoes
slotFlags: FEET slotFlags: FEET
stripTime: 2
uiContainer: Top uiContainer: Top
uiWindowPos: 1,3 uiWindowPos: 1,3
displayName: Shoes displayName: Shoes
- name: jumpsuit - name: jumpsuit
slotTexture: uniform slotTexture: uniform
slotFlags: INNERCLOTHING slotFlags: INNERCLOTHING
stripTime: 5
uiContainer: Top uiContainer: Top
uiWindowPos: 0,2 uiWindowPos: 0,2
displayName: Jumpsuit displayName: Jumpsuit
- name: outerClothing - name: outerClothing
slotTexture: suit slotTexture: suit
slotFlags: OUTERCLOTHING slotFlags: OUTERCLOTHING
stripTime: 5
uiContainer: Top uiContainer: Top
uiWindowPos: 1,2 uiWindowPos: 1,2
displayName: Suit displayName: Suit
@@ -40,12 +43,14 @@
- name: eyes - name: eyes
slotTexture: glasses slotTexture: glasses
slotFlags: EYES slotFlags: EYES
stripTime: 2
uiContainer: Top uiContainer: Top
uiWindowPos: 0,0 uiWindowPos: 0,0
displayName: Eyes displayName: Eyes
- name: ears - name: ears
slotTexture: ears slotTexture: ears
slotFlags: EARS slotFlags: EARS
stripTime: 2
uiContainer: Top uiContainer: Top
uiWindowPos: 2,0 uiWindowPos: 2,0
displayName: Ears displayName: Ears
@@ -58,6 +63,7 @@
- name: pocket1 - name: pocket1
slotTexture: pocket slotTexture: pocket
slotFlags: POCKET slotFlags: POCKET
stripTime: 2
uiContainer: BottomRight uiContainer: BottomRight
uiWindowPos: 0,3 uiWindowPos: 0,3
dependsOn: jumpsuit dependsOn: jumpsuit
@@ -65,6 +71,7 @@
- name: pocket2 - name: pocket2
slotTexture: pocket slotTexture: pocket
slotFlags: POCKET slotFlags: POCKET
stripTime: 2
uiContainer: BottomRight uiContainer: BottomRight
uiWindowPos: 2,3 uiWindowPos: 2,3
dependsOn: jumpsuit dependsOn: jumpsuit
@@ -72,6 +79,7 @@
- name: suitstorage - name: suitstorage
slotTexture: suit_storage slotTexture: suit_storage
slotFlags: SUITSTORAGE slotFlags: SUITSTORAGE
stripTime: 2
uiContainer: BottomLeft uiContainer: BottomLeft
uiWindowPos: 2,0 uiWindowPos: 2,0
dependsOn: outerClothing dependsOn: outerClothing
@@ -79,6 +87,7 @@
- name: id - name: id
slotTexture: id slotTexture: id
slotFlags: IDCARD slotFlags: IDCARD
stripTime: 5
uiContainer: BottomRight uiContainer: BottomRight
uiWindowPos: 2,1 uiWindowPos: 2,1
dependsOn: jumpsuit dependsOn: jumpsuit
@@ -86,12 +95,14 @@
- name: belt - name: belt
slotTexture: belt slotTexture: belt
slotFlags: BELT slotFlags: BELT
stripTime: 5
uiContainer: BottomLeft uiContainer: BottomLeft
uiWindowPos: 3,1 uiWindowPos: 3,1
displayName: Belt displayName: Belt
- name: back - name: back
slotTexture: back slotTexture: back
slotFlags: BACK slotFlags: BACK
stripTime: 5
uiContainer: BottomLeft uiContainer: BottomLeft
uiWindowPos: 3,0 uiWindowPos: 3,0
displayName: Back displayName: Back