Mobility exoskeleton & modules, max fat genital sizes
Added the mobility exoskeleton, weak MODsuit that comes with mobility-related modules. Added mobility-related modules Added preference for max genital sizes due to fat increase
This commit is contained in:
@@ -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"]
|
||||
|
||||
@@ -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, "<span class='warning'>[worn_suit] can no longer contain your weight!</span>")
|
||||
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, "<span class='warning'>[worn_gloves] can no longer contain your weight!</span>")
|
||||
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, "<span class='warning'>[worn_shoes] can no longer contain your weight!</span>")
|
||||
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, "<span class='warning'>Your weight makes it impossible for you to carry [back_item].</span>")
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user