SubscribeLocalEvent<DeliveryRandomMultiplierComponent, GetDeliveryMultiplierEvent>(OnGetRandomMultiplier);
SubscribeLocalEvent<DeliveryPriorityComponent, MapInitEvent>(OnPriorityMapInit);
+ SubscribeLocalEvent<DeliveryPriorityComponent, DeliveryUnlockedEvent>(OnPriorityDelivered);
SubscribeLocalEvent<DeliveryPriorityComponent, ExaminedEvent>(OnPriorityExamine);
SubscribeLocalEvent<DeliveryPriorityComponent, GetDeliveryMultiplierEvent>(OnGetPriorityMultiplier);
Dirty(ent);
}
+ private void OnPriorityDelivered(Entity<DeliveryPriorityComponent> ent, ref DeliveryUnlockedEvent args)
+ {
+ if (ent.Comp.Expired)
+ return;
+
+ ent.Comp.Delivered = true;
+ Dirty(ent);
+ }
+
private void OnPriorityExamine(Entity<DeliveryPriorityComponent> ent, ref ExaminedEvent args)
{
var trueName = _nameModifier.GetBaseName(ent.Owner);
var timeLeft = ent.Comp.DeliverUntilTime - _timing.CurTime;
- if (_timing.CurTime < ent.Comp.DeliverUntilTime)
+ if (ent.Comp.Delivered)
+ args.PushMarkup(Loc.GetString("delivery-priority-delivered-examine", ("type", trueName)));
+ else if (_timing.CurTime < ent.Comp.DeliverUntilTime)
args.PushMarkup(Loc.GetString("delivery-priority-examine", ("type", trueName), ("time", timeLeft.ToString("mm\\:ss"))));
else
args.PushMarkup(Loc.GetString("delivery-priority-expired-examine", ("type", trueName)));
while (priorityQuery.MoveNext(out var uid, out var priorityData))
{
- if (priorityData.Expired)
+ if (priorityData.Expired || priorityData.Delivered)
continue;
if (priorityData.DeliverUntilTime < curTime)
[DataField]
public float ExpiredMultiplierOffset = -0.1f;
+ /// <summary>
+ /// Whether this delivery was delivered on time.
+ /// </summary>
+ [DataField, AutoNetworkedField]
+ public bool Delivered;
+
/// <summary>
/// Whether this priority delivery has already ran out of time or not.
/// </summary>
{
_appearance.SetData(uid, DeliveryVisuals.IsLocked, isLocked);
- // If we're trying to unlock, always remove the priority tape
- if (!isLocked)
- _appearance.SetData(uid, DeliveryVisuals.PriorityState, DeliveryPriorityState.Off);
+ // If we're trying to unlock, mark priority as inactive
+ if (HasComp<DeliveryPriorityComponent>(uid))
+ _appearance.SetData(uid, DeliveryVisuals.PriorityState, DeliveryPriorityState.Inactive);
}
public void UpdatePriorityVisuals(Entity<DeliveryPriorityComponent> ent)
# modifiers
delivery-priority-examine = This is a [color=orange]priority {$type}[/color]. You have [color=orange]{$time}[/color] left to deliver it to get a bonus.
-delivery-priority-expired-examine = This is a [color=orange]priority {$type}[/color]. It seems you ran out of time.
+delivery-priority-delivered-examine = This is a [color=orange]priority {$type}[/color]. It got delivered on time.
+delivery-priority-expired-examine = This is a [color=orange]priority {$type}[/color]. It ran out of time.
delivery-fragile-examine = This is a [color=red]fragile {$type}[/color]. Deliver it intact for a bonus.
delivery-fragile-broken-examine = This is a [color=red]fragile {$type}[/color]. It looks badly damaged.
- state: trash
map: [ "enum.DeliveryVisualLayers.Trash" ]
visible: false
- - state: postmark
- - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
- offset: -0.21875, -0.25
+ - state: priority
+ map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
+ visible: false
+ shader: unshaded
- state: fragile
map: [ "enum.DeliveryVisualLayers.FragileStamp" ]
visible: false
+ - state: postmark
+ - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
+ offset: -0.21875, -0.25
- state: locked
map: [ "enum.DeliveryVisualLayers.Lock" ]
- - state: priority
- map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
- visible: false
- shader: unshaded
- state: broken
map: [ "enum.DeliveryVisualLayers.Breakage" ]
visible: false
- state: trash
map: [ "enum.DeliveryVisualLayers.Trash" ]
visible: false
- - state: postmark
- - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
- offset: -0.125, -0.0625
+ - state: priority
+ map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
+ visible: false
+ shader: unshaded
- state: fragile
map: [ "enum.DeliveryVisualLayers.FragileStamp" ]
visible: false
+ - state: postmark
+ - map: [ "enum.DeliveryVisualLayers.JobStamp" ]
+ offset: -0.125, -0.0625
- state: locked
map: [ "enum.DeliveryVisualLayers.Lock" ]
- - state: priority
- map: [ "enum.DeliveryVisualLayers.PriorityTape" ]
- visible: false
- shader: unshaded
- state: broken
map: [ "enum.DeliveryVisualLayers.Breakage" ]
visible: false