Files
Alphas00 7597de2ab8 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
2024-12-22 13:05:34 +01:00

106 lines
3.3 KiB
Plaintext

/datum/quirk/water_sponge
name = "Water Sponge"
desc = "You can hold lots of water in you! Careful with showers!"
value = 0 //ERP quirk
gain_text = "<span class='notice'>You feel absorbant.</span>"
lose_text = "<span class='notice'>You don't feel absorbant anymore.</span>"
mob_trait = TRAIT_WATER_SPONGE
/datum/reagent/water
var/bloat_coeff = 3.5
/datum/reagent/water/on_mob_add(mob/living/L, amount)
if(HAS_TRAIT(L, TRAIT_WATER_SPONGE))
if(iscarbon(L))
var/mob/living/carbon/C = L
C.hider_add(src)
. = ..()
/datum/reagent/water/on_mob_delete(mob/living/L)
if(HAS_TRAIT(L, TRAIT_WATER_SPONGE))
if(iscarbon(L))
var/mob/living/carbon/C = L
C.hider_remove(src)
. = ..()
/datum/reagent/water/reaction_mob(mob/living/M, method, reac_volume)
. = ..()
if(HAS_TRAIT(M, TRAIT_WATER_SPONGE))
if(method == TOUCH)
M.reagents.add_reagent(/datum/reagent/water, reac_volume/2)
if(method == VAPOR)
M.reagents.add_reagent(/datum/reagent/water, reac_volume/3)
/datum/reagent/water/proc/fat_hide(mob/living/carbon/user)
return volume * bloat_coeff
/obj/machinery/shower/process()
..()
for(var/atom/movable/AM in loc)
if(iscarbon(AM))
if(HAS_TRAIT(AM, TRAIT_WATER_SPONGE))
var/mob/living/carbon/L = AM
L.reagents.add_reagent(/datum/reagent/water, 3)
/obj/item/organ/lungs/proc/water_check(datum/gas_mixture/breath, mob/living/carbon/human/H)
if(HAS_TRAIT(H, TRAIT_WATER_SPONGE))
if(breath)
var/pressure = breath.return_pressure()
var/total_moles = breath.total_moles()
//#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)
H.reagents.add_reagent(/datum/reagent/water, gas_breathed)
breath.adjust_moles(GAS_H2O, -gas_breathed)
/obj/item/organ/lungs/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H)
water_check(breath, H)
. = ..()
/datum/reagent/water/overdose_start(mob/living/M)
. = 1
/obj/structure/sink
var/mob/living/attached
/obj/structure/sink/MouseDrop(mob/living/target)
. = ..()
if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE) || !isliving(target))
return
if(attached)
visible_message("<span class='warning'>[attached] is detached from [src].</span>")
attached = null
return
if(Adjacent(target) && usr.Adjacent(target))
usr.visible_message("<span class='warning'>[usr] attaches [target] to [src].</span>", "<span class='notice'>You attach [target] to [src].</span>")
add_fingerprint(usr)
attached = target
START_PROCESSING(SSobj, src)
/obj/structure/sink/process()
if(!(get_dist(src, attached) <= 1 && isturf(attached.loc)))
to_chat(attached, "<span class='userdanger'>[attached] is ripped from the sink!</span>") // GS13
attached = null
return PROCESS_KILL
if(attached)
playsound(attached, 'sound/vore/pred/swallow_02.ogg', rand(10,50), 1)
attached.reagents.add_reagent(/datum/reagent/water, 5)
else
return PROCESS_KILL
/obj/structure/sink/attack_hand(mob/living/user)
if(attached)
visible_message("[attached] is detached from [src]")
attached = null
return
/obj/machinery/pool/controller/process_reagents()
for(var/turf/open/pool/W in linked_turfs)
for(var/mob/living/carbon/human/swimee in W)
if(HAS_TRAIT(swimee, TRAIT_WATER_SPONGE))
swimee.reagents.add_reagent(/datum/reagent/water, 5)
..()