This commit is contained in:
Metis
2024-05-26 04:19:16 -04:00
parent a8c3d3c233
commit 8b19a80454
5 changed files with 112 additions and 2 deletions
+22
View File
@@ -124,3 +124,25 @@
xwg_size = min(xwg_size, RESIZE_HUGE)
xwg_size = max(xwg_size, custom_body_size*0.01)
resize(xwg_size)
/proc/get_fatness_level_name(fatness_amount)
if(fatness_amount < FATNESS_LEVEL_FAT)
return "Normal"
if(fatness_amount < FATNESS_LEVEL_FATTER)
return "Fat"
if(fatness_amount < FATNESS_LEVEL_VERYFAT)
return "Fatter"
if(fatness_amount < FATNESS_LEVEL_OBESE)
return "Very Fat"
if(fatness_amount < FATNESS_LEVEL_MORBIDLY_OBESE)
return "Obese"
if(fatness_amount < FATNESS_LEVEL_EXTREMELY_OBESE)
return "Morbidly Obese"
if(fatness_amount < FATNESS_LEVEL_BARELYMOBILE)
return "Extremely Obese"
if(fatness_amount < FATNESS_LEVEL_IMMOBILE)
return "Barely Mobile"
if(fatness_amount < FATNESS_LEVEL_BLOB)
return "Immobile"
return "Blob"
@@ -0,0 +1,7 @@
/datum/design/infrared_emitter
name = "Fatness Infrared Emitter"
id = "fatness_infrared_emitter"
build_type = AUTOLATHE
materials = list(MAT_METAL = 1000, MAT_GLASS = 500)
build_path = /obj/item/assembly/infra/fat
category = list("initial", "Misc")
@@ -0,0 +1,79 @@
/obj/item/assembly/infra/fat
name = "fatness infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted. This one checks if the person tripping it is above or below a certain level of fatness."
var/fatness_to_trigger = 0
var/trigger_below = FALSE
/obj/item/assembly/infra/fat/examine(mob/user)
. = ..()
. += "<span class='notice'>The infrared trigger is set to trigger when the target is [trigger_below?"above":"below"] being [get_fatness_level_name(fatness_to_trigger)].</span>"
/obj/item/assembly/infra/fat/ui_interact(mob/user)//TODO: change this this to the wire control panel
if(!is_secured(user))
return
user.set_machine(src)
var/dat = "<TT><B>Fatness Infrared Laser</B></TT>"
dat += "<BR><B>Status</B>: [on ? "<A href='?src=[REF(src)];state=0'>On</A>" : "<A href='?src=[REF(src)];state=1'>Off</A>"]"
dat += "<BR><B>Visibility</B>: [visible ? "<A href='?src=[REF(src)];visible=0'>Visible</A>" : "<A href='?src=[REF(src)];visible=1'>Invisible</A>"]"
dat += "<BR><B>Fatness level to trigger:</B><A href='?src=[REF(src)];fatness_to_trigger=1'>[get_fatness_level_name(fatness_to_trigger)]</A>"
dat += "<BR><B>Trigger above or below the target fatness level:</B><A href='?src=[REF(src)];trigger_below=1'>[trigger_below ? "Below" : "Above"]</A>"
dat += "<BR><BR><A href='?src=[REF(src)];refresh=1'>Refresh</A>"
dat += "<BR><BR><A href='?src=[REF(src)];close=1'>Close</A>"
user << browse(dat, "window=infra")
onclose(user, "infra")
return
/obj/item/assembly/infra/fat/Topic(href, href_list)
..()
if(href_list["trigger_below"])
trigger_below = !(trigger_below)
update_icon()
refreshBeam()
if(href_list["fatness_to_trigger"])
var/fatness_type = input(usr,
"What level of fatness do you wish to alert above/under at?",
src, "None") as null|anything in list(
"None", "Fat", "Fatter", "Very Fat", "Obese", "Morbidly Obese", "Extremely Obese", "Barely Mobile", "Immobile", "Blob")
if(!fatness_type)
return
var/fatness_amount = 0
switch(fatness_type)
if("Fat")
fatness_amount = FATNESS_LEVEL_FAT
if("Fatter")
fatness_amount = FATNESS_LEVEL_FATTER
if("Very Fat")
fatness_amount = FATNESS_LEVEL_VERYFAT
if("Obese")
fatness_amount = FATNESS_LEVEL_OBESE
if("Morbidly Obese")
fatness_amount = FATNESS_LEVEL_MORBIDLY_OBESE
if("Extremely Obese")
fatness_amount = FATNESS_LEVEL_EXTREMELY_OBESE
if("Barely Mobile")
fatness_amount = FATNESS_LEVEL_BARELYMOBILE
if("Immobile")
fatness_amount = FATNESS_LEVEL_IMMOBILE
if("Blob")
fatness_amount = FATNESS_LEVEL_BLOB
fatness_to_trigger = fatness_amount
update_icon()
refreshBeam()
/obj/item/assembly/infra/fat/trigger_beam(atom/movable/AM, turf/location)
var/mob/living/carbon/crossed_fatty = AM
if(!istype(crossed_fatty))
return FALSE
if(trigger_below && (crossed_fatty.fatness >= fatness_to_trigger))
return FALSE
if(!trigger_below && (crossed_fatty.fatness < fatness_to_trigger))
return FALSE
return ..() // I love using inheritence so much.
+2 -2
View File
@@ -60,7 +60,7 @@
else
to_chat(fatty, "<span class='notice'>[src.lastreading]Lbs.</span>")
visible_message("<span class='notice'>The numbers on the screen read out: [fatty] has a BFI of [fatness].</span>")
visible_message("<span class='notice'>The numbers on the screen read out: [fatty] has a BFI of [fatty.fatness].</span>")
/obj/structure/scale/Crossed(AM as mob|obj)
if(isturf(loc))
@@ -75,4 +75,4 @@
weighEffect(fatty)
visible_message("<span class='notice'>[fatty] weighs themselves.</span>")
visible_message("<span class='notice'>The numbers on the screen settle on: [src.lastreading]Lbs.</span>")
visible_message("<span class='notice'>The numbers on the screen read out: [fatty] has a BFI of [fatness].</span>")
visible_message("<span class='notice'>The numbers on the screen read out: [fatty] has a BFI of [fatty.fatness].</span>")
+2
View File
@@ -3119,6 +3119,7 @@
#include "GainStation13\code\modules\reagents\chemistry\recipes\fatdrinks.dm"
#include "GainStation13\code\modules\reagents\chemistry\recipes\ROCKANDSTONEdrinks.dm"
#include "GainStation13\code\modules\reagents\reagent_containers\barrel_tank.dm"
#include "GainStation13\code\modules\research\designs\autolathe.dm"
#include "GainStation13\code\modules\research\designs\nutri_designs.dm"
#include "GainStation13\code\modules\research\techweb\nutritech_nodes.dm"
#include "GainStation13\code\modules\surgery\organs\augments.dm"
@@ -3127,6 +3128,7 @@
#include "GainStation13\code\obj\items\bluespace_belt.dm"
#include "GainStation13\code\obj\items\holy.dm"
#include "GainStation13\code\obj\items\minor_items.dm"
#include "GainStation13\code\obj\items\sensors\weight_infared.dm"
#include "GainStation13\code\obj\structure\calorite_doors.dm"
#include "GainStation13\code\obj\structure\candylight.dm"
#include "GainStation13\code\obj\structure\fountain.dm"