Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smuggling Revamp: The Syndicate Broker #1655

Closed
wants to merge 16 commits into from

Conversation

Ed-Head
Copy link

@Ed-Head Ed-Head commented Jul 11, 2024

About the PR

Adds 2 new jobs: The Syndicate Broker and Syndicate Bodyguard a soft antag group in charge of distributing dead drops from a POI they commandeer.
I wrote a more exhaustive description on the discord ideas section under the same name to prevent cluttering this PR.

Reworked the deaddrop system to allow printing jobs from fax machines that have the component while still allowing dead drop posters to exist.

Also as a note, the broker starting with cash is a band-aid fix until those NFSD ship vouchers get added because then I can just reskin one for the broker. The cheapest ship there costs 50K and sells for far less.

Why / Balance

Smuggling as it is, is an RP wasteland, for both smugglers and NFSD. Not only that, making smuggling have greater ramifications for the sector as well as soft antag syndie jobs have been discussed and wished for ad-nauseam.

How to test

Boot server and join as the Syndicate Broker, observe the new fax machine they start with.

Media

broker
broker2

  • I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

add: The Syndicate is now hiring for a new "public relations" position at listening point bravo.

@whatston3 whatston3 self-assigned this Jul 11, 2024
@ErhardSteinhauer
Copy link
Contributor

You deffo should link the discort convo before it's lost to ether

@Ed-Head
Copy link
Author

Ed-Head commented Jul 12, 2024

@Ed-Head
Copy link
Author

Ed-Head commented Jul 12, 2024

As it stands the outcome of the conversation can be summarized as

  • Add a contraband cargo catalogue to lpb that runs on telecrystals

  • Add telecrystals to the dead drops

  • reduce the distance dead drops spawn at

  • Probably remove the IFF, the broker team probably cant get away with trying to hide a whole POI

  • Make the NFSD channel tattle message more vague to give the team deniability

Im going to be whittling down these things over time, but of course feel free to let me know if you think up anything relevant to this. Also I guess this should probably be marked WIP or something until its ready at last.

suitstorage: WeaponSubMachineGunC20r
gloves: ClothingHandsGlovesCombat
inhand:
- BriefcaseSyndicateBrokerBundleFilled
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cannot use suitstorage since fucking vox errors on next update (Even when its not a vox testing might fail)
You have to use loadouts or no bank.

@Salvantrix
Copy link
Contributor

Just gonna write this down so I don't forget, a neat take instead of taking over a POI could be the addition of a Syndicate fake mailman that then delivers the notes to the various POIs. Adding just a bit less chance its going to be meta'd by NFSD and adding some more dynamic shenanigans.

Copy link
Contributor

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

@github-actions github-actions bot added the S: Merge Conflict This PR has conflicts that prevent merging label Jul 12, 2024
Copy link
Contributor

@whatston3 whatston3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did a code review pass of it, left some thoughts. Haven't yet tested it yet, but it's interesting.

Requesting changes for some cleanup, might have other thoughts later - need to come back to this.

Comment on lines 54 to 56
component.NextDrop = _timing.CurTime + TimeSpan.FromSeconds(_random.Next(component.MinimumCoolDown, component.MaximumCoolDown));
if (!HasComp<FaxMachineComponent>(uid))
component.NextDrop = component.NextDrop * 3;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You aren't multiplying the relative time difference by three, you're multiplying the absolute time by three, I don't think this is what you want. Also, just apply this logic to the fax machine's component

Comment on lines 69 to 73
var usedVerb = "";
if (isFax == true)
usedVerb = Loc.GetString("deaddrop-print-text");
else
usedVerb = Loc.GetString("deaddrop-search-text");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Push this into the component.

@@ -116,14 +130,24 @@ private void SendDeadDrop(EntityUid uid, DeadDropComponent component, EntityUid
dropHint.AppendLine(dropLocation.ToString());
dropHint.AppendLine();
dropHint.AppendLine(Loc.GetString("deaddrop-hint-posttext"));
var printout = new FaxPrintout(dropHint.ToString(),Loc.GetString("deaddrop-hint-name"),null,null);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Push printout into the if block, only used on one branch.

hideConsoleVisibility: true
canBeAntag: true
icon: "JobIconMercenary"
supervisors: job-supervisors-syndicate-broker
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Surely the broker reports to The Spinward Syndicate itself. Could give 'em a syndie red phone for RP reasons (or maybe they just get faxes through the dead drop machine?)

Comment on lines +23 to +29
public int MinimumCoolDown = 900; // 900 / 60 = 10 minutes

/// <summary>
/// Max wait time in seconds to wait for the next dead drop.
/// </summary>
[DataField("maximumCoolDown")]
public int MaximumCoolDown = 5400; // 5400 / 60 = 90 minutes
public int MaximumCoolDown = 1350; // 1350 / 60 = 20 minutes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are defaults that will change with any value specified in YAML prototypes.
You should change those as well if there's a change needed.
Also, 1350/60 is 22.5, and 900 / 60 is 15.

Comment on lines +1140 to +1154
#- type: listing
# id: UplinkUplinkImplanter # uplink uplink real
# name: uplink-uplink-implanter-name
# description: uplink-uplink-implanter-desc
# icon: { sprite: /Textures/Objects/Devices/communication.rsi, state: old-radio }
# productEntity: UplinkImplanter
# cost:
# Telecrystal: 2
# categories:
# - UplinkImplants
# conditions:
# - !type:StoreWhitelistCondition
# blacklist:
# tags:
# - NukeOpsUplink
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. You're touching an upstream file here, state that it's a Frontier change to remove this, and ideally give a reason why.
  2. Why was this commented out?

Comment on lines +9 to +15
- id: Telecrystal5
- id: Telecrystal5
prob: 0.4
- id: Telecrystal5
prob: 0.2
- id: Telecrystal5
prob: 0.01
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When doing something like this, it's tricky to figure out the exact distribution you get.
Consider orGroups with different payouts and a set of probabilities that add to 1.

alwaysUseSpawner: true
hideConsoleVisibility: true
canBeAntag: true
icon: "JobIconMercenary"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a syndicate job icon, no? If they want to fit in, have 'em get an agent ID card. They're a syndie. True for the bodyguard as well.

/// <summary>
// Frontier - Print Dead Drops from supported Fax Machines
/// </sumary>
[DataField("dropprinter")]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults to "dropPrinter", more consistent with others.

Suggested change
[DataField("dropprinter")]
[DataField]

Comment on lines +148 to +153
{ TryComp<HandsComponent>(args.UserUid, out var hands);
if (hands == null || HasComp<FaxMachineComponent>(args.TargetUid) == false)
{
return;
}
args.Handled = SendDeadDrop(args.TargetUid, comp, uid, hands);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't really need a hand component in this case. Maybe either the argument should be nullable and you pass null, or you have a fax-specific version of SendDeadDrop that omits it.

@github-actions github-actions bot added Docs Improvements or additions to documentation S: Merge Conflict This PR has conflicts that prevent merging Map-Shuttle Map - Shuttle Map-Bluespace Map - Bluespace Event Sprites and removed S: Merge Conflict This PR has conflicts that prevent merging labels Jul 13, 2024
@github-actions github-actions bot added the UI label Jul 13, 2024
Copy link
Contributor

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

Resources/Textures/_NF/Guidebook/shuttle_maps/128x96.rsi

State Old New Status
liquidator Modified
bazaar Added

Resources/Textures/_NF/Interface/Misc/job_icons.rsi

State Old New Status
nfsdcadet Modified
nfsddeputy Modified
nfsdsergeant Modified

Resources/Textures/_NF/Objects/Misc/id_cards.rsi

State Old New Status
idnfsdbrigmed Modified
idnfsdcadet Modified
idnfsddeputy Modified
idnfsdsergeant Modified
nfsdvoucher Added
vouchernfsdbailiff Added
vouchernfsdsergeant Added

@github-actions github-actions bot removed the S: Merge Conflict This PR has conflicts that prevent merging label Jul 13, 2024
@github-actions github-actions bot added YML S: Merge Conflict This PR has conflicts that prevent merging and removed Docs Improvements or additions to documentation Map-Shuttle Map - Shuttle Map-POI Map - POI Map-Bluespace Map - Bluespace Event Sprites UI labels Jul 15, 2024
Copy link
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 This PR has conflicts that prevent merging label Aug 6, 2024
Copy link
Contributor

github-actions bot commented Aug 7, 2024

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

@github-actions github-actions bot added the S: Merge Conflict This PR has conflicts that prevent merging label Aug 7, 2024
@Cheackraze
Copy link
Member

this is still a compelling direction to take the smuggling system, as of now we have the notices just being sent to a 'random' fax machine, but with the other smuggling changes that happened we are getting feedback to finalize and this would still make for an interesting gameplay option. My only concern is, how do we ensure that whoever takes the 'broker' role doesnt merely try to turn it into a solo experience and just do the smuggling themselves, and how we can make it so they are more running the poi and handing out the certs and not doing the smuggling themselves etc.

@dvir001
Copy link
Contributor

dvir001 commented Nov 11, 2024

Been putting work into smaller PR's to make it possible, as I talk to @Ed-Head one of the ideas will be to have a mailman syndicate with a syndicate bank to support more of a random aspect, with the edition of the option to buy specific items for re-selling base on packages delivered for more specific items.

@dvir001
Copy link
Contributor

dvir001 commented Jan 12, 2025

Im closing this for now but going to rework this PR right after we done with the MOM medical PR.

@dvir001 dvir001 closed this Jan 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C# FTL S: Merge Conflict This PR has conflicts that prevent merging YML
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants