Just going to add my thoughts to the difficulty discussion;
Let's be fair here - the difficulty curve as it currently is may be skewed towards higher difficulty cities due to the lack of "Tier 3" chosen. I would expect that the advanced species unlocked by the boss fights will have a higher difficulty weight. Which in turn means that cities defended by them should have easier overal modifiers.
As for how difficulty is currently calculated;
I'll add that the damage mitigation calcualtion might actually be a bug. From what I can see in the code, it seems odd to calculate it based on a while loop, when it's effectively a direct mathmatical formula. On the other hand, if it was meant to be done using the current modifier, that'd make more sense. That could result in higher initial mitigation numbers, but it'd also make growth a logrithmic curve, rather than an exponential oscilation.
Additionally, every city is sanity checked for "distinctiveness", making sure there's variety in the point allocation between cities. In practice, once advanced chosen are added this calculation is no longer useful. Each city is required to have a diffrent number of advanced chosen. Each chosen species also counts for thier full difficulty point cost for the diffrences calculation. The required number of diffrences between cities is the sqrt of the loop#*5 - which for loop 3 is going to be ~4. By definition, loop 3 will have one city, with at least 1 more superior chosen than the other city. A total of at least 11 diffrences in difficulty allocation between the cities. A loop of 100 would have a diffrence value of only 22, and by that point each city is going to have a point diffrence of at least 44 just from chosen variety alone. - This could mean that there's a great potential for uniformity in modifiers between your two picks durring a loop that isn't eactly intended.
Now, for balance - An easy or hard mode would be fairly simple to implement within the given context, just reduce or increase the number of points granted per loop. But for a more interactive difficult level - I noticed that there's already code for custom generating your own city, maybe that would be more interesting to play around with. There's also a few adjustments that could be added to make the overal late game difficulty easier, such as curtailing the exponential growth of Luxuries (x1.05 when > 1000, as and example). I think also, reducing the point allocation after certain milestones could also help (beating a boss, -5 score). But, presonally, I think the real difficulty issues new players might have is actually the forsaken. You aren't exactly expected to complete a 30 day city with +1000% luxuries and +50% damage mitigation with a basic commander. Or even a basic forsaken. That scenario requires a good forsaken, with training, to overcome. But building a good team of forsaken is rather... complicated. There's a few guides around, but it's also extreamly luck dependent in terms of what you even have availible in a given run. I've taken to starting with a custom chosen for the Hardworking Publicist slot, due to their rarity. Perhapse the best way to mitigate this difficulty would be to add ways to aquire forsaken, outside of the loop structure?
Expanding on that point:
Let's be fair here - the difficulty curve as it currently is may be skewed towards higher difficulty cities due to the lack of "Tier 3" chosen. I would expect that the advanced species unlocked by the boss fights will have a higher difficulty weight. Which in turn means that cities defended by them should have easier overal modifiers.
As for how difficulty is currently calculated;
- Difficulty points - the currency that is used to "buy" difficulty modifiers.
- Base is Next Loop # X 10
- x1.1 if Splender's Triple Agent is active.
- Current bosses, Victory & Splender, cost 90 points.
- Superior chosen cost 11 points.
- Animalistic/Undead chosen cost 22 points.
- Damage mitigation is complicated, involving two seperate calculations; Initial point alocation, and resulting mitigation factor.
- Mitigation is an inverted value, I.E. the value is stored as % damage dealt, not % damage received
- Base value is 100.
- Initial allocation is 1:15, or 15 "points" of mitigation per 1 point paid.
- Damage mitigation calculation is 1% mitigation per 10 + (100 - current % dealt)/5 allocation. Rounded up.
- So an allocation of 120 (worth 8 score) will yield a base 12% mitigation (1% per 10), or a 10% mitigation if the current mitigation is 10% (1% per 12).
- Essentually; your current cities % damage mitigation makes it cost more score to raise the % damage mitigation in the next city.
- Mitigation is an inverted value, I.E. the value is stored as % damage dealt, not % damage received
- Luxuries (Trauma Resolution Speed): 100x1.1 per score allocation. Effectively 1.1^points, but due to integer rounding this will likely be less than expected. 10 points equalling 256%, not 259.37~%
- Final battle day (Event offset): offset = 1 per 3 points spent. Final day is 50 - (3 x offset). Effectively 1 point per final day reduction, in multiples of 3.
- Event offset controls more than just the final day, it also controls all other events in the story - initial press release, vacation, final battle preperations, as well as the turn requirements for a chosen's introduction.
I'll add that the damage mitigation calcualtion might actually be a bug. From what I can see in the code, it seems odd to calculate it based on a while loop, when it's effectively a direct mathmatical formula. On the other hand, if it was meant to be done using the current modifier, that'd make more sense. That could result in higher initial mitigation numbers, but it'd also make growth a logrithmic curve, rather than an exponential oscilation.
Additionally, every city is sanity checked for "distinctiveness", making sure there's variety in the point allocation between cities. In practice, once advanced chosen are added this calculation is no longer useful. Each city is required to have a diffrent number of advanced chosen. Each chosen species also counts for thier full difficulty point cost for the diffrences calculation. The required number of diffrences between cities is the sqrt of the loop#*5 - which for loop 3 is going to be ~4. By definition, loop 3 will have one city, with at least 1 more superior chosen than the other city. A total of at least 11 diffrences in difficulty allocation between the cities. A loop of 100 would have a diffrence value of only 22, and by that point each city is going to have a point diffrence of at least 44 just from chosen variety alone. - This could mean that there's a great potential for uniformity in modifiers between your two picks durring a loop that isn't eactly intended.
Now, for balance - An easy or hard mode would be fairly simple to implement within the given context, just reduce or increase the number of points granted per loop. But for a more interactive difficult level - I noticed that there's already code for custom generating your own city, maybe that would be more interesting to play around with. There's also a few adjustments that could be added to make the overal late game difficulty easier, such as curtailing the exponential growth of Luxuries (x1.05 when > 1000, as and example). I think also, reducing the point allocation after certain milestones could also help (beating a boss, -5 score). But, presonally, I think the real difficulty issues new players might have is actually the forsaken. You aren't exactly expected to complete a 30 day city with +1000% luxuries and +50% damage mitigation with a basic commander. Or even a basic forsaken. That scenario requires a good forsaken, with training, to overcome. But building a good team of forsaken is rather... complicated. There's a few guides around, but it's also extreamly luck dependent in terms of what you even have availible in a given run. I've taken to starting with a custom chosen for the Hardworking Publicist slot, due to their rarity. Perhapse the best way to mitigate this difficulty would be to add ways to aquire forsaken, outside of the loop structure?
Expanding on that point:
- Forsaken trading - spend influence to aquire new forsaken. Or sell forsaken for more influence.
- Diversions - Side battles that don't count for loop progression, perhapse with unique requirements? (Extreme time constraints, but only one chosen? Or unique win conditions, that don't involve a final battle?)
- Pokemon battle other demon lords for forsaken.
- Forsaken bonus training - Training punisher bonuses via one-off combat encounters.