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

Traitor activation fix for missing PDA #30359

Merged
merged 26 commits into from
Oct 18, 2024

Conversation

Errant-4
Copy link
Member

@Errant-4 Errant-4 commented Jul 25, 2024

About the PR

Traitors who "activate" without a PDA will now correctly get the codewords, the audio notification, and get an installed Uplink Implant. The cost is taken from their starting TC. This is objectively a worse situation than actually having purchased this implant from a normal uplink, but is still far better than missing out on all your TC and not knowing the code words

Why / Balance

Fixes #27444
Fixes #28138
Fixes #27928
Probably makes #28637 easier

Media

image

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

Changelog

🆑 Errant

  • fix: Players becoming Traitor without a PDA now correctly get the text and audio notifications, and the code words. They are also given an Uplink Implant, with the price taken from their starting TC.

@github-actions github-actions bot added the Status: Needs Review This PR requires new reviews before it can be merged. label Jul 25, 2024
@slarticodefast
Copy link
Member

What the heck, I have just written exactly the same thing. Let me see how you solved it, lol.

Copy link
Member

@slarticodefast slarticodefast left a comment

Choose a reason for hiding this comment

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

Now that MakeTraitor no longer fails halfway through syndicate monkeys and reinforcements will get traitor objectives and an uplink as well. At least that happened for me. The giveUplink parameter in MakeTraitor and the GiveUplink and GiveObjectives datafields in the AutoTraitorComponent are currently completely unused. The only thing preventing the objectives was the missing pda.

Content.Server/Traitor/Uplink/UplinkSystem.cs Outdated Show resolved Hide resolved
@Errant-4
Copy link
Member Author

Wow, good catch thanks. This would have been FAR WORSE than it initially sounds, because it's a potential infinite loop.
Get traitor, buy 2 monkeys and 8 TC worth of your own weapons, tell the 2 monkeys to buy 2 monkeys each and 6 TC worth of their own weapons, tell the next 4 monkeys to buy 8 more monkeys, this is only limited by the number of available Ghosts lol

@lzk228
Copy link
Contributor

lzk228 commented Jul 26, 2024

how many metagamers will use it for free uplink implant?

@slarticodefast
Copy link
Member

slarticodefast commented Jul 26, 2024

how many metagamers will use it for free uplink implant?

It is not free, it deducts the cost of the implant from your starting TC, so it is like a forced purchase.

@Errant-4
Copy link
Member Author

Errant-4 commented Jul 27, 2024

So I went and made the TelecrystalBalance FixedPoint2 everywhere for consistency. This does not currently do anything because TC are only given in values that match exact integers, TC only exists in whole units in the world, and all prices are integer values even though the data type is FixedPoint2.

But now it is more consistent internally and it is theoretically possible to offer amazing discounted wares at 3.79 TC

(Actually, I think that was probably already possible anyway. But it just BOTHERED ME that we are passing integers into FixedPoint2 variables)

…raitorRuleComponent, no pda for reinforcements
@Errant-4
Copy link
Member Author

Errant-4 commented Jul 28, 2024

I added new datafields to TraitorRuleComponent that can turn off traitor stuff that we don't want on reinforcements (codewords*, uplink, briefing), and created a new traitor profile with just those being different, to be used on AutoTraitorComponent (which now passes the profile to be used to the system, rather than those 3 variables which weren't even used anywhere)

  • actually it might be nice to give codewords to reinforcements, but there is a technical issue with that now, since Reinforcements are a different traitor profile now, they get their own randomised set of codewords so they are "incompatible"

@slarticodefast
Copy link
Member

Probably fixes #27444 ?
The traitor status was cancelled due to the missing pda.

@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Aug 5, 2024
Copy link
Contributor

github-actions bot commented Aug 5, 2024

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

@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. 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 Merge Conflict This PR currently has conflicts that need to be addressed. label Aug 7, 2024
@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. label Aug 7, 2024
@slarticodefast slarticodefast added Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. and removed Status: Needs Review This PR requires new reviews before it can be merged. labels Sep 19, 2024
@slarticodefast slarticodefast added the Undergoing Maintainer Discussion This PR is currently going through an internal discussion by the maintainer team. label Sep 19, 2024
@slarticodefast slarticodefast self-assigned this Oct 4, 2024
@github-actions github-actions bot added the Merge Conflict This PR currently has conflicts that need to be addressed. label Oct 9, 2024
Copy link
Contributor

github-actions bot commented Oct 9, 2024

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

@github-actions github-actions bot removed the Merge Conflict This PR currently has conflicts that need to be addressed. label Oct 10, 2024
@github-actions github-actions bot added Status: Needs Review This PR requires new reviews before it can be merged. and removed Status: Awaiting Changes This PR needs its reviews addressed or changes to be made in order to be merged. labels Oct 13, 2024
@slarticodefast
Copy link
Member

slarticodefast commented Oct 18, 2024

I did some minor cleanup, but otherwise the code looks good to me.
One last bug I found while testing: Reinforcement agents and kobolts/monkeys now get their own objectives (was that a thing before or did it simply fail to produce them because of the missing pda?). That should probably be another setting in the traitor rule.
Edit: this seems to be a problem on master already, so that fix is out of scope

@slarticodefast slarticodefast merged commit 23e4f81 into space-wizards:master Oct 18, 2024
11 checks passed
Errant-4 added a commit to Errant-4/space-station-14 that referenced this pull request Oct 18, 2024
* Implant the uplink if no PDA is found

* comments

* tidy up loose ends

* Whoops usually I start with the namespace, how did I forget it, shame shame

* Consistent data type for starting TC balance, misc changes

* Implant briefing, guidebook

* Update AutoTraitor, add uplink, codeword and briefing parameters to TraitorRuleComponent,  no pda for reinforcements

* engine 5c0ce43

* pass pda to AddUplink

Co-authored-by: slarticodefast <[email protected]>

* nicer string handling

Co-authored-by: slarticodefast <[email protected]>

* case typo 1

Co-authored-by: slarticodefast <[email protected]>

* case typo 2

Co-authored-by: slarticodefast <[email protected]>

* case typo 3

Co-authored-by: slarticodefast <[email protected]>

* minor layout changes

* removed redundant implant check

* minor cleanup

---------

Co-authored-by: slarticodefast <[email protected]>
iaada pushed a commit to iaada/space-station-14 that referenced this pull request Nov 9, 2024
* Implant the uplink if no PDA is found

* comments

* tidy up loose ends

* Whoops usually I start with the namespace, how did I forget it, shame shame

* Consistent data type for starting TC balance, misc changes

* Implant briefing, guidebook

* Update AutoTraitor, add uplink, codeword and briefing parameters to TraitorRuleComponent,  no pda for reinforcements

* engine 5c0ce43

* pass pda to AddUplink

Co-authored-by: slarticodefast <[email protected]>

* nicer string handling

Co-authored-by: slarticodefast <[email protected]>

* case typo 1

Co-authored-by: slarticodefast <[email protected]>

* case typo 2

Co-authored-by: slarticodefast <[email protected]>

* case typo 3

Co-authored-by: slarticodefast <[email protected]>

* minor layout changes

* removed redundant implant check

* minor cleanup

---------

Co-authored-by: slarticodefast <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Needs Review This PR requires new reviews before it can be merged. Undergoing Maintainer Discussion This PR is currently going through an internal discussion by the maintainer team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Can't roll syndicate agent if you don't have PDA Traitor rolling bug AutoTraitor component doesn't work
5 participants