This commit is contained in:
AbsFree
2025-02-23 20:56:02 +01:00
8 changed files with 94 additions and 0 deletions
@@ -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("<span class'danger'>[L] gets stuck in the doorway!</span>")
to_chat(L, "<span class='danger'>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.</span>")
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
@@ -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?
@@ -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
@@ -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)
+11
View File
@@ -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 +="<td width='300px' height='300px' valign='top'>"
dat += "<h2>GS13 Gameplay Preferences</h2>"
dat += "<b>Stuckage (at what weight will you get stuck in doors?):</b><a href='?_src_=prefs;preference=stuckage'>[stuckage == FALSE ? "Disabled" : stuckage]</a><BR>"
if(stuckage)
dat += "<b>Stuckage Chance :</b> <a href='?_src_=prefs;preference=stuckage_chance;task=input'>[stuckage_chance]</a><br>"
dat += "<b>Chair Breakage (at what weight will you break chairs?):</b><a href='?_src_=prefs;preference=chair_breakage'>[chair_breakage == FALSE ? "Disabled" : chair_breakage]</a><BR>"
dat += "<br></br>"
dat += "This preference will allow items that work based on weight to work to you, <b>usually to your detriment.</b> <BR>"
@@ -3021,6 +3025,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/new_wl_rate = input(user, "Choose your weight loss rate from 0.1 (10%) to 2 (200%).\n Decimals such as 0.2 indicate 20% rate.\nDefault recommended rate is 0.5 (50%)", "Character Preference", wl_rate) as num|null
if (new_wl_rate)
wl_rate = max(min(round(text2num(new_wl_rate),0.01),2),0)
if("stuckage_chance")
var/new_stuckage_chance = input(user, "Choose your chance to get stuck in doors from 0.1 (10%) to 1 (100%).\nDecimals such as 0.2 indicate 20% chance.\nSetting this to 0 restores default values.", "Character Preference", stuckage_chance) as num|null
if(new_stuckage_chance)
stuckage_chance = clamp(new_stuckage_chance, 0.1, 1)
else
stuckage_chance = 0
if("marking_down")
// move the specified marking down
@@ -952,6 +952,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["helplessness_clothing_back"] >> helplessness_clothing_back
S["helplessness_no_buckle"] >> helplessness_no_buckle
S["stuckage"] >> stuckage
S["stuckage_chance"] >> stuckage_chance
S["chair_breakage"] >> chair_breakage
S["fatness_vulnerable"] >> fatness_vulnerable
S["extreme_fatness_vulnerable"] >> extreme_fatness_vulnerable
@@ -1247,6 +1248,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["helplessness_clothing_back"], helplessness_clothing_back)
WRITE_FILE(S["helplessness_no_buckle"], helplessness_no_buckle)
WRITE_FILE(S["stuckage"], stuckage)
WRITE_FILE(S["stuckage_chance"], stuckage_chance)
WRITE_FILE(S["chair_breakage"], chair_breakage)
WRITE_FILE(S["fatness_vulnerable"], fatness_vulnerable)
WRITE_FILE(S["extreme_fatness_vulnerable"], extreme_fatness_vulnerable)
+2
View File
@@ -240,6 +240,7 @@
/obj/item/organ/eyes/robotic/glow
name = "High Luminosity Eyes"
desc = "Special glowing eyes, used by snowflakes who want to be special."
flash_protect = 2 // GS13 EDIT Non-organic eyes should be protected from welding flash.
left_eye_color = "000"
right_eye_color = "000"
actions_types = list(/datum/action/item_action/organ_action/use, /datum/action/item_action/organ_action/toggle)
@@ -429,6 +430,7 @@
name = "ipc eyes"
icon_state = "cybernetic_eyeballs"
organ_flags = ORGAN_SYNTHETIC // GS13 = Fixes IPC organs decaying, we hope.
flash_protect = 2 // GS13 EDIT Non-organic eyes should be protected from welding flash.
/obj/item/organ/eyes/ipc/emp_act(severity)
. = ..()
+2
View File
@@ -4127,6 +4127,8 @@
#include "GainStation13\icons\obj\vairous_weapons.dm"
#include "GainStation13\icons\obj\structure\beds.dm"
#include "GainStation13\icons\obj\structure\flora.dm"
#include "GainStation13\code\modules\research\techweb\robotic_nodes.dm"
#include "GainStation13\code\modules\research\designs\ipc_designs.dm"
#include "hyperstation\code\datums\mood_events\events.dm"
#include "hyperstation\code\game\objects\railings.dm"
#include "hyperstation\code\game\objects\structures\bench.dm"