mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-16 18:36:54 +01:00
Merge pull request #258 from Alphas00/master
Permanent Fat, Galbanic C, Macerinic S.
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%
|
||||
@@ -48,7 +50,9 @@ 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, XWG is there too
|
||||
hiders_apply() //Check and apply hiders
|
||||
perma_apply() //Check and apply for permanent fat
|
||||
xwg_resize() //Apply XWG
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -134,24 +138,57 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/crew_quarters,
|
||||
/mob/living/carbon/proc/hiders_apply()
|
||||
if(fat_hiders) //do we have any hiders active?
|
||||
var/fatness_over = hiders_calc() //calculate the sum of all hiders
|
||||
fatness = fatness + fatness_over //Then, make their current fatness the sum of their real plus/minus the calculated amount
|
||||
if(client?.prefs?.max_weight) //Check their prefs
|
||||
fatness_over = min(fatness_over, (client?.prefs?.max_weight - 1)) //And make sure it's not above their preferred max
|
||||
fatness = fatness_real + fatness_over //Then, make their current fatness the sum of their real plus/minus the calculated amount
|
||||
if(client?.prefs?.weight_gain_extreme && !normalized)
|
||||
xwg_resize()
|
||||
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()
|
||||
var/xwg_size = sqrt(fatness/FATNESS_LEVEL_BLOB)
|
||||
xwg_size = min(xwg_size, RESIZE_MACRO)
|
||||
xwg_size = max(xwg_size, custom_body_size*0.01)
|
||||
if(xwg_size > RESIZE_BIG) //check if the size needs capping otherwise don't bother searching the list
|
||||
if(!is_type_in_list(get_area(src), GLOB.uncapped_resize_areas)) //if the area is not int the uncapped whitelist and new size is over the cap
|
||||
xwg_size = RESIZE_BIG
|
||||
resize(xwg_size)
|
||||
if(client?.prefs?.weight_gain_extreme && !normalized)
|
||||
var/xwg_size = sqrt(fatness/FATNESS_LEVEL_BLOB)
|
||||
xwg_size = min(xwg_size, RESIZE_MACRO)
|
||||
xwg_size = max(xwg_size, custom_body_size*0.01)
|
||||
if(xwg_size > RESIZE_BIG) //check if the size needs capping otherwise don't bother searching the list
|
||||
if(!is_type_in_list(get_area(src), GLOB.uncapped_resize_areas)) //if the area is not int the uncapped whitelist and new size is over the cap
|
||||
xwg_size = RESIZE_BIG
|
||||
resize(xwg_size)
|
||||
|
||||
/proc/get_fatness_level_name(fatness_amount)
|
||||
if(fatness_amount < FATNESS_LEVEL_FAT)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/datum/preferences/proc/perma_fat_save(character)
|
||||
if(iscarbon(character))
|
||||
var/mob/living/carbon/C = character
|
||||
if(!path)
|
||||
return 0
|
||||
if(world.time < savecharcooldown)
|
||||
if(istype(parent))
|
||||
to_chat(parent, "<span class='warning'>You're attempting to save your character a little too fast. Wait half a second, then try again.</span>")
|
||||
|
||||
return 0
|
||||
|
||||
savecharcooldown = world.time + PREF_SAVELOAD_COOLDOWN
|
||||
var/savefile/S = new /savefile(path)
|
||||
if(!S)
|
||||
return 0
|
||||
S.cd = "/character[default_slot]"
|
||||
|
||||
WRITE_FILE(S["permanent_fat"] , C.fatness_perma)
|
||||
@@ -19,6 +19,8 @@
|
||||
var/blueberry_inflation = FALSE
|
||||
///Extreme weight gain
|
||||
var/weight_gain_extreme = FALSE
|
||||
///Permanent weight gain
|
||||
var/weight_gain_permanent = FALSE
|
||||
/// At what weight will you start to get stuck in airlocks?
|
||||
var/stuckage = FALSE
|
||||
/// At what weight will you start to break chairs?
|
||||
|
||||
@@ -0,0 +1,186 @@
|
||||
///datum/reagent/sizechem
|
||||
|
||||
//Reagent
|
||||
/datum/reagent/fermi_fat
|
||||
name = "Galbanic Compound"
|
||||
description = "A chemical compound derived from lipoifier. Massively increases adipose mass and parts of it become impossible to shed through normal means."
|
||||
color = "#E70C0C"
|
||||
taste_description = "hunger"
|
||||
pH = 7
|
||||
overdose_threshold = 50
|
||||
metabolization_rate = REAGENTS_METABOLISM / 4
|
||||
can_synth = FALSE //DO NOT MAKE THIS SNYTHESIZABLE, THESE CHEMS ARE SUPPOSED TO NOT BE USED COMMONLY
|
||||
|
||||
overdose_threshold = 50
|
||||
addiction_threshold = 100
|
||||
addiction_stage1_end = 10
|
||||
addiction_stage2_end = 30
|
||||
addiction_stage3_end = 60
|
||||
addiction_stage4_end = 100
|
||||
|
||||
var/addiction_mults = 0
|
||||
|
||||
//Reaction
|
||||
/datum/chemical_reaction/fermi_fat
|
||||
name = "FermiFat"
|
||||
id = /datum/reagent/fermi_fat
|
||||
mix_message = "the reaction appears to swell!"
|
||||
required_reagents = list(/datum/reagent/consumable/lipoifier = 0.1, /datum/reagent/medicine/pen_acid = 0.1, /datum/reagent/iron = 0.1)
|
||||
results = list(/datum/reagent/fermi_fat = 0.2)
|
||||
required_temp = 1
|
||||
OptimalTempMin = 700 // Lower area of bell curve for determining heat based rate reactions
|
||||
OptimalTempMax = 740 // Upper end for above
|
||||
ExplodeTemp = 755 // Temperature at which reaction explodes
|
||||
OptimalpHMin = 2 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
|
||||
OptimalpHMax = 3.5 // Higest value for above
|
||||
ReactpHLim = 1 // How far out pH wil react, giving impurity place (Exponential phase)
|
||||
CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
|
||||
CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
|
||||
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = -10 // Temperature change per 1u produced
|
||||
HIonRelease = 0.02 // pH change per 1u reaction (inverse for some reason)
|
||||
RateUpLim = 2 // Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = FALSE // If the chemical explodes in a special way
|
||||
PurityMin = 0.1
|
||||
|
||||
//When added
|
||||
/datum/reagent/fermi_fat/on_mob_add(mob/living/carbon/M)
|
||||
. = ..()
|
||||
if(iscarbon(M))
|
||||
log_game("[M] ckey: [M.key] has ingested fermifat.")
|
||||
|
||||
//Effects
|
||||
/datum/reagent/fermi_fat/on_mob_life(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
return..()
|
||||
M.adjust_fatness(30, FATTENING_TYPE_CHEM)
|
||||
M.adjust_perma(1, FATTENING_TYPE_CHEM)
|
||||
..()
|
||||
. = 1
|
||||
|
||||
//While overdosed
|
||||
/datum/reagent/fermi_fat/overdose_process(mob/living/M)
|
||||
if(!iscarbon(M))
|
||||
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)
|
||||
to_chat(M, "<span class='userdanger'>You took too much [name]! Your body is growing out of control!</span>")
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/overdose, name)
|
||||
return
|
||||
|
||||
/datum/reagent/fermi_fat/addiction_act_stage1(mob/living/M)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_light, name)
|
||||
if(prob(30))
|
||||
var/add_text = pick("You feel pretty hungry.", "You think of [name].", "Your look around for food.", "[name] wasn't so bad.")
|
||||
to_chat(M, "<span class='notice'>[add_text]</span>")
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
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)
|
||||
C.nutri_mult += 0.5
|
||||
C.weight_gain_rate += 0.25
|
||||
addiction_mults = 1
|
||||
return
|
||||
|
||||
/datum/reagent/fermi_fat/addiction_act_stage2(mob/living/M)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_medium, name)
|
||||
if(prob(30))
|
||||
var/add_text = pick("You are very hungry.", "You could go for some [name].", "Your mouth waters.", "Is there any [name] around?")
|
||||
to_chat(M, "<span class='notice'>[add_text]</span>")
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
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)
|
||||
C.nutri_mult += 0.5
|
||||
C.weight_gain_rate += 0.25
|
||||
addiction_mults = 2
|
||||
return
|
||||
|
||||
/datum/reagent/fermi_fat/addiction_act_stage3(mob/living/M)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_severe, name)
|
||||
if(prob(30))
|
||||
var/add_text = pick("You are starving!", "You need some [name]!", "Your stomach growls loudly!.", "You can't stop thinking about [name]")
|
||||
to_chat(M, "<span class='danger'>[add_text]</span>")
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
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)
|
||||
C.nutri_mult += 0.5
|
||||
C.weight_gain_rate += 0.25
|
||||
addiction_mults = 3
|
||||
return
|
||||
|
||||
/datum/reagent/fermi_fat/addiction_act_stage4(mob/living/M)
|
||||
SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "[type]_overdose", /datum/mood_event/withdrawal_critical, name)
|
||||
if(prob(30))
|
||||
var/add_text = pick("You are ravenous!!", "You need [name] NOW!!", "You'd eat ANYTHING!!", "Where is the [name]?!", "Hungry, hungry, so HUNGRY!!", "More, you need more!!")
|
||||
to_chat(M, "<span class='boldannounce'>[add_text]</span>")
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
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)
|
||||
C.nutri_mult += 0.5
|
||||
C.weight_gain_rate += 0.25
|
||||
addiction_mults = 4
|
||||
return
|
||||
|
||||
/datum/reagent/fermi_fat/proc/addiction_remove(mob/living/carbon/C)
|
||||
if(addiction_mults > 0)
|
||||
C.nutri_mult = max(1, 0.5 * addiction_mults)
|
||||
C.weight_gain_rate = max(0,11, 0.25 * addiction_mults)
|
||||
return
|
||||
|
||||
/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."
|
||||
color = "#3b0ce7"
|
||||
taste_description = "thinness"
|
||||
pH = 7
|
||||
metabolization_rate = REAGENTS_METABOLISM / 4
|
||||
can_synth = FALSE
|
||||
|
||||
//Reaction
|
||||
/datum/chemical_reaction/fermi_slim
|
||||
name = "FermiSlim"
|
||||
id = /datum/reagent/fermi_slim
|
||||
mix_message = "the reaction seems to become thinner!"
|
||||
required_reagents = list(/datum/reagent/medicine/lipolicide = 0.1, /datum/reagent/ammonia = 0.1, /datum/reagent/oxygen = 0.1)
|
||||
results = list(/datum/reagent/fermi_slim = 0.2)
|
||||
required_temp = 1
|
||||
OptimalTempMin = 600 // Lower area of bell curve for determining heat based rate reactions
|
||||
OptimalTempMax = 650 // Upper end for above
|
||||
ExplodeTemp = 700 // Temperature at which reaction explodes
|
||||
OptimalpHMin = 10 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
|
||||
OptimalpHMax = 11.5 // Higest value for above
|
||||
ReactpHLim = 1 // How far out pH wil react, giving impurity place (Exponential phase)
|
||||
CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
|
||||
CurveSharpT = 4 // How sharp the temperature exponential curve is (to the power of value)
|
||||
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
|
||||
ThermicConstant = -10 // Temperature change per 1u produced
|
||||
HIonRelease = -0.02 // pH change per 1u reaction (inverse for some reason)
|
||||
RateUpLim = 2 // Optimal/max rate possible if all conditions are perfect
|
||||
FermiChem = TRUE // If the chemical uses the Fermichem reaction mechanics
|
||||
FermiExplode = FALSE // If the chemical explodes in a special way
|
||||
PurityMin = 0.1
|
||||
|
||||
//Effects
|
||||
/datum/reagent/fermi_slim/on_mob_life(mob/living/carbon/M)
|
||||
if(!iscarbon(M))
|
||||
return..()
|
||||
M.adjust_fatness(-50, FATTENING_TYPE_CHEM)
|
||||
M.adjust_perma(-5, FATTENING_TYPE_CHEM)
|
||||
..()
|
||||
. = 1
|
||||
@@ -3,6 +3,13 @@
|
||||
#define POPCOUNT_SHUTTLE_ESCAPEES "shuttle_escapees" //Emergency shuttle only.
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/gather_roundend_feedback()
|
||||
|
||||
//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)
|
||||
|
||||
gather_antag_data()
|
||||
record_nuke_disk_location()
|
||||
var/json_file = file("[GLOB.log_directory]/round_end_data.json")
|
||||
|
||||
@@ -105,6 +105,7 @@ 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"
|
||||
@@ -1076,6 +1077,7 @@ 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 (special weight persists between rounds):</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>"
|
||||
@@ -2665,6 +2667,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_permanent")
|
||||
weight_gain_permanent = !weight_gain_permanent
|
||||
if("noncon_weight_gain")
|
||||
noncon_weight_gain = !noncon_weight_gain
|
||||
if("bot_feeding")
|
||||
@@ -2997,6 +3001,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
//GS13
|
||||
character.fatness = starting_weight
|
||||
character.fatness_real = starting_weight
|
||||
character.fatness_perma = permanent_fat
|
||||
character.weight_gain_rate = wg_rate
|
||||
character.weight_loss_rate = wl_rate
|
||||
|
||||
|
||||
@@ -146,36 +146,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["importantroles"] >> importantroles
|
||||
S["pins"] >> pins
|
||||
|
||||
//GS13 code
|
||||
S["weight_gain_food"] >> weight_gain_food
|
||||
S["weight_gain_chems"] >> weight_gain_chems
|
||||
S["weight_gain_items"] >> weight_gain_items
|
||||
S["weight_gain_magic"] >> weight_gain_magic
|
||||
S["weight_gain_viruses"] >> weight_gain_viruses
|
||||
S["weight_gain_nanites"] >> weight_gain_nanites
|
||||
S["weight_gain_weapons"] >> weight_gain_weapons
|
||||
S["weight_gain_extreme"] >> weight_gain_extreme
|
||||
S["wg_rate"] >> wg_rate
|
||||
S["wl_rate"] >> wl_rate
|
||||
S["noncon_weight_gain"] >> noncon_weight_gain
|
||||
S["bot_feeding"] >> bot_feeding
|
||||
S["max_weight"] >> max_weight
|
||||
S["helplessness_no_movement"] >> helplessness_no_movement
|
||||
S["helplessness_clumsy"] >> helplessness_clumsy
|
||||
S["helplessness_nearsighted"] >> helplessness_nearsighted
|
||||
S["helplessness_hidden_face"] >> helplessness_hidden_face
|
||||
S["helplessness_mute"] >> helplessness_mute
|
||||
S["helplessness_immobile_arms"] >> helplessness_immobile_arms
|
||||
S["helplessness_clothing_jumpsuit"] >> helplessness_clothing_jumpsuit
|
||||
S["helplessness_clothing_misc"] >> helplessness_clothing_misc
|
||||
S["helplessness_clothing_back"] >> helplessness_clothing_back
|
||||
S["helplessness_no_buckle"] >> helplessness_no_buckle
|
||||
S["stuckage"] >> stuckage
|
||||
S["chair_breakage"] >> chair_breakage
|
||||
S["fatness_vulnerable"] >> fatness_vulnerable
|
||||
S["extreme_fatness_vulnerable"] >> extreme_fatness_vulnerable
|
||||
S["blueberry_inflation"] >> blueberry_inflation
|
||||
|
||||
|
||||
//try to fix any outdated data if necessfary
|
||||
if(needs_update >= 0)
|
||||
@@ -303,35 +273,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
//Hyper
|
||||
WRITE_FILE(S["noncon"], noncon)
|
||||
WRITE_FILE(S["pins"], pins)
|
||||
//GS13
|
||||
WRITE_FILE(S["weight_gain_food"], weight_gain_food)
|
||||
WRITE_FILE(S["weight_gain_items"], weight_gain_items)
|
||||
WRITE_FILE(S["weight_gain_magic"], weight_gain_magic)
|
||||
WRITE_FILE(S["weight_gain_viruses"], weight_gain_viruses)
|
||||
WRITE_FILE(S["weight_gain_nanites"], weight_gain_nanites)
|
||||
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["wg_rate"], wg_rate)
|
||||
WRITE_FILE(S["wl_rate"], wl_rate)
|
||||
WRITE_FILE(S["noncon_weight_gain"], noncon_weight_gain)
|
||||
WRITE_FILE(S["bot_feeding"], bot_feeding)
|
||||
WRITE_FILE(S["max_weight"], max_weight)
|
||||
WRITE_FILE(S["helplessness_no_movement"], helplessness_no_movement)
|
||||
WRITE_FILE(S["helplessness_clumsy"], helplessness_clumsy)
|
||||
WRITE_FILE(S["helplessness_nearsighted"], helplessness_nearsighted)
|
||||
WRITE_FILE(S["helplessness_hidden_face"], helplessness_hidden_face)
|
||||
WRITE_FILE(S["helplessness_mute"], helplessness_mute)
|
||||
WRITE_FILE(S["helplessness_immobile_arms"], helplessness_immobile_arms)
|
||||
WRITE_FILE(S["helplessness_clothing_jumpsuit"], helplessness_clothing_jumpsuit)
|
||||
WRITE_FILE(S["helplessness_clothing_misc"], helplessness_clothing_misc)
|
||||
WRITE_FILE(S["helplessness_clothing_back"], helplessness_clothing_back)
|
||||
WRITE_FILE(S["helplessness_no_buckle"], helplessness_no_buckle)
|
||||
WRITE_FILE(S["stuckage"], stuckage)
|
||||
WRITE_FILE(S["chair_breakage"], chair_breakage)
|
||||
WRITE_FILE(S["fatness_vulnerable"], fatness_vulnerable)
|
||||
WRITE_FILE(S["extreme_fatness_vulnerable"], extreme_fatness_vulnerable)
|
||||
WRITE_FILE(S["blueberry_inflation"], blueberry_inflation)
|
||||
return 1
|
||||
|
||||
|
||||
@@ -392,6 +333,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
|
||||
@@ -544,6 +486,37 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
else
|
||||
S["feature_ooc_text"] >> features["ooc_text"]
|
||||
|
||||
//GS13 code preferences
|
||||
S["weight_gain_food"] >> weight_gain_food
|
||||
S["weight_gain_chems"] >> weight_gain_chems
|
||||
S["weight_gain_items"] >> weight_gain_items
|
||||
S["weight_gain_magic"] >> weight_gain_magic
|
||||
S["weight_gain_viruses"] >> weight_gain_viruses
|
||||
S["weight_gain_nanites"] >> weight_gain_nanites
|
||||
S["weight_gain_weapons"] >> weight_gain_weapons
|
||||
S["weight_gain_extreme"] >> weight_gain_extreme
|
||||
S["weight_gain_permanent"] >> weight_gain_permanent
|
||||
S["wg_rate"] >> wg_rate
|
||||
S["wl_rate"] >> wl_rate
|
||||
S["noncon_weight_gain"] >> noncon_weight_gain
|
||||
S["bot_feeding"] >> bot_feeding
|
||||
S["max_weight"] >> max_weight
|
||||
S["helplessness_no_movement"] >> helplessness_no_movement
|
||||
S["helplessness_clumsy"] >> helplessness_clumsy
|
||||
S["helplessness_nearsighted"] >> helplessness_nearsighted
|
||||
S["helplessness_hidden_face"] >> helplessness_hidden_face
|
||||
S["helplessness_mute"] >> helplessness_mute
|
||||
S["helplessness_immobile_arms"] >> helplessness_immobile_arms
|
||||
S["helplessness_clothing_jumpsuit"] >> helplessness_clothing_jumpsuit
|
||||
S["helplessness_clothing_misc"] >> helplessness_clothing_misc
|
||||
S["helplessness_clothing_back"] >> helplessness_clothing_back
|
||||
S["helplessness_no_buckle"] >> helplessness_no_buckle
|
||||
S["stuckage"] >> stuckage
|
||||
S["chair_breakage"] >> chair_breakage
|
||||
S["fatness_vulnerable"] >> fatness_vulnerable
|
||||
S["extreme_fatness_vulnerable"] >> extreme_fatness_vulnerable
|
||||
S["blueberry_inflation"] >> blueberry_inflation
|
||||
|
||||
//try to fix any outdated data if necessary
|
||||
if(needs_update >= 0)
|
||||
update_character(needs_update, S) //needs_update == savefile_version if we need an update (positive integer)
|
||||
@@ -732,6 +705,37 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["hide_ckey"] , hide_ckey)
|
||||
WRITE_FILE(S["all_quirks"] , all_quirks)
|
||||
|
||||
//GS13 PREFS
|
||||
WRITE_FILE(S["weight_gain_food"], weight_gain_food)
|
||||
WRITE_FILE(S["weight_gain_items"], weight_gain_items)
|
||||
WRITE_FILE(S["weight_gain_magic"], weight_gain_magic)
|
||||
WRITE_FILE(S["weight_gain_viruses"], weight_gain_viruses)
|
||||
WRITE_FILE(S["weight_gain_nanites"], weight_gain_nanites)
|
||||
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_permanent"], weight_gain_permanent)
|
||||
WRITE_FILE(S["wg_rate"], wg_rate)
|
||||
WRITE_FILE(S["wl_rate"], wl_rate)
|
||||
WRITE_FILE(S["noncon_weight_gain"], noncon_weight_gain)
|
||||
WRITE_FILE(S["bot_feeding"], bot_feeding)
|
||||
WRITE_FILE(S["max_weight"], max_weight)
|
||||
WRITE_FILE(S["helplessness_no_movement"], helplessness_no_movement)
|
||||
WRITE_FILE(S["helplessness_clumsy"], helplessness_clumsy)
|
||||
WRITE_FILE(S["helplessness_nearsighted"], helplessness_nearsighted)
|
||||
WRITE_FILE(S["helplessness_hidden_face"], helplessness_hidden_face)
|
||||
WRITE_FILE(S["helplessness_mute"], helplessness_mute)
|
||||
WRITE_FILE(S["helplessness_immobile_arms"], helplessness_immobile_arms)
|
||||
WRITE_FILE(S["helplessness_clothing_jumpsuit"], helplessness_clothing_jumpsuit)
|
||||
WRITE_FILE(S["helplessness_clothing_misc"], helplessness_clothing_misc)
|
||||
WRITE_FILE(S["helplessness_clothing_back"], helplessness_clothing_back)
|
||||
WRITE_FILE(S["helplessness_no_buckle"], helplessness_no_buckle)
|
||||
WRITE_FILE(S["stuckage"], stuckage)
|
||||
WRITE_FILE(S["chair_breakage"], chair_breakage)
|
||||
WRITE_FILE(S["fatness_vulnerable"], fatness_vulnerable)
|
||||
WRITE_FILE(S["extreme_fatness_vulnerable"], extreme_fatness_vulnerable)
|
||||
WRITE_FILE(S["blueberry_inflation"], blueberry_inflation)
|
||||
|
||||
cit_character_pref_save(S)
|
||||
|
||||
return 1
|
||||
|
||||
@@ -321,6 +321,12 @@
|
||||
else if(stage in R.addiction_stage4_end to INFINITY)
|
||||
to_chat(C, "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>")
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_addiction")
|
||||
|
||||
//GS13 on reagent addiction removal
|
||||
if(istype(R, /datum/reagent/fermi_fat))
|
||||
var/datum/reagent/fermi_fat/F = R
|
||||
F.addiction_remove(C)
|
||||
|
||||
cached_addictions.Remove(R)
|
||||
else
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "[R.type]_overdose")
|
||||
|
||||
@@ -248,6 +248,11 @@
|
||||
/obj/machinery/cryopod/proc/despawn_occupant()
|
||||
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)
|
||||
|
||||
//Update any existing objectives involving this mob.
|
||||
for(var/datum/objective/O in GLOB.objectives)
|
||||
// We don't want revs to get objectives that aren't for heads of staff. Letting
|
||||
|
||||
@@ -3104,6 +3104,7 @@
|
||||
#include "GainStation13\code\mechanics\helplessness.dm"
|
||||
#include "GainStation13\code\mechanics\infestation.dm"
|
||||
#include "GainStation13\code\mechanics\metal_cruncher.dm"
|
||||
#include "GainStation13\code\mechanics\permanent_fat.dm"
|
||||
#include "GainStation13\code\mechanics\spells.dm"
|
||||
#include "GainStation13\code\mechanics\wand.dm"
|
||||
#include "GainStation13\code\mechanics\water_sponge.dm"
|
||||
@@ -3134,6 +3135,7 @@
|
||||
#include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\reagents\dwarverndrinks.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\reagents\fatty_drinks.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\reagents\fermi_fat.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\recipes\fatchem.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\recipes\fatdrinks.dm"
|
||||
#include "GainStation13\code\modules\reagents\chemistry\recipes\ROCKANDSTONEdrinks.dm"
|
||||
|
||||
Reference in New Issue
Block a user