mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 12:41:09 +01:00
Fitness rebalance and improvements - mood, fireman carry, and longer workouts (#79584)
## About The Pull Request So after getting feedback on fitness I've decided to make some balance changes: - ~~Every level of fitness now increases max hp. At max legendary fitness, all the hp bonuses combined results in a total of +25 max hp~~ - Fitness now decreases the time it takes to firemany carry by 0.33 seconds per level. (At max fitness, this means a decrease of 2 seconds) - Exercise status effect triggers the exercise mood event and goes away when the exercise status effect is gone - The better your fitness level, the more happiness you gain from the mood event - Decreased the fitness timers and effects by half and tweaked a few other values - Increased the nutrition cost of working out - Removed doubles metabolism exercise effect I'd also like this test merged to see if anymore minor tweaks need to be made. ## Why It's Good For The Game Fitness effects on gameplay were pretty underwhelming. This was deliberate since there is a concern about prisoners being able to abuse it in quite a lot of scenarios. ~~Adding a small boost to max hp is nice given that the downside is a bigger target.~~ Another problem was that the double metabolism rate resulted in a lot of the diet effects being metabolised before you could convert them into exercise gains. So this was removed. People would also hit their bench max rather quickly and then spend a long duration sleeping. Ideally I wanted people to spend more time working out than sleeping, so I halved the duration values so it takes them longer to achieve maxxing out. ## Changelog 🆑 balance: Fitness level decreases the time it takes to firemany carry someone. Fitness level determines how much of a positive mood the workout grants. Working out is now more difficult and requires more nutrition. balance: Exercise no longer triggers double metabolism. /🆑 --------- Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
@@ -51,8 +51,9 @@
|
||||
if(istype(boxing_gloves))
|
||||
stamina_exhaustion = 2
|
||||
|
||||
if(!iscarbon(user))
|
||||
return
|
||||
user.adjustStaminaLoss(stamina_exhaustion)
|
||||
user.add_mood_event("exercise", /datum/mood_event/exercise)
|
||||
user.mind?.adjust_experience(/datum/skill/fitness, 0.1)
|
||||
user.apply_status_effect(/datum/status_effect/exercised)
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define WORKOUT_XP 5
|
||||
#define EXERCISE_STATUS_DURATION 20 SECONDS
|
||||
#define EXERCISE_STATUS_DURATION 15 SECONDS
|
||||
#define SAFE_DRUNK_LEVEL 39
|
||||
|
||||
/obj/structure/weightmachine
|
||||
@@ -22,6 +22,9 @@
|
||||
///message when drunk user fails to use the machine
|
||||
var/drunk_message = "You try for a new record and pull through! Through a muscle that is."
|
||||
|
||||
// the total reps you can do before you hit stamcrit based on fitness level
|
||||
var/static/list/total_workout_reps = list(3, 4, 4, 5, 6, 6, 7)
|
||||
|
||||
///List of messages picked when using the machine.
|
||||
var/static/list/more_weight = list(
|
||||
"pushing it to the limit!",
|
||||
@@ -127,12 +130,12 @@
|
||||
else
|
||||
user.balloon_alert(user, pick(finished_message))
|
||||
|
||||
user.adjust_nutrition(-3) // feel the burn
|
||||
user.add_mood_event("exercise", /datum/mood_event/exercise)
|
||||
user.adjust_nutrition(-5) // feel the burn
|
||||
|
||||
// remember the real xp gain is from sleeping after working out
|
||||
user.mind.adjust_experience(/datum/skill/fitness, WORKOUT_XP)
|
||||
user.apply_status_effect(/datum/status_effect/exercised, EXERCISE_STATUS_DURATION)
|
||||
if(iscarbon(user))
|
||||
// remember the real xp gain is from sleeping after working out
|
||||
user.mind.adjust_experience(/datum/skill/fitness, WORKOUT_XP)
|
||||
user.apply_status_effect(/datum/status_effect/exercised, EXERCISE_STATUS_DURATION)
|
||||
|
||||
end_workout()
|
||||
|
||||
@@ -141,6 +144,9 @@
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
icon_state = initial(icon_state)
|
||||
|
||||
/// roughly 8 seconds for 1 workout rep
|
||||
#define WORKOUT_LENGTH 8
|
||||
|
||||
/obj/structure/weightmachine/process(seconds_per_tick)
|
||||
if(!has_buckled_mobs())
|
||||
end_workout()
|
||||
@@ -149,15 +155,22 @@
|
||||
flick_overlay_view(workout, 0.8 SECONDS)
|
||||
flick("[base_icon_state]-u", src)
|
||||
var/mob/living/user = buckled_mobs[1]
|
||||
animate(user, pixel_y = pixel_shift_y, time = 4)
|
||||
animate(user, pixel_y = pixel_shift_y, time = WORKOUT_LENGTH * 0.5)
|
||||
playsound(user, 'sound/machines/creak.ogg', 60, TRUE)
|
||||
animate(pixel_y = user.base_pixel_y, time = 4)
|
||||
animate(pixel_y = user.base_pixel_y, time = WORKOUT_LENGTH * 0.5)
|
||||
|
||||
var/stamina_exhaustion = 5 - (user.mind.get_skill_level(/datum/skill/fitness) * 0.5)
|
||||
if(!iscarbon(user) || isnull(user.mind))
|
||||
return TRUE
|
||||
// the amount of workouts you can do before you hit stamcrit
|
||||
var/workout_reps = total_workout_reps[user.mind.get_skill_level(/datum/skill/fitness)]
|
||||
// total stamina drain of 1 workout calculated based on the workout length
|
||||
var/stamina_exhaustion = FLOOR(user.maxHealth / workout_reps / WORKOUT_LENGTH, 0.1)
|
||||
user.adjustStaminaLoss(stamina_exhaustion * seconds_per_tick)
|
||||
|
||||
return TRUE
|
||||
|
||||
#undef WORKOUT_LENGTH
|
||||
|
||||
/**
|
||||
* Weight lifter subtype
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user