Tearable Deliveries V2 (#36815)

* Add new fields to DeliveryComponent for #36636

* Setting the baseSpesoPenalty for currently available deliveries

* Small fixes

* Basic delivery penalization

* Penalty and reward multiplier calculation in place

Also fixes an issue in SharedCargoSystem when opening a delivery in dev server due to trying to allocate cargo twice.

* Calling penalty no longer happens on opening

* Extract multiplier getting

* Removing unused include

* Changing method description. \n\n Not actually sure what I meant by the first one

* Localising default delivery messages

* Unused include removal

* init or smth

* minor tweaks

* I KEEP MERGE CONFLICTING MYSELF

* comments

* no icon

* slight increase

* slarti changes

* forgot

* stuffs

* yippee

* Locn't

* doc

* partial review

* message

* review

* pain

* stuff

---------

Co-authored-by: Lmorgan89 <billsmith116@gmail.com>
This commit is contained in:
ScarKy0
2025-04-24 21:47:46 +02:00
committed by GitHub
parent 6a567cbcb8
commit a16504fa42
7 changed files with 175 additions and 15 deletions

View File

@@ -0,0 +1,47 @@
using Content.Shared.DoAfter;
using Content.Shared.Tools.Systems;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Tools.Components;
/// <summary>
/// Component responsible for simple tool interactions.
/// Using a tool with the correct quality on an entity with this component will start a doAfter and raise events.
/// </summary>
[RegisterComponent, NetworkedComponent]
[Access(typeof(SimpleToolUsageSystem))]
public sealed partial class SimpleToolUsageComponent : Component
{
/// <summary>
/// Tool quality required to use a tool on this.
/// </summary>
[DataField]
public ProtoId<ToolQualityPrototype> Quality = "Slicing";
/// <summary>
/// The duration using a tool on this entity will take in seconds.
/// </summary>
[DataField]
public float DoAfter = 5;
/// <summary>
/// What verb should display to allow you to use a tool on this entity.
/// If null, no verb will be shown.
/// </summary>
[DataField]
public LocId? UsageVerb;
/// <summary>
/// The message to show when the verb is disabled.
/// </summary>
[DataField]
public LocId BlockedMessage = "simple-tool-usage-blocked-message";
}
[ByRefEvent]
public record struct AttemptSimpleToolUseEvent(EntityUid User, bool Cancelled = false);
[Serializable, NetSerializable]
public sealed partial class SimpleToolDoAfterEvent : SimpleDoAfterEvent;