mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 00:29:02 +01:00
Viro Rework Tweaks (Buffed Natural Healing, Slower Progression, Stealth Respects Severity) (#83459)
## About The Pull Request  what it says on the tin. we're in virology rework season again #79854 makes natural healing enough for people to kick the teeth out of bad viruses without chem. (still needs exact testing to dial in, but ideally, chems will be a buff but no longer a mainstay. #83453 will help, and things like fungal TB will be unchanged.) makes viruses progress a bit slower across the board - this was part of why you could have a bad virus shoot up to stage 5 from having been at stage 1 out of nowhere, even after having mostly fought it off. this is probabilistic, but the prob is lower now. makes viruses only hide if their stealth stat is higher than their severity. if you want your virus to be sneaky, you need to spec into hiding it and run fewer symptoms (#83458 will fuck with this if implemented - stay tuned.) ## Why It's Good For The Game people don't like getting griefed by one-sided mechanics. while i think i got some of the way there in #79854, the felt impact of that PR was undercut by me being conservative with the values for what players' actual choices outside of chem could do and SD still existing. I'm hoping to go back and fix that first one since thankfully @Time-Green is working on #83453. Logic remains much the same as in https://hackmd.io/@Higgin/HJljdBuNp - I am leaving this as a draft until I've had at least a few more tests on the values, but I'd like to see this TM'd in a round or two with advanced diseases floating around if possible. edit to add some clarification: if you do nothing, I balanced the worst viruses to be about a 50% chance of death. if you do the right thing, it should work 100% of the time or close to it. the problem I'm trying to address here is that the second one was nowhere near 100%. ## Changelog 🆑 balance: Viruses now self-heal much more effectively with good mood, sleep, food, and spaceacillin. balance: Viruses now punish being hungry more. Stay fed! balance: Spaceacillin now gives 200 ticks of symptom resistance, declining over time, rather than 100. balance: Viruses now progress slightly slower. balance: Viruses now only hide if their stealth stat is greater than their total computed severity. /🆑
This commit is contained in:
@@ -81,28 +81,28 @@ DEFINE_BITFIELD(spread_flags, list(
|
||||
//// Adjust to make it faster or slower to cure once the virus has reached its peak.
|
||||
#define DISEASE_PEAKED_RECOVERY_MULTIPLIER 1.2
|
||||
/// Slowdown Recovery Bonus - set this to the maximum extra chance per tick you want people to get to recover from spaceacillin or other slowdown/virus resistance effects
|
||||
#define DISEASE_SLOWDOWN_RECOVERY_BONUS 1
|
||||
/// Slowdown Recovery Bonus Duration - set this to the maximum # of cycles you want things that cause slowdown/virus resistance to be able to add a bonus up to DISEASE_SLOWDOWN_RECOVERY_BONUS.______qdel_list_wrapper(list/L)
|
||||
#define DISEASE_SLOWDOWN_RECOVERY_BONUS 3
|
||||
/// Slowdown Recovery Bonus Duration - set this to the maximum # of cycles you want things that cause slowdown/virus resistance to be able to add a bonus up to DISEASE_SLOWDOWN_RECOVERY_BONUS.
|
||||
//// Scales down linearly over time.
|
||||
#define DISEASE_SLOWDOWN_RECOVERY_BONUS_DURATION 100
|
||||
#define DISEASE_SLOWDOWN_RECOVERY_BONUS_DURATION 200
|
||||
/// Negative Malnutrition Recovery Penalty
|
||||
//// Flat penalty to recovery chance if malnourished or starving
|
||||
#define DISEASE_MALNUTRITION_RECOVERY_PENALTY 1.5
|
||||
#define DISEASE_MALNUTRITION_RECOVERY_PENALTY 3
|
||||
/// Satiety Recovery Multiplier - added chance to recover based on positive satiety
|
||||
//// Multiplier of satiety/max_satiety if satiety is positive or zero. Increase to make satiety more valuable, decrease for less.
|
||||
#define DISEASE_SATIETY_RECOVERY_MULTIPLIER 1
|
||||
#define DISEASE_SATIETY_RECOVERY_MULTIPLIER 3
|
||||
/// Good Sleeping Recovery Bonus - additive benefits for various types of good sleep (blanket, bed, darkness, pillows.)
|
||||
//// Raise to make each factor add this much chance to recover.
|
||||
#define DISEASE_GOOD_SLEEPING_RECOVERY_BONUS 0.2
|
||||
#define DISEASE_GOOD_SLEEPING_RECOVERY_BONUS 0.6
|
||||
/// Sleeping Recovery Multiplier - multiplies ALL recovery chance effects by this amount.
|
||||
//// Set to 1 for no effect on recovery chances from sleeping.
|
||||
#define DISEASE_SLEEPING_RECOVERY_MULTIPLIER 2
|
||||
#define DISEASE_SLEEPING_RECOVERY_MULTIPLIER 6
|
||||
/// Final Cure Chance Multiplier - multiplies the disease's cure chance to get the probability of moving from stage 1 to a final cure.
|
||||
//// Must be greater than zero for diseases to self cure.
|
||||
#define DISEASE_FINAL_CURE_CHANCE_MULTIPLIER 3
|
||||
#define DISEASE_FINAL_CURE_CHANCE_MULTIPLIER 6
|
||||
/// Symptom Offset Duration - number of cycles over which sleeping/having spaceacillin or a slowdown effect can prevent symptoms appearing
|
||||
//// Set to maximum # of cycles you want to be able to offset symptoms. Scales down linearly over time.
|
||||
#define DISEASE_SYMPTOM_OFFSET_DURATION 100
|
||||
#define DISEASE_SYMPTOM_OFFSET_DURATION 200
|
||||
|
||||
/// Symptom Frequency Modifier
|
||||
//// Raise to make symptoms fire less frequently, lower to make them fire more frequently. Keep at 0 or above.
|
||||
|
||||
@@ -140,9 +140,9 @@
|
||||
if(affected_mob.mob_mood) // this and most other modifiers below a shameless rip from sleeping healing buffs, but feeling good helps make it go away quicker
|
||||
switch(affected_mob.mob_mood.sanity_level)
|
||||
if(SANITY_LEVEL_GREAT)
|
||||
recovery_prob += 0.2
|
||||
recovery_prob += 0.4
|
||||
if(SANITY_LEVEL_NEUTRAL)
|
||||
recovery_prob += 0.1
|
||||
recovery_prob += 0.2
|
||||
if(SANITY_LEVEL_DISTURBED)
|
||||
recovery_prob += 0
|
||||
if(SANITY_LEVEL_UNSTABLE)
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
/datum/disease/advance/proc/assign_properties()
|
||||
|
||||
if(properties?.len)
|
||||
if(properties["stealth"] >= 2)
|
||||
if(properties["stealth"] >= properties["severity"])
|
||||
visibility_flags |= HIDDEN_SCANNER
|
||||
else
|
||||
visibility_flags &= ~HIDDEN_SCANNER
|
||||
@@ -287,7 +287,7 @@
|
||||
|
||||
spreading_modifier = max(CEILING(0.4 * properties["transmittable"], 1), 1)
|
||||
cure_chance = clamp(7.5 - (0.5 * properties["resistance"]), 1, 10) // can be between 1 and 10
|
||||
stage_prob = max(0.5 * properties["stage_rate"], 1)
|
||||
stage_prob = max(0.3 * properties["stage_rate"], 1)
|
||||
set_severity(round(properties["severity"]), 1)
|
||||
generate_cure(properties)
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user