mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 21:18:37 +01:00
Surgery steps no longer fail silently when missing chemicals (#85260)
## About The Pull Request Fixes surgery steps that require a chemical from failing silently if that chemical is missing. Player receives a bubble notification and the surgery is not performed if the chemical is missing. Operating computer UI tells you if the required chem is present or not.  ## Why It's Good For The Game Having to guess, without feedback, if the chemical was in the target's system at the time surgery completes is bad. ## Changelog 🆑 LT3 fix: Players now receive a notification when trying to perform surgery steps that involve chemicals /🆑
This commit is contained in:
@@ -143,11 +143,13 @@
|
||||
var/chems_needed = surgery_step.get_chem_list()
|
||||
var/alternative_step
|
||||
var/alt_chems_needed = ""
|
||||
var/alt_chems_present = FALSE
|
||||
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()
|
||||
alt_chems_present = next_step.chem_check(patient)
|
||||
else
|
||||
alternative_step = "Finish operation"
|
||||
data["procedures"] += list(list(
|
||||
@@ -155,7 +157,9 @@
|
||||
"next_step" = capitalize(surgery_step.name),
|
||||
"chems_needed" = chems_needed,
|
||||
"alternative_step" = alternative_step,
|
||||
"alt_chems_needed" = alt_chems_needed
|
||||
"alt_chems_needed" = alt_chems_needed,
|
||||
"chems_present" = surgery_step.chem_check(patient),
|
||||
"alt_chems_present" = alt_chems_present
|
||||
))
|
||||
return data
|
||||
|
||||
|
||||
@@ -96,6 +96,12 @@
|
||||
var/fail_prob = 0//100 - fail_prob = success_prob
|
||||
var/advance = FALSE
|
||||
|
||||
if(!chem_check(target))
|
||||
user.balloon_alert(user, "missing [LOWER_TEXT(get_chem_list())]!")
|
||||
to_chat(user, span_warning("[target] is missing the [LOWER_TEXT(get_chem_list())] required to perform this surgery step!"))
|
||||
surgery.step_in_progress = FALSE
|
||||
return FALSE
|
||||
|
||||
if(preop(user, target, target_zone, tool, surgery) == SURGERY_STEP_FAIL)
|
||||
update_surgery_mood(target, SURGERY_STATE_FAILURE)
|
||||
surgery.step_in_progress = FALSE
|
||||
@@ -134,9 +140,7 @@
|
||||
|
||||
if(do_after(user, modded_time, target = target, interaction_key = user.has_status_effect(/datum/status_effect/hippocratic_oath) ? target : DOAFTER_SOURCE_SURGERY)) //If we have the hippocratic oath, we can perform one surgery on each target, otherwise we can only do one surgery in total.
|
||||
|
||||
var/chem_check_result = chem_check(target)
|
||||
if((prob(100-fail_prob) || (iscyborg(user) && !silicons_obey_prob)) && chem_check_result && !try_to_fail)
|
||||
|
||||
if((prob(100-fail_prob) || (iscyborg(user) && !silicons_obey_prob)) && !try_to_fail)
|
||||
if(success(user, target, target_zone, tool, surgery))
|
||||
update_surgery_mood(target, SURGERY_STATE_SUCCESS)
|
||||
play_success_sound(user, target, target_zone, tool, surgery)
|
||||
@@ -146,8 +150,6 @@
|
||||
play_failure_sound(user, target, target_zone, tool, surgery)
|
||||
update_surgery_mood(target, SURGERY_STATE_FAILURE)
|
||||
advance = TRUE
|
||||
if(chem_check_result)
|
||||
return .(user, target, target_zone, tool, surgery, try_to_fail) //automatically re-attempt if failed for reason other than lack of required chemical
|
||||
if(advance && !repeatable)
|
||||
surgery.status++
|
||||
if(surgery.status > surgery.steps.len)
|
||||
|
||||
@@ -103,28 +103,24 @@ const PatientStateView = (props) => {
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Next Step">
|
||||
{procedure.next_step}
|
||||
{procedure.chems_needed && (
|
||||
<>
|
||||
<br />
|
||||
<br />
|
||||
<b>Required Chemicals:</b>
|
||||
<br />
|
||||
{procedure.chems_needed}
|
||||
</>
|
||||
)}
|
||||
</LabeledList.Item>
|
||||
{procedure.chems_needed && (
|
||||
<LabeledList.Item label="Required Chems">
|
||||
<NoticeBox success={procedure.chems_present ? true : false}>
|
||||
{procedure.chems_needed}
|
||||
</NoticeBox>
|
||||
</LabeledList.Item>
|
||||
)}
|
||||
{procedure.alternative_step && (
|
||||
<LabeledList.Item label="Alternative Step">
|
||||
{procedure.alternative_step}
|
||||
{procedure.alt_chems_needed && (
|
||||
<>
|
||||
<br />
|
||||
<br />
|
||||
<b>Required Chemicals:</b>
|
||||
<br />
|
||||
{procedure.alt_chems_needed}
|
||||
</>
|
||||
)}
|
||||
</LabeledList.Item>
|
||||
)}
|
||||
{procedure.alt_chems_needed && (
|
||||
<LabeledList.Item label="Required Chems">
|
||||
<NoticeBox success={procedure.alt_chems_present ? true : false}>
|
||||
{procedure.alt_chems_needed}
|
||||
</NoticeBox>
|
||||
</LabeledList.Item>
|
||||
)}
|
||||
</LabeledList>
|
||||
|
||||
Reference in New Issue
Block a user