Skip to content
Merged
Show file tree
Hide file tree
Changes from 28 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4008693
radial 1
Herobrine998 Sep 18, 2025
f191396
radial 2
Herobrine998 Sep 18, 2025
4664314
prioritized radial menu
Herobrine998 Sep 19, 2025
a7c0662
Fix CI
Herobrine998 Sep 19, 2025
226fb2c
icon fix
Herobrine998 Sep 19, 2025
306f83c
fixes + mouth sew upgr
Herobrine998 Sep 19, 2025
d5a3b4c
operation in work 1
Herobrine998 Sep 19, 2025
3088eee
operations in work 2
Herobrine998 Sep 20, 2025
eb76354
cryo
Herobrine998 Sep 20, 2025
a67c9e0
fix VAPOR
Herobrine998 Sep 22, 2025
96e8b96
sleeper
Herobrine998 Sep 22, 2025
211a146
organs heal 1
Herobrine998 Sep 22, 2025
90c3e82
organs heal 2
Herobrine998 Sep 22, 2025
a289304
organs heal 3
Herobrine998 Sep 23, 2025
f276bc3
operating comp
Herobrine998 Sep 23, 2025
59c5608
no antitox sleeper
Herobrine998 Sep 23, 2025
e9762c2
name fix
Herobrine998 Sep 23, 2025
19d5c81
Merge remote-tracking branch 'upstream/master' into med-rework
Herobrine998 Sep 23, 2025
fd9f1f8
no put item
Herobrine998 Sep 23, 2025
ec28888
fixes + stasis roller 1
Herobrine998 Sep 23, 2025
200c2c7
desc fix
Herobrine998 Sep 23, 2025
dca88d0
base med upgrd
Herobrine998 Sep 24, 2025
e23c67e
stasis roller 2 (no tech)
Herobrine998 Sep 24, 2025
0c09cd5
stasis roller 3
Herobrine998 Sep 24, 2025
869e75e
toxichealing upgr + translate operations
Herobrine998 Sep 24, 2025
3b1be79
new radial icon
Herobrine998 Sep 24, 2025
4a8c414
+1 hypokit
Herobrine998 Sep 24, 2025
da8a6c6
decay
Herobrine998 Sep 24, 2025
12d6c66
gauze fix
Herobrine998 Sep 24, 2025
f5410c5
blood filter + fix
Herobrine998 Sep 25, 2025
0312899
fixes
Herobrine998 Sep 25, 2025
87d0469
fix
Herobrine998 Sep 25, 2025
288b2ba
QoL
Herobrine998 Sep 25, 2025
c1ce8aa
QoL
Herobrine998 Sep 25, 2025
c926f35
fix
Herobrine998 Sep 25, 2025
e244415
fix
Herobrine998 Sep 25, 2025
7071bf9
fix
Herobrine998 Sep 25, 2025
7d81b20
fixes pack 1
Herobrine998 Sep 29, 2025
e68827c
updt pack 2
Herobrine998 Oct 1, 2025
296578d
CI Trigger
Herobrine998 Oct 1, 2025
86fe462
CI fix
Herobrine998 Oct 1, 2025
e0d74a1
embedded removal fix
Herobrine998 Oct 2, 2025
40ed155
fix + translate
Herobrine998 Oct 3, 2025
d273944
text fix
Herobrine998 Oct 4, 2025
5d46a8c
fix
Herobrine998 Oct 4, 2025
86e8f27
+-
Herobrine998 Oct 4, 2025
c3ab362
updt pack 3
Herobrine998 Oct 6, 2025
d0395ba
morgue cyborg fix
Herobrine998 Oct 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions code/__BLUEMOONCODE/_DEFINES/surgery.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,40 @@
/datum/surgery/healing/burn/upgraded, \
/datum/surgery/advanced/toxichealing \
)

// Все базовые операции
#define BASE_MED_SURGERY_OPERATIONS list( \
/datum/surgery/coronary_bypass, \
/datum/surgery/lobectomy, \
/datum/surgery/debride, \
/datum/surgery/cardioversion, \
/datum/surgery/eye_surgery, \
/datum/surgery/brain_surgery, \
/datum/surgery/organ_manipulation, \
/datum/surgery/repair_bone_hairline, \
/datum/surgery/repair_puncture, \
/datum/surgery/healing/brute/basic, \
/datum/surgery/healing/burn/basic, \
/datum/surgery/graft_synthtissue, \
/datum/surgery/embalming, \
/datum/surgery/lipoplasty \
)

/// Priority for sorting the radial operations menu. Lower number = higher position
#define SURGERY_RADIAL_PRIORITY 99

// For healing operations (is_healing = TRUE)
#define SURGERY_RADIAL_PRIORITY_HEAL_BASE_COMBO 0.9 // For Healing damage
#define SURGERY_RADIAL_PRIORITY_HEAL_BASE 1 // For Healing damage
#define SURGERY_RADIAL_PRIORITY_HEAL_EXTRA 1.1 // For Healing secondary damage (like tox)
#define SURGERY_RADIAL_PRIORITY_HEAL_STATIC 2 // For operations, like organ manipulation
#define SURGERY_RADIAL_PRIORITY_HEAL_EMERGENCY 3 // For temporary operations, like revival
#define SURGERY_RADIAL_PRIORITY_HEAL_WOUND 4 // For fix wounds
#define SURGERY_RADIAL_PRIORITY_HEAL_ORGAN 5 // For operations to heal organs
#define SURGERY_RADIAL_PRIORITY_HEAL_ADDITIONAL 6

// For other operations (is_healing = FALSE)
#define SURGERY_RADIAL_PRIORITY_OTHER_FIRST 1
#define SURGERY_RADIAL_PRIORITY_OTHER_SECOND 2
#define SURGERY_RADIAL_PRIORITY_OTHER_THIRD 3
#define SURGERY_RADIAL_PRIORITY_OTHER_FOURTH 4
2 changes: 1 addition & 1 deletion code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@

////organ defines
#define STANDARD_ORGAN_THRESHOLD 100
#define STANDARD_ORGAN_HEALING (1/(15 MINUTES / (2 SECONDS))) / 3 //Base organ healing can be amped by a factor of up to x5 via satiety. This assumes it to be somewhat in the upper center of positive satiety as base.
#define STANDARD_ORGAN_HEALING (1/(15 MINUTES / (2 SECONDS))) / 2 //Base organ healing can be amped by a factor of up to x5 via satiety. This assumes it to be somewhat in the upper center of positive satiety as base.
#define STANDARD_ORGAN_DECAY (1/(15 MINUTES / (2 SECONDS))) //designed to fail organs when left to decay for ~15 minutes. 2 SECOND is SSmobs tickrate.


Expand Down
10 changes: 6 additions & 4 deletions code/game/machinery/Sleeper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,12 @@
var/list/available_chems
var/controls_inside = FALSE
var/list/possible_chems = list(
list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/bicaridine, /datum/reagent/medicine/kelotane),
list(/datum/reagent/medicine/epinephrine, /datum/reagent/medicine/morphine, /datum/reagent/medicine/salbutamol, /datum/reagent/medicine/charcoal, /datum/reagent/medicine/salglu_solution),
list(/datum/reagent/medicine/oculine,/datum/reagent/medicine/inacusiate),
list(/datum/reagent/medicine/antitoxin, /datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol, /datum/reagent/medicine/pen_acid),
list(/datum/reagent/medicine/omnizine)
list(/datum/reagent/medicine/mutadone, /datum/reagent/medicine/mannitol),
list(/datum/reagent/medicine/omnizine),
list(/datum/reagent/medicine/atropine),
list(/datum/reagent/medicine/perfluorodecalin, /datum/reagent/medicine/neurine, /datum/reagent/medicine/sal_acid, /datum/reagent/medicine/oxandrolone)
)
var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: antitoxin -> morphine
var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning
Expand Down Expand Up @@ -50,7 +52,7 @@
efficiency = initial(efficiency)* E
min_health = initial(min_health) - (10*(E-1)) // CIT CHANGE - changes min health equation to be min_health - (matterbin rating * 10)
available_chems = list()
I = clamp(I, 1, 5) //patch for T6, fix it later
I = clamp(I, 1, possible_chems.len)
for(var/i in 1 to I)
available_chems |= possible_chems[i]
reset_chem_buttons()
Expand Down
152 changes: 63 additions & 89 deletions code/game/machinery/computer/Operating.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,17 @@
/obj/machinery/computer/operating/ui_data(mob/user)
var/list/data = list()
data["table"] = table
var/static/list/surgeries_base = list()
if(!surgeries_base.len)
for(var/path in BASE_MED_SURGERY_OPERATIONS)
var/datum/surgery/S = path
surgeries_base += list( \
list(
"name" = initial(S.name),
"desc" = initial(S.desc)
))

data["surgeries_base"] = surgeries_base
if(table)
var/list/surgeries = list()
for(var/X in advanced_surgeries)
Expand All @@ -64,97 +75,60 @@
surgery["desc"] = initial(S.desc)
surgeries += list(surgery)
data["surgeries"] = surgeries
if(table.check_patient())
data["patient"] = list()
patient = table.patient
switch(patient.stat)
if(CONSCIOUS)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "good"
if(SOFT_CRIT)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "average"
if(UNCONSCIOUS)
data["patient"]["stat"] = "Unconscious"
data["patient"]["statstate"] = "average"
if(DEAD)
data["patient"]["stat"] = "Dead"
data["patient"]["statstate"] = "bad"
data["patient"]["health"] = patient.health
data["patient"]["blood_type"] = patient.dna.blood_type
data["patient"]["maxHealth"] = patient.maxHealth
data["patient"]["minHealth"] = HEALTH_THRESHOLD_DEAD
data["patient"]["bruteLoss"] = patient.getBruteLoss()
data["patient"]["fireLoss"] = patient.getFireLoss()
data["patient"]["toxLoss"] = patient.getToxLoss()
data["patient"]["oxyLoss"] = patient.getOxyLoss()
data["patient"]["is_robotic_organism"] = HAS_TRAIT(patient, TRAIT_ROBOTIC_ORGANISM)
if(patient.surgeries.len)
data["procedures"] = list()
for(var/datum/surgery/procedure in patient.surgeries)
var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
var/chems_needed = surgery_step.get_chem_list()
var/alternative_step
var/alt_chems_needed = ""
if(surgery_step.repeatable)
var/datum/surgery_step/next_step = procedure.get_surgery_next_step()
if(next_step)
alternative_step = capitalize(next_step.name)
alt_chems_needed = next_step.get_chem_list()
else
alternative_step = "Finish operation"
data["procedures"] += list(list(
"name" = capitalize(procedure.name),
"next_step" = capitalize(surgery_step.name),
"chems_needed" = chems_needed,
"alternative_step" = alternative_step,
"alt_chems_needed" = alt_chems_needed
))
else
if(!table.check_patient())
data["patient"] = null
return data
switch(patient.stat)
if(CONSCIOUS)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "good"
if(SOFT_CRIT)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "average"
if(UNCONSCIOUS)
data["patient"]["stat"] = "Unconscious"
data["patient"]["statstate"] = "average"
if(DEAD)
data["patient"]["stat"] = "Dead"
data["patient"]["statstate"] = "bad"
data["patient"]["health"] = patient.health
data["patient"]["blood_type"] = patient.dna.blood_type
data["patient"]["maxHealth"] = patient.maxHealth
data["patient"]["minHealth"] = HEALTH_THRESHOLD_DEAD
data["patient"]["bruteLoss"] = patient.getBruteLoss()
data["patient"]["fireLoss"] = patient.getFireLoss()
data["patient"]["toxLoss"] = patient.getToxLoss()
data["patient"]["oxyLoss"] = patient.getOxyLoss()
data["procedures"] = list()
if(patient.surgeries.len)
for(var/datum/surgery/procedure in patient.surgeries)
var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
var/chems_needed = surgery_step.get_chem_list()
var/alternative_step
var/alt_chems_needed = ""
if(surgery_step.repeatable)
var/datum/surgery_step/next_step = procedure.get_surgery_next_step()
if(next_step)
alternative_step = capitalize(next_step.name)
alt_chems_needed = next_step.get_chem_list()
else
alternative_step = "Finish operation"
data["procedures"] += list(list(
"name" = capitalize("[parse_zone(procedure.location)] - [procedure.name]"),
"next_step" = capitalize(surgery_step.name),
"chems_needed" = chems_needed,
"alternative_step" = alternative_step,
"alt_chems_needed" = alt_chems_needed
))

data["patient"] = list()
patient = table.patient
switch(patient.stat)
if(CONSCIOUS)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "good"
if(SOFT_CRIT)
data["patient"]["stat"] = "Conscious"
data["patient"]["statstate"] = "average"
if(UNCONSCIOUS)
data["patient"]["stat"] = "Unconscious"
data["patient"]["statstate"] = "average"
if(DEAD)
data["patient"]["stat"] = "Dead"
data["patient"]["statstate"] = "bad"
data["patient"]["health"] = patient.health
data["patient"]["blood_type"] = patient.dna.blood_type
data["patient"]["maxHealth"] = patient.maxHealth
data["patient"]["minHealth"] = HEALTH_THRESHOLD_DEAD
data["patient"]["bruteLoss"] = patient.getBruteLoss()
data["patient"]["fireLoss"] = patient.getFireLoss()
data["patient"]["toxLoss"] = patient.getToxLoss()
data["patient"]["oxyLoss"] = patient.getOxyLoss()
data["patient"]["is_robotic_organism"] = HAS_TRAIT(patient, TRAIT_ROBOTIC_ORGANISM)
data["procedures"] = list()
if(patient.surgeries.len)
for(var/datum/surgery/procedure in patient.surgeries)
var/datum/surgery_step/surgery_step = procedure.get_surgery_step()
var/chems_needed = surgery_step.get_chem_list()
var/alternative_step
var/alt_chems_needed = ""
var/list/next_step_tools = surgery_step.get_max_chance_implements()
var/list/alternative_step_tools = list()
if(surgery_step.repeatable)
var/datum/surgery_step/next_step = procedure.get_surgery_next_step()
if(next_step)
alternative_step = capitalize(next_step.name)
alt_chems_needed = next_step.get_chem_list()
alternative_step_tools = next_step.get_max_chance_implements()
else
alternative_step = "Finish operation"
data["procedures"] += list(list(
"name" = capitalize("[parse_zone(procedure.location)] - [procedure.name]"),
"next_step" = capitalize(surgery_step.name),
"next_step_tools" = next_step_tools,
"chems_needed" = chems_needed,
"alternative_step" = alternative_step,
"alternative_step_tools" = alternative_step_tools,
"alt_chems_needed" = alt_chems_needed
))
return data


Expand Down
1 change: 1 addition & 0 deletions code/game/machinery/stasis.dm
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
var/_running = stasis_running()
if(!mattress_on)
mattress_on = SSvis_overlays.add_vis_overlay(src, icon, mattress_state, BELOW_OBJ_LAYER, plane, dir, alpha = 0, unique = TRUE)
mattress_on.vis_flags = VIS_INHERIT_PLANE | VIS_INHERIT_LAYER | VIS_INHERIT_DIR | VIS_INHERIT_ID
else
vis_contents += mattress_on
if(managed_vis_overlays)
Expand Down
22 changes: 14 additions & 8 deletions code/game/objects/items/stacks/medical.dm
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@
name = "sterilized medical gauze"
singular_name = "sterilized medical gauze"
desc = "A roll of elastic sterilized cloth that is extremely effective at stopping bleeding and covering burns."
heal_brute = 6
heal_brute = 7
self_delay = 45
other_delay = 15
absorption_rate = 0.5
Expand All @@ -231,14 +231,14 @@
amount = 15
max_amount = 15
repeating = TRUE
heal_brute = 10
heal_brute = 13
stop_bleeding = 0.6
grind_results = list(/datum/reagent/medicine/spaceacillin = 2)

/obj/item/stack/medical/suture/emergency
name = "emergency suture"
desc = "A value pack of cheap sutures, not very good at repairing damage, but still decent at stopping bleeding."
heal_brute = 5
heal_brute = 10
amount = 5
max_amount = 5

Expand All @@ -252,9 +252,13 @@
name = "medicated suture"
icon_state = "suture_purp"
desc = "A suture infused with drugs that speed up wound healing of the treated laceration."
heal_brute = 15
heal_brute = 20
stop_bleeding = 1
grind_results = list(/datum/reagent/medicine/polypyr = 2)

/obj/item/stack/medical/suture/medicated/one
amount = 1

/obj/item/stack/medical/suture/one
amount = 1

Expand Down Expand Up @@ -291,9 +295,9 @@
self_delay = 40
other_delay = 20

heal_burn = 5
heal_burn = 10
flesh_regeneration = 2.5
sanitization = 0.3
sanitization = 0.4
grind_results = list(/datum/reagent/medicine/kelotane = 10)

/obj/item/stack/medical/ointment/heal(mob/living/M, mob/user)
Expand All @@ -318,7 +322,7 @@
other_delay = 10
amount = 15
max_amount = 15
heal_burn = 10
heal_burn = 13
repeating = TRUE
sanitization = 0.75
flesh_regeneration = 3
Expand All @@ -337,7 +341,9 @@
gender = PLURAL
singular_name = "advanced regenerative mesh"
icon_state = "aloe_mesh"
heal_burn = 15
heal_burn = 20
sanitization = 1.25
flesh_regeneration = 5
grind_results = list(/datum/reagent/consumable/aloejuice = 1)

/obj/item/stack/medical/mesh/advanced/one
Expand Down
Loading
Loading