diff --git a/Content.Server/_DV/Recruiter/RecruiterPenSystem.cs b/Content.Server/_DV/Recruiter/RecruiterPenSystem.cs index 5adc9c87fef..9833802b814 100644 --- a/Content.Server/_DV/Recruiter/RecruiterPenSystem.cs +++ b/Content.Server/_DV/Recruiter/RecruiterPenSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared._DV.Recruiter; using Content.Shared.Popups; +using Content.Shared.Hands.EntitySystems; namespace Content.Server._DV.Recruiter; @@ -15,11 +16,12 @@ public sealed class RecruiterPenSystem : SharedRecruiterPenSystem { [Dependency] private readonly ForensicsSystem _forensics = default!; [Dependency] private readonly SolutionTransferSystem _transfer = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; protected override void DrawBlood(EntityUid uid, Entity dest, EntityUid user) { // how did you even use this mr plushie... - if (CompOrNull(user)?.BloodSolution is not {} blood) + if (CompOrNull(user)?.BloodSolution is not { } blood) return; var desired = dest.Comp.Solution.AvailableVolume; @@ -45,10 +47,17 @@ public sealed class RecruiterPenSystem : SharedRecruiterPenSystem if (!ent.Comp.Recruited.Add(user)) return; - if (ent.Comp.RecruiterMind is {} mindId && + if (ent.Comp.RecruiterMind is { } mindId && Mind.TryGetObjectiveComp(mindId, out var obj, null)) { obj.Recruited++; + Reward(ent, user); } } + + public void Reward(Entity ent, EntityUid user) + { + var pay = Spawn(ent.Comp.Currency); + _hands.PickupOrDrop(user, pay); + } } diff --git a/Content.Shared/_DV/Recruiter/RecruiterPenComponent.cs b/Content.Shared/_DV/Recruiter/RecruiterPenComponent.cs index ac336ba03d4..db7c4d8d2aa 100644 --- a/Content.Shared/_DV/Recruiter/RecruiterPenComponent.cs +++ b/Content.Shared/_DV/Recruiter/RecruiterPenComponent.cs @@ -49,4 +49,10 @@ public sealed partial class RecruiterPenComponent : Component /// [DataField] public List> FactionBlacklist = new(); + + /// + /// Payout on successful sign. + /// + [DataField(required: true)] + public EntProtoId Currency; } diff --git a/Resources/Locale/en-US/_DV/stack/stacks.ftl b/Resources/Locale/en-US/_DV/stack/stacks.ftl index d15e79bd8b2..f236bacd0ee 100644 --- a/Resources/Locale/en-US/_DV/stack/stacks.ftl +++ b/Resources/Locale/en-US/_DV/stack/stacks.ftl @@ -4,3 +4,4 @@ stack-normality-crystal = normality crystal stack-entropy = mote of entropy stack-rough-bluespace = rough bluespace +stack-treatcoin = treatcoin diff --git a/Resources/Locale/en-US/_DV/store/categories.ftl b/Resources/Locale/en-US/_DV/store/categories.ftl index 0436767e2af..5666169e2a3 100644 --- a/Resources/Locale/en-US/_DV/store/categories.ftl +++ b/Resources/Locale/en-US/_DV/store/categories.ftl @@ -1 +1,4 @@ store-category-objectives = Objectives +store-category-recruiter-junk = Goodies +store-category-recruiter-treasure = Premium +store-category-recruiter-uniforms = Uniforms diff --git a/Resources/Locale/en-US/_DV/store/currency.ftl b/Resources/Locale/en-US/_DV/store/currency.ftl index 9300fcf6d99..27b18e5c1aa 100644 --- a/Resources/Locale/en-US/_DV/store/currency.ftl +++ b/Resources/Locale/en-US/_DV/store/currency.ftl @@ -1 +1,3 @@ store-currency-display-ai-memory = TB + +store-currency-display-treatcoin = TC diff --git a/Resources/Locale/en-US/_DV/store/recruiter/junk.ftl b/Resources/Locale/en-US/_DV/store/recruiter/junk.ftl new file mode 100644 index 00000000000..dd0811a21dc --- /dev/null +++ b/Resources/Locale/en-US/_DV/store/recruiter/junk.ftl @@ -0,0 +1,38 @@ +uplink-recruiter-soda-name = Blood-red Brew 6pack +uplink-recruiter-soda-desc = A 6pack of stimulating, mildly toxic Blood-red Brew. + +uplink-recruiter-toysword-name = Toy sword +uplink-recruiter-toysword-desc = New Sandy-Cat plastic sword! Comes with realistic sound and full color! Looks almost like the real thing! You'd know. + +uplink-recruiter-figurinebox-name = Syndicate figurine set +uplink-recruiter-figurinebox-desc = A box containing a full set of Syndicate figurines, depicting what a nuclear operative team might look like! + +uplink-recruiter-lunchbox-name = Syndicate lunchbox +uplink-recruiter-lunchbox-desc = A lunchbox for the discerning des(s)erter. Empty. + +uplink-recruiter-toolbox-name = Suspicious toolbox +uplink-recruiter-toolbox-desc = A black and red toolbox with extra space that packs quite a punch. Does NOT come pre-filled. + +uplink-recruiter-banner-name = Syndicate banner +uplink-recruiter-banner-desc = Black and red banner scientitifcally proven to cause hatred for NT. + +uplink-recruiter-utilitybelt-name = Syndicate utility belt +uplink-recruiter-utilitybelt-desc = A sleek black toolbelt designed to hold your tools while looking stylish. Comes Empty. + +uplink-recruiter-syndiehat-name = Syndicate hat +uplink-recruiter-syndiehat-desc = A sleek hat decorated with an S. For Sublety. + +uplink-recruiter-randomdonk-name = Donk pocket grab bag +uplink-recruiter-randomdonk-desc = We throw a random box of Donk pockets at you, could be limited edition, could be berry. + +uplink-recruiter-wintercoat-name = Syndicate's winter coat +uplink-recruiter-wintercoat-desc = An insulated winter coat. + +uplink-recruiter-winterboots-name = Syndicate's winter boots +uplink-recruiter-winterboots-desc = Durable, heavy boots. + +uplink-recruiter-lingsting-name = Changeling Sting soda +uplink-recruiter-lingsting-desc = A Stylish soda with an inconsistent appearance. + +uplink-recruiter-nukieplush-name = Nuclear Operative Plush +uplink-recruiter-nukieplush-desc = A Plushie depicting a 100% fictitious "nuclear operative" in their equally fictional blood-red hardsuit. diff --git a/Resources/Locale/en-US/_DV/store/recruiter/treasures.ftl b/Resources/Locale/en-US/_DV/store/recruiter/treasures.ftl new file mode 100644 index 00000000000..7d832cf660e --- /dev/null +++ b/Resources/Locale/en-US/_DV/store/recruiter/treasures.ftl @@ -0,0 +1,14 @@ +uplink-recruiter-realcapfruit-name = Capfruit seeds +uplink-recruiter-realcapfruit-desc = We're 99% sure these don't make guns, but you don't need to tell that to whoever you're giving these. + +uplink-recruiter-maid-name = Tactical Maid kit +uplink-recruiter-maid-desc = A full tactical maid uniform. The gloves are insulated! Comes in a snazzy lunchbox. + +uplink-recruiter-cyberpen-name = Cybersun pen +uplink-recruiter-cyberpen-desc = Cybersun's legal department pen with a hard-light tip. Can forge documents, act as a screwdriver or emergency weapon. Pricey. + +uplink-recruiter-microwave-name = Donk Co. microwave +uplink-recruiter-microwave-desc = An advanced microwave that cooks at double speed. If somebody knew how, they could also use it to make edible weapons, but how would they? + +uplink-recruiter-bribe5k-name = 5000 Spesos +uplink-recruiter-bribe5k-desc = A 5000 Speso dividend, for use in bribing security or as a tempting sign-on bonus. We are only giving you up to 5 of these. diff --git a/Resources/Locale/en-US/_DV/store/recruiter/uniforms.ftl b/Resources/Locale/en-US/_DV/store/recruiter/uniforms.ftl new file mode 100644 index 00000000000..404a6038646 --- /dev/null +++ b/Resources/Locale/en-US/_DV/store/recruiter/uniforms.ftl @@ -0,0 +1,17 @@ +uplink-recruiter-cybersunrnd-name = Cybersun RND turtleneck +uplink-recruiter-cybersunrnd-desc = A crisp new uniform for your freshly hired RND staff. + +uplink-recruiter-cybersuncasual-name = Cybersun casual jumpsuit +uplink-recruiter-cybersuncasual-desc = A crisp Cybersun uniform for general and service staff. + +uplink-recruiter-cybersunhazard-name = Cybersun hazard jumpsuit +uplink-recruiter-cybersunhazard-desc = A hi-viz Cybersun uniform for freshly hired engineers. + +uplink-recruiter-cybersunsurgeon-name = Cybersun Surgeon onboardking kit +uplink-recruiter-cybersunsurgeon-desc = Everything your new hire needs for their new job in the Cybersun bioscience division. Comes with ballistic armor! + +uplink-recruiter-cybersunlawyer-name = Cybersun lawyer onboarding kit +uplink-recruiter-cybersunlawyer-desc = Everything your new hire needs to do their job as a freshly hired Cybersun lawyer! Comes with a luxurious pen. + +uplink-recruiter-interdynechem-name = Interdyne chemist onboarding kit. +uplink-recruiter-interdynechem-desc = Everything a freshly hired Interdyne chemist needs, comes with combined chemgoggles and medhud! diff --git a/Resources/Locale/en-US/_DV/store/store.ftl b/Resources/Locale/en-US/_DV/store/store.ftl new file mode 100644 index 00000000000..7c743cebc38 --- /dev/null +++ b/Resources/Locale/en-US/_DV/store/store.ftl @@ -0,0 +1 @@ +store-recruiter-name-uplink = Recruiter merchandise diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml b/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml index 72990d25688..9ca056495fb 100644 --- a/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml +++ b/Resources/Prototypes/_DV/Catalog/Fills/Boxes/general.yml @@ -117,6 +117,68 @@ - id: Stunbaton - id: WeaponDisabler +- type: entity + parent: BoxCardboard + id: BoxSyndicateFigurines + name: syndicate figurines box + components: + - type: Sprite + layers: + - state: box_of_doom + - state: writing_of_doom + - type: Storage + maxItemSize: Normal + grid: + - 0,0,3,1 + - type: StorageFill + contents: + - id: ToyFigurineNukie + - id: ToyFigurineNukieElite + - id: ToyFigurineNukieCommander + - id: ToyFigurineFootsoldier + description: A box of a full set of syndicate figurines! + +- type: entity + parent: BoxCardboard + id: BoxRandomDonk + components: + - type: Sprite + layers: + - state: box + - state: writing_of_doom + - type: Storage + maxItemSize: Normal + - type: StorageFill + contents: + #Main + - id: FoodBoxDonkpocketHonk + orGroup: RandomDonk + prob: 0.15 + - id: FoodBoxDonkpocketBerry + orGroup: RandomDonk + prob: 0.1 + - id: FoodBoxDonkpocketCarp + orGroup: RandomDonk + prob: 0.05 + - id: FoodBoxDonkpocketDink + orGroup: RandomDonk + prob: 0.1 + - id: FoodBoxDonkpocket + orGroup: RandomDonk + prob: 0.2 + - id: FoodBoxDonkpocketStonk + orGroup: RandomDonk + prob: 0.05 + - id: FoodBoxDonkpocketPizza + orGroup: RandomDonk + prob: 0.15 + - id: FoodBoxDonkpocketSpicy + orGroup: RandomDonk + prob: 0.1 + - id: FoodBoxDonkpocketTeriyaki + orGroup: RandomDonk + prob: 0.1 + - type: entity parent: BoxCardboard id: BoxSyndicateFirebugsFestival diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Items/Backpacks/duffelbag.yml b/Resources/Prototypes/_DV/Catalog/Fills/Items/Backpacks/duffelbag.yml index 724d6549dd2..8a51b9f7567 100644 --- a/Resources/Prototypes/_DV/Catalog/Fills/Items/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/_DV/Catalog/Fills/Items/Backpacks/duffelbag.yml @@ -29,3 +29,15 @@ - id: Multitool - id: ChemistryBottleChloralHydrate # stronger than n2o as you can be awake during safe operation - id: Syringe + +- type: entity + parent: ClothingBackpackDuffelMedical + id: ClothingBackpackDuffelRecruiterInterdyne + suffix: Interdyne, Uniform + components: + - type: StorageFill + contents: + - id: ClothingMaskInterdyneChemistry + - id: ClothingEyesGlassesChemicalInterdyne + - id: ClothingOuterInterdyneChemistrySuit + - id: ClothingUniformInterdyneChemist diff --git a/Resources/Prototypes/_DV/Catalog/Fills/Items/briefcases.yml b/Resources/Prototypes/_DV/Catalog/Fills/Items/briefcases.yml new file mode 100644 index 00000000000..7a9ab906f63 --- /dev/null +++ b/Resources/Prototypes/_DV/Catalog/Fills/Items/briefcases.yml @@ -0,0 +1,25 @@ +- type: entity + parent: CybersunBriefcase + id: BriefcaseRecruiterLawyerkit + suffix: Cybersun, Lawyer + components: + - type: StorageFill + contents: + - id: ClothingEyesGlassesCheapSunglasses + - id: LuxuryPen + - id: ClothingOuterCybersunOvercoat + - id: ClothingUniformCybersunAttorney + - id: ClothingMaskNeckGaiter + - id: SyndieHandyFlag + +- type: entity + parent: CybersunBriefcase + id: BriefcaseRecruiterSurgeonKit + suffix: Cybersun, Surgeon + components: + - type: StorageFill + contents: + - id: ClothingHeadHatSurgcapCybersun + - id: UniformScrubsColorCybersun + - id: ClothingOuterCoatCybersunWindbreaker + - id: ClothingMaskNeckGaiter diff --git a/Resources/Prototypes/_DV/Catalog/Recruiter/junk.yml b/Resources/Prototypes/_DV/Catalog/Recruiter/junk.yml new file mode 100644 index 00000000000..96360e5feb3 --- /dev/null +++ b/Resources/Prototypes/_DV/Catalog/Recruiter/junk.yml @@ -0,0 +1,231 @@ +- type: listing + id: UplinkRecruiterSoda + name: uplink-recruiter-soda-name + description: uplink-recruiter-soda-desc + productEntity: DrinkCanPackBloodRed + cost: + TreatCoin: 5 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterSnackbox + name: uplink-snack-box-name + description: uplink-snack-box-desc + productEntity: HappyHonkNukieSnacks + cost: + TreatCoin: 5 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterRevolverCapGun + name: uplink-revolver-cap-gun-name + description: uplink-revolver-cap-gun-desc + productEntity: RevolverCapGun + cost: + TreatCoin: 4 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterSyndicateStamp + name: uplink-syndicate-stamp-name + description: uplink-syndicate-stamp-desc + productEntity: RubberStampSyndicate + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterostumePyjama + name: uplink-costume-pyjama-name + description: uplink-costume-pyjama-desc + productEntity: ClothingBackpackDuffelSyndicatePyjamaBundle + cost: + TreatCoin: 6 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterBalloon + name: uplink-balloon-name + description: uplink-balloon-desc + productEntity: BalloonSyn + cost: + TreatCoin: 10 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterScarfSyndieGreen + name: uplink-scarf-syndie-green-name + description: uplink-scarf-syndie-green-desc + productEntity: ClothingNeckScarfStripedSyndieGreen + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterScarfSyndieRed + name: uplink-scarf-syndie-red-name + description: uplink-scarf-syndie-red-desc + productEntity: ClothingNeckScarfStripedSyndieRed + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterOutlawHat + name: uplink-outlaw-hat-name + description: uplink-outlaw-hat-desc + productEntity: ClothingHeadHatOutlawHat + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterOutlawGlasses + name: uplink-outlaw-glasses-name + description: uplink-outlaw-glasses-desc + productEntity: ClothingEyesGlassesOutlawGlasses + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterSyndicateBusinessCard + name: uplink-business-card-name + description: uplink-business-card-desc + productEntity: SyndicateBusinessCard + categories: + - RecruiterJunk + conditions: + - !type:ListingLimitedStockCondition + stock: 3 + +- type: listing + id: UplinkRecruiterToysword + name: uplink-recruiter-toysword-name + description: uplink-recruiter-toysword-desc + productEntity: ToySword + cost: + TreatCoin: 6 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterFigurineBox + name: uplink-recruiter-figurinebox-name + description: uplink-recruiter-figurinebox-desc + productEntity: BoxSyndicateFigurines + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterLunchbox + name: uplink-recruiter-lunchbox-name + description: uplink-recruiter-lunchbox-desc + productEntity: LunchboxSyndicate + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterToolbox + name: uplink-recruiter-toolbox-name + description: uplink-recruiter-toolbox-desc + productEntity: ToolboxSyndicate + cost: + TreatCoin: 6 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterBanner + name: uplink-recruiter-banner-name + description: uplink-recruiter-banner-desc + productEntity: BannerSyndicate + cost: + TreatCoin: 4 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterUtilitybelt + name: uplink-recruiter-utilitybelt-name + description: uplink-recruiter-utilitybelt-desc + productEntity: ClothingBeltSyndicateUtility + cost: + TreatCoin: 4 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterSyndiehat + name: uplink-recruiter-syndiehat-name + description: uplink-recruiter-syndiehat-desc + productEntity: ClothingHeadHatSyndie + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterRandomdonk + name: uplink-recruiter-randomdonk-name + description: uplink-recruiter-randomdonk-desc + productEntity: BoxRandomDonk + icon: { sprite: Objects/Consumable/Food/Baked/donkpocket.rsi, state: box } + cost: + TreatCoin: 4 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterWintercoat + name: uplink-recruiter-wintercoat-name + description: uplink-recruiter-wintercoat-desc + productEntity: ClothingOuterWinterSyndie + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterWinterboots + name: uplink-recruiter-winterboots-name + description: uplink-recruiter-winterboots-desc + productEntity: ClothingShoesBootsWinterSyndicate + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterLingSting + name: uplink-recruiter-lingsting-name + description: uplink-recruiter-lingsting-desc + productEntity: DrinkChangelingStingCan + cost: + TreatCoin: 2 + categories: + - RecruiterJunk + +- type: listing + id: UplinkRecruiterNukiePlush + name: uplink-recruiter-nukieplush-name + description: uplink-recruiter-nukieplush-desc + productEntity: PlushieNuke + cost: + TreatCoin: 2 + categories: + - RecruiterJunk diff --git a/Resources/Prototypes/_DV/Catalog/Recruiter/treasures.yml b/Resources/Prototypes/_DV/Catalog/Recruiter/treasures.yml new file mode 100644 index 00000000000..c34cf1ccef2 --- /dev/null +++ b/Resources/Prototypes/_DV/Catalog/Recruiter/treasures.yml @@ -0,0 +1,62 @@ +- type: listing + id: UplinkRecruiterCigarettes + name: uplink-cigarettes-name + description: uplink-cigarettes-desc + productEntity: CigPackSyndicate + cost: + TreatCoin: 4 + categories: + - RecruiterTreasure + +- type: listing + id: UplinkRecruiterRealcapfruit + name: uplink-recruiter-realcapfruit-name + description: uplink-recruiter-realcapfruit-desc + productEntity: RealCapfruitSeeds + cost: + TreatCoin: 8 + categories: + - RecruiterTreasure + +- type: listing + id: UplinkRecruiterMaid + name: uplink-recruiter-maid-name + description: uplink-recruiter-maid-desc + productEntity: LunchboxRecruiterMaid + cost: + TreatCoin: 10 + categories: + - RecruiterTreasure + +- type: listing + id: UplinkRecruiterCyberpen + name: uplink-recruiter-cyberpen-name + description: uplink-recruiter-cyberpen-desc + productEntity: CyberPen + cost: + TreatCoin: 10 + categories: + - RecruiterTreasure + +- type: listing + id: UplinkRecruiterMicrowave + name: uplink-recruiter-microwave-name + description: uplink-recruiter-microwave-desc + productEntity: SyndicateMicrowave + cost: + TreatCoin: 10 + categories: + - RecruiterTreasure + +- type: listing + id: UplinkRecruiterBribe5k + name: uplink-recruiter-bribe5k-name + description: uplink-recruiter-bribe5k-desc + productEntity: SpaceCash5000 + cost: + TreatCoin: 10 + categories: + - RecruiterTreasure + conditions: + - !type:ListingLimitedStockCondition + stock: 5 diff --git a/Resources/Prototypes/_DV/Catalog/Recruiter/uniforms.yml b/Resources/Prototypes/_DV/Catalog/Recruiter/uniforms.yml new file mode 100644 index 00000000000..7fd772c42f0 --- /dev/null +++ b/Resources/Prototypes/_DV/Catalog/Recruiter/uniforms.yml @@ -0,0 +1,80 @@ + +- type: listing + id: UplinkRecruiterOperativeSkirt + name: uplink-operative-skirt-name + description: uplink-operative-skirt-desc + productEntity: ClothingUniformJumpskirtOperative + cost: + TreatCoin: 2 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterOperativeSuit + name: uplink-operative-suit-name + description: uplink-operative-suit-desc + productEntity: ClothingUniformJumpsuitOperative + cost: + TreatCoin: 2 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterCybersunrnd + name: uplink-recruiter-cybersunrnd-name + description: uplink-recruiter-cybersunrnd-desc + productEntity: ClothingUniformCybersunRND + cost: + TreatCoin: 2 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterCybersunCasual + name: uplink-recruiter-cybersuncasual-name + description: uplink-recruiter-cybersuncasual-desc + productEntity: ClothingUniformCybersunCasual + cost: + TreatCoin: 2 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterCybersunHazard + name: uplink-recruiter-cybersunhazard-name + description: uplink-recruiter-cybersunhazard-desc + productEntity: ClothingUniformCybersunHazard + cost: + TreatCoin: 2 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterCybersunSurgeon + name: uplink-recruiter-cybersunsurgeon-name + description: uplink-recruiter-cybersunsurgeon-desc + productEntity: BriefcaseRecruiterSurgeonKit + cost: + TreatCoin: 6 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterCybersunLawyer + name: uplink-recruiter-cybersunlawyer-name + description: uplink-recruiter-cybersunlawyer-desc + productEntity: BriefcaseRecruiterLawyerkit + cost: + TreatCoin: 8 + categories: + - RecruiterUniforms + +- type: listing + id: UplinkRecruiterInterdynechem + name: uplink-recruiter-interdynechem-name + description: uplink-recruiter-interdynechem-desc + productEntity: ClothingBackpackDuffelRecruiterInterdyne + cost: + TreatCoin: 8 + categories: + - RecruiterUniforms diff --git a/Resources/Prototypes/_DV/Entities/Objects/Consumable/Drinks/drinks_cans.yml b/Resources/Prototypes/_DV/Entities/Objects/Consumable/Drinks/drinks_cans.yml index 5165ec44848..6925f2d1381 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Consumable/Drinks/drinks_cans.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Consumable/Drinks/drinks_cans.yml @@ -13,3 +13,20 @@ Quantity: 30 - type: Sprite sprite: _DV/Objects/Consumable/Drinks/drgibbbloodred.rsi + +- type: entity + id: DrinkCanPackBloodRed + parent: DrinkCanPack + name: Blood-red brew 6pack + components: + - type: Storage + whitelist: + tags: + - DrinkCan + - type: StorageFill + contents: + - id: DrinkNukieCan + amount: 6 + - type: ItemCounter + count: + tags: [DrinkCan] diff --git a/Resources/Prototypes/_DV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml b/Resources/Prototypes/_DV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml index 343a6d349e3..9734f4a2cfb 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Consumable/Food/Containers/lunchbox.yml @@ -435,3 +435,14 @@ map: [ "openLayer" ] - type: Item heldPrefix: justice + +- type: entity + parent: LunchboxSyndicate + id: LunchboxRecruiterMaid + suffix: Syndicate, Tactical maid + components: + - type: StorageFill + contents: + - id: ClothingUniformJumpskirtTacticalMaid + - id: ClothingHeadHatTacticalMaidHeadband + - id: ClothingHandsTacticalMaidGloves diff --git a/Resources/Prototypes/_DV/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/_DV/Entities/Objects/Devices/pda.yml index db430340957..800892cd748 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Devices/pda.yml @@ -670,3 +670,13 @@ components: - type: Pda id: RoboNeuroticistIDCard + +# Recruiter + +- type: entity + parent: PassengerPDA + id: RecruiterPDA + suffix: Recruiter + components: + - type: Pda + id: RecruiterIDCard diff --git a/Resources/Prototypes/_DV/Entities/Objects/Misc/briefcases.yml b/Resources/Prototypes/_DV/Entities/Objects/Misc/briefcases.yml index 5cbe21a8707..81c24ec1299 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Misc/briefcases.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Misc/briefcases.yml @@ -9,3 +9,47 @@ state: icon - type: Item sprite: _DV/Objects/Storage/Briefcases/briefcase_cybersun.rsi + +- type: entity + parent: CybersunBriefcase + id: RecruiterBriefcase + suffix: Recruiter Uplink, 50TC + components: + - type: AccessReader + access: [ [ "SyndicateAgent" ] ] + breakOnAccessBreaker: true + - type: Storage + maxItemSize: Huge + grid: + - 0,0,8,4 + - type: StorageFill + contents: + - id: PaperRecruiterUplink + amount: 1 + - id: ToyFigurineRecruiter + amount: 1 + - type: Lock + lockOnClick: false + - type: ActivatableUIRequiresLock + requireLocked: false + - type: ActivatableUI + key: enum.StoreUiKey.Key + blockSpectators: true + verbOnly: true + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + enum.StoreUiKey.Key: + type: StoreBoundUserInterface + - type: Store + name: store-recruiter-name-uplink + ownerOnly: true + categories: + - RecruiterJunk + - RecruiterUniforms + - RecruiterTreasure + currencyWhitelist: + - TreatCoin + balance: + TreatCoin: 50 diff --git a/Resources/Prototypes/_DV/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/_DV/Entities/Objects/Misc/identification_cards.yml index a694e6d6f01..cfd93582802 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Misc/identification_cards.yml @@ -504,3 +504,23 @@ - type: MappingCategories categories: - Debug + +#Recruiter +- type: entity + parent: SyndicateIDCard + id: RecruiterIDCard + suffix: Recruiter + components: + - type: Sprite + layers: + - state: default + - state: idpassenger + - type: Access + tags: + - NuclearOperative + - SyndicateAgent + - External + - Maintenance + - type: IdCard + jobTitle: job-name-passenger + jobIcon: JobIconPassenger diff --git a/Resources/Prototypes/_DV/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/_DV/Entities/Objects/Misc/paper.yml index e5c0d4dcbd2..a1f8b26f1c4 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Misc/paper.yml @@ -476,6 +476,23 @@ name: record transcript # TODO: could have a unique sprite in the future +- type: entity + parent: Paper + id: PaperRecruiterUplink + name: Briefcase Uplink Instructions + categories: [ HideSpawnMenu ] + components: + - type: Paper + stampState: paper_stamp-syndicate + stampedBy: + - stampedColor: "#850000FF" + stampedName: Syndicate + content: |2 + This DNA-Secure and extra-spacious briefcase is an uplink to one of our surplus warehouses. + Use them as incentives to join for potential recruits, or to reward yourself for a job well done. + You have been given an initial budget of 50"TC", spend it wisely. + To insert more, make sure the briefcase is locked before inserting the TC. + - type: entity parent: BoxFolderRed id: BoxFolderFakeNukeCodes diff --git a/Resources/Prototypes/_DV/Entities/Objects/Specific/recruiter.yml b/Resources/Prototypes/_DV/Entities/Objects/Specific/recruiter.yml index 6c9cbe8ce7a..0734dcd032c 100644 --- a/Resources/Prototypes/_DV/Entities/Objects/Specific/recruiter.yml +++ b/Resources/Prototypes/_DV/Entities/Objects/Specific/recruiter.yml @@ -18,6 +18,8 @@ - MindShield factionBlacklist: - Syndicate # no silly goose + currency: #currency prototype spawned on signing + TreatCoin5 - type: SolutionContainerManager solutions: blood: @@ -35,3 +37,52 @@ stealGroup: RecruiterPen # not stolen, its for keeping it safe objective - type: EmitSoundOnUse handle: false # need to handle the event for pricking + +- type: entity + parent: [BaseItem, BaseSyndicateContraband] + id: TreatCoin + name: TreatCoin + suffix: 20 TC + description: It seems to be a cheap plastic carnival token with a T stamped into it. What did you expect? + components: + - type: Sprite + sprite: _DV/Objects/Specific/Syndicate/treatcoin.rsi + state: treatcoin + - type: Item + sprite: _DV/Objects/Specific/Syndicate/treatcoin.rsi + size: Tiny + - type: Appearance + - type: Stack + count: 20 + stackType: TreatCoin + - type: StaticPrice + price: 0 + - type: StackPrice + price: 200 + - type: Currency + price: + TreatCoin: 1 + +- type: entity + parent: TreatCoin + id: TreatCoin1 + suffix: 1 TC + components: + - type: Stack + count: 1 + +- type: entity + parent: TreatCoin + id: TreatCoin5 + suffix: 5 TC + components: + - type: Stack + count: 5 + +- type: entity + parent: TreatCoin + id: TreatCoin10 + suffix: 10 TC + components: + - type: Stack + count: 10 diff --git a/Resources/Prototypes/_DV/Roles/Antags/recruiter.yml b/Resources/Prototypes/_DV/Roles/Antags/recruiter.yml index f3418326ad5..a2869b57984 100644 --- a/Resources/Prototypes/_DV/Roles/Antags/recruiter.yml +++ b/Resources/Prototypes/_DV/Roles/Antags/recruiter.yml @@ -20,10 +20,10 @@ gloves: ClothingHandsGlovesColorWhite outerClothing: ClothingOuterCybersunOvercoat shoes: ClothingShoesLeather - id: PassengerPDA + id: RecruiterPDA ears: ClothingHeadsetGreySyndicate pocket1: PenRecruiter pocket2: RubberStampSyndicate belt: ClothingBeltSyndicateUtility inhand: - - CybersunBriefcase + - RecruiterBriefcase diff --git a/Resources/Prototypes/_DV/Stacks/Materials/treatcoins.yml b/Resources/Prototypes/_DV/Stacks/Materials/treatcoins.yml new file mode 100644 index 00000000000..31de7c6ddab --- /dev/null +++ b/Resources/Prototypes/_DV/Stacks/Materials/treatcoins.yml @@ -0,0 +1,5 @@ +- type: stack + id: TreatCoin + name: stack-treatcoin + icon: _DV/Objects/Specific/Syndicate/treatcoin.rsi + spawn: TreatCoin1 diff --git a/Resources/Prototypes/_DV/Store/categories.yml b/Resources/Prototypes/_DV/Store/categories.yml index ad10bfe34c2..d1790535b7c 100644 --- a/Resources/Prototypes/_DV/Store/categories.yml +++ b/Resources/Prototypes/_DV/Store/categories.yml @@ -6,3 +6,16 @@ - type: storeCategory id: AiAbilities name: store-category-abilities + +# recruiter +- type: storeCategory + id: RecruiterJunk + name: store-category-recruiter-junk + +- type: storeCategory + id: RecruiterUniforms + name: store-category-recruiter-uniforms + +- type: storeCategory + id: RecruiterTreasure + name: store-category-recruiter-treasure diff --git a/Resources/Prototypes/_DV/Store/currency.yml b/Resources/Prototypes/_DV/Store/currency.yml index a618bf84b60..11064b9fc89 100644 --- a/Resources/Prototypes/_DV/Store/currency.yml +++ b/Resources/Prototypes/_DV/Store/currency.yml @@ -2,3 +2,10 @@ id: AiMemory displayName: store-currency-display-ai-memory canWithdraw: false + +- type: currency + id: TreatCoin + displayName: store-currency-display-treatcoin + cash: + 1: TreatCoin1 + canWithdraw: true diff --git a/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-left.png b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-left.png new file mode 100644 index 00000000000..a982d742570 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-left.png differ diff --git a/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-right.png b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-right.png new file mode 100644 index 00000000000..5212c001fbb Binary files /dev/null and b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/inhand-right.png differ diff --git a/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/meta.json b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/meta.json new file mode 100644 index 00000000000..b01c9cb80cc --- /dev/null +++ b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Coin by JustAnOrange, Inhand Taken from tgstation at https://github.com/tgstation/tgstation/blob/9db2f6916be5791a84b369eb07bcff178c547e61/icons/obj/stack_objects.dmi", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "treatcoin" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/treatcoin.png b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/treatcoin.png new file mode 100644 index 00000000000..7280eb93d12 Binary files /dev/null and b/Resources/Textures/_DV/Objects/Specific/Syndicate/treatcoin.rsi/treatcoin.png differ