Skip to content

Salvage Tokens and Requisitions#42724

Closed
Mehnix wants to merge 15 commits intospace-wizards:masterfrom
Mehnix:SalvageTickets
Closed

Salvage Tokens and Requisitions#42724
Mehnix wants to merge 15 commits intospace-wizards:masterfrom
Mehnix:SalvageTickets

Conversation

@Mehnix
Copy link
Copy Markdown
Contributor

@Mehnix Mehnix commented Feb 1, 2026

See: Salvage Postmortem
This PR attempts to better align the station's desire of "want materials" and the Salvager's desire of "want cool stuff".
Specifically, by tackling the "Bounties" section of the Salvage Postmortem discussion for the most part, by ripping it out entirely and implementing something else.

About the PR

Replaces the existing Salvage Jobs Board with the Salvage Requisitions Console. This functions similarly to a Request Console with purchases sent to the ATS. However instead of using Spesos it uses Salvage Tokens.

Salvage Tokens are earned through processing ores or recycling scrap. The amount earned per material is the same regardless of method, however rarer materials, as well as those most important for salvage, are worth more.
Steel, Glass, and Plastic are worth 10. These are common and in high quantities. Cargo also has other ways to get them.
Gold, Silver, and Plasma are worth 15. These are much less common, but still have alternative ways for cargo to get them.
Uranium and Bananium are worth 20. Only salvage can get these, making them highest priority (less so bananium).
Diamonds are worth 500. These are very rare, so bonus points.

The Salvage Requisition Account can receive subsidies from other accounts, say cargo has spare cash, salvage can benefit from it. Say a salvager quickly and efficiently delivers materials to science, science can return the favour with by tipping them some spesos. However, salvage tokens can't be converted back to spesos, so it's a one way deal (theoretically you could buy from salv fund then sell to cargo fund, but likely not efficient). This fund is however Independent, it isn't governable by the Funding Allocation computer and doesn't receive a cut from cargo sales.

As to why i'm not using "Salvage Tickets" from downstream, from what I can tell they originally come from Starlight, who aren't very good at properly sourcing where things came from (I do not know who "Conflee" is, but they apparently made the tickets), so rather than perform digital archeology I just made my own textures. They still remain "SalvageTickets" in the code for legacy and downstream convenience.

Rather than entirely scrap Salvage Jobs, i've also converted a few of the jobs I thought were salvagable into regular cargo bounties. Most of the original purchases under salvage jobs were also rebalanced massively, as most were hilariously overpriced (8k for a Crusher Glaive? A shotgun crate is 7.5k for 2!). The Dangerous items are also in secure cargo-access crates now. I've also added a few more exclusive orders.

The most controversial additions being:

  • PKA Upgrade Kit Crate, this research is Armoury, meaning rarely done. Upgraded PKA's are a godsend and waiting on science for it is not great.
  • Mining Equipment Crate, this again bypasses science, albiet expensively, by providing them with a drill and handheld mass scanner. both of these give you what you need to effectively mine at the VGRoid which is the best place for rare ores.
  • Shuttle Crate, I was and remain a Reclaimer Enjoyer, but do agree it allows some salvagers to run away from their duties, and that shuttles take ages to make. This provides everything you need in one package, and can be put together in 5 minutes. A single junior pacman provides just enough power for it, but will drink welding fuel and doesn't have much spare power to bring anything else. For now it's a salvage exclusive item but could be fun to put it in the regular cargo request console list. One ever-so-tiny downside is when the pacman runs out your ship bricks immediately, which can lead to some lethal crashes. But this is a disaster simulator, you'll learn after the first time it happens.

I'm not particularly attached to any of these, but I do have a lot of experience salvaging so this isn't me just adding things for the hell of it.

The Requisitions Console also ties salvage to the station, as, with the exception of the cargo shuttle, shuttles they build will not have access to the station's bank balance (as far as i know?). So they can't bring it with them. Even if they do steal that, they'll need to go back to the ATS to get their stuff anyway.

Why / Balance

Salvage Jobs as a concept attempted to align the station's desire of "get materials" with the salvager's desire of "get cool stuff", but failed by forcing the salvager to sacrifice the materials they gathered, or spend time hunting monsters to get that cool stuff. Meaning it ended up doing the anthesis of what it set out to do.

Salvage Tokens directly reward a salvager for acquiring materials, and somewhat encourage them to seek out rarer materials for greater reward, without sacrificing those materials.

I've currently balanced costs based on several runs of space debris I did solo in the Dev Environment. On average I gained about 4-6k in tokens from a single space debris. I expect mining to be more than this if you've got a mineral scanner and so can go blast mining on the VGRoid.

Regardless. Feedback would be appreciated.

Technical details

Adds TicketPrinterComponent and System, responsible for spawning tickets, to lathes and recyclers.
Adds TicketValueComponent to each sheet/ingot/etc base entity. Which is gotten by TicketPrinterSystem.
Adds a new cargo account, and changes request consoles to use CashType to determine currency rather than CashComponent, making that component obsolete. By extension, consoles can now choose what currency they use in their component.
Removed most the surface level SalvageJobs information, left the system and components for now, it may have use.

Media

MyServer.-.Space.Station.14.2026-02-01.01-16-29.mp4

Requirements

Breaking changes

Currently i'm using Migrations to auto-replace Salvage Jobs Boards with Requisition Consoles. Downstreams that already do this might have issues.

Changelog
🆑 Mehnix

  • add: Added Salvage Tokens, acquired from processing ores and recycling scrap.
  • add: Added Salvage Requisitions Consoles, which use Salvage Tokens to request salvage items to the ATS.
  • add: Added several new Salvage Requisition Console-exclusive orders.
  • add: Added several new Salvage-related bounties, that used to belong to the Salvage Jobs board, now reworked.
  • tweak: Changed the pricing or contents of several salvage-related cargo orders.
  • remove: Removed the Salvage Jobs Board

Salvage Tokens
Acquirable from Recycling
Acquirable from Ore Processing
Salvage Requisition Console
Takes tokens, adds to Salvage Requisitions Account
Can use to buy things, which are sent to the ATS
Or rather, the bits that effect the station
Code can remain (for now)
Slight Texture change
add 5000 tokens entity texture
some typos and grammar stuff
salvage starts with some money, as a treat.
@Mehnix Mehnix requested a review from crazybrain23 as a code owner February 1, 2026 02:23
@PJBot PJBot added S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. Changes: Sprites Changes: Might require knowledge of spriting or visual design. size/L Denotes a PR that changes 1000-4999 lines. Changes: UI Changes: Might require knowledge of UI design or code. labels Feb 1, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Feb 1, 2026

RSI Diff Bot; head commit c67a87f merging into 1fee95f
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/Objects/Misc/coins.rsi

State Old New Status
coin_salv Added
coin_salv_100 Added
coin_salv_1000 Added
coin_salv_10000 Added
coin_salv_25000 Added
coin_salv_5000 Added

Edit: diff updated after c67a87f

Missing DataField
Missing RSI field
Testing code before pushing it? Damn why would I do that? It's just a 2-line quick and simple update made at half 2 in the morning after all. There's no way you could mess that up. Like who'd ever do that. Nobody. Nope.

Alternative PR Name: Ice that t
Made them worth less
You only need one stack of steel to make the shuttle
Less memey description
@NoahCHeaverin
Copy link
Copy Markdown

I personally think a more diagetically-fitting name for Salvage Points would be Salvage Coupons.

From a design perspective, my personal bet is that combining this approach with QOLs for the process of Salvage actually like, delivering the materials to the rest of the station would be the incentive alignment Salvage needs. From replays I've combed through, materials lying on the floor in the salvage room get memory-holed and never distributed, even if salvagers go out of their way to collect them.

@YoungThugSS14

This comment was marked as abuse.

Comment thread Resources/Prototypes/Catalog/Fills/Crates/salvage.yml Outdated
Comment thread Resources/Prototypes/Catalog/Fills/Crates/salvage.yml
Comment thread Resources/Prototypes/Catalog/Fills/Crates/salvage.yml Outdated
Comment thread Resources/Prototypes/Catalog/Fills/Crates/salvage.yml Outdated
@slarticodefast
Copy link
Copy Markdown
Member

As to why i'm not using "Salvage Tickets" from downstream, from what I can tell they originally come from Starlight, who aren't very good at properly sourcing where things came from (I do not know who "Conflee" is, but they apparently made the tickets), so rather than perform digital archeology I just made my own textures. They still remain "SalvageTickets" in the code for legacy and downstream convenience.

For licensing reasons, can you clarify if you used any downstream code for this or did you recreate everything from scratch? Did you look at other downstream code while doing so?
Starlight uses a custom licence so we cannot use their code without the author agreeing to relicence it.

@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Feb 1, 2026

For licensing reasons, can you clarify if you used any downstream code for this or did you recreate everything from scratch? Did you look at other downstream code while doing so?

I have looked at the Carpmosia version and played around with it as inspiration, which is a port of the Starlight, however there is nothing shared between mine and that beyond the name "SalvageTicket". This was written from scratch as my own implementation of the idea.

The Starlight/Carpmosia Salvage Ticket is a currency added to an Uplink-like Store Structure that spawns items in directly. Tickets are gained through the ore processor only and use LatheRecipePrototypes to add on salvage tickets.

My version's Salvage Tokens are materials added to a Request Console that spawns items at the ATS. Tickets are gained through the ore processor or recycler via a TicketPrinter system with values drawn from the spawned sheet/ingot entities.

Container Fills
Proper Parenting
@slarticodefast
Copy link
Copy Markdown
Member

All good then, I just wanted to make sure there are no licencing problems with this PR 👍

@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Feb 1, 2026

I personally think a more diagetically-fitting name for Salvage Points would be Salvage Coupons.

I ended up going with "Tokens" because something like "Coupon" or "Ticket" sounds very civilian, like i'm at an arcade or supermarket. Token fitted my vibe of an old fashioned, run-down machine spitting out stamped coins as proof of work. Someone else can make the bitcoin joke of "mining for tokens".

For delivery of materials, i think that's partially a map issue. Salvaged and mined materials should always be directly available within the cargo bay, recyclers ideally should belt their produce there.

@imatsoup
Copy link
Copy Markdown
Contributor

imatsoup commented Feb 1, 2026

If my comment is worth anything, when we did this on Carpmosia I believe we saw a notable increase in the flow of materials to the station from salvage.

@deltanedas
Copy link
Copy Markdown
Contributor

ladies and gentlemen we have reinvented ss13

@imatsoup
Copy link
Copy Markdown
Contributor

imatsoup commented Feb 2, 2026

ladies and gentlemen we have reinvented ss13

technically starlight or whoever reinvented ss13 and this has been an elaborate game of github telephone

@Codubreku
Copy link
Copy Markdown

Codubreku commented Feb 2, 2026

I have felt the exact same about the salvage jobs system since shortly after its release; having to divert resources to fulfill mediocre bounties, all so we can buy overpriced equipment, in my eyes, was a dramatic miss-step.

I will say thought that I expect any person higher up in the maints chain won't like the addition of a shuttle crate, as they're increasingly trying to wrangle in station activities to be close to the station.
Personally, I don't like the crate for the reason of it making it too easy to make a shuttle. Making a ramshackle shittle, assembled from parts you source from the magnet or random spawning wrecks, inherently feels better to me than just buying a crate of everything ready to go. Granted, my biases are being a magnet-junky who never experienced the reclaimer in its prime on WD. I've later experienced it downstream and I don't really care for loading all the salvage equipment up onto the shuttle and faffing off forever. Give me the void and I'll happily jump off the station with nothing but a grappling hook and a dream of building my own proto-theseus ship. Until I inevitably get sniped by a heat-seeking rock.

Sorry for rambling, but it's been a long time since I've read a PR that made me hopeful and happy about salvage changes. The crate aside, I'm looking forward to this.

@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Feb 2, 2026

I will say thought that I expect any person higher up in the maints chain won't like the addition of a shuttle crate, as they're increasingly trying to wrangle in station activities to be close to the station.

You're probably correct, if they ask me to remove it I would, just figure i might as well put everything I want into a single PR.
For me the reclaimer was about convenience, I can pull up to a debris and rather than awkwardly have to fly everything home, one at a time, I can just throw everything into the ship right next to me. No dealing with constantly changing perspective orientations, getting lost in space, or having to use a damn fire extinguisher. I'm a space trucker here to strip down this debris for parts and haul it back for processing.

This goes double for the VGRoid. I know how to get there without a ship or scanner, i just don't think I should have to. I like having a mobile base of operations when i'm mining on the murder asteroid. I see people talk about "interesting movement tech" but to me that's like saying if i chose to cartwheel to work instead of walk i'd be engaging in interesting movement tech rather getting than a big headache.

The two failiures of it are as you discussed, loading things up and faffing off. I don't like doing either, but others do. Part of the purpose of this implementation is no matter what you bring with you, if you want to cash in and get your cool stuff you have to go back to the station anyway. Request consoles of any kind don't work on shuttles unless they're round start and specifically linked to the station's bank account.

@eoineoineoin eoineoineoin removed the S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. label Feb 2, 2026
@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Feb 3, 2026

I'm admittedly very biased towards salvage because it's my favourite job alongside botany and i have like 200+ hours in it:

* This PR is in my eyes not enough on its own to justify the poor design Salvage has in other areas. Yes, it does make material gathering more appealing to Salvage, but you are still faced with major issues such as off-station gameplay, wildly varied and spread-out systems for how the material is gathered, and difficulty to "jump in" into the Salv's activities. Now this PR doesn't have to tackle those issues, but they are nonetheless the main focus for why Salv is on the chopping block.
  • To me the core appeal of salvage is that it offers that ability to leave the station temporarily, which is something no other job offers. You go out on adventures to dangerous environments, collect materials, fight monsters, and return home to rest up, gear up, and do it again. To me that's the ideal loop. Also something like Frontier do not offer, i'm specifically helping the station with my gathering, not just myself which caused me to lose interest in Frontier quickly.
  • Some of the difficulty of "jumping in" to salvage's off-station activities could be solved by making space travel less obnoxious if you don't have a shuttle. A simple one would be giving jetpacks innate mass scanners. Then you can just fly there and shoot them if that's your objective. Heck, i could do that one myself probably.
  • My coding skills don't extend to being able to fix the core gameplay loop of salvage. But in an ideal world something like medium sized randomly generated wrecks or asteroids about the size of the good roundstart ruins, filled with a few monsters would be nice (preferably limiting the more cancer-y ones like goliaths and hivelords, more fish and xenos). These would take 5-10 minutes each and encourage that go and return play style. Preferably not timed like the magnet with it just stabilising them so they last until you're satisfied.
* The choice of purchasables is in places problematic. The main one to me is the Sci stuff. Salv is implicitly encouraged to deliver materials to Science to get those tools printed, because they are tangibly useful to Salvage, and it is a good moment of cross-department collaboration. Salvage doesn't need to be more insular.
  • Problem is some items border on being too useful to not have, and there's no guarenteeing sci will research any of them. It's like the inverse of the salvage problem for science where a decent part of their fun is linked to someone else being competent. As a potential alternative would being able to buy a set of research disks at a premium be a solution? This still requires interaction with science. I do however think mineral scanners should be round start.
  • This also doesn't touch upgrades like diamond drills, bluespace ore bags and the like. Science making it also saves you on cash. It's better if they make it rather than you having to buy it. The mining equipment crate costs 5 grand, sci could make you the drill and scanner in a few seconds for close to free if they're researched it.
  * That does leave a fairly gaping hole for what meaningful things _should_ be purchasable. Current content may have difficulty filling enough to justify the shop.
  • The current contents is quite similar to Carpmosia's implementation, with the addition of gambling crates and such. Which as far as I know hasn't caused much pushback for lacking content. Generally you'd be pushing it to make 50-60k total in a single round. Unless you had a team all kitted out with diamond drills and bluespace bags.
* While I agree that aligning Salvage's interests with doing their job is good, I am also wondering if doing it this explicitly is healthy. I don't mean Salv shouldn't want to do their job, moreso that many departments instead make the "reward" inherent to doing the job well. Medical is pretty much _only_ about the challenge of keeping the Medbay empty. Similar for Engineering and keeping the station inhabitable. Cargo seems to mostly focus on building a safety net fund first before going gambling, so Science is the most similar and that still puts extra steps in by making points lead to randomized research which leads to goodies.
  
  * It may very well be fine still to give Salv this explicit encouragement, so see this as my weakest point.
  • Considering how many times salvage points of some kind have convergently evolved as a solution in both space station 13 (i think?) and 14 it seems people who do salvage or its equivilent enjoy the process of mine thing get point use point to buy fun thing. No reason to re-invent the wheel that's proven it rolls well. I certainly like it.

I'll state the obvious but I doubt anyone's going to come out of the woodwork with the "fix salvage and make it good" PR that instantly solves all problems. But I can at least try to chip away at the bit that sticks out the most. Maybe if we chip away enough it'll unearth some solutions to the bigger issues. If anything there would be far less complaints about salvage if people consistently got their materials, which is what likely drives the majority of talk about the role's flaws.

@deltaVeIocity
Copy link
Copy Markdown

I personally think a more diagetically-fitting name for Salvage Points would be Salvage Coupons.

I ended up going with "Tokens" because something like "Coupon" or "Ticket" sounds very civilian, like i'm at an arcade or supermarket. Token fitted my vibe of an old fashioned, run-down machine spitting out stamped coins as proof of work. Someone else can make the bitcoin joke of "mining for tokens".

For delivery of materials, i think that's partially a map issue. Salvaged and mined materials should always be directly available within the cargo bay, recyclers ideally should belt their produce there.

How about Salvage Scrip? It's alliterative, it's got an appropriate level of "this is the not-cash currency the megacorp you work for is saddling you with", and it even rhymes with "scrap".

Also, as someone who's done a decent amount of work on SL's salv, Hi! We've, uh, gone down a very different path to Wizden with how we approach things but I think the tickets are one of the best things we added.

@deltaVeIocity
Copy link
Copy Markdown

deltaVeIocity commented Feb 4, 2026

Admittedly, though, since we (I was personally against it, but ¯\(ツ)/¯) gave mining their own shuttle and took salv's shuttle ore processor away, they in particular have gone back to the old "provide no benefit to the station" issue.

They're mindshielded, though, so I guess them turning into QM's personal goon squad/bodyguards on revs is always fun.

@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Feb 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@walksanatora
Copy link
Copy Markdown
Contributor

my only comment.... 2 seconds in the starlight discord and you would know who conflee is (Conf is our headspriter)

@Conflee
Copy link
Copy Markdown

Conflee commented Feb 13, 2026

I'm down with anything I make being upstreamed if ever desired. If Starlight doesn't include a link to a source and it's just a name, it means we made it or thats how it was credited in whatever PR we ported it from.

@github-actions github-actions Bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Feb 13, 2026
@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Feb 13, 2026

I'm down with anything I make being upstreamed if ever desired. If Starlight doesn't include a link to a source and it's just a name, it means we made it or thats how it was credited in whatever PR we ported it from.

For some reason my brain chose the path of assuming as the name associated with the sprite was not the same as the name of the PR creator the sprite must come from somewhere else rather than the infinitely more obvious answer of it just being a different person in Starlight so sorry for the accidental shade i'm just a bit dumb sometimes.

@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Feb 25, 2026
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions Bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Feb 27, 2026
Comment thread Content.Client/Cargo/UI/FundingAllocationMenu.xaml.cs
Comment thread Content.Server/TicketPrinter/TicketPrinterSystem.cs Outdated
Comment thread Content.Shared/TicketPrinter/SharedTicketPrinterSystem.cs Outdated
Comment thread Content.Shared/TicketPrinter/SharedTicketPrinterSystem.cs
Comment thread Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml Outdated
@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Mar 1, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 1, 2026

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions Bot removed the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Mar 2, 2026
@Mehnix
Copy link
Copy Markdown
Contributor Author

Mehnix commented Mar 2, 2026

gambling crate failing my tests, pain.

@SnappingOpossum
Copy link
Copy Markdown
Contributor

Should be able to add it to the ignored orders for NoCargoOrderArbitrage since it's the same crate as the already ignored one.

@github-actions github-actions Bot added the S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted label Mar 15, 2026
@github-actions
Copy link
Copy Markdown
Contributor

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@NoahCHeaverin
Copy link
Copy Markdown

You seem like you'd make a good graph consulter.

I'm excited to see where this PR goes!

@SlamBamActionman
Copy link
Copy Markdown
Member

Hello! Salvage will be undergoing a major rework to its gameplay in the very near future, part of which involves an overhaul to the progression of Salvage content.

As such, I will be closing this PR for now. Once the rework has established its new mechanics and balance requirements, feel free to revisit this idea in the new format.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A: Cargo/Salvage Area: Cargo department or Salvage. Changes: Sprites Changes: Might require knowledge of spriting or visual design. Changes: UI Changes: Might require knowledge of UI design or code. D2: Medium Difficulty: A good amount of codebase knowledge required. P3: Standard Priority: Default priority for repository items. S: Merge Conflict Status: Needs to resolve merge conflicts before it can be accepted S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. size/L Denotes a PR that changes 1000-4999 lines. T: Balance Change Type: Balance changes through direct value changes, or changes to mechanics that affect it

Projects

None yet

Development

Successfully merging this pull request may close these issues.