diff --git a/GainStation13/code/mechanics/helplessness.dm b/GainStation13/code/mechanics/helplessness.dm index cf06e7e09a..317e674744 100644 --- a/GainStation13/code/mechanics/helplessness.dm +++ b/GainStation13/code/mechanics/helplessness.dm @@ -5,7 +5,7 @@ return ..() /datum/species/can_equip(obj/item/I, slot, disable_warning, mob/living/carbon/human/H, bypass_equip_delay_self) - if(HAS_TRAIT(H, TRAIT_NO_BACKPACK) && slot ==ITEM_SLOT_BACK) + if(!istype(I, /obj/item/mod) && HAS_TRAIT(H, TRAIT_NO_BACKPACK) && slot ==ITEM_SLOT_BACK) to_chat(H, "You are too fat to wear anything on your back.") return FALSE @@ -13,8 +13,13 @@ to_chat(H, "You are too fat to wear [I].") return FALSE - if(HAS_TRAIT(H, TRAIT_NO_MISC) && (slot == ITEM_SLOT_FEET || slot ==ITEM_SLOT_GLOVES || slot == ITEM_SLOT_OCLOTHING)) + if(!mod_check(I) && HAS_TRAIT(H, TRAIT_NO_MISC) && (slot == ITEM_SLOT_FEET || slot ==ITEM_SLOT_GLOVES || slot == ITEM_SLOT_OCLOTHING)) to_chat(H, "You are too fat to wear [I].") return FALSE return ..() + +/datum/species/proc/mod_check(I) + if(istype(I, /obj/item/mod) || istype(I, /obj/item/clothing/head/mod) || istype(I, /obj/item/clothing/gloves/mod) || istype(I, /obj/item/clothing/shoes/mod) || istype(I, /obj/item/clothing/suit/mod) ) + return TRUE + return FALSE diff --git a/GainStation13/code/mechanics/water_sponge.dm b/GainStation13/code/mechanics/water_sponge.dm index b3bf8b287d..b43fc4f2c8 100644 --- a/GainStation13/code/mechanics/water_sponge.dm +++ b/GainStation13/code/mechanics/water_sponge.dm @@ -49,7 +49,7 @@ if(breath) var/pressure = breath.return_pressure() var/total_moles = breath.total_moles() - #define PP_MOLES(X) ((X / total_moles) * pressure) + //#define PP_MOLES(X) ((X / total_moles) * pressure) #define PP(air, gas) PP_MOLES(air.get_moles(gas)) var/gas_breathed = PP(breath,GAS_H2O) if(gas_breathed > 0) diff --git a/GainStation13/code/modules/mob/living/belly.dm b/GainStation13/code/modules/mob/living/belly.dm index 86fd0f9088..9ef0940211 100644 --- a/GainStation13/code/modules/mob/living/belly.dm +++ b/GainStation13/code/modules/mob/living/belly.dm @@ -7,6 +7,7 @@ slot = ORGAN_SLOT_BELLY w_class = 3 size = 0 + var/max_size = 0 shape = DEF_BELLY_SHAPE var/statuscheck = FALSE genital_flags = UPDATE_OWNER_APPEARANCE @@ -65,6 +66,7 @@ else color = "#[D.features["belly_color"]]" size = D.features["belly_size"] + max_size = D.features["max_belly_size"] starting_size = D.features["belly_size"] shape = D.features["belly_shape"] inflatable = D.features["inflatable_belly"] diff --git a/GainStation13/code/modules/mob/living/species.dm b/GainStation13/code/modules/mob/living/species.dm index c18bda8f14..e69d703bdc 100644 --- a/GainStation13/code/modules/mob/living/species.dm +++ b/GainStation13/code/modules/mob/living/species.dm @@ -7,11 +7,23 @@ var/obj/item/organ/genital/breasts/breasts = H.getorganslot(ORGAN_SLOT_BREASTS) if(butt) - butt.modify_size(size_change) + if(butt.max_size > 0) + if((butt.size + size_change) <= butt.max_size) + butt.modify_size(size_change) + else + butt.modify_size(size_change) if(belly) - belly.modify_size(size_change) + if(belly.max_size > 0) + if((belly.size + size_change) <= belly.max_size) + belly.modify_size(size_change) + else + belly.modify_size(size_change) if(breasts) - breasts.modify_size(size_change) + if(breasts.max_size > 0) + if((breasts.cached_size + size_change) <= breasts.max_size) + breasts.modify_size(size_change) + else + breasts.modify_size(size_change) H.genital_override = TRUE H.update_body() @@ -38,7 +50,7 @@ /datum/species/proc/handle_helplessness(mob/living/carbon/human/fatty) var/datum/preferences/preferences = fatty?.client?.prefs - if(!istype(preferences)) + if(!istype(preferences) || HAS_TRAIT(fatty, TRAIT_NO_HELPLESSNESS)) return FALSE if(preferences.helplessness_no_movement) @@ -161,17 +173,17 @@ ADD_TRAIT(fatty, TRAIT_NO_MISC, HELPLESSNESS_TRAIT) var/obj/item/clothing/suit/worn_suit = fatty.wear_suit - if(istype(worn_suit)) + if(istype(worn_suit) && !istype(worn_suit, /obj/item/clothing/suit/mod)) to_chat(fatty, "[worn_suit] can no longer contain your weight!") fatty.dropItemToGround(worn_suit) var/obj/item/clothing/gloves/worn_gloves = fatty.gloves - if(istype(worn_gloves)) + if(istype(worn_gloves)&& !istype(worn_gloves, /obj/item/clothing/gloves/mod)) to_chat(fatty, "[worn_gloves] can no longer contain your weight!") fatty.dropItemToGround(worn_gloves) var/obj/item/clothing/shoes/worn_shoes = fatty.shoes - if(istype(worn_shoes)) + if(istype(worn_shoes) && !istype(worn_shoes, /obj/item/clothing/shoes/mod)) to_chat(fatty, "[worn_shoes] can no longer contain your weight!") fatty.dropItemToGround(worn_shoes) @@ -189,7 +201,7 @@ if(fatty.fatness >= preferences.helplessness_clothing_back) ADD_TRAIT(fatty, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT) var/obj/item/back_item = fatty.back - if(istype(back_item)) + if(istype(back_item) && !istype(back_item, /obj/item/mod)) to_chat(fatty, "Your weight makes it impossible for you to carry [back_item].") fatty.dropItemToGround(back_item) @@ -220,6 +232,42 @@ id = "fat" variable = TRUE +/mob/living/carbon + var/list/fatness_delay_modifiers + +/datum/fatness_delay_modifier + var/name + var/amount = 0 + var/multiplier = 1 + +/mob/living/carbon/proc/add_fat_delay_modifier(name = "", amount = 0, multiplier = 1) + var/find_name = FALSE + for(var/datum/fatness_delay_modifier/modifier in fatness_delay_modifiers) + if(modifier.name == name && find_name == FALSE) + modifier.amount = amount + modifier.multiplier = multiplier + find_name = TRUE + if(find_name == FALSE) + var/datum/fatness_delay_modifier/new_modifier = new() + new_modifier.name = name + new_modifier.amount = amount + new_modifier.multiplier = multiplier + LAZYADD(fatness_delay_modifiers, new_modifier) + +/mob/living/carbon/proc/remove_fat_delay_modifier(name) + for(var/datum/fatness_delay_modifier/modifier in fatness_delay_modifiers) + if(modifier.name == name) + LAZYREMOVE(fatness_delay_modifiers, modifier) + +/datum/species/proc/apply_fatness_speed_modifiers(mob/living/carbon/human/H, fatness_delay) + for(var/datum/fatness_delay_modifier/modifier in H.fatness_delay_modifiers) + fatness_delay = fatness_delay + modifier.amount + for(var/datum/fatness_delay_modifier/modifier in H.fatness_delay_modifiers) + fatness_delay *= modifier.multiplier + fatness_delay = max(fatness_delay, 0) + fatness_delay = min(fatness_delay, FATNESS_MAX_MOVE_PENALTY) + return fatness_delay + /datum/species/proc/handle_fatness(mob/living/carbon/human/H) handle_helplessness(H) H.handle_modular_items() @@ -241,6 +289,7 @@ fatness_delay = min(fatness_delay, 60) if(fatness_delay) + fatness_delay = apply_fatness_speed_modifiers(H, fatness_delay) H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/fatness, TRUE, fatness_delay) else H.remove_movespeed_modifier(/datum/movespeed_modifier/fatness) diff --git a/GainStation13/code/modules/mod/modules/modules_fat.dm b/GainStation13/code/modules/mod/modules/modules_fat.dm new file mode 100644 index 0000000000..c1b60c02b1 --- /dev/null +++ b/GainStation13/code/modules/mod/modules/modules_fat.dm @@ -0,0 +1,215 @@ +/obj/item/mod/module/hydraulic_movement + icon = 'GainStation13/icons/obj/clothing/modsuit/mod_modules.dmi' + icon_state = "hydraulic_mod" + name = "MOD hydraulic movement assistance module" + desc = "A module created by GATO, installed across the suit, featuring a system of hydraulic pistons \ + that support and lighten vast amounts of excess weight to provide easier movement." + complexity = 1 + incompatible_modules = list(/obj/item/mod/module/hydraulic_movement) + idle_power_cost = 5 + var/amount = -2 + var/modifier_name = "hydraulic_mod" + +/obj/item/mod/module/hydraulic_movement/on_suit_activation() + var/mob/living/carbon/human/wearer = mod.wearer + wearer.add_fat_delay_modifier(modifier_name, amount) + + if(!HAS_TRAIT_FROM(wearer, TRAIT_NO_HELPLESSNESS, src)) + ADD_TRAIT(wearer, TRAIT_NO_HELPLESSNESS, src) + + if(HAS_TRAIT_FROM(wearer, TRAIT_NO_MOVE, HELPLESSNESS_TRAIT)) + REMOVE_TRAIT(wearer, TRAIT_NO_MOVE, HELPLESSNESS_TRAIT) +// if(HAS_TRAIT_FROM(wearer, TRAIT_CLUMSY, HELPLESSNESS_TRAIT)) +// REMOVE_TRAIT(wearer, TRAIT_CLUMSY, HELPLESSNESS_TRAIT) +// if(HAS_TRAIT_FROM(wearer, TRAIT_NEARSIGHT, HELPLESSNESS_TRAIT)) +// wearer.cure_nearsighted(HELPLESSNESS_TRAIT) +// if(HAS_TRAIT_FROM(wearer, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT)) +// REMOVE_TRAIT(wearer, TRAIT_DISFIGURED, HELPLESSNESS_TRAIT) + if(HAS_TRAIT_FROM(wearer, TRAIT_MUTE, HELPLESSNESS_TRAIT)) + REMOVE_TRAIT(wearer, TRAIT_MUTE, HELPLESSNESS_TRAIT) + if(HAS_TRAIT_FROM(wearer, TRAIT_PARALYSIS_L_ARM, HELPLESSNESS_TRAIT)) + REMOVE_TRAIT(wearer, TRAIT_PARALYSIS_L_ARM, HELPLESSNESS_TRAIT) + REMOVE_TRAIT(wearer, TRAIT_PARALYSIS_R_ARM, HELPLESSNESS_TRAIT) + wearer.update_disabled_bodyparts() +// if(HAS_TRAIT_FROM(wearer, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT)) +// REMOVE_TRAIT(wearer, TRAIT_NO_JUMPSUIT, HELPLESSNESS_TRAIT) + if(HAS_TRAIT_FROM(wearer, TRAIT_NO_MISC, HELPLESSNESS_TRAIT)) + REMOVE_TRAIT(wearer, TRAIT_NO_MISC, HELPLESSNESS_TRAIT) + if(HAS_TRAIT_FROM(wearer, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT)) + REMOVE_TRAIT(wearer, TRAIT_NO_BACKPACK, HELPLESSNESS_TRAIT) +// if(HAS_TRAIT_FROM(wearer, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT)) +// REMOVE_TRAIT(wearer, TRAIT_NO_BUCKLE, HELPLESSNESS_TRAIT) + +/obj/item/mod/module/hydraulic_movement/on_suit_deactivation(deleting = FALSE) + if(deleting) + return + if(HAS_TRAIT_FROM(mod.wearer, TRAIT_NO_HELPLESSNESS, src)) + REMOVE_TRAIT(mod.wearer, TRAIT_NO_HELPLESSNESS, src) + mod.wearer.remove_fat_delay_modifier(modifier_name) + +/datum/design/module/hydraulic_movement + name = "Hydraulic Assistance Module" + id = "mod_hydraulic" + materials = list(/datum/material/iron = 1000, /datum/material/glass = 200) + build_path = /datum/design/module/hydraulic_movement + desc = "A GATO-designed module that supports plumper bodies and allows easier movement." + +/obj/item/mod/module/calovoltaic + icon = 'GainStation13/icons/obj/clothing/modsuit/mod_modules.dmi' + icon_state = "calovoltaic_mod" + name = "MOD calovoltaic generator module" + desc = "A module created by GATO, capable of burning adipose tissue \ + to generate power for the suit it is installed onto." + module_type = MODULE_TOGGLE + complexity = 1 + incompatible_modules = list(/obj/item/mod/module/calovoltaic) + var/rate = 5 + +/obj/item/mod/module/calovoltaic/on_select() + . = ..() + if(active) + balloon_alert(mod.wearer, "activeted!") + else + balloon_alert(mod.wearer, "deactivated!") + +/obj/item/mod/module/calovoltaic/on_active_process(delta_time) + if(istype(mod.wearer, /mob/living/carbon)) + var/mob/living/carbon/C = mod.wearer + var/adjusted_rate = rate * C.weight_loss_rate + if(C.fatness_real > 0 && (C.fatness_real - adjusted_rate) >= adjusted_rate) + C.adjust_fatness(-rate, FATTENING_TYPE_WEIGHT_LOSS) + mod.cell.give(rate) + +/datum/design/module/calovoltaic + name = "Calovoltaic Generator Module" + id = "mod_calovoltaic" + materials = list(/datum/material/iron = 500, /datum/material/glass = 500, /datum/material/plasma = 500) + build_path = /obj/item/mod/module/calovoltaic + desc = "A GATO-designed module for burning excess fat to make power for your suit." + +/obj/item/mod/construction/armor/exoskeleton + theme = /datum/mod_theme/exoskeleton + +/obj/item/mod/control/Initialize(mapload, new_theme, new_skin) + . = ..() + gs13_icon_update() + +/obj/item/mod/control/proc/gs13_icon_update() + if(theme.use_gs_icon == TRUE) + icon = 'GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi' + mob_overlay_icon = 'GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi' + icon_state = "[theme]-control" + item_state = "[theme]-control" + + helmet.icon = 'GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi' + helmet.mob_overlay_icon = 'GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi' + helmet.icon_state = "[theme]-helmet" + helmet.item_state = "[theme]-helmet" + + chestplate.icon = 'GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi' + chestplate.mob_overlay_icon = 'GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi' + chestplate.icon_state = "[theme]-chestplate" + chestplate.item_state = "[theme]-chestplate" + + gauntlets.icon = 'GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi' + gauntlets.mob_overlay_icon = 'GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi' + gauntlets.icon_state = "[theme]-gauntlets" + gauntlets.item_state = "[theme]-gauntlets" + + boots.icon = 'GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi' + boots.mob_overlay_icon = 'GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi' + boots.icon_state = "[theme]-boots" + boots.item_state = "[theme]-boots" + +/datum/mod_theme + var/use_gs_icon = FALSE + +/datum/mod_theme/exoskeleton + use_gs_icon = TRUE + name = "exoskeleton" + desc = "The design for a GATO-branded mobility exoskeleton" + extended_desc = "To combat the obesity epidemic that spreads on its stations, \ + GATO scientists have worked hard to create this simple yet efficient way to support \ + people whose weight proves restrictive and help them on their journey to lose it." + default_skin = "exoskeleton" + complexity_max = 5 + armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 5, BOMB = 5, BIO = 5, FIRE = 5, ACID = 5, WOUND = 5, RAD = 5) + resistance_flags = FIRE_PROOF + max_heat_protection_temperature = 1 + min_cold_protection_temperature = -1 + permeability_coefficient = 1 + siemens_coefficient = 1 + slowdown_inactive = 0.5 + slowdown_active = 0 + inbuilt_modules = list(/obj/item/mod/module/hydraulic_movement, /obj/item/mod/module/calovoltaic, /obj/item/mod/module/storage) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals) + skins = list( + "exoskeleton" = list( + HELMET_LAYER = NECK_LAYER, + HELMET_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + UNSEALED_INVISIBILITY = NONE, + SEALED_INVISIBILITY = NONE, + SEALED_COVER = NONE, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + SEALED_INVISIBILITY = NONE, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + ), + ), + "invisible" = list( + HELMET_LAYER = NECK_LAYER, + HELMET_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + UNSEALED_INVISIBILITY = NONE, + SEALED_INVISIBILITY = NONE, + SEALED_COVER = NONE, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + SEALED_INVISIBILITY = NONE, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = NONE, + SEALED_CLOTHING = NONE, + ), + ) + ) + +/obj/item/mod/control/pre_equipped/exoskeleton + desc = "A pre-built GATO mobility exoskeleton, designed to support high weights, favor movement and weight loss." + theme = /datum/mod_theme/exoskeleton + cell = /obj/item/stock_parts/cell/upgraded/plus + +/datum/design/module/exoskeleton + name = "MOD exoskeleton" + id = "mod_exoskeleton" + materials = list(/datum/material/iron = 5000, /datum/material/glass = 5000, /datum/material/plasma = 5000) + build_path = /obj/item/mod/control/pre_equipped/exoskeleton + desc = "A GATO-designed assistance exoskeleton based on MODsuit tech." + build_type = MECHFAB + construction_time = 10 SECONDS + category = list("MODsuit Chassis", "MODsuit Designs") + departmental_flags = DEPARTMENTAL_FLAG_SCIENCE + +/datum/gear/hands/exoskeleton + name = "MOD exoskeleton" + category = LOADOUT_CATEGORY_HANDS + path = /obj/item/mod/control/pre_equipped/exoskeleton + cost = 4 diff --git a/GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi b/GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi new file mode 100644 index 0000000000..6c4cfeb37c Binary files /dev/null and b/GainStation13/icons/mob/clothing/modsuit/mod_clothing.dmi differ diff --git a/GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi b/GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi new file mode 100644 index 0000000000..c5da100c5b Binary files /dev/null and b/GainStation13/icons/obj/clothing/modsuit/mod_clothing.dmi differ diff --git a/GainStation13/icons/obj/clothing/modsuit/mod_construction.dmi b/GainStation13/icons/obj/clothing/modsuit/mod_construction.dmi new file mode 100644 index 0000000000..4a94bdf19b Binary files /dev/null and b/GainStation13/icons/obj/clothing/modsuit/mod_construction.dmi differ diff --git a/GainStation13/icons/obj/clothing/modsuit/mod_modules.dmi b/GainStation13/icons/obj/clothing/modsuit/mod_modules.dmi new file mode 100644 index 0000000000..bd19c8700d Binary files /dev/null and b/GainStation13/icons/obj/clothing/modsuit/mod_modules.dmi differ diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index f2c3c13848..98d5205a20 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -260,6 +260,7 @@ #define TRAIT_LIVESTOCK "livestock" #define TRAIT_NO_FAT_SLOWDOWN "no_fat_slowdown" #define HELPLESSNESS_TRAIT "helplessness" +#define TRAIT_NO_HELPLESSNESS "no_helplessness" #define TRAIT_RADRESONANCE "radresonance" //FIX THIS LATER #define COMSIG_MICRO_PICKUP_FEET "micro_force_grabbed" //From /datum/element/mob_holder/micro diff --git a/code/modules/arousal/organs/breasts.dm b/code/modules/arousal/organs/breasts.dm index e9974d672d..d284030c1c 100644 --- a/code/modules/arousal/organs/breasts.dm +++ b/code/modules/arousal/organs/breasts.dm @@ -9,6 +9,7 @@ zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_BREASTS size = BREASTS_SIZE_DEF // "c". Refer to the breast_values static list below for the cups associated number values + var/max_size = 0 //GS13 Edit fluid_id = /datum/reagent/consumable/milk fluid_rate = MILK_RATE producing = TRUE @@ -115,6 +116,7 @@ else color = "#[D.features["breasts_color"]]" size = D.features["breasts_size"] + max_size = D.features["max_breasts_size"] starting_size = D.features["breasts_size"] shape = D.features["breasts_shape"] if(!D.features["breasts_producing"]) diff --git a/code/modules/arousal/organs/butt.dm b/code/modules/arousal/organs/butt.dm index fd20703168..93ac4dfc69 100644 --- a/code/modules/arousal/organs/butt.dm +++ b/code/modules/arousal/organs/butt.dm @@ -7,6 +7,7 @@ slot = ORGAN_SLOT_BUTT w_class = 3 size = 0 + var/max_size = 0 //GS13 Edit var/size_name = "nonexistent" shape = "Pair" //turn this into a default constant if for some inexplicable reason we get more than one butt type but I doubt it. genital_flags = UPDATE_OWNER_APPEARANCE|GENITAL_UNDIES_HIDDEN @@ -84,6 +85,7 @@ else color = "#[D.features["butt_color"]]" size = D.features["butt_size"] + max_size = D.features["max_butt_size"] starting_size = D.features["butt_size"] // GS13 EDIT prev_size = size toggle_visibility(D.features["butt_visibility"], FALSE) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 060bd31a1c..044e3cd9c7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -810,6 +810,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Color:
" dat += "#[features["breasts_color"]] Change
" dat += "Cup Size:[features["breasts_size"]]" + dat += "Max Fat Breast Size:[features["max_breasts_size"]]" //GS13 Edit dat += "Breasts Shape:[features["breasts_shape"]]" dat += "Breasts Visibility:[features["breasts_visibility"]]" dat += "Lactates:[features["breasts_producing"] == TRUE ? "Yes" : "No"]" @@ -846,6 +847,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Color:
" dat += "#[features["butt_color"]] Change
" dat += "Butt Size:[features["butt_size"]]" + dat += "Max Fat Butt Size:[features["max_butt_size"]]" //GS13 Edit dat += "Butt Visibility:[features["butt_visibility"]]" dat += "" dat += "" @@ -860,6 +862,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) else dat += "#[features["belly_color"]] Change
" dat += "Belly Size: [features["belly_size"]]" + dat += "Max Fat Belly Size: [features["max_belly_size"]]" dat += "Belly Shape: [features["belly_shape"]]" dat += "Belly Visibility:[features["belly_visibility"]]" // GS13: tweak inflation description @@ -2698,6 +2701,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/new_size = input(user, "Breast Size", "Character Preference") as null|anything in CONFIG_GET(keyed_list/breasts_cups_prefs) if(new_size) features["breasts_size"] = new_size + //GS13 Edit + if("max_breasts_size") + var/new_max = input(user, "Max fat breasts size:\n([0]-[30])", "Character Preference") as num|null + if(new_max) + features["max_breasts_size"] = clamp(round(new_max), 0, 30) if("breasts_shape") var/new_shape @@ -2783,6 +2791,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/new_length = input(user, "Butt size:\n([min_B]-[max_B])", "Character Preference") as num|null if(new_length) features["butt_size"] = clamp(round(new_length), min_B, max_B) + //GS13 Edit + if("max_butt_size") + var/new_max = input(user, "Max fat butt size:\n([0]-[10])", "Character Preference") as num|null + if(new_max) + features["max_butt_size"] = clamp(round(new_max), 0, 10) if("butt_visibility") var/n_vis = input(user, "Butt Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles) @@ -2806,6 +2819,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_bellysize) features["belly_size"] = clamp(round(new_bellysize), 1, 10) + if("max_belly_size") + var/new_bellymax = input(user, "Max belly fat size :\n(0-10, 0 = none)", "Character Preference") as num|null + if(new_bellymax) + features["max_belly_size"] = clamp(round(new_bellymax), 0, 10) + if("belly_shape") //GS13 - belly shapes var/new_shape new_shape = input(user, "Belly Type", "Character Preference") as null|anything in GLOB.belly_shapes_list diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 09e7a10661..20278d34de 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -874,6 +874,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //breasts features S["feature_has_breasts"] >> features["has_breasts"] S["feature_breasts_size"] >> features["breasts_size"] + S["feature_max_breasts_size"] >> features["max_breasts_size"] //GS13 Edit - Max size S["feature_breasts_shape"] >> features["breasts_shape"] S["feature_breasts_color"] >> features["breasts_color"] S["feature_breasts_producing"] >> features["breasts_producing"] @@ -889,10 +890,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_has_butt"] >> features["has_butt"] S["feature_butt_color"] >> features["butt_color"] S["feature_butt_size"] >> features["butt_size"] + S["feature_max_butt_size"] >> features["max_butt_size"] //GS13 Edit - Max size S["feature_butt_visibility"] >> features["butt_visibility"] //belly features S["feature_has_belly"] >> features["has_belly"] S["feature_belly_size"] >> features["belly_size"] + S["feature_max_belly_size"] >> features["max_belly_size"] S["feature_belly_shape"] >> features["belly_shape"] S["feature_belly_color"] >> features["belly_color"] S["feature_hide_belly"] >> features["hide_belly"] @@ -1291,6 +1294,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_has_breasts"], features["has_breasts"]) WRITE_FILE(S["feature_breasts_size"], features["breasts_size"]) + WRITE_FILE(S["feature_max_breasts_size"], features["max_breasts_size"]) //GS13 Edit - Max size WRITE_FILE(S["feature_breasts_shape"], features["breasts_shape"]) WRITE_FILE(S["feature_breasts_color"], features["breasts_color"]) WRITE_FILE(S["feature_breasts_producing"], features["breasts_producing"]) @@ -1306,10 +1310,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_has_butt"], features["has_butt"]) WRITE_FILE(S["feature_butt_color"], features["butt_color"]) WRITE_FILE(S["feature_butt_size"], features["butt_size"]) + WRITE_FILE(S["feature_max_butt_size"], features["max_butt_size"]) //GS13 Edit - Max size WRITE_FILE(S["feature_butt_visibility"], features["butt_visibility"]) //belly features WRITE_FILE(S["feature_has_belly"], features["has_belly"]) WRITE_FILE(S["feature_belly_size"], features["belly_size"]) + WRITE_FILE(S["feature_max_belly_size"], features["max_belly_size"]) WRITE_FILE(S["feature_belly_shape"], features["belly_shape"]) WRITE_FILE(S["feature_belly_color"], features["belly_color"]) WRITE_FILE(S["feature_hide_belly"], features["hide_belly"]) diff --git a/code/modules/research/techweb/nodes/mod_nodes.dm b/code/modules/research/techweb/nodes/mod_nodes.dm index db453bb0d6..bb6cb10d3c 100644 --- a/code/modules/research/techweb/nodes/mod_nodes.dm +++ b/code/modules/research/techweb/nodes/mod_nodes.dm @@ -15,6 +15,10 @@ "mod_welding", "mod_mouthhole", "mod_flashlight", + //GS13 Edit + "mod_hydraulic", + "mod_calovoltaic", + "mod_exoskeleton", ) /datum/techweb_node/mod_advanced diff --git a/tgstation.dme b/tgstation.dme index 3478a43ce9..322c59b8ff 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4055,6 +4055,7 @@ #include "GainStation13\code\modules\mob\living\nutribot.dm" #include "GainStation13\code\modules\mob\living\species.dm" #include "GainStation13\code\modules\mob\living\vore\eating\trasheat_lists.dm" +#include "GainStation13\code\modules\mod\modules\modules_fat.dm" #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"