mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-12 00:20:55 +01:00
Permafat restored, cryo bug fix
Bug that caused cryopods to not teleport afk people fixed Fixed issues regarding saving persistent fat or permanent weight while in another player's character
This commit is contained in:
@@ -11,6 +11,8 @@ 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%
|
||||
@@ -49,6 +51,7 @@ 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
|
||||
@@ -138,10 +141,42 @@ 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,7 +1,36 @@
|
||||
/mob/living/carbon
|
||||
var/savekey
|
||||
var/ckeyslot
|
||||
|
||||
/mob/living/carbon/proc/perma_fat_save(mob/living/carbon/character)
|
||||
var/key = savekey
|
||||
if(!key)
|
||||
return FALSE
|
||||
var/filename = "preferences.sav"
|
||||
var/path = "data/player_saves/[key[1]]/[key]/[filename]"
|
||||
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(!path)
|
||||
return FALSE
|
||||
|
||||
if(character.ckeyslot)
|
||||
var/slot = character.ckeyslot
|
||||
S.cd = "/character[slot]"
|
||||
|
||||
var/persi
|
||||
S["weight_gain_persistent"] >> persi
|
||||
if(persi)
|
||||
WRITE_FILE(S["starting_weight"] , character.fatness_real)
|
||||
var/perma
|
||||
S["weight_gain_permanent"] >> perma
|
||||
if(S["weight_gain_permanent"])
|
||||
WRITE_FILE(S["permanent_fat"] , character.fatness_perma)
|
||||
|
||||
/*
|
||||
/datum/preferences/proc/perma_fat_save(character)
|
||||
if(iscarbon(character))
|
||||
var/mob/living/carbon/C = character
|
||||
if(!C.client.prefs.weight_gain_permanent)
|
||||
if(!C.client.prefs.weight_gain_permanent && !C.client.prefs.weight_gain_persistent)
|
||||
return FALSE
|
||||
if(!path)
|
||||
return 0
|
||||
@@ -17,4 +46,8 @@
|
||||
return 0
|
||||
S.cd = "/character[default_slot]"
|
||||
|
||||
WRITE_FILE(S["starting_weight"] , C.fatness_real)
|
||||
if(C.client.prefs.weight_gain_persistent)
|
||||
WRITE_FILE(S["starting_weight"] , C.fatness_real)
|
||||
if(C.client.prefs.weight_gain_permanent)
|
||||
WRITE_FILE(S["permanent_fat"] , C.fatness_perma)
|
||||
*/
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
var/blueberry_inflation = FALSE
|
||||
///Extreme weight gain
|
||||
var/weight_gain_extreme = FALSE
|
||||
///Persistant fatness
|
||||
var/weight_gain_persistent = FALSE
|
||||
///Permanent weight gain
|
||||
var/weight_gain_permanent = FALSE
|
||||
/// At what weight will you start to get stuck in airlocks?
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
if(!iscarbon(M))
|
||||
return..()
|
||||
M.adjust_fatness(30, FATTENING_TYPE_CHEM)
|
||||
M.adjust_perma(1, FATTENING_TYPE_CHEM)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
@@ -62,6 +63,7 @@
|
||||
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)
|
||||
@@ -179,7 +181,8 @@
|
||||
/datum/reagent/fermi_slim/on_mob_life(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
return..()
|
||||
M.adjust_fatness(-50, FATTENING_TYPE_CHEM)
|
||||
M.adjust_fatness(-50, FATTENING_TYPE_WEIGHT_LOSS)
|
||||
M.adjust_perma(-5, FATTENING_TYPE_WEIGHT_LOSS)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
|
||||
@@ -6,10 +6,11 @@
|
||||
|
||||
//GS13 Process permanent fat
|
||||
for(var/mob/m in GLOB.player_list)
|
||||
if(m.client.prefs)
|
||||
if(m.client.ckey)
|
||||
m.client.prefs.perma_fat_save(m)
|
||||
|
||||
if(iscarbon(m))
|
||||
var/mob/living/carbon/C = m
|
||||
if(C)
|
||||
C.perma_fat_save(C)
|
||||
|
||||
gather_antag_data()
|
||||
record_nuke_disk_location()
|
||||
var/json_file = file("[GLOB.log_directory]/round_end_data.json")
|
||||
|
||||
@@ -105,9 +105,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
//GS13
|
||||
var/starting_weight = 0 //how thicc you wanna be at start
|
||||
var/permanent_fat = 0 //If it isn't the consequences of your own actions
|
||||
var/wg_rate = 0.5
|
||||
var/wl_rate = 0.5
|
||||
var/voice = "human"
|
||||
var/ckeyslot
|
||||
|
||||
//HS13 jobs
|
||||
var/sillyroles = TRUE //for clown and mime
|
||||
@@ -1076,7 +1078,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "This preference functions similar to the one before but allows for items with more drastic effects. <b>Do not enable this if you aren't okay with more drastic things happening to your character.</b><BR>"
|
||||
dat += "<b>Extreme Fatness Vulnerability:</b><a href='?_src_=prefs;preference=extreme_fatness_vulnerable'>[extreme_fatness_vulnerable == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
dat += "<b>Extreme Weight Gain (Sprite Size scales with weight):</b><a href='?_src_=prefs;preference=weight_gain_extreme'>[weight_gain_extreme == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
dat += "<b>Weight Gain Permanent (endround/cryo weight becomes your new start weight):</b><a href='?_src_=prefs;preference=weight_gain_permanent'>[weight_gain_permanent == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
dat += "<b>Persistent Fat (endround/cryo weight becomes your new start weight):</b><a href='?_src_=prefs;preference=weight_gain_persistent'>[weight_gain_persistent == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
dat += "<b>Permanent Weight (hard to remove and persistent weight):</b><a href='?_src_=prefs;preference=weight_gain_permanent'>[weight_gain_permanent == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
|
||||
dat += "<h2>GS13 Helplessness Preferences</h2>"
|
||||
dat += "<b>Please be careful when using these mechanics as not to use them in a way that negatively impacts those around you. If you are seriously needed for something, especially something station critical, do not use these as an excuse to ignore your duty.</b><BR><BR>"
|
||||
@@ -2666,6 +2669,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
weight_gain_nanites = !weight_gain_nanites
|
||||
if("weight_gain_extreme")
|
||||
weight_gain_extreme = !weight_gain_extreme
|
||||
if("weight_gain_persistent")
|
||||
weight_gain_persistent = !weight_gain_persistent
|
||||
if("weight_gain_permanent")
|
||||
weight_gain_permanent = !weight_gain_permanent
|
||||
if("noncon_weight_gain")
|
||||
@@ -3000,8 +3005,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
//GS13
|
||||
character.fatness = starting_weight
|
||||
character.fatness_real = starting_weight
|
||||
if(weight_gain_permanent)
|
||||
character.fatness_perma = permanent_fat
|
||||
character.weight_gain_rate = wg_rate
|
||||
character.weight_loss_rate = wl_rate
|
||||
character.savekey = clientckey
|
||||
character.ckeyslot = ckeyslot
|
||||
|
||||
character.gender = gender
|
||||
character.age = age
|
||||
|
||||
@@ -298,6 +298,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
default_slot = slot
|
||||
WRITE_FILE(S["default_slot"] , slot)
|
||||
|
||||
ckeyslot = slot
|
||||
S.cd = "/character[slot]"
|
||||
var/needs_update = savefile_needs_update(S)
|
||||
if(needs_update == -2) //fatal, can't load any data
|
||||
@@ -333,6 +334,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["age"] >> age
|
||||
S["body_size"] >> body_size
|
||||
S["starting_weight"] >> starting_weight
|
||||
S["permanent_fat"] >> permanent_fat
|
||||
S["wg_rate"] >> wg_rate
|
||||
S["wl_rate"] >> wl_rate
|
||||
S["hair_color"] >> hair_color
|
||||
@@ -494,6 +496,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["weight_gain_nanites"] >> weight_gain_nanites
|
||||
S["weight_gain_weapons"] >> weight_gain_weapons
|
||||
S["weight_gain_extreme"] >> weight_gain_extreme
|
||||
S["weight_gain_persistent"] >> weight_gain_persistent
|
||||
S["weight_gain_permanent"] >> weight_gain_permanent
|
||||
S["wg_rate"] >> wg_rate
|
||||
S["wl_rate"] >> wl_rate
|
||||
@@ -713,6 +716,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["weight_gain_chems"], weight_gain_chems)
|
||||
WRITE_FILE(S["weight_gain_weapons"], weight_gain_weapons)
|
||||
WRITE_FILE(S["weight_gain_extreme"], weight_gain_extreme)
|
||||
WRITE_FILE(S["weight_gain_persistent"], weight_gain_persistent)
|
||||
WRITE_FILE(S["weight_gain_permanent"], weight_gain_permanent)
|
||||
WRITE_FILE(S["wg_rate"], wg_rate)
|
||||
WRITE_FILE(S["wl_rate"], wl_rate)
|
||||
|
||||
@@ -249,9 +249,10 @@
|
||||
var/mob/living/mob_occupant = occupant
|
||||
|
||||
//GS13 Process permanent fat
|
||||
if(mob_occupant.client.prefs)
|
||||
if(mob_occupant.client.ckey)
|
||||
mob_occupant.client.prefs.perma_fat_save(mob_occupant)
|
||||
if(iscarbon(mob_occupant))
|
||||
var/mob/living/carbon/C = mob_occupant
|
||||
if(C)
|
||||
C.perma_fat_save(C)
|
||||
|
||||
//Update any existing objectives involving this mob.
|
||||
for(var/datum/objective/O in GLOB.objectives)
|
||||
|
||||
Reference in New Issue
Block a user