View Issue Details

IDProjectCategoryLast Update
0027800Heart Of The MachineGameplay IdeaApr 29, 2023 10:32 pm
ReporterChris_McElligottPark Assigned ToDraco18s  
Status resolvedResolutionfixed 
Summary0027800: Todo: AddedDifficultyReason extensions.
DescriptionRight now, this works in the sense that it is increasing a central difficulty score, and telling us about that. However, there is a secondary layer for this which is wholly absent so far, which is "change things based on the number of times each of these has been unlocked."

In other words, there are two parts, and their numbers are unrelated:

1. Estimate of current added difficulty (done).

2. Actual buffs or maluses to various parts of the game, unrelated to the above numbers (not even started).

Please note that each AddedDifficultyReason can be unlocked multiple times, and it should just get multiplicatively harder if that is done.

For these to work, we'll need some of the following things:

1. On cohorts, a new AntiPlayerAggroLevel float. This starts at 0. It should be recalculated every tick, and also should be saved.

2. On AddedDifficultyReason, the ability to increase the AntiPlayerAggroLevel of some group of cohorts -- either those matching a tag, or a specific cohort by ID. The increase amount should be specified in the definition of the sub-object of AddedDifficultyReason (this is much like completion_research_reward on encounter types).

So basically, we have a new <anti_player_aggro_by_tag cohort_tag="SomeTag" amount="0.3" /> and <anti_player_aggro_by_id cohort_id="SomeID" amount="0.2" />, and so on.

3. Every tick on the background thread, it should calculate the AntiPlayerAggroLevel float by adding up all of the entries that are relevant to that cohort, and for ones where there are multiple copies of the same AddedDifficultyReason, it gives us multiply copies of its sub-amounts.

4. Similarly, we should have a new ExtraEncountersAllowed float on cohorts, and that should be increased in the exact same way as the anti-player aggro.

5. Also similarly, we should have a new GeneralEncounterSeverityLevel float on cohorts, which again should be increased in the same way as the two above.

6. Finally, on cohorts, we should have a new UnlockedEncounterGate<string,float> double buffered dictionary. There would be things like "UsesMachineGuns" or something in a new EncounterGateType table, and the added difficulty would be able to say "+5 to UsesMachineGuns on cohorts with this tag or this ID."

7. On the encounter spawn logic areas, a few additions:

7.a. Floor the ExtraEncountersAllowed, and if that's > 0, then let that cohort spawn more encounters than it normally has. This is just in logic, needs no xml.

7.b. In the xml for the spawn conditions for encounters, right now it's able to gate on city story flags. We also need that to be able to gate on "the considering cohort has a GeneralEncounterSeverityLevel of at least [number]".

7.c. In the xml for the spawn conditions for encounters, we also need that to be able to gate on "the considering cohort has a UnlockedEncounterGate X of at least [number]". So, "don't spawn me unless UsesMachineGuns is at least 7," or whatever.

8. In the new ui that you get when clicking the difficulty in the top left of the screen, where is a todo major_todo that has a spot for you to show the various additions from 2, 4, 5, and 6. So we can see what is being increased, where.

9. On the cohort details view, we should also see a list of the new stats and what they are, and if we mouseover individual ones we should see what has contributed to them.
TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
Apr 28, 2023 3:18 pm Chris_McElligottPark New Issue
Apr 28, 2023 3:19 pm Chris_McElligottPark Assigned To => Draco18s
Apr 28, 2023 3:19 pm Chris_McElligottPark Status new => assigned
Apr 28, 2023 3:42 pm Draco18s Status assigned => acknowledged
Apr 29, 2023 10:32 pm Draco18s Status acknowledged => resolved
Apr 29, 2023 10:32 pm Draco18s Resolution open => fixed