-
Notifications
You must be signed in to change notification settings - Fork 608
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
Conversation
You deffo should link the discort convo before it's lost to ether |
As it stands the outcome of the conversation can be summarized as
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 |
There was a problem hiding this comment.
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.
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. |
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
There was a problem hiding this 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.
component.NextDrop = _timing.CurTime + TimeSpan.FromSeconds(_random.Next(component.MinimumCoolDown, component.MaximumCoolDown)); | ||
if (!HasComp<FaxMachineComponent>(uid)) | ||
component.NextDrop = component.NextDrop * 3; |
There was a problem hiding this comment.
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
var usedVerb = ""; | ||
if (isFax == true) | ||
usedVerb = Loc.GetString("deaddrop-print-text"); | ||
else | ||
usedVerb = Loc.GetString("deaddrop-search-text"); |
There was a problem hiding this comment.
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); |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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?)
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 |
There was a problem hiding this comment.
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.
#- 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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- You're touching an upstream file here, state that it's a Frontier change to remove this, and ideally give a reason why.
- Why was this commented out?
- id: Telecrystal5 | ||
- id: Telecrystal5 | ||
prob: 0.4 | ||
- id: Telecrystal5 | ||
prob: 0.2 | ||
- id: Telecrystal5 | ||
prob: 0.01 |
There was a problem hiding this comment.
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" |
There was a problem hiding this comment.
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")] |
There was a problem hiding this comment.
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.
[DataField("dropprinter")] | |
[DataField] |
{ TryComp<HandsComponent>(args.UserUid, out var hands); | ||
if (hands == null || HasComp<FaxMachineComponent>(args.TargetUid) == false) | ||
{ | ||
return; | ||
} | ||
args.Handled = SendDeadDrop(args.TargetUid, comp, uid, hands); |
There was a problem hiding this comment.
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.
RSI Diff Bot; head commit cd11805 merging into 27890bd Resources/Textures/_NF/Guidebook/shuttle_maps/128x96.rsi
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
…-station-14 into smuggle-broker
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
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. |
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. |
Im closing this for now but going to rework this PR right after we done with the MOM medical PR. |
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
Breaking changes
Changelog
add: The Syndicate is now hiring for a new "public relations" position at listening point bravo.