feat(balance): sanity-check EXP gain of several activities #5696
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Checklist
Required
main
so it won't cause conflict when updatingmain
branch later.Optional
Purpose of change
This aims to tackle several cases where the EXP gain of certain actions pale in comparison to craft-grinding and book-grinding, when I want to generally encourage gaining skills by actually using them during gameplay.
Describe the solution
complete_construction
to a value closer to the scaling used by crafting, dividing the duration of construction by 10 minutes (crafting seems to divide by 5, so should scale up at half the rate of crafting) instead of 30 to get the EXP multiplier.construct::done_deconstruct
that give you electronics EXP for taking apart a very narrow specific range of terrain, and instead have it grant it for any deconstruction where the furniture being removed hasactive
info, so any grid furniture will give electronics EXP when salvaged.iexamine::practice_survival_while_foraging
to not penalize the player's EXP for having more survival skill, since EXP per level ALREADY goes up exponentially!repair_item_actor::repair
is determined. Instead of 1 + half the item's repair difficulty, it now uses the item's repair difficulty as-isv (std::max
'd against 1 so that level-zero items don't give nothing).heal_actor::finish_using
so that the EXP gain from using healing items values bandage and disinfectant stacks at the same 3x multiplier it values the old instant-healing, instead of only a 2x multiplier.calc_xp_gain
to multiply the EXP gain formula by the skill requirement, so that more advanced installation and repair will grant proportionately more EXP.Describe alternatives you've considered
Screaming.
Testing
std::max
in the function means the actual before value was probably 8 and got bumped up to a minimum of 9.Additional context