diff --git a/Content.Server/Objectives/Components/StealTargetComponent.cs b/Content.Server/Objectives/Components/StealTargetComponent.cs deleted file mode 100644 index 25fb9d3a70..0000000000 --- a/Content.Server/Objectives/Components/StealTargetComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Server.Objectives.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Objectives.Components.Targets; - -/// -/// Allows an object to become the target of a StealCollection objection -/// -[RegisterComponent] -public sealed partial class StealTargetComponent : Component -{ - /// - /// The theft group to which this item belongs. - /// - [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] - public string StealGroup; -} diff --git a/Content.Server/Objectives/Systems/StealConditionSystem.cs b/Content.Server/Objectives/Systems/StealConditionSystem.cs index d61b796e42..7dc628c46f 100644 --- a/Content.Server/Objectives/Systems/StealConditionSystem.cs +++ b/Content.Server/Objectives/Systems/StealConditionSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Objectives.Components; -using Content.Server.Objectives.Components.Targets; using Content.Shared.CartridgeLoader; using Content.Shared.Interaction; using Content.Shared.Mind; diff --git a/Content.Shared/Delivery/SharedDeliverySystem.cs b/Content.Shared/Delivery/SharedDeliverySystem.cs index 0f8ceb73fc..52c9db40a1 100644 --- a/Content.Shared/Delivery/SharedDeliverySystem.cs +++ b/Content.Shared/Delivery/SharedDeliverySystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Hands.EntitySystems; 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; @@ -130,6 +131,7 @@ public abstract class SharedDeliverySystem : EntitySystem _tag.AddTags(ent, "Trash", "Recyclable"); EnsureComp(ent); + RemComp(ent); // opened mail should not count for the objective DirtyField(ent.Owner, ent.Comp, nameof(DeliveryComponent.IsOpened)); diff --git a/Content.Shared/Objectives/Components/StealTargetComponent.cs b/Content.Shared/Objectives/Components/StealTargetComponent.cs new file mode 100644 index 0000000000..f286b0a32b --- /dev/null +++ b/Content.Shared/Objectives/Components/StealTargetComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Objectives.Components; + +/// +/// Allows an object to become the target of a steal objective +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class StealTargetComponent : Component +{ + /// + /// The theft group to which this item belongs. + /// + [DataField(required: true)] + public ProtoId StealGroup; +} diff --git a/Resources/Locale/en-US/objectives/conditions/steal-target-groups.ftl b/Resources/Locale/en-US/objectives/conditions/steal-target-groups.ftl index 689e2e7808..6fc6ad850a 100644 --- a/Resources/Locale/en-US/objectives/conditions/steal-target-groups.ftl +++ b/Resources/Locale/en-US/objectives/conditions/steal-target-groups.ftl @@ -20,6 +20,7 @@ steal-target-groups-stamps = stamp 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 diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml index ffa9a5791a..203d4f577e 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml @@ -39,6 +39,8 @@ - type: ContainerContainer containers: delivery: !type:Container + - type: StealTarget + stealGroup: Mail - type: entity parent: BaseDelivery diff --git a/Resources/Prototypes/Objectives/objectiveGroups.yml b/Resources/Prototypes/Objectives/objectiveGroups.yml index 3c59ab9a18..b75fcb72c2 100644 --- a/Resources/Prototypes/Objectives/objectiveGroups.yml +++ b/Resources/Prototypes/Objectives/objectiveGroups.yml @@ -58,13 +58,14 @@ - 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 diff --git a/Resources/Prototypes/Objectives/stealTargetGroups.yml b/Resources/Prototypes/Objectives/stealTargetGroups.yml index b21e0dc2de..43d8101b73 100644 --- a/Resources/Prototypes/Objectives/stealTargetGroups.yml +++ b/Resources/Prototypes/Objectives/stealTargetGroups.yml @@ -128,6 +128,13 @@ 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 diff --git a/Resources/Prototypes/Objectives/thief.yml b/Resources/Prototypes/Objectives/thief.yml index c36b5f3192..b5d0141cb7 100644 --- a/Resources/Prototypes/Objectives/thief.yml +++ b/Resources/Prototypes/Objectives/thief.yml @@ -111,6 +111,20 @@ - 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