-
Notifications
You must be signed in to change notification settings - Fork 293
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
BLADE: Adjust IV action to current-city affect rather than global #1586
base: dev
Are you sure you want to change the base?
Conversation
} | ||
const city = this.getCurrentCity(); | ||
city.changeChaosByCount(10); | ||
city.changeChaosByCount(city.chaos / Math.log(city.chaos) / Math.log(10)); |
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 part is the logical change. The scaling stays the same in this PR, but the penalty now only affects the player's current city.
Also, the change to changeChaosByCount
handles integer safety with a clamp that defaults to Number.MAX_VALUE
.
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.
To continue on the discord discussion: I vote for combining the two logics. This is not a perfect, final solution, but merely something that I'm confident will move this PR forward and allow us to make adjustments that have a positive effect on playability.
- give the old, heavy penalty to the current city, but not others
- apply the flat penalty to all cities
This way the cost of generating contracts remains global, but the escalating effect only stays on the one you are currently looking at (ie. you won't accidentally end up with your non-current city having 1e50 chaos in two days).
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.
I request separating this commit out to a new PR and reverting it in this one so we can merge the surrounding refactors.
I will be straight with you: Bladeburner is one of the areas I am least familiar with, since I've never done it myself. So, I can review this code-wise, but I don't have the context to tell if it makes sense game-wise. That'll require either @Snarling, or a community consensus that this is a good idea. |
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.
I would suggest (but not require) that you split this into two parts. There's some cleanup/refactoring that I can merge immediately (and that distracts from the logical change), and then the actual change, which I suspect will be debated for a bit.
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.
From a balance perspective, this basically makes it no-cost to incite violence - have a burner city for generating contracts by inciting violence, and then actually perform the contracts in a different city.
If contract / operation counts were per-city, then this change would make sense, but since they are global I lean towards incite violence making sense as having a global impact since it is generating more global contract/operation counts.
That said I am open to other viewpoints.
Is that a problem, though? If the goal is to put a limiter on players generating contracts for int-farming, perhaps we can do that another way? As it is, the global chaos gain is a horrible player experience.
Changing it to be single-city is a strategic investment that is potentially punishing, but it means players who don't have sleeves yet have a method to generate contracts and operations that doesn't brick their run. Basically the global-hit limits/punishes the wrong people. It's not powerful enough to be worth it if you're just trying to clear a node, and it does nothing to slow people down who are int-farming |
Beating a node with Bladeburner is time gated and stat gated - you need time to generate enough contracts / operations to reach enough rank for the later blackops, and you need stats to be able to actually complete those tasks. Tools have been added to ease the time gate - Incite Violence and the sleeve "Infiltrate Synthoids" task, but I don't think it's healthy for the game to erode the time gate too much. Incite violence is supposed to have a real cost. If it's going to only raise chaos in one city, then there needs to be some tradeoff, a reason to not just ignore chaos management and concentrate all the chaos in one bad city. For instance the task could become less effective if chaos is higher in the current city. |
After a day of lots of discussion, a consensus seems to be not to adjust IV to only affect 1 city, but that it should be a flat scaling (perhaps +10 to all cities), plus have a chance to trigger a random event. Potentially, it's been suggested that Diplomacy receive an early-game buff as well, perhaps a flat amount plus the scaling (maybe -2). Getting rid of the scaling factor solves the exponential growth which leads to bricked/bitflumed circumstances:
As well, adding a small flat amount to the Diplomacy action will help the player at lower charisma, without making it busted OP. Otherwise, even at 1000 charisma, chaos in the 50-100 range will only recover 1-2 points per minute. Before I get to coding it, how does this sound? |
Chiming in with a late addition from the discussion that CatLover has requested some time to look at the mechanics too, so probably we can chill on this for a few days and resume discussion later. (As I suspected, even the "simple" things are not always simple or fast XD) |
I vote to merge the refactor and split the functional change to a new PR. I would like to test cover this separately to make it easier to reason about. |
Oh yeah, we never really got back to this. Also, I forgot there was other refactor here (although it's mostly incidental.) |
Adjust Bladeburner IV action to affect a single city
This PR makes the Bladeburner general action "Incite Violence" affect only the current city, rather than all cities on the map. This change opens up potential room for strategic behavior from the player, while removing a trap that can very easily lead to ruining an entire bitnode mid-play with very little effort or guidance.
Context
Choice of player city is a core aspect of Bladeburner, where anything that affects any city, affects the player's Bladeburner HQ city. Typically, for most actions, you want to choose a city with higher populations, because they make your tasks easier; and due to Chaos penalties, you typically need to perform Diplomacy actions any time Chaos approaches 50, otherwise it becomes increasingly difficult to progress.
The Incite Violence general action has the stated goal of providing new contracts for the player, at the expense of increased Chaos. However, unlike all other Bladeburner actions, right now this affects all cities. This is counter-intuitive and non-obvious to the user, as well as being non-visible to the player unless they have scripted a dashboard for themself using the Bladeburner API (which is not immediately available).
Current implementation:
chaos += 10
is more drastic already than any other player actionThis leads to the following results:
For comparison with other related mechanics:
+ 1.00 + getRandomIntInclusive(5, 20) / 100
from synthoid riots random event, at 20% chance+ 0.01
flat gain from Sting operations+ 1-5%
percentage gain from Raid operations+/- up to 5%
from Assassination operations+ 0.02
from Bounty Hunter contracts+ 0.04
from Retirement contractsIncite Violence has both a flat gain that is 250x as powerful as the next most disruptive player event, and a minimum +10% scaling that is more than double the Raid operations, with no ceiling. Meanwhile, the benefit is a constant, non-scaling amount of change.
Solution
The changes made at time of writing remove the global factors to the city population gains.
Linked issues
Per Discord conversation:
Conversation ensues from that point.
Documentation
Clarity is added to the general action in-game description.
Testing
npm run format
andnpm run lint
before pushing.After changes, before inciting violence:
After changes, after 1 incite violence:
After changes, after getting up and going to the restroom and coming straight back:
Before the changes, this affected all cities in the game equally.