+++ /dev/null
-using Content.Server.Objectives.Systems;
-using Robust.Shared.Prototypes;
-using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
-
-namespace Content.Server.Objectives.Components.Targets;
-
-/// <summary>
-/// Allows an object to become the target of a StealCollection objection
-/// </summary>
-[RegisterComponent]
-public sealed partial class StealTargetComponent : Component
-{
- /// <summary>
- /// The theft group to which this item belongs.
- /// </summary>
- [DataField(required: true), ViewVariables(VVAccess.ReadWrite)]
- public string StealGroup;
-}
using Content.Server.Objectives.Components;
-using Content.Server.Objectives.Components.Targets;
using Content.Shared.CartridgeLoader;
using Content.Shared.Interaction;
using Content.Shared.Mind;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction.Events;
using Content.Shared.NameModifier.EntitySystems;
+using Content.Shared.Objectives.Components;
using Content.Shared.Popups;
using Content.Shared.Tag;
using Content.Shared.Verbs;
_tag.AddTags(ent, "Trash", "Recyclable");
EnsureComp<SpaceGarbageComponent>(ent);
+ RemComp<StealTargetComponent>(ent); // opened mail should not count for the objective
DirtyField(ent.Owner, ent.Comp, nameof(DeliveryComponent.IsOpened));
--- /dev/null
+using Robust.Shared.GameStates;
+using Robust.Shared.Prototypes;
+
+namespace Content.Shared.Objectives.Components;
+
+/// <summary>
+/// Allows an object to become the target of a steal objective
+/// </summary>
+[RegisterComponent, NetworkedComponent]
+public sealed partial class StealTargetComponent : Component
+{
+ /// <summary>
+ /// The theft group to which this item belongs.
+ /// </summary>
+ [DataField(required: true)]
+ public ProtoId<StealTargetGroupPrototype> StealGroup;
+}
steal-target-groups-door-remotes = door remote
steal-target-groups-encryption-keys = encryption key
steal-target-groups-technology-disks = technology disk
+steal-target-groups-mail = mail
steal-target-groups-id-cards = ID Card
steal-target-groups-lamps = LAMP
- type: ContainerContainer
containers:
delivery: !type:Container
+ - type: StealTarget
+ stealGroup: Mail
- type: entity
parent: BaseDelivery
- type: weightedRandom
id: ThiefObjectiveGroupCollection
weights:
- HeadCloakStealCollectionObjective: 1 #command
+ HeadCloakStealCollectionObjective: 1 #command
HeadBedsheetStealCollectionObjective: 1
StampStealCollectionObjective: 1
DoorRemoteStealCollectionObjective: 1
- TechnologyDiskStealCollectionObjective: 1 #rnd
+ TechnologyDiskStealCollectionObjective: 1 #sci
+ MailStealCollectionObjective: 1 #cargo
IDCardsStealCollectionObjective: 1
- LAMPStealCollectionObjective: 2 #only for moth
+ LAMPStealCollectionObjective: 2 #only for moth
- type: weightedRandom
id: ThiefObjectiveGroupItem
sprite: Objects/Misc/module.rsi
state: datadisk_base
+- type: stealTargetGroup
+ id: Mail
+ name: steal-target-groups-mail
+ sprite:
+ sprite: Objects/Specific/Cargo/mail.rsi
+ state: icon
+
- type: stealTargetGroup
id: IDCard
name: steal-target-groups-id-cards
- type: Objective
difficulty: 0.8
+- type: entity
+ parent: BaseThiefStealCollectionObjective
+ id: MailStealCollectionObjective
+ components:
+ - type: NotJobRequirement
+ job: CargoTechnician
+ - type: StealCondition
+ stealGroup: Mail
+ minCollectionSize: 4
+ maxCollectionSize: 8
+ verifyMapExistence: false
+ - type: Objective
+ difficulty: 0.8
+
- type: entity
parent: BaseThiefStealCollectionObjective
id: IDCardsStealCollectionObjective