Permanent Fat changes

Permanent fat variable removed. Instead, the permanent WG pref, if enabled, now will save your character's real fatness at roundend or cryo as your new starting weight. Starting weight can still be tweaked from 0 to 8000 should you want to lose some of it.
Tweaked galbanic compound to behave better while addicted.
Macerinic solution can now be overdosed (50u). Overdosing causes your character to get hungry but also increases your weight loss rate up to 5
This commit is contained in:
Alphas00
2024-09-10 15:06:37 +02:00
parent e0c82546c7
commit 5ef1b7b466
5 changed files with 20 additions and 50 deletions
-36
View File
@@ -11,8 +11,6 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/crew_quarters,
var/fat_hiders = list()
//The actual value a mob is at. Is equal to fatness if fat_hider is FALSE.
var/fatness_real = 0
//Permanent fatness, which sticks around between rounds
var/fatness_perma = 0
///At what rate does the parent mob gain weight? 1 = 100%
var/weight_gain_rate = 1
//At what rate does the parent mob lose weight? 1 = 100%
@@ -51,12 +49,10 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/crew_quarters,
fatness = fatness_real //Make their current fatness their real fatness
hiders_apply() //Check and apply hiders
perma_apply() //Check and apply for permanent fat
xwg_resize() //Apply XWG
return TRUE
/mob/living/carbon/fully_heal(admin_revive)
fatness = 0
fatness_real = 0
@@ -142,42 +138,10 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/crew_quarters,
if(client?.prefs?.max_weight) //Check their prefs
fatness = min(fatness, (client?.prefs?.max_weight - 1)) //And make sure it's not above their preferred max
/mob/living/carbon/proc/perma_apply()
if(fatness_perma > 0) //Check if we need to make calcs at all
fatness = fatness + fatness_perma //Add permanent fat to fatness
if(client?.prefs?.max_weight) //Check for max weight prefs
fatness = min(fatness, (client?.prefs?.max_weight - 1)) //Apply max weight prefs
/mob/living/carbon/proc/adjust_perma(adjustment_amount, type_of_fattening = FATTENING_TYPE_ITEM)
if(!client)
return FALSE
if(!client.prefs.weight_gain_permanent)
return FALSE
if(!adjustment_amount || !type_of_fattening)
return FALSE
if(!HAS_TRAIT(src, TRAIT_UNIVERSAL_GAINER) && client?.prefs)
if(!check_weight_prefs(type_of_fattening))
return FALSE
var/amount_to_change = adjustment_amount
if(adjustment_amount > 0)
amount_to_change = amount_to_change * weight_gain_rate
else
amount_to_change = amount_to_change * weight_loss_rate
fatness_perma += amount_to_change
fatness_perma = max(fatness_perma, MINIMUM_FATNESS_LEVEL)
if(client?.prefs?.max_weight) // GS13
fatness_perma = min(fatness_perma, (client?.prefs?.max_weight - 1))
/mob/living/carbon/human/handle_breathing(times_fired)
. = ..()
fatness = fatness_real
hiders_apply()
perma_apply()
xwg_resize()
/mob/living/carbon/proc/xwg_resize()
@@ -1,6 +1,8 @@
/datum/preferences/proc/perma_fat_save(character)
if(iscarbon(character))
var/mob/living/carbon/C = character
if(!C.client.prefs.weight_gain_permanent)
return FALSE
if(!path)
return 0
if(world.time < savecharcooldown)
@@ -15,4 +17,4 @@
return 0
S.cd = "/character[default_slot]"
WRITE_FILE(S["permanent_fat"] , C.fatness_perma)
WRITE_FILE(S["starting_weight"] , C.fatness_real)
@@ -1,5 +1,3 @@
///datum/reagent/sizechem
//Reagent
/datum/reagent/fermi_fat
name = "Galbanic Compound"
@@ -55,7 +53,6 @@
if(!iscarbon(M))
return..()
M.adjust_fatness(30, FATTENING_TYPE_CHEM)
M.adjust_perma(1, FATTENING_TYPE_CHEM)
..()
. = 1
@@ -65,7 +62,6 @@
return..()
var/mob/living/carbon/C = M
C.adjust_fatness(20, FATTENING_TYPE_CHEM)
C.adjust_perma(1, FATTENING_TYPE_CHEM)
..()
/datum/reagent/fermi_fat/overdose_start(mob/living/M)
@@ -83,7 +79,7 @@
C.adjust_fatness(1, FATTENING_TYPE_CHEM)
C.fullness = max(0, C.fullness-1)
C.nutrition = max(0, C.nutrition-1)
if(addiction_mults == 0)
if(addiction_mults < 1)
C.nutri_mult += 0.5
C.weight_gain_rate += 0.25
addiction_mults = 1
@@ -99,7 +95,7 @@
C.adjust_fatness(2, FATTENING_TYPE_CHEM)
C.fullness = max(0, C.fullness-2)
C.nutrition = max(0, C.nutrition-2)
if(addiction_mults <= 1)
if(addiction_mults < 2)
C.nutri_mult += 0.5
C.weight_gain_rate += 0.25
addiction_mults = 2
@@ -115,7 +111,7 @@
C.adjust_fatness(3, FATTENING_TYPE_CHEM)
C.fullness = max(0, C.fullness-3)
C.nutrition = max(0, C.nutrition-3)
if(addiction_mults <= 2)
if(addiction_mults < 3)
C.nutri_mult += 0.5
C.weight_gain_rate += 0.25
addiction_mults = 3
@@ -131,7 +127,7 @@
C.adjust_fatness(4, FATTENING_TYPE_CHEM)
C.fullness = max(0, C.fullness-4)
C.nutrition = max(0, C.nutrition-4)
if(addiction_mults <= 3)
if(addiction_mults < 4)
C.nutri_mult += 0.5
C.weight_gain_rate += 0.25
addiction_mults = 4
@@ -143,6 +139,7 @@
C.weight_gain_rate = max(0,11, 0.25 * addiction_mults)
return
//Reagent
/datum/reagent/fermi_slim
name = "Macerinic Solution"
description = "A solution with unparalleled obesity-solving properties. One of the few things known to be capable of removing galbanic fat."
@@ -152,6 +149,8 @@
metabolization_rate = REAGENTS_METABOLISM / 4
can_synth = FALSE
overdose_threshold = 50
//Reaction
/datum/chemical_reaction/fermi_slim
name = "FermiSlim"
@@ -181,6 +180,14 @@
if(!iscarbon(M))
return..()
M.adjust_fatness(-50, FATTENING_TYPE_CHEM)
M.adjust_perma(-5, FATTENING_TYPE_CHEM)
..()
. = 1
/datum/reagent/fermi_slim/overdose_process(mob/living/M)
if(!iscarbon(M))
return..()
var/mob/living/carbon/C = M
C.fullness = max(0, C.fullness-5)
C.nutrition = max(0, C.nutrition-5)
C.weight_loss_rate = min(5, C.weight_loss_rate+0.01)
..()