diff --git a/GainStation13/code/mechanics/fatness.dm b/GainStation13/code/mechanics/fatness.dm new file mode 100644 index 00000000..c31a7fef --- /dev/null +++ b/GainStation13/code/mechanics/fatness.dm @@ -0,0 +1,62 @@ +/mob/living/carbon + ///What level of fatness is the parent mob at? + var/fatness = 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% + var/weight_loss_rate = 1 + +/** +* Adjusts the fatness level of the parent mob. +* +* * adjustment_amount - adjusts how much weight is gained or loss. Positive numbers add weight. +* * type_of_fattening - what type of fattening is being used. Look at the traits in fatness.dm for valid options. +*/ +/mob/living/carbon/proc/adjust_fatness(adjustment_amount, type_of_fattening = FATTENING_TYPE_ITEM) + if(!adjustment_amount || !type_of_fattening) + return FALSE + + if(!HAS_TRAIT(src, TRAIT_UNIVERSAL_GAINER) && client?.prefs) + switch(type_of_fattening) + if(FATTENING_TYPE_ITEM) + if(!client.prefs.weight_gain_items) + return FALSE + + if(FATTENING_TYPE_FOOD) + if(!client.prefs.weight_gain_food) + return FALSE + + if(FATTENING_TYPE_CHEM) + if(!client.prefs.weight_gain_chems) + return FALSE + + if(FATTENING_TYPE_WEAPON) + if(!client.prefs.weight_gain_weapons) + return FALSE + + if(FATTENING_TYPE_MAGIC) + if(!client.prefs.weight_gain_magic) + return FALSE + + if(FATTENING_TYPE_VIRUS) + if(!client.prefs.weight_gain_viruses) + return FALSE + + if(FATTENING_TYPE_WEIGHT_LOSS) + if(!HAS_TRAIT(src, TRAIT_WEIGHT_LOSS_IMMUNE)) + 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 += amount_to_change + fatness = max(fatness, MINIMUM_FATNESS_LEVEL) //It would be a little silly if someone got negative fat. + return TRUE + + +/mob/living/carbon/fully_heal(admin_revive) + fatness = 0 + . = ..() diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm new file mode 100644 index 00000000..09748049 --- /dev/null +++ b/GainStation13/code/modules/client/preferences/preferences.dm @@ -0,0 +1,18 @@ +//GS13 Preferences +/datum/preferences + //Weight Gain Sources + ///Weight gain from food + var/weight_gain_food = FALSE + ///Weight gain from chems + var/weight_gain_chems = FALSE + ///Weight gain from items + var/weight_gain_items = FALSE + ///Weight gain from weapons + var/weight_gain_weapons = FALSE + ///Weight gain from magic + var/weight_gain_magic = FALSE + ///Weight gain from viruses + var/weight_gain_viruses = FALSE + + ///Does the person wish to be involved with non-con weight gain events? + var/noncon_weight_gain = FALSE diff --git a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm index 28faf8d6..e77d7ed1 100644 --- a/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm +++ b/GainStation13/code/modules/reagents/chemistry/reagents/consumable_reagents.dm @@ -10,7 +10,5 @@ metabolization_rate = 0.5 * REAGENTS_METABOLISM /datum/reagent/consumable/lipoifier/on_mob_life(mob/living/carbon/M) - if(M && !HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) - M.fatness = M.fatness + 10 - + M.adjust_fatness(10, FATTENING_TYPE_CHEM) return ..() diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 6f72bd48..8f9ad059 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -517,3 +517,14 @@ GLOBAL_LIST_INIT(lighter_reskins, list(ZIPPO_SKIN_PLAIN = "plain", ZIPPO_SKIN_DA #define FOURSPACES "    " #define CANT_REENTER_ROUND -1 + +//GS13 WEIGHT GAIN TYPES +#define MINIMUM_FATNESS_LEVEL 0 + +#define FATTENING_TYPE_ITEM "item" +#define FATTENING_TYPE_FOOD "food" +#define FATTENING_TYPE_CHEM "chem" +#define FATTENING_TYPE_WEAPON "weapon" +#define FATTENING_TYPE_MAGIC "magic" +#define FATTENING_TYPE_VIRUS "virus" +#define FATTENING_TYPE_WEIGHT_LOSS "weight_loss" diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 807c9255..3fe39024 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -180,7 +180,6 @@ #define TRAIT_PHOTOGRAPHER "photographer" #define TRAIT_MUSICIAN "musician" #define TRAIT_CROCRIN_IMMUNE "crocin_immune" -#define TRAIT_LIPOIFIER_IMMUNE "lipoifier_immune" #define TRAIT_NYMPHO "nymphomania" #define TRAIT_DISTANT "headpat_hater" //#define TRAIT_FLUID_LEAK "leaky_fluids" removed because milk snail trails are not okay @@ -215,6 +214,11 @@ #define TRAIT_NO_TELEPORT "no-teleport" //you just can't #define TRAIT_NO_ALCOHOL "alcohol_intolerance" +//GS13 +#define TRAIT_WEIGHT_LOSS_IMMUNE "weight_loss_immune" +#define TRAIT_UNIVERSAL_GAINER "universal_gainer" + + // common trait sources #define TRAIT_GENERIC "generic" #define EYE_DAMAGE "eye_damage" diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index dbeec758..f188c66c 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -291,7 +291,10 @@ /datum/component/mood/proc/hud_click(datum/source, location, control, params, mob/user) print_mood(user) -/datum/component/mood/proc/HandleFatness(mob/living/L) +/datum/component/mood/proc/HandleFatness(mob/living/carbon/L) + if(!L) + return FALSE + switch(L.fatness) if(FATNESS_LEVEL_FAT to INFINITY) add_event(null, "fatness", /datum/mood_event/fat) diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index 2479d2ab..652a771b 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -42,7 +42,7 @@ Bonus /datum/symptom/weight_loss/Activate(datum/disease/advance/A) if(!..()) return - var/mob/living/M = A.affected_mob + var/mob/living/carbon/M = A.affected_mob switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance)) @@ -51,12 +51,9 @@ Bonus to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") M.overeatduration = max(M.overeatduration - 100, 0) M.nutrition = max(M.nutrition - 100, 0) - M.fatness = M.fatness - 30 - - + M.adjust_fatness(-30, FATTENING_TYPE_WEIGHT_LOSS) /datum/symptom/weight_gain - name = "Weight Gain" desc = "The virus mutates and merges itself with the host's adipocytes, allowing them to perform a form of mitosis and replicate on their own." stealth = -3 @@ -77,9 +74,9 @@ Bonus /datum/symptom/weight_gain/Activate(datum/disease/advance/A) if(!..()) return - var/mob/living/M = A.affected_mob - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) - return + var/mob/living/carbon/M = A.affected_mob + if(!(M?.client?.prefs?.weight_gain_viruses)) + return FALSE switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance)) @@ -87,8 +84,8 @@ Bonus else to_chat(M, "[pick("You feel your body churn...", "You feel heavier...", "You hear an ominous gurgle from your belly...", "You feel bulkier...")]") if(A.properties["transmittable"] >= 12) //get chunkier quicker - M.fatness = M.fatness + 70 + M.adjust_fatness(70, FATTENING_TYPE_VIRUS) else if(A.properties["transmittable"] >= 7) - M.fatness = M.fatness + 40 + M.adjust_fatness(40, FATTENING_TYPE_VIRUS) else - M.fatness = M.fatness + 15 + M.adjust_fatness(15, FATTENING_TYPE_VIRUS) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index ed3c3643..e025626d 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -127,16 +127,6 @@ lose_text = "You don't feel as prudish as before." medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin." -/datum/quirk/lipoifier_immunity - name = "Lipoifier Immunity" - desc = "Your body is mostly immune to widening properties of Lipoifier chemical and its cheaper alternative: corn oil." - mob_trait = TRAIT_LIPOIFIER_IMMUNE - value = 0 - category = CATEGORY_SEXUAL - gain_text = "You feel less prone to sudden weight gain." - lose_text = "You don't feel that resistant to gaining sudden weight anymore." - medical_record_text = "Patient exhibits a special gene that makes them immune to Lipoifier and Corn Oil." - /datum/quirk/assblastusa name = "Buns of Steel" desc = "You've never skipped ass day. With this trait, you are completely immune to all forms of ass slapping and anyone who tries to slap your rock hard ass usually gets a broken hand." diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 52267774..cd5083d5 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -279,10 +279,7 @@ if(world.time > last_event+15) active = 1 for(var/mob/living/carbon/human/M in orange(3,src)) - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) - return - else - M.fatness = M.fatness + 50 + M.adjust_fatness(50, FATTENING_TYPE_ITEM) last_event = world.time active = null return diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 264967d4..361f7b2d 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -359,57 +359,55 @@ ..() /obj/structure/statue/calorite/fatty/attackby(obj/item/W, mob/living/carbon/M, params) + if(!M.adjust_fatness(20, FATTENING_TYPE_ITEM)) + to_chat(M, "Nothing happens.") + return + + if(M.fatness < 200) + to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") + if(HAS_TRAIT(M, TRAIT_FAT)) + to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") + if(HAS_TRAIT(M, TRAIT_OBESE)) + to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") + if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) + to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") + if(HAS_TRAIT(M, TRAIT_IMMOBILE)) + to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") + if(HAS_TRAIT(M, TRAIT_BLOB)) + to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) - to_chat(M, "Nothing happens.") - else - M.fatness = M.fatness + 20 - if(M.fatness < 200) - to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") - if(HAS_TRAIT(M, TRAIT_FAT)) - to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") - if(HAS_TRAIT(M, TRAIT_OBESE)) - to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") - if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) - to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") - if(HAS_TRAIT(M, TRAIT_IMMOBILE)) - to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") - if(HAS_TRAIT(M, TRAIT_BLOB)) - to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") - /obj/structure/statue/calorite/fatty/attack_hand(mob/living/carbon/M) - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) + if(!M.adjust_fatness(20, FATTENING_TYPE_ITEM)) to_chat(M, "Nothing happens.") - else - M.fatness = M.fatness + 20 - if(M.fatness < 200) - to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") - if(HAS_TRAIT(M, TRAIT_FAT)) - to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") - if(HAS_TRAIT(M, TRAIT_OBESE)) - to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") - if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) - to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") - if(HAS_TRAIT(M, TRAIT_IMMOBILE)) - to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") - if(HAS_TRAIT(M, TRAIT_BLOB)) - to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") - + return + + if(M.fatness < 200) + to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") + if(HAS_TRAIT(M, TRAIT_FAT)) + to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") + if(HAS_TRAIT(M, TRAIT_OBESE)) + to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") + if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) + to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") + if(HAS_TRAIT(M, TRAIT_IMMOBILE)) + to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") + if(HAS_TRAIT(M, TRAIT_BLOB)) + to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") + /obj/structure/statue/calorite/fatty/attack_paw(mob/living/carbon/M) - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) + if(!M.adjust_fatness(20, FATTENING_TYPE_ITEM)) to_chat(M, "Nothing happens.") - else - M.fatness = M.fatness + 20 - if(M.fatness < 200) - to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") - if(HAS_TRAIT(M, TRAIT_FAT)) - to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") - if(HAS_TRAIT(M, TRAIT_OBESE)) - to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") - if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) - to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") - if(HAS_TRAIT(M, TRAIT_IMMOBILE)) - to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") - if(HAS_TRAIT(M, TRAIT_BLOB)) - to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") - \ No newline at end of file + return + + if(M.fatness < 200) + to_chat(M, "The moment your hand meets the statue, you feel a little warmer...") + if(HAS_TRAIT(M, TRAIT_FAT)) + to_chat(M, "Upon each poke of the statue, you feel yourself get a little heavier.") + if(HAS_TRAIT(M, TRAIT_OBESE)) + to_chat(M, "With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.") + if(HAS_TRAIT(M, TRAIT_MORBIDLYOBESE)) + to_chat(M, "The world around you blurs as you focus on prodding the statue, your waistline widening further...") + if(HAS_TRAIT(M, TRAIT_IMMOBILE)) + to_chat(M, "A whispering voice gently compliments your massive body, your own mind begging to touch the statue more.") + if(HAS_TRAIT(M, TRAIT_BLOB)) + to_chat(M, "You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...") diff --git a/code/game/turfs/simulated/floor/mineral_floor.dm b/code/game/turfs/simulated/floor/mineral_floor.dm index 5e2844a2..6ecec3dc 100644 --- a/code/game/turfs/simulated/floor/mineral_floor.dm +++ b/code/game/turfs/simulated/floor/mineral_floor.dm @@ -218,10 +218,10 @@ var/fat_to_add = 50 /turf/open/floor/mineral/calorite/Entered(mob/living/carbon/M) - if(!istype(M, /mob/living/carbon) || HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) + if(!istype(M, /mob/living/carbon)) return FALSE else - M.fatness = M.fatness + fat_to_add + M.adjust_fatness(fat_to_add, FATTENING_TYPE_ITEM) // calorite floor, disguised version - GS13 diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index d96d68d9..436648ca 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -55,10 +55,7 @@ if(world.time > last_event+15) active = 1 for(var/mob/living/carbon/human/M in orange(3,src)) - if(HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) - return - else - M.fatness = M.fatness + 50 + M.adjust_fatness(50, FATTENING_TYPE_ITEM) last_event = world.time active = null return diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 700bdb76..1493274d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1018,6 +1018,18 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Screen Shake: [(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]
" if (user && user.client && !user.client.prefs.screenshake==0) dat += "Damage Screen Shake: [(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]
" + //GS13 stuff goes here + dat += "

GS13 Preferences

" + dat += "NonCon - Weight Gain:[noncon_weight_gain == TRUE ? "Enabled" : "Disabled"]
" + + dat += "

GS13 Weight Gain

" + dat += "Weight Gain - Food:[weight_gain_food == TRUE ? "Enabled" : "Disabled"]
" + dat += "Weight Gain - Items:[weight_gain_items == TRUE ? "Enabled" : "Disabled"]
" + dat += "Weight Gain - Chems:[weight_gain_chems == TRUE ? "Enabled" : "Disabled"]
" + dat += "Weight Gain - Weapons:[weight_gain_weapons == TRUE ? "Enabled" : "Disabled"]
" + dat += "Weight Gain - Magic:[weight_gain_magic == TRUE ? "Enabled" : "Disabled"]
" + dat += "Weight Gain - Viruses:[weight_gain_viruses == TRUE ? "Enabled" : "Disabled"]
" + //Add the Hyper stuff below here dat += "

Hyper Preferences

" dat += "NonCon - Bottom:[noncon == TRUE ? "Enabled" : "Disabled"]
" @@ -2531,6 +2543,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["hide_belly"] = FALSE features["inflatable_belly"] = FALSE features["belly_size"] = 1 + + if("weight_gain_items") + weight_gain_items = !weight_gain_items + if("weight_gain_chems") + weight_gain_chems = !weight_gain_chems + if("weight_gain_food") + weight_gain_food = !weight_gain_food + if("weight_gain_weapons") + weight_gain_weapons = !weight_gain_weapons + if("weight_gain_magic") + weight_gain_magic = !weight_gain_magic + if("weight_gain_viruses") + weight_gain_viruses = !weight_gain_viruses + + if("noncon_weight_gain") + noncon_weight_gain = !noncon_weight_gain if("inflatable_belly") features["inflatable_belly"] = !features["inflatable_belly"] diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 2c4ca7a4..47b6893a 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -146,6 +146,15 @@ 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_weapons"] >> weight_gain_weapons + S["noncon_weight_gain"] >> noncon_weight_gain + //try to fix any outdated data if necessfary if(needs_update >= 0) update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer) @@ -268,6 +277,14 @@ 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_chems"], weight_gain_chems) + WRITE_FILE(S["weight_gain_weapons"], weight_gain_weapons) + WRITE_FILE(S["noncon_weight_gain"], noncon_weight_gain) return 1 diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 5dc45359..10b66ebc 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -46,7 +46,7 @@ fat_burned = min(HUNGER_FACTOR/20, fatness) nutrition_lost_divider = 5 nutrition -= (HUNGER_FACTOR/nutrition_lost_divider - fat_burned) - fatness -= fat_burned + adjust_fatness(fat_burned, FATTENING_TYPE_WEIGHT_LOSS) if(HAS_TRAIT(src, TRAIT_NOTHIRST)) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index ff28a645..87a02f72 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -369,6 +369,9 @@ if(digitalcamo) msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n" + if(client?.prefs?.noncon_weight_gain) + msg += "Non-con fattening is allowed\n" + if (length(msg)) . += "[msg.Join("")]" msg += common_trait_examine() @@ -419,7 +422,7 @@ "\[Add comment\]"), "") else if(isobserver(user) && traitstring) . += "Traits: [traitstring]" - + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) //This also handles flavor texts now . += "*---------*" diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index cbb2e2f9..a4fa219b 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1606,7 +1606,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/fatConversionRate = 100 //GS13 what percentage of the excess nutrition should go to fat (total nutrition to transfer can't be under 1) var/nutritionThatBecomesFat = max((H.nutrition - NUTRITION_LEVEL_FULL)*(fatConversionRate / 100),1) H.nutrition -= nutritionThatBecomesFat - H.fatness += nutritionThatBecomesFat + H.adjust_fatness(nutritionThatBecomesFat, FATTENING_TYPE_FOOD) if(H.fullness > FULLNESS_LEVEL_EMPTY)//GS13 stomach-emptying routine var/ticksToEmptyStomach = 20 // GS13 how many ticks it takes to decrease the fullness by 1 H.fullness -= 1/ticksToEmptyStomach diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 784e04cd..cc3c1c32 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -517,7 +517,6 @@ radiation = 0 nutrition = NUTRITION_LEVEL_FED + 50 fullness = FULLNESS_LEVEL_HALF_FULL // GS13 - fatness = 0 // GS13 thirst = THIRST_LEVEL_QUENCHED + 50 bodytemperature = BODYTEMP_NORMAL set_blindness(0) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 70f2a4b5..46b56a9e 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -60,8 +60,9 @@ var/drowsyness = 0//Carbon var/dizziness = 0//Carbon var/jitteriness = 0//Carbon - var/fatness = 0//Carbon, GS13 addition - var/fullness = FULLNESS_LEVEL_HALF_FULL//Carbon, GS13 addition + + ///How full is the parent mob? + var/fullness = FULLNESS_LEVEL_HALF_FULL var/nutrition = NUTRITION_LEVEL_START_MIN // randomised in Initialize var/thirst = THIRST_LEVEL_START_MIN //same for this var/satiety = 0//Carbon diff --git a/code/modules/projectiles/guns/misc/fatbeam.dm b/code/modules/projectiles/guns/misc/fatbeam.dm index 162a8d77..d6715f39 100644 --- a/code/modules/projectiles/guns/misc/fatbeam.dm +++ b/code/modules/projectiles/guns/misc/fatbeam.dm @@ -114,7 +114,8 @@ /obj/item/gun/fatbeam/proc/on_beam_tick(var/mob/living/target) if(target.health != target.maxHealth) new /obj/effect/temp_visual/heal(get_turf(target), "#FFC2F8") - target.nutrition += 50 + if(target?.client?.prefs?.weight_gain_weapons) + target.nutrition += 50 return /obj/item/gun/fatbeam/proc/on_beam_release(var/mob/living/target) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 5671ae1c..0c7e99fe 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -453,7 +453,7 @@ taste_description = "slime" /datum/reagent/consumable/cornoil/on_mob_life(mob/living/carbon/M) - if(M && !HAS_TRAIT(M, TRAIT_LIPOIFIER_IMMUNE)) + if(M && M?.client?.prefs.weight_gain_chems) M.nutrition += 20 * REAGENTS_METABOLISM else M.nutrition += 1 diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index e8dbed8f..1c69ecde 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -619,9 +619,11 @@ /datum/reagent/medicine/lipolicide/on_mob_life(mob/living/carbon/M) if(M.nutrition <= NUTRITION_LEVEL_STARVING) M.adjustToxLoss(1*REM, 0) - M.fatness = max(M.fatness - 10, 0) if(M.fatness == 0) M.nutrition = max(M.nutrition - 3, 0) // making the chef more valuable, one meme trap at a time + else + M.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS) + M.overeatduration = 0 return ..() diff --git a/tgstation.dme b/tgstation.dme index 7643ad8b..de346663 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3316,6 +3316,8 @@ #include "code\modules\VR\vr_sleeper.dm" #include "code\modules\zombie\items.dm" #include "code\modules\zombie\organs.dm" +#include "GainStation13\code\mechanics\fatness.dm" +#include "GainStation13\code\modules\client\preferences\preferences.dm" #include "GainStation13\code\modules\mob\living\emote.dm" #include "GainStation13\code\modules\reagents\chemistry\reagents\consumable_reagents.dm" #include "GainStation13\code\modules\reagents\chemistry\recipes\fatchem.dm"