Recruiter uplink (#3232)

* redid everything. again.

* MORE SYNDIE TRASH

* more junk!!!

* togglefun

* treatcoins

* fix

* fixed typos

* rough MVP of hiring reward

* redid job tracking, probably half finished

* attempts to implement payment, probably need to redo

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Reverted to an older version that worked.

* typo

* fixed sprite issue, actually gave them their briefcase.

* fixed box issue

* fixed old emag mention

* removed old file

* added localisation for treatcoin stacks

* camelcase issue fixed

* Requested changes

* EntityUID for now.

* that doesnt work.

* actually spawns the currency now.

* icon is NOT automatic i think?

* started migration to directory

* split into directories

* migrated into seperate files

* removed kits category

* obsolete mention of kit

* simplified names

* removed fieldname

* gave recruiter a figurine

* requested changes

* Update Content.Shared/_DV/Recruiter/RecruiterPenComponent.cs

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update Resources/Prototypes/_DV/Entities/Objects/Misc/paper.yml

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Tobias Berger <toby@tobot.dev>
Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update recruiter.yml

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update recruiter.yml

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update currency.yml

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update recruiter.yml

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update treatcoins.yml

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update meta.json

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update meta.json

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* Update meta.json

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>

* untouch

* drink cans shortened

* inheritance

---------

Signed-off-by: Smugman <85798843+Smugman@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Tobias Berger <toby@tobot.dev>
This commit is contained in:
Smugman
2025-06-29 03:39:07 +01:00
committed by GitHub
co-authored by Tobias Berger pre-commit-ci[bot]
parent 58a4b6ebce
commit d5f2d3404d
30 changed files with 784 additions and 4 deletions
@@ -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<SolutionComponent> dest, EntityUid user)
{
// how did you even use this mr plushie...
if (CompOrNull<BloodstreamComponent>(user)?.BloodSolution is not {} blood)
if (CompOrNull<BloodstreamComponent>(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<RecruitingConditionComponent>(mindId, out var obj, null))
{
obj.Recruited++;
Reward(ent, user);
}
}
public void Reward(Entity<RecruiterPenComponent> ent, EntityUid user)
{
var pay = Spawn(ent.Comp.Currency);
_hands.PickupOrDrop(user, pay);
}
}
@@ -49,4 +49,10 @@ public sealed partial class RecruiterPenComponent : Component
/// </summary>
[DataField]
public List<ProtoId<NpcFactionPrototype>> FactionBlacklist = new();
/// <summary>
/// Payout on successful sign.
/// </summary>
[DataField(required: true)]
public EntProtoId Currency;
}
@@ -4,3 +4,4 @@ stack-normality-crystal = normality crystal
stack-entropy = mote of entropy
stack-rough-bluespace = rough bluespace
stack-treatcoin = treatcoin
@@ -1 +1,4 @@
store-category-objectives = Objectives
store-category-recruiter-junk = Goodies
store-category-recruiter-treasure = Premium
store-category-recruiter-uniforms = Uniforms
@@ -1 +1,3 @@
store-currency-display-ai-memory = TB
store-currency-display-treatcoin = TC
@@ -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.
@@ -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.
@@ -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!
@@ -0,0 +1 @@
store-recruiter-name-uplink = Recruiter merchandise
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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]
@@ -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
@@ -670,3 +670,13 @@
components:
- type: Pda
id: RoboNeuroticistIDCard
# Recruiter
- type: entity
parent: PassengerPDA
id: RecruiterPDA
suffix: Recruiter
components:
- type: Pda
id: RecruiterIDCard
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,5 @@
- type: stack
id: TreatCoin
name: stack-treatcoin
icon: _DV/Objects/Specific/Syndicate/treatcoin.rsi
spawn: TreatCoin1
@@ -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
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

@@ -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
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB