under 100 now

This commit is contained in:
Metis
2024-09-13 16:25:53 -04:00
parent cb6a43a7bf
commit f9bfd0d3f0
29 changed files with 359 additions and 103 deletions
@@ -99,8 +99,8 @@
balls.fluid_mult = balls.fluid_mult * productivity_mult
balls.fluid_max_volume = balls.fluid_max_volume * productivity_mult
if(target_human?.getorganslot("breasts"))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot("breasts")
if(target_human?.getorganslot(ORGAN_SLOT_BREASTS))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot(ORGAN_SLOT_BREASTS)
boobs.fluid_mult = boobs.fluid_mult * productivity_mult
boobs.fluid_max_volume = boobs.fluid_max_volume * productivity_mult
@@ -109,17 +109,17 @@
if(!.)
return FALSE
var/mob/living/carbon/human/target_human = source
var/mob/living/carbon/human/target_human = source
target_human.real_name = stored_name
target_human.name = stored_name
target_human.name = stored_name
if(target_human?.getorganslot("testicles"))
var/obj/item/organ/genital/testicles/balls = target_human?.getorganslot("testicles")
balls.fluid_mult = balls.fluid_mult / productivity_mult
balls.fluid_max_volume = balls.fluid_max_volume / productivity_mult
if(target_human?.getorganslot("breasts"))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot("breasts")
if(target_human?.getorganslot(ORGAN_SLOT_BREASTS))
var/obj/item/organ/genital/breasts/boobs = target_human?.getorganslot(ORGAN_SLOT_BREASTS)
boobs.fluid_mult = boobs.fluid_mult / productivity_mult
boobs.fluid_max_volume = boobs.fluid_max_volume / productivity_mult
+7 -2
View File
@@ -1,3 +1,8 @@
/obj/machinery/iv_drip
/// What is the name of the thing being attached to the mob?
var/attachment_point = "needle"
/obj/machinery/iv_drip/feeding_tube
name = "\improper Feeding tube"
desc = "Originally meant to automatically feed cattle and farm animals, this model was repurposed for more... personal usage."
@@ -69,7 +74,7 @@
if(attached)
attached = null
update_icon()
return PROCESS_KILL
/obj/machinery/iv_drip/feeding_tube/attackby(obj/item/W, mob/user, params)
@@ -89,6 +94,6 @@
return FALSE
//it sure is a solution.
//it sure is a solution.
/obj/machinery/iv_drip/feeding_tube/toggle_mode()
return FALSE
+160
View File
@@ -0,0 +1,160 @@
/datum/material/calorite
name = "calorite"
sheet_type = /obj/item/stack/sheet/mineral/calorite
/obj/item/stack/sheet/mineral/calorite
name = "calorite"
icon_state = "sheet-calorite"
item_state = "sheet-calorite"
singular_name = "calorite sheet"
sheettype = "calorite"
novariants = TRUE
grind_results = list(/datum/reagent/consumable/lipoifier = 2)
point_value = 40
merge_type = /obj/item/stack/sheet/mineral/calorite
GLOBAL_LIST_INIT(calorite_recipes, list ( \
new/datum/stack_recipe("Calorite tile", /obj/item/stack/tile/mineral/calorite, 1, 4, 20), \
new/datum/stack_recipe("Fatty statue", /obj/structure/statue/calorite/fatty, 5, one_per_turf = 1, on_floor = 1),
new/datum/stack_recipe("Calorite doors", /obj/structure/mineral_door/calorite, 5, one_per_turf = 1, on_floor = 1),
))
/obj/item/stack/sheet/mineral/calorite/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.calorite_recipes
. = ..()
/obj/item/stack/tile/mineral/calorite //GS13
name = "Calorite tile"
singular_name = "Calorite floor tile"
desc = "A tile made out of calorite. Bwoomph."
icon_state = "tile_calorite"
turf_type = /turf/open/floor/mineral/calorite
mineralType = "calorite"
/obj/item/stack/tile/mineral/calorite/hide //GS13 - disguised variant
name = "Floor tile"
singular_name = "calorite floor tile"
desc = "A tile totally made out of steel."
icon_state = "tile"
turf_type = /turf/open/floor/mineral/calorite/hide
/obj/item/stack/tile/mineral/calorite/strong //GS13 - strong variant
name = "Infused calorite tile"
singular_name = "Infused calorite floor tile"
desc = "A tile made out of stronger variant of calorite. Bwuurp."
icon_state = "tile_calorite_strong"
turf_type = /turf/open/floor/mineral/calorite/strong
/obj/item/stack/tile/mineral/calorite/dance //GS13 - glamourous variant!
name = "Calorite dance floor"
singular_name = "Calorite dance floor tile"
desc = "A dance floor made out of calorite, for a party both you and your waistline will never forget!."
icon_state = "tile_calorite_dance"
turf_type = /turf/open/floor/mineral/calorite/dance
/turf/open/floor/mineral/calorite
name = "Calorite floor"
icon_state = "calorite"
floor_tile = /obj/item/stack/tile/mineral/calorite
icons = list("calorite","calorite_dam")
var/last_event = 0
var/active = null
///How much fatness is added to the user upon crossing?
var/fat_to_add = 25
/turf/open/floor/mineral/calorite/Entered(mob/living/carbon/M)
if(!istype(M, /mob/living/carbon))
return FALSE
else
M.adjust_fatness(fat_to_add, FATTENING_TYPE_ITEM)
// calorite floor, disguised version - GS13
/turf/open/floor/mineral/calorite/hide
name = "Steel floor"
icon_state = "calorite_hide"
floor_tile = /obj/item/stack/tile/mineral/calorite/hide
icons = list("calorite_hide","calorite_dam")
// calorite floor, powerful version - GS13
/turf/open/floor/mineral/calorite/strong
name = "Infused calorite floor"
icon_state = "calorite_strong"
floor_tile = /obj/item/stack/tile/mineral/calorite/strong
icons = list("calorite_strong","calorite_dam")
fat_to_add = 100
// calorite dance floor, groovy! - GS13
/turf/open/floor/mineral/calorite/dance
name = "Calorite dance floor"
icon_state = "calorite_dance"
floor_tile = /obj/item/stack/tile/mineral/calorite/dance
icons = list("calorite_dance","calorite_dam")
/obj/structure/statue/calorite
max_integrity = 400
custom_materials = list(/datum/material/calorite=MINERAL_MATERIAL_AMOUNT*5)
/obj/structure/statue/calorite/fatty
name = "Fatty statue"
desc = "A statue of a well-rounded fatso."
icon_state = "fatty"
var/active = null
var/last_event = 0
/obj/structure/statue/calorite/fatty/proc/beckon()
if(!active)
if(world.time > last_event+15)
active = 1
for(var/mob/living/carbon/human/M in orange(3,src))
to_chat(M, "<span class='warning'>You feel the statue calling to you, urging you to touch it...</span>")
last_event = world.time
active = null
return
return
/obj/structure/statue/calorite/fatty/proc/statue_fatten(mob/living/carbon/M)
if(!M.adjust_fatness(20, FATTENING_TYPE_ITEM))
to_chat(M, "<span class='warning'>Nothing happens.</span>")
return
if(M.fatness < FATNESS_LEVEL_FATTER)
to_chat(M, "<span class='warning'>The moment your hand meets the statue, you feel a little warmer...</span>")
else if(M.fatness < FATNESS_LEVEL_OBESE)
to_chat(M, "<span class='warning'>Upon each poke of the statue, you feel yourself get a little heavier.</span>")
else if(M.fatness < FATNESS_LEVEL_EXTREMELY_OBESE)
to_chat(M, "<span class='warning'>With each touch you keep getting fatter... But the fatter you grow, the more enticed you feel to poke the statue.</span>")
else if(M.fatness < FATNESS_LEVEL_BARELYMOBILE)
to_chat(M, "<span class='warning'>The world around you blur slightly as you focus on prodding the statue, your waistline widening further...</span>")
else if(M.fatness < FATNESS_LEVEL_IMMOBILE)
to_chat(M, "<span class='warning'>A whispering voice gently compliments your massive body, your own mind begging to touch the statue.</span>")
else
to_chat(M, "<span class='warning'>You can barely reach the statue past your floor-covering stomach! And yet, it still calls to you...</span>")
/obj/structure/statue/calorite/fatty/Bumped(atom/movable/AM)
beckon()
..()
/obj/structure/statue/calorite/fatty/Crossed(var/mob/AM)
.=..()
if(!.)
if(istype(AM))
beckon()
/obj/structure/statue/calorite/fatty/Moved(atom/movable/AM)
beckon()
..()
/obj/structure/statue/calorite/fatty/attackby(obj/item/W, mob/living/carbon/M, params)
statue_fatten(M)
/obj/structure/statue/calorite/fatty/attack_hand(mob/living/carbon/M)
statue_fatten(M)
/obj/structure/statue/calorite/fatty/attack_paw(mob/living/carbon/M)
statue_fatten(M)
+5 -2
View File
@@ -1,4 +1,4 @@
GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/maintenance, /area/security/prison, /area/holodeck, /area/vacantoffice, /area/space, /area/ruin, /area/lavaland, /area/awaymission, /area/centcom, /area/fatlab))
GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/command/bridge, /area/maintenance, /area/security/prison, /area/holodeck, /area/commons/vacant_room/office, /area/space, /area/ruin, /area/lavaland, /area/awaymission, /area/centcom, /area/fatlab))
/mob/living/carbon
//Due to the changes needed to create the system to hide fatness, here's some notes:
@@ -24,7 +24,6 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/maintenance, /a
var/fullness_reduction_timer = 0
var/burpslurring = 0
var/overeatduration = 0 // How long this guy is overeating //Carbon
var/fullness_reducion_timer = 0 // When was the last time they emoted to reduce their fullness
/**
@@ -248,3 +247,7 @@ GLOBAL_LIST_INIT(uncapped_resize_areas, list(/area/bridge, /area/maintenance, /a
return needed_fatness
/mob/living/carbon/proc/applyFatnessDamage(amount)
var/fat_to_add = ((amount * CONFIG_GET(number/damage_multiplier)) * FAT_DAMAGE_TO_FATNESS)
adjust_fatness(fat_to_add, FATTENING_TYPE_WEAPON)
return fat_to_add
@@ -19,8 +19,8 @@
playsound(M,'sound/items/eatfood.ogg', rand(10,50), 1)
use(1)
M.nutrition += crunch_value
if(HAS_TRAIT(M, TRAIT_VORACIOUS))
M.changeNext_move(CLICK_CD_MELEE * 0.5)
//if(HAS_TRAIT(M, TRAIT_VORACIOUS))
// M.changeNext_move(CLICK_CD_MELEE * 0.5)
return
. = ..()
+5
View File
@@ -0,0 +1,5 @@
/datum/crafting_recipe/caloritedancefloor
name = "Calorite dance floor"
result = /obj/item/stack/tile/mineral/calorite/dance
reqs = list(/obj/item/stack/cable_coil = 3, /obj/item/stack/tile/mineral/calorite = 1)
category = CAT_MISC
+2 -2
View File
@@ -79,7 +79,7 @@
name = "web bindings"
desc = "A mesh of sticky web that binds whoever is stuck inside of it"
icon = 'GainStation13/icons/obj/clothing/web.dmi'
worn_ico = 'GainStation13/icons/mob/web.dmi'
worn_icon = 'GainStation13/icons/mob/web.dmi'
icon_state = "web_bindings"
item_state = "web_bindings"
breakouttime = 600 //1 minute is reasonable.
@@ -89,7 +89,7 @@
/obj/item/clothing/suit/straight_jacket/web/equipped(mob/user, slot)
. = ..()
if((user.get_item_by_slot(SLOT_WEAR_OCLOTHING)) != src && !QDELETED(src))
if((user.get_item_by_slot(ITEM_SLOT_OCLOTHING)) != src && !QDELETED(src))
qdel(src)
/obj/structure/spider/cocoon/quirk
+1 -1
View File
@@ -11,7 +11,7 @@
harm_intent_damage = 10
butcher_results = list(/obj/item/organ/brain = 1, /obj/item/organ/heart = 1, /obj/item/reagent_containers/food/snacks/cakeslice/birthday = 9, \
/obj/item/reagent_containers/food/snacks/meat/slab = 2)
response_harm = "takes a bite out of"
response_harm_simple = "takes a bite out of"
attacked_sound = 'sound/items/eatfood.ogg'
deathmessage = "loses its false life and collapses!"
death_sound = "bodyfall"
@@ -18,9 +18,6 @@ var/charges = 3
var/datum/action/innate/unburden/speed
var/datum/action/innate/recharge/power
/datum/species/golem/calorite/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
if(ishuman(C))
@@ -101,7 +98,7 @@ var/charges = 3
for(var/mob/living/L in view(3, owner))
if(iscarbon(L))
if(!HAS_TRAIT(L, TRAIT_GOTTAGOFAST))
if(!L.has_movespeed_modifier(/datum/movespeed_modifier/reagent/stimulants))
L.reagents.add_reagent(/datum/reagent/consumable/caloriteblessing, 5)
else
+1 -1
View File
@@ -47,7 +47,7 @@
AddElement(/datum/element/wuv, "purrs!", EMOTE_AUDIBLE, /datum/mood_event/pet_animal, "hisses!", EMOTE_AUDIBLE)
AddElement(/datum/element/mob_holder, held_icon)
/mob/living/simple_animal/pet/slugcat/update_canmove()
/mob/living/simple_animal/pet/slugcat/update_mobility()
..()
if(client && stat != DEAD)
if (resting)
@@ -11,8 +11,6 @@
icon_state = "fizzwiz"
list_reagents = list(/datum/reagent/consumable/space_cola = 25, /datum/reagent/consumable/fizulphite = 15)
foodtype = SUGAR
price = 3
/obj/item/reagent_containers/food/drinks/soda_cans/soothseltz
name = "Soothing Seltzer"
@@ -23,4 +21,3 @@
icon_state = "soothseltz"
list_reagents = list(/datum/reagent/consumable/space_cola = 25, /datum/reagent/consumable/extilphite = 15)
foodtype = SUGAR
price = 3
@@ -1,3 +1,6 @@
/obj/item/reagent_containers/food
var/blessed = 0
/obj/item/reagent_containers/food/snacks/gbburrito
name = "\improper GATO Gas Giant Burrito"
icon_state = "gbburrito"
@@ -7,7 +10,6 @@
filling_color = "#74291b"
tastes = list("refried beans","grease" = 1)
foodtype = MEAT
price = 3
//these have been ported from CHOMPstation / Virgo
/obj/item/reagent_containers/food/snacks/doner_kebab
@@ -1,76 +1,76 @@
/obj/screen/alert/blob
/atom/movable/screen/alert/gs13/blob
name = "Fatty Blob"
desc = "Every last piece of your corpulent body is now plush and bloated with vast rolls of blubber. Your corpulence is such that you are akin to a gigantic, towering wad of dough."
icon_state = "blob"
/obj/screen/alert/immobile
/atom/movable/screen/alert/gs13/immobile
name = "Immobile"
desc = "Fat has taken over your body, now colossal in size and loaded with cumbersome flab. You are having a lot difficulty with moving the bulk that has set upon your body."
icon_state = "immobile"
/obj/screen/alert/barelymobile
/atom/movable/screen/alert/gs13/barelymobile
name = "Barely Mobile"
desc = "Your fat legs barely allow you to waddle, continuing to slow your pace with each pound that you gain. If you continue gaining weight, you might find yourself unable to move at all."
icon_state = "barelymobile"
/obj/screen/alert/extremelyobese
/atom/movable/screen/alert/gs13/extremelyobese
name = "Extremely Obese"
desc = "In your journey through crossing further borders of obesity, your movement continues to get more and more restricted, body overcome with overwhelming amounts of adipose."
icon_state = "extremelyobese"
/obj/screen/alert/morbidlyobese
/atom/movable/screen/alert/gs13/morbidlyobese
name = "Morbidly Obese"
desc = "Every inch of you is beginning to pack away lard, making your movements awkward and clunky. If your weight gain continues, walking might become a real issue."
icon_state = "morbobese"
/obj/screen/alert/obese
/atom/movable/screen/alert/gs13/obese
name = "Obese"
desc = "Your body is swollen with lard, and your movement is starting to be slightly hindered by your weight."
icon_state = "obese"
/obj/screen/alert/veryfat
/atom/movable/screen/alert/gs13/veryfat
name = "Very fat"
desc = "You're beginning to inch closer and closer to proper obesity. Your body is starting to slightly jiggle when you move around."
icon_state = "veryfat"
/obj/screen/alert/fatter
/atom/movable/screen/alert/gs13/fatter
name = "Fat"
desc = "Clothes begin to cling onto your frame tighter and tighter, as your body begins to display first signs of fatness."
icon_state = "fatter"
/obj/screen/alert/fat
/atom/movable/screen/alert/gs13/fat
name = "Rounded"
desc = "Your body's beginning to display the first signs of softened curves, though they're barely noticeable."
icon_state = "fat"
//GS13 - fullness alerts
/obj/screen/alert/bloated
/atom/movable/screen/alert/gs13/bloated
name = "Bloated"
desc = "Your stomach is starting to feel packed."
icon_state = "Stuffed"
/obj/screen/alert/stuffed
/atom/movable/screen/alert/gs13/stuffed
name = "Stuffed"
desc = "Whatever you ate, you ate too much. Your stomach has stretched to accomodate its contents, forming a very obvious stuffed belly."
icon_state = "Bloated"
/obj/screen/alert/beegbelly
/atom/movable/screen/alert/gs13/beegbelly
name = "Overfilled"
desc = "You've somehow managed to fit even more in your stomach, barely allowing for any more room inside."
icon_state = "beegbelly"
/obj/screen/alert/sated
/atom/movable/screen/alert/gs13/sated
name = "Sated"
desc = "You're perfectly rather sated right now."
icon_state = "sated"
/obj/screen/alert/full
/atom/movable/screen/alert/gs13/full
name = "Full"
desc = "You're rather full right now. Eating more food would result in weight gain."
icon_state = "full"
/obj/screen/alert/hungry
/atom/movable/screen/alert/gs13/hungry
name = "Hungry"
desc = "Some food would be good right about now."
icon_state = "hungry"
@@ -42,7 +42,7 @@
opened = TRUE
spillable = TRUE
reagent_flags = OPENCONTAINER
ENABLE_BITFIELD(reagents.reagents_holder_flags, OPENCONTAINER)
reagents.reagents_holder_flags |= OPENCONTAINER
icon_state = "lipo_nutcut_full"
desc = "A foreign fruit with an hard shell, the liquid inside looks very inviting."
playsound(user, W.hitsound, 50, 1, -1)
@@ -84,7 +84,7 @@
skin = new_skin
update_icon()
/mob/living/simple_animal/bot/nutribot/update_canmove()
/mob/living/simple_animal/bot/nutribot/update_mobility()
. = ..()
update_icon()
@@ -113,10 +113,8 @@
/mob/living/simple_animal/bot/nutribot/attack_paw(mob/user)
return attack_hand(user)
/mob/living/simple_animal/bot/nutribot/get_controls(mob/user)
/mob/living/simple_animal/bot/nutribot/proc/get_controls(mob/user)
var/dat
dat += hack(user)
dat += showpai(user)
dat += "<TT><B>Nutritional Unit Controls v1.1</B></TT><BR><BR>"
dat += "Status: <A href='?src=[REF(src)];power=1'>[on ? "On" : "Off"]</A><BR>"
dat += "Maintenance panel panel is [open ? "opened" : "closed"]<BR>"
@@ -251,8 +249,7 @@
return
/mob/living/simple_animal/bot/nutribot/proc/tip_over(mob/user)
canmove = 0
//mobility_flags &= ~MOBILITY_MOVE
mobility_flags &= ~MOBILITY_MOVE
playsound(src, 'sound/machines/warning-buzzer.ogg', 50)
user.visible_message("<span class='danger'>[user] tips over [src]!</span>", "<span class='danger'>You tip [src] over!</span>")
mode = BOT_TIPPED
@@ -260,8 +257,7 @@
transform = mat.Turn(180)
/mob/living/simple_animal/bot/nutribot/proc/set_right(mob/user)
canmove = 1
//mobility_flags &= MOBILITY_MOVE
mobility_flags &= MOBILITY_MOVE
var/list/messagevoice
if(user)
user.visible_message("<span class='notice'>[user] sets [src] right-side up!</span>", "<span class='green'>You set [src] right-side up!</span>")
@@ -564,9 +560,6 @@
soft_reset()
return
reagent_id = null
return
/mob/living/simple_animal/bot/nutribot/proc/check_overdose(mob/living/carbon/patient,reagent_id,injection_amount)
var/datum/reagent/R = GLOB.chemical_reagents_list[reagent_id]
if(!R.overdose_threshold) //Some chems do not have an OD threshold
@@ -600,6 +593,21 @@
/obj/machinery/bot_core/nutribot
req_one_access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_ROBOTICS)
/// Add these for now, until it is upgraded to TGUI.
/mob/living/simple_animal/bot/nutribot/proc/show_controls(mob/M)
users |= M
var/dat = ""
dat = get_controls(M)
var/datum/browser/popup = new(M,window_id,window_name,350,600)
popup.set_content(dat)
popup.open(use_onclose = 0)
onclose(M,window_id,ref=src)
return
/mob/living/simple_animal/bot/nutribot/proc/update_controls()
for(var/mob/M in users)
show_controls(M)
#undef NUTRIBOT_PANIC_NONE
#undef NUTRIBOT_PANIC_LOW
#undef NUTRIBOT_PANIC_MED
@@ -1,3 +1,34 @@
/datum/species/proc/update_body_size(mob/living/carbon/human/H, size_change)
if (!H)
return
var/obj/item/organ/genital/butt/anus = H.getorganslot(ORGAN_SLOT_BUTT)
var/obj/item/organ/genital/belly/belly = H.getorganslot("belly")
var/obj/item/organ/genital/breasts/breasts = H.getorganslot(ORGAN_SLOT_BREASTS)
update_genital_size(anus, size_change)
update_genital_size(belly, size_change)
update_breasts_size(breasts, size_change)
H.genital_override = TRUE
H.update_body()
H.update_inv_w_uniform()
H.update_inv_wear_suit()
/datum/species/proc/update_genital_size(obj/item/organ/genital/G, size_change)
if (!G)
return
G.size = G.size + size_change
G.update()
/datum/species/proc/update_breasts_size(obj/item/organ/genital/breasts/G, size_change)
if (!G)
return
G.cached_size = G.cached_size + size_change
G.update()
/datum/species/proc/handle_fatness_trait(mob/living/carbon/human/H, trait, trait_lose, trait_gain, fatness_lose, fatness_gain, chat_lose, chat_gain)
if(H.fatness < fatness_lose)
if (chat_lose)
@@ -376,48 +407,48 @@
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL)
H.clear_alert("nutrition")
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
H.throw_alert("nutrition", /obj/screen/alert/hungry)
H.throw_alert("nutrition", /atom/movable/screen/alert/hungry)
if(0 to NUTRITION_LEVEL_STARVING)
H.throw_alert("nutrition", /obj/screen/alert/starving)
H.throw_alert("nutrition", /atom/movable/screen/alert/starving)
switch(H.fullness)
if(0 to FULLNESS_LEVEL_BLOATED)
H.clear_alert("fullness")
if(FULLNESS_LEVEL_BLOATED to FULLNESS_LEVEL_BEEG)
H.throw_alert("fullness", /obj/screen/alert/bloated)
H.throw_alert("fullness", /atom/movable/screen/alert/gs13/bloated)
if(FULLNESS_LEVEL_BEEG to FULLNESS_LEVEL_NOMOREPLZ)
H.throw_alert("fullness", /obj/screen/alert/stuffed)
H.throw_alert("fullness", /atom/movable/screen/alert/gs13/stuffed)
if(FULLNESS_LEVEL_NOMOREPLZ to INFINITY)
H.throw_alert("fullness", /obj/screen/alert/beegbelly)
H.throw_alert("fullness", /atom/movable/screen/alert/gs13/beegbelly)
switch(H.fatness)
if(FATNESS_LEVEL_BLOB to INFINITY)
H.throw_alert("fatness", /obj/screen/alert/blob)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/blob)
if(FATNESS_LEVEL_IMMOBILE to FATNESS_LEVEL_BLOB)
H.throw_alert("fatness", /obj/screen/alert/immobile)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/immobile)
if(FATNESS_LEVEL_BARELYMOBILE to FATNESS_LEVEL_IMMOBILE)
H.throw_alert("fatness", /obj/screen/alert/barelymobile)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/barelymobile)
if(FATNESS_LEVEL_EXTREMELY_OBESE to FATNESS_LEVEL_BARELYMOBILE)
H.throw_alert("fatness", /obj/screen/alert/extremelyobese)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/extremelyobese)
if(FATNESS_LEVEL_MORBIDLY_OBESE to FATNESS_LEVEL_EXTREMELY_OBESE)
H.throw_alert("fatness", /obj/screen/alert/morbidlyobese)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/morbidlyobese)
if(FATNESS_LEVEL_OBESE to FATNESS_LEVEL_MORBIDLY_OBESE)
H.throw_alert("fatness", /obj/screen/alert/obese)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/obese)
if(FATNESS_LEVEL_VERYFAT to FATNESS_LEVEL_OBESE)
H.throw_alert("fatness", /obj/screen/alert/veryfat)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/veryfat)
if(FATNESS_LEVEL_FATTER to FATNESS_LEVEL_VERYFAT)
H.throw_alert("fatness", /obj/screen/alert/fatter)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/fatter)
if(FATNESS_LEVEL_FAT to FATNESS_LEVEL_FATTER)
H.throw_alert("fatness", /obj/screen/alert/fat)
H.throw_alert("fatness", /atom/movable/screen/alert/gs13/fat)
if(0 to FATNESS_LEVEL_FAT)
H.clear_alert("fatness")
@@ -13,6 +13,34 @@
M.adjust_fatness(15, FATTENING_TYPE_CHEM)
return ..()
/datum/reagent/medicine/lipolicide
name = "Lipolicide"
description = "A powerful toxin that will destroy fat cells, massively reducing body weight in a short time. Deadly to those without nutriment in their body."
taste_description = "mothballs"
reagent_state = LIQUID
color = "#F0FFF0"
// GS13 tweak
metabolization_rate = 0.7 * REAGENTS_METABOLISM
overdose_threshold = 105
/datum/reagent/medicine/lipolicide/overdose_process(mob/living/carbon/C)
. = ..()
if(current_cycle >=41 && prob(10))
to_chat(C, "<span class='userdanger'>You feel like your organs are on fire!</span>")
C.IgniteMob()
/datum/reagent/medicine/lipolicide/on_mob_life(mob/living/carbon/M)
if(M.nutrition <= NUTRITION_LEVEL_STARVING)
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER, 0)
if(M.fatness_real == 0)
M.nutrition = max(M.nutrition - 3, 0) // making the chef more valuable, one meme trap at a time
if(HAS_TRAIT(M, TRAIT_LIPOLICIDE_TOLERANCE)) //GS13 edit
M.adjust_fatness(-0.5, FATTENING_TYPE_WEIGHT_LOSS)
else
M.adjust_fatness(-10, FATTENING_TYPE_WEIGHT_LOSS)
M.overeatduration = 0
return ..()
//BURPY CHEM
@@ -7,6 +7,13 @@
results = list(/datum/reagent/consumable/lipoifier = 3)
required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/cornoil = 1, /datum/reagent/medicine/synthflesh = 1)
/datum/chemical_reaction/lipolicide
name = "lipolicide"
id = /datum/reagent/medicine/lipolicide
results = list(/datum/reagent/medicine/lipolicide = 3)
required_reagents = list(/datum/reagent/mercury = 1, /datum/reagent/diethylamine = 1, /datum/reagent/medicine/ephedrine = 1)
//BURP CHEM
/datum/chemical_reaction/fizulphite
name = "fizulphite"
+3 -1
View File
@@ -53,7 +53,7 @@
var/click_delay = 2
slot_flags = ITEM_SLOT_BACK
sharpness = IS_BLUNT
sharpness = SHARP_NONE
w_class = WEIGHT_CLASS_BULKY
attack_verb = list("smashed", "whacked", "smacked", "bonked")
hitsound = "swing_hit"
@@ -66,9 +66,11 @@
. = ..()
set_light(l_range, l_power, light_color)
/*
/obj/item/nullrod/dream_breaker/attack(mob/living/target, mob/living/user)
. = ..()
user.changeNext_move(CLICK_CD_MELEE * click_delay)
*/
/obj/item/nullrod/dream_breaker/ui_action_click(mob/user, action)
if(!isliving(user))
+4
View File
@@ -275,3 +275,7 @@
*/
#define FEEBLE_ATTACK_MSG_THRESHOLD 0.5
// GS13 EDIT
#define FAT "fat"
/// What is the rate that one damage is converted to fatness?
#define FAT_DAMAGE_TO_FATNESS 4
@@ -2224,6 +2224,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(BRAIN)
var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.brain_mod
H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage_amount)
// GS13 EDIT
if(FAT)
H.applyFatnessDamage(damage * hit_percent)
return TRUE
/datum/species/proc/on_hit(obj/item/projectile/P, mob/living/carbon/human/H)
+3 -3
View File
@@ -52,7 +52,7 @@
update_icon()
/mob/living/simple_animal/bot/hugbot/update_canmove()
/mob/living/simple_animal/bot/hugbot/update_mobility()
. = ..()
update_icon()
@@ -253,11 +253,11 @@
C.adjustStaminaLoss(-15)
else if(resting)
C.resting = 0
C.update_canmove()
C.update_mobility()
else
C.Knockdown(100)
C.Stun(100)
C.update_canmove()
C.update_mobility()
playsound(C.loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
@@ -2,24 +2,24 @@
/mob/living/carbon/wendigo/proc/metabolize_hunger()
if(HAS_TRAIT(src, TRAIT_NOHUNGER))
return
if(connected_link)
if(connected_link.souls.len > 3)
nutrition = min(800, nutrition + (HUNGER_FACTOR*connected_link.souls.len))
nutrition = max(0, nutrition - (HUNGER_FACTOR / (physiology.hunger_mod / (connected_link.souls.len + 1))))
else
nutrition = max(0, nutrition - (HUNGER_FACTOR / physiology.hunger_mod))
switch(nutrition)
if(NUTRITION_LEVEL_WELL_FED to INFINITY)
throw_alert("nutrition", /obj/screen/alert/full)
throw_alert("nutrition", /atom/movable/screen/alert/full)
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
throw_alert("nutrition", /obj/screen/alert/sated)
throw_alert("nutrition", /atom/movable/screen/alert/sated)
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
throw_alert("nutrition", /obj/screen/alert/hungry)
throw_alert("nutrition", /atom/movable/screen/alert/hungry)
if(0 to NUTRITION_LEVEL_STARVING)
throw_alert("nutrition", /obj/screen/alert/starving)
throw_alert("nutrition", /atom/movable/screen/alert/starving)
/mob/living/carbon/wendigo/reagent_check(datum/reagent/R)
if(istype(R, /datum/reagent/fermi))
var/had_changed = FALSE
@@ -35,7 +35,7 @@
if(R.type == /datum/reagent/fermi/BEsmaller)
fake_breast_size = max(0, fake_breast_size - 0.25)
had_changed = "BEsmaller"
if(had_changed)
R.volume -= R.metabolization_rate
if(round(fake_penis_size, 1) == fake_penis_size && fake_penis_size)
@@ -17,13 +17,13 @@
if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTHEAT))
switch(bodytemperature)
if(280 to 300)
throw_alert("temp", /obj/screen/alert/hot, 1)
throw_alert("temp", /atom/movable/screen/alert/hot, 1)
apply_damage(HEAT_DAMAGE_LEVEL_1*physiology.heat_mod, BURN)
if(300 to 350)
throw_alert("temp", /obj/screen/alert/hot, 2)
throw_alert("temp", /atom/movable/screen/alert/hot, 2)
apply_damage(HEAT_DAMAGE_LEVEL_2*physiology.heat_mod, BURN)
if(350 to INFINITY)
throw_alert("temp", /obj/screen/alert/hot, 3)
throw_alert("temp", /atom/movable/screen/alert/hot, 3)
if(on_fire)
apply_damage(HEAT_DAMAGE_LEVEL_3*physiology.heat_mod, BURN)
else
@@ -33,13 +33,13 @@
if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell))
switch(bodytemperature)
if(200 to 260)
throw_alert("temp", /obj/screen/alert/cold, 1)
throw_alert("temp", /atom/movable/screen/alert/cold, 1)
apply_damage(COLD_DAMAGE_LEVEL_1*physiology.cold_mod, BURN)
if(0 to 120)
throw_alert("temp", /obj/screen/alert/cold, 2)
throw_alert("temp", /atom/movable/screen/alert/cold, 2)
apply_damage(COLD_DAMAGE_LEVEL_2*physiology.cold_mod, BURN)
if(-INFINITY to 0)
throw_alert("temp", /obj/screen/alert/cold, 3)
throw_alert("temp", /atom/movable/screen/alert/cold, 3)
apply_damage(COLD_DAMAGE_LEVEL_3*physiology.cold_mod, BURN)
else
clear_alert("temp")
@@ -54,16 +54,16 @@
switch(adjusted_pressure)
if(HAZARD_HIGH_PRESSURE to INFINITY)
adjustBruteLoss(min((((adjusted_pressure / HAZARD_HIGH_PRESSURE)-1)*PRESSURE_DAMAGE_COEFFICIENT)*physiology.pressure_mod, MAX_HIGH_PRESSURE_DAMAGE))
throw_alert("pressure", /obj/screen/alert/highpressure, 2)
throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2)
if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
throw_alert("pressure", /obj/screen/alert/highpressure, 1)
throw_alert("pressure", /atom/movable/screen/alert/highpressure, 1)
if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
clear_alert("pressure")
if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
throw_alert("pressure", /obj/screen/alert/lowpressure, 1)
throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 1)
else
adjustBruteLoss( LOW_PRESSURE_DAMAGE*physiology.pressure_mod )
throw_alert("pressure", /obj/screen/alert/lowpressure, 2)
throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2)
return
@@ -130,7 +130,7 @@
V.toggle_visibility(picked_visibility)
if(href_list["hidebreasts"])
var/obj/item/organ/genital/breasts/B = usr.getorganslot("breasts")
var/obj/item/organ/genital/breasts/B = usr.getorganslot(ORGAN_SLOT_BREASTS)
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
B.toggle_visibility(picked_visibility)
@@ -140,7 +140,7 @@
E.toggle_visibility(picked_visibility)
if(href_list["hideanus"])
var/obj/item/organ/genital/anus/A = usr.getorganslot("anus")
var/obj/item/organ/genital/butt/A = usr.getorganslot(ORGAN_SLOT_BUTT)
var/picked_visibility = input(usr, "Choose visibility", "Expose/Hide genitals", "Hidden by clothes") in list("Always visible", "Hidden by clothes", "Always hidden")
A.toggle_visibility(picked_visibility)
@@ -262,7 +262,7 @@
O.equipment = null
if(href_list["removeequipmentbreasts"])
var/obj/item/organ/genital/breasts/O = usr.getorganslot("breasts")
var/obj/item/organ/genital/breasts/O = usr.getorganslot(ORGAN_SLOT_BREASTS)
var/obj/item/I = O.equipment
usr.put_in_hands(I)
O.equipment = null
@@ -284,7 +284,7 @@
O.equipment = null
if(href_list["removeequipmentanus"])
var/obj/item/organ/genital/anus/O = usr.getorganslot("anus")
var/obj/item/organ/genital/butt/O = usr.getorganslot(ORGAN_SLOT_BUTT)
var/obj/item/I = O.equipment
usr.put_in_hands(I)
O.equipment = null
@@ -630,7 +630,7 @@ obj/screen/arousal/proc/feedyourself()
picked_organ = input(src, "with what?", "Climax", null) as null|obj in genitals_list
else
return
if(picked_organ)
//Good, got an organ, time to pick a container
if(picked_organ.name == "penis")//if the select organ is a penis
@@ -28,7 +28,7 @@
return
var/obj/item/organ/genital/penis/P = L.getorganslot("penis")
var/obj/item/organ/genital/breasts/B = L.getorganslot("breasts")
var/obj/item/organ/genital/breasts/B = L.getorganslot(ORGAN_SLOT_BREASTS)
var/obj/item/organ/genital/testicles/T = L.getorganslot("testicles")
//reset data, just incase they dont have that genitle
@@ -77,4 +77,4 @@
set_pin_data(IC_OUTPUT, 2, L.breedable)
push_data()
activate_pin(2)
*/
*/
+3 -3
View File
@@ -120,7 +120,7 @@
return TRUE
if(abs(get_effective_size()/tmob.get_effective_size()) >= 2)
if(H.a_intent == "disarm" && H.canmove && !H.buckled)
if(H.a_intent == "disarm" && CHECK_MOBILITY(H, MOBILITY_MOVE) && !H.buckled)
now_pushing = 0
H.forceMove(tmob.loc)
sizediffStamLoss(tmob)
@@ -147,7 +147,7 @@
return TRUE
* commenting out for now.*/
if(H.a_intent == "harm" && H.canmove && !H.buckled)
if(H.a_intent == "harm" && CHECK_MOBILITY(H, MOBILITY_MOVE) && !H.buckled)
now_pushing = 0
H.forceMove(tmob.loc)
sizediffStamLoss(tmob)
@@ -177,7 +177,7 @@
commenting out for now */
return TRUE
// if(H.a_intent == "grab" && H.canmove && !H.buckled)
// if(H.a_intent == "grab" && CHECK_MOBILITY(H, MOBILITY_MOVE) && !H.buckled)
// now_pushing = 0
// H.forceMove(tmob.loc)
// sizediffStamLoss(tmob)
+6 -6
View File
@@ -14,9 +14,9 @@ Icons, maybe?
/datum/status_effect/leash_dom
status_type = STATUS_EFFECT_UNIQUE
alert_type = /obj/screen/alert/status_effect/leash_dom
alert_type = /atom/movable/screen/alert/status_effect/leash_dom
/obj/screen/alert/status_effect/leash_dom
/atom/movable/screen/alert/status_effect/leash_dom
name = "Leash Master"
desc = "You've got a leash, and a cute pet on the other end."
icon_state = "leash_master" //These call icons that don't exist, so no icon comes up. Which is good.
@@ -24,9 +24,9 @@ Icons, maybe?
/datum/status_effect/leash_freepet
status_type = STATUS_EFFECT_UNIQUE
alert_type = /obj/screen/alert/status_effect/leash_freepet
alert_type = /atom/movable/screen/alert/status_effect/leash_freepet
/obj/screen/alert/status_effect/leash_freepet
/atom/movable/screen/alert/status_effect/leash_freepet
name = "Escaped Pet"
desc = "You're on a leash, but you've no master. If anyone grabs the leash they'll gain control!"
icon_state = "leash_freepet"
@@ -36,9 +36,9 @@ Icons, maybe?
id = "leashed"
status_type = STATUS_EFFECT_UNIQUE
var/mob/redirect_component
alert_type = /obj/screen/alert/status_effect/leash_pet
alert_type = /atom/movable/screen/alert/status_effect/leash_pet
/obj/screen/alert/status_effect/leash_pet
/atom/movable/screen/alert/status_effect/leash_pet
name = "Leashed Pet"
desc = "You're on the hook now! Be good for your master."
icon_state = "leash_pet"
+3
View File
@@ -3928,6 +3928,7 @@
#include "GainStation13\code\machinery\fattening_turret.dm"
#include "GainStation13\code\machinery\feeding_tube.dm"
#include "GainStation13\code\machinery\supply_teleporter.dm"
#include "GainStation13\code\mechanics\calorite.dm"
#include "GainStation13\code\mechanics\fatness.dm"
#include "GainStation13\code\mechanics\fatrousal.dm"
#include "GainStation13\code\mechanics\fattening_trap.dm"
@@ -3945,12 +3946,14 @@
#include "GainStation13\code\mobs\chocoslime.dm"
#include "GainStation13\code\mobs\races\caloritegolem.dm"
#include "GainStation13\code\modules\client\preferences\preferences.dm"
#include "GainStation13\code\modules\clothing\under\jobs\clothing.dm"
#include "GainStation13\code\modules\clothing\under\jobs\modcivilian.dm"
#include "GainStation13\code\modules\food_and_drinks\drinks.dm"
#include "GainStation13\code\modules\food_and_drinks\food.dm"
#include "GainStation13\code\modules\food_and_drinks\recipes_bigpizza.dm"
#include "GainStation13\code\modules\food_and_drinks\objects\candy_flora.dm"
#include "GainStation13\code\modules\food_and_drinks\recipes\recipes_ported.dm"
#include "GainStation13\code\modules\hud\alert.dm"
#include "GainStation13\code\modules\gym\gym.dm"
#include "GainStation13\code\modules\hydroponics\lipoplant.dm"
#include "GainStation13\code\modules\hydroponics\munchies_weed.dm"