oracle no longer requests items that are far away in the research tree
About the PR
The Oracle now only requests items from these categories:
- unlocked techs
- "available" techs -- techs in the current research tier (the ones that show up as "researchable technologies" in the console)
- ~~techs in the next research tier, but only if we're very close to reaching that tier (specifically: the research discipline only has 1 tech remaining to research in the current tier)~~
In other words: the Oracle will no longer request these difficult items that could require 50k-100k research points to reach:
- items from a tech that is 2 tiers up (i.e. we're tier 1 now, and the item is in tier 3)
- items from a tech that is 1 tier up, ~~but we've only recently reached the current tier (e.g., the round just started, and the item is in tier 2)~~
Why / Balance
There are already quite a few barriers to completing oracle quests:
- botany quests can be hit or miss in general; mutated botany quests are very difficult (almost impossible) if botany has not already happened to start it
- getting materials for items can be difficult
- the refresh period on the oracle is long, so "impossible" (extremely hard) items block the oracle for quite a long time
- research
This PR lessens the final barrier - research - without entirely removing it. You still have to spend research points for these oracle quests, and in that process, you can still get quite unlucky with your research rolls (you still might need to spend 10-30k points or more to reach a tech in the current tier).
Why/Balance for the underlying motivation of this PR: "oracle quests should be easier"
- Psionics and bluespace technologies are two of the most unique features people see in DeltaV (at least compared to vanilla/Wizden). They should be a little more common, and the Oracle is a great way to get them -- the Chaplain or Mysta is often involved in administering Lotophagic Oil; it's an opportunity to RP discussions about the noosphere a bit.
- Code Whites are a little overly common at the moment, and mindbreaking psionics is the most viable approach for lowering glimmer right now (50-70 instant reduction). More psionics means more volunteers for mindbreaking, so this indirectly helps with the code white problem. (especially alongside https://github.com/DeltaV-Station/Delta-v/pull/4429 )
Technical details
Primarily just added an if-statement around the "add tech's items to oracle pool" step, checking the conditions:
- add all techs if no research servers are present
- add a tech if it's unlocked
- add a tech if it's available
- ~~add a tech if both "the tech's tier == current research tier + 1" AND "techs remaining in current tier <= 1"~~
The newly added-function (for the last condition) borrowed the logic from the function directly above it.
Media
This PR is hard to demonstrate.
I primarily tested it with log statements in the changed code area, showing which portion of the added if-statement was hit / the variables used in the if-statement.
As an example:
- Roundstart: tier 2 medical technology is not close to being reached
- Researched THREE out of FOUR tier 1 medical technologies -- we are nearing tier 2:
- Researched ALL FOUR tier 1 medical technologies -- we are now in tier 2:
Requirements
- [X] I have tested all added content and changes.
- [X] I have added media to this PR or it does not require an ingame showcase.
Breaking changes
Changelog
:cl:
- tweak: The Oracle will no longer request items that are "very" far away from being researched.
this is peam, can't wait for the chaplain's job to actually be awesome and cool :pray:
neat
@DeltaV-Station/direction @Proxysseia Direction review required for this one
Is this still being worked on? Changes have been requested
@TehFlaminTaco this is ready for re-review
@TehFlaminTaco ready for re-review.
Removed the whole "allow oracle to request higher tiers based on how many techs away we are" thing. I'll keep my branch open; some passionate coder can always pick it up at a later time.
@Toby222 ready for re-review
NukeOps flaky test failure, retriggering