diff --git a/GainStation13/code/machinery/doors/airlock_types.dm b/GainStation13/code/machinery/doors/airlock_types.dm index 7e2d83ab6c..91f2108c3c 100644 --- a/GainStation13/code/machinery/doors/airlock_types.dm +++ b/GainStation13/code/machinery/doors/airlock_types.dm @@ -7,6 +7,17 @@ if(isnull(stuckage_weight) || (stuckage_weight < 10)) return ..() // They aren't able to get stuck + var/chance_to_get_stuck = L?.client?.prefs?.stuckage_chance * 100 + if(chance_to_get_stuck && L.fatness > stuckage_weight) + if(prob(chance_to_get_stuck)) + L.doorstuck = 1 + L.visible_message("[L] gets stuck in the doorway!") + to_chat(L, "As you attempt to pass through \the [src], your ample curves get wedged in the narrow opening. You find yourself stuck in the [src] frame, struggling to free yourself from the tight squeeze.") + L.Stun(55, updating = TRUE, ignore_canstun = TRUE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/door/airlock/, AsyncDoorstuckCall), L), 55) + return ..() + + if(L.fatness > (stuckage_weight * 2)) if(rand(1, 3) == 1) L.doorstuck = 1 diff --git a/GainStation13/code/modules/client/preferences/preferences.dm b/GainStation13/code/modules/client/preferences/preferences.dm index 4919d3703e..3ad11a65e4 100644 --- a/GainStation13/code/modules/client/preferences/preferences.dm +++ b/GainStation13/code/modules/client/preferences/preferences.dm @@ -27,6 +27,8 @@ var/weight_gain_permanent = FALSE /// At what weight will you start to get stuck in airlocks? var/stuckage = FALSE + // Percentage chance to get stuck in doors. Setting this to 0 will make the chance depend on the person's weight + var/stuckage_chance = 0 /// At what weight will you start to break chairs? var/chair_breakage = FALSE /// Are items that only affect those at high weights able to affect the player? diff --git a/GainStation13/code/modules/research/designs/ipc_designs.dm b/GainStation13/code/modules/research/designs/ipc_designs.dm new file mode 100644 index 0000000000..98a7fb2822 --- /dev/null +++ b/GainStation13/code/modules/research/designs/ipc_designs.dm @@ -0,0 +1,53 @@ +///////////////////////////// +/////Synth and IPC Organs//// +///////////////////////////// + +/datum/design/ipc_heart + name = "IPC heart" + desc = "Allows for the construction of an IPC heart." + id = "ipc_heart" + build_type = PROTOLATHE | MECHFAB + materials = list(/datum/material/glass = 400, /datum/material/iron = 800, /datum/material/gold = 300) + build_path = /obj/item/organ/heart/ipc + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/ipc_liver + name = "IPC reagent processing liver" + desc = "Allows for the construction of an IPC reagent processing liver." + id = "ipc_liver" + build_type = PROTOLATHE | MECHFAB + materials = list(/datum/material/plasma = 100, /datum/material/iron = 800, /datum/material/glass = 300, /datum/material/silver = 500, /datum/material/gold = 400) + build_path = /obj/item/organ/liver/ipc + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/ipc_ears + name = "IPC auditory sensors" + desc = "Allows for the construction of an IPC auditory sensors." + id = "ipc_ears" + build_type = PROTOLATHE | MECHFAB + materials = list(/datum/material/gold = 400, /datum/material/iron = 800) + build_path = /obj/item/organ/ears/ipc + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/ipc_tongue + name = "IPC positronic voicebox" + desc = "Allows for the construction of an IPC positronic voicebox." + id = "ipc_tongue" + build_type = PROTOLATHE | MECHFAB + materials = list(/datum/material/gold = 400, /datum/material/iron = 800) + build_path = /obj/item/organ/tongue/robot/ipc + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE + +/datum/design/ipc_eyes + name = "IPC eyes" + desc = "Allows for the construction of an IPC eyes." + id = "ipc_eyes" + build_type = PROTOLATHE | MECHFAB + materials = list(/datum/material/glass = 500, /datum/material/iron = 800, /datum/material/glass = 300,) + build_path = /obj/item/organ/eyes/ipc + category = list("Misc", "Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE diff --git a/GainStation13/code/modules/research/techweb/robotic_nodes.dm b/GainStation13/code/modules/research/techweb/robotic_nodes.dm new file mode 100644 index 0000000000..7687363899 --- /dev/null +++ b/GainStation13/code/modules/research/techweb/robotic_nodes.dm @@ -0,0 +1,11 @@ +////////////////////////////// +/////Any new robotic nodes//// +////////////////////////////// + +/datum/techweb_node/ipc_tech + id = "ipc_tech" + display_name = "IPC. parts" + description = "IPC. parts research." + prereq_ids = list("biotech") + design_ids = list("ipc_eyes", "ipc_stomach", "ipc_heart", "ipc_liver", "ipc_ears", "ipc_tongue", "ci-power-cord" ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 0c86d86668..00af91d8b9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -328,6 +328,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) wl_rate = 0.5 if(isnull(stuckage)) stuckage = 0 + if (stuckage_chance == null) + stuckage_chance = 0 if(isnull(max_weight)) max_weight = 0 if(isnull(chair_breakage)) @@ -1422,6 +1424,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat +="