mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Remove healing skill (#52005)
* Remove healing skill * Remove dissection from tech web
This commit is contained in:
@@ -34,9 +34,3 @@
|
||||
//number defines
|
||||
#define CLEAN_SKILL_BEAUTY_ADJUSTMENT -15//It's a denominator so no 0. Higher number = less cleaning xp per cleanable. Negative value means cleanables with negative beauty give xp.
|
||||
#define CLEAN_SKILL_GENERIC_WASH_XP 1.5//Value. Higher number = more XP when cleaning non-cleanables (walls/floors/lips)
|
||||
|
||||
#define MEDICAL_SKILL_EASY 3 //Cannot be 0
|
||||
#define MEDICAL_SKILL_MEDIUM (MEDICAL_SKILL_EASY*5)
|
||||
#define MEDICAL_SKILL_DISSECT (MEDICAL_SKILL_MEDIUM*1.5)
|
||||
#define MEDICAL_SKILL_ORGAN_FIX (MEDICAL_SKILL_MEDIUM*1.75)
|
||||
#define MEDICAL_SKILL_ADVANCED (MEDICAL_SKILL_MEDIUM*2.5)
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/datum/skill/healing
|
||||
name = "Healing"
|
||||
title = "Healer"
|
||||
desc = "From Bandaids to biopsies, this improves your ability to get people back up both in the field and on the operating table."
|
||||
modifiers = list(SKILL_SPEED_MODIFIER = list(1, 0.95, 0.9, 0.85, 0.75, 0.6, 0.5),
|
||||
SKILL_PROBS_MODIFIER = list(0, 2, 4, 6, 8, 10, 12))
|
||||
skill_cape_path = /obj/item/clothing/neck/cloak/skill_reward/healing
|
||||
@@ -258,15 +258,11 @@
|
||||
/// If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent
|
||||
/datum/wound/brute/bone/moderate/proc/chiropractice(mob/living/carbon/human/user)
|
||||
var/time = base_treat_time
|
||||
var/time_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER)
|
||||
var/prob_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_PROBS_MODIFIER)
|
||||
if(time_mod)
|
||||
time *= time_mod
|
||||
|
||||
if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
return
|
||||
|
||||
if(prob(65 + prob_mod))
|
||||
if(prob(65))
|
||||
user.visible_message("<span class='danger'>[user] snaps [victim]'s dislocated [limb.name] back into place!</span>", "<span class='notice'>You snap [victim]'s dislocated [limb.name] back into place!</span>", ignored_mobs=victim)
|
||||
to_chat(victim, "<span class='userdanger'>[user] snaps your dislocated [limb.name] back into place!</span>")
|
||||
victim.emote("scream")
|
||||
@@ -281,19 +277,15 @@
|
||||
/// If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent
|
||||
/datum/wound/brute/bone/moderate/proc/malpractice(mob/living/carbon/human/user)
|
||||
var/time = base_treat_time
|
||||
var/time_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER)
|
||||
var/prob_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_PROBS_MODIFIER)
|
||||
if(time_mod)
|
||||
time *= time_mod
|
||||
|
||||
if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
return
|
||||
|
||||
if(prob(65 + prob_mod))
|
||||
if(prob(65))
|
||||
user.visible_message("<span class='danger'>[user] snaps [victim]'s dislocated [limb.name] with a sickening crack!</span>", "<span class='danger'>You snap [victim]'s dislocated [limb.name] with a sickening crack!</span>", ignored_mobs=victim)
|
||||
to_chat(victim, "<span class='userdanger'>[user] snaps your dislocated [limb.name] with a sickening crack!</span>")
|
||||
victim.emote("scream")
|
||||
limb.receive_damage(brute=25, wound_bonus=30 + prob_mod * 3)
|
||||
limb.receive_damage(brute=25, wound_bonus=30)
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] wrenches [victim]'s dislocated [limb.name] around painfully!</span>", "<span class='danger'>You wrench [victim]'s dislocated [limb.name] around painfully!</span>", ignored_mobs=victim)
|
||||
to_chat(victim, "<span class='userdanger'>[user] wrenches your dislocated [limb.name] around painfully!</span>")
|
||||
|
||||
@@ -179,8 +179,7 @@
|
||||
/datum/wound/brute/cut/proc/tool_cauterize(obj/item/I, mob/user)
|
||||
var/self_penalty_mult = (user == victim ? 1.5 : 1)
|
||||
user.visible_message("<span class='danger'>[user] begins cauterizing [victim]'s [limb.name] with [I]...</span>", "<span class='danger'>You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...</span>")
|
||||
var/time_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER) || 1
|
||||
if(!do_after(user, base_treat_time * time_mod * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='green'>[user] cauterizes some of the bleeding on [victim].</span>", "<span class='green'>You cauterize some of the bleeding on [victim].</span>")
|
||||
@@ -200,8 +199,7 @@
|
||||
/datum/wound/brute/cut/proc/suture(obj/item/stack/medical/suture/I, mob/user)
|
||||
var/self_penalty_mult = (user == victim ? 1.4 : 1)
|
||||
user.visible_message("<span class='notice'>[user] begins stitching [victim]'s [limb.name] with [I]...</span>", "<span class='notice'>You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...</span>")
|
||||
var/time_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER) || 1
|
||||
if(!do_after(user, base_treat_time * time_mod * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
return
|
||||
user.visible_message("<span class='green'>[user] stitches up some of the bleeding on [victim].</span>", "<span class='green'>You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"].</span>")
|
||||
var/blood_sutured = I.stop_bleeding / self_penalty_mult
|
||||
@@ -224,8 +222,7 @@
|
||||
user.visible_message("<span class='warning'>[user] begins rewrapping the cuts on [victim]'s [limb.name] with [I]...</span>", "<span class='warning'>You begin rewrapping the cuts on [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...</span>")
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] begins wrapping the cuts on [victim]'s [limb.name] with [I]...</span>", "<span class='warning'>You begin wrapping the cuts on [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...</span>")
|
||||
var/time_mod = user.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER) || 1
|
||||
if(!do_after(user, base_treat_time * time_mod, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
if(!do_after(user, base_treat_time, target=victim, extra_checks = CALLBACK(src, .proc/still_exists)))
|
||||
return
|
||||
|
||||
user.visible_message("<span class='green'>[user] applies [I] to [victim]'s [limb.name].</span>", "<span class='green'>You bandage some of the bleeding on [user == victim ? "yourself" : "[victim]"].</span>")
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
var/self_delay = 50
|
||||
var/other_delay = 0
|
||||
var/repeating = FALSE
|
||||
var/experience_given = 1
|
||||
/// How much brute we heal per application
|
||||
var/heal_brute
|
||||
/// How much burn we heal per application
|
||||
@@ -47,7 +46,6 @@
|
||||
return
|
||||
|
||||
if(heal(M, user))
|
||||
user?.mind.adjust_experience(/datum/skill/healing, experience_given)
|
||||
log_combat(user, M, "healed", src.name)
|
||||
use(1)
|
||||
if(repeating && amount > 0)
|
||||
@@ -66,13 +64,7 @@
|
||||
return
|
||||
if(affecting.brute_dam && brute || affecting.burn_dam && burn)
|
||||
user.visible_message("<span class='green'>[user] applies \the [src] on [C]'s [affecting.name].</span>", "<span class='green'>You apply \the [src] on [C]'s [affecting.name].</span>")
|
||||
var/brute2heal = brute
|
||||
var/burn2heal = burn
|
||||
var/skill_mod = user?.mind?.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER)
|
||||
if(skill_mod)
|
||||
brute2heal *= (2-skill_mod)
|
||||
burn2heal *= (2-skill_mod)
|
||||
if(affecting.heal_damage(brute2heal, burn2heal))
|
||||
if(affecting.heal_damage(brute, burn))
|
||||
C.update_damage_overlays()
|
||||
return TRUE
|
||||
to_chat(user, "<span class='warning'>[C]'s [affecting.name] can not be healed with \the [src]!</span>")
|
||||
|
||||
@@ -130,20 +130,14 @@
|
||||
icon_state = "cleanercloak"
|
||||
associated_skill_path = /datum/skill/cleaning
|
||||
|
||||
/obj/item/clothing/neck/cloak/skill_reward/healing
|
||||
name = "legendary healer's cloak"
|
||||
desc = "Worn by the most skilled healers, this legendary cloak is only attainable by achieving true medical enlightenment. This status symbol represents a being who has saved enough lives to repopulate a small country, a being who could transplant a monkey's brain into your skull faster than you could yell ;HELP SEC."
|
||||
icon_state = "healercloak"
|
||||
associated_skill_path = /datum/skill/healing
|
||||
|
||||
/obj/item/clothing/neck/cloak/skill_reward/mining
|
||||
name = "legendary miner's cloak"
|
||||
name = "legendary miner's cloak"
|
||||
desc = "Worn by the most skilled miners, this legendary cloak is only attainable by achieving true mineral enlightenment. This status symbol represents a being who has forgotten more about rocks than most miners will ever know, a being who has moved mountains and filled valleys."
|
||||
icon_state = "minercloak"
|
||||
associated_skill_path = /datum/skill/mining
|
||||
|
||||
/obj/item/clothing/neck/cloak/skill_reward/playing
|
||||
name = "legendary veteran's cloak"
|
||||
name = "legendary veteran's cloak"
|
||||
desc = "Worn by the wisest of veteran employees, this legendary cloak is only attainable by maintaining a living employment agreement with Nanotrasen for over <b>five thousand hours</b>. This status symbol represents a being is better than you in nearly every quantifiable way, simple as that."
|
||||
icon_state = "playercloak"
|
||||
|
||||
|
||||
@@ -639,23 +639,6 @@
|
||||
research_icon_state = "surgery_any"
|
||||
var/surgery
|
||||
|
||||
/datum/design/surgery/experimental_dissection
|
||||
name = "Advanced Dissection"
|
||||
desc = "A surgical procedure which analyzes the biology of a corpse, and automatically adds new findings to the research database."
|
||||
id = "surgery_adv_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/adv
|
||||
research_icon_state = "surgery_chest"
|
||||
|
||||
/datum/design/surgery/experimental_dissection/exp
|
||||
name = "Experimental Dissection"
|
||||
id = "surgery_exp_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/exp
|
||||
|
||||
/datum/design/surgery/experimental_dissection/ext
|
||||
name = "Extraterrestrial Dissection"
|
||||
id = "surgery_ext_dissection"
|
||||
surgery = /datum/surgery/advanced/experimental_dissection/alien
|
||||
|
||||
/datum/design/surgery/lobotomy
|
||||
name = "Lobotomy"
|
||||
desc = "An invasive surgical procedure which guarantees removal of almost all brain traumas, but might cause another permanent trauma in return."
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
display_name = "Advanced Surgery"
|
||||
description = "When simple medicine doesn't cut it."
|
||||
prereq_ids = list("imp_wt_surgery")
|
||||
design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo","surgery_adv_dissection")
|
||||
design_ids = list("surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto","surgery_heal_combo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
export_price = 4000
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
display_name = "Experimental Surgery"
|
||||
description = "When evolution isn't fast enough."
|
||||
prereq_ids = list("adv_surgery")
|
||||
design_ids = list("surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_cortex_imprint","surgery_cortex_folding","surgery_viral_bond", "surgery_heal_combo_upgrade", "surgery_exp_dissection")
|
||||
design_ids = list("surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_cortex_imprint","surgery_cortex_folding","surgery_viral_bond", "surgery_heal_combo_upgrade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
export_price = 5000
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
display_name = "Alien Surgery"
|
||||
description = "Abductors did nothing wrong."
|
||||
prereq_ids = list("exp_surgery", "alientech")
|
||||
design_ids = list("surgery_brainwashing","surgery_zombie","surgery_heal_combo_upgrade_femto", "surgery_ext_dissection")
|
||||
design_ids = list("surgery_brainwashing","surgery_zombie","surgery_heal_combo_upgrade_femto")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
export_price = 5000
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
name = "fold cortex"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/fold_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start folding [target]'s outer cerebral cortex into a fractal pattern.</span>",
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
name = "imprint cortex"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/imprint_cortex/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start carving [target]'s outer cerebral cortex into a self-imprinting pattern.</span>",
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
name = "reshape ligaments"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start reshaping [target]'s ligaments into a hook-like shape.</span>",
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
name = "reinforce ligaments"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start reinforcing [target]'s ligaments.</span>",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
name = "shape vein muscles"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start wrapping muscles around [target]'s circulatory system.</span>",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
name = "ground nerves"
|
||||
accept_hand = TRUE
|
||||
time = 155
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/ground_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start rerouting [target]'s nerves.</span>",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
name = "splice nerves"
|
||||
accept_hand = TRUE
|
||||
time = 155
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/splice_nerves/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start splicing together [target]'s nerves.</span>",
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
name = "thread veins"
|
||||
accept_hand = TRUE
|
||||
time = 125
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/thread_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You start weaving [target]'s circulatory system.</span>",
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
name = "brainwash"
|
||||
implements = list(TOOL_HEMOSTAT = 85, TOOL_WIRECUTTER = 50, /obj/item/stack/package_wrap = 35, /obj/item/stack/cable_coil = 15)
|
||||
time = 200
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
var/objective
|
||||
|
||||
/datum/surgery_step/brainwash/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
implements = list(TOOL_SCALPEL = 85, /obj/item/melee/transforming/energy/sword = 55, /obj/item/kitchen/knife = 35,
|
||||
/obj/item/shard = 25, /obj/item = 20)
|
||||
time = 100
|
||||
experience_given = MEDICAL_SKILL_ADVANCED //lose XP if you end up giving them bad traumas
|
||||
|
||||
/datum/surgery_step/lobotomize/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == /obj/item && !tool.get_sharpness())
|
||||
@@ -48,16 +47,13 @@
|
||||
switch(rand(1,4))//Now let's see what hopefully-not-important part of the brain we cut off
|
||||
if(1)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_MAGIC)
|
||||
experience_given = MEDICAL_SKILL_ADVANCED*0.9
|
||||
if(2)
|
||||
if(HAS_TRAIT(target, TRAIT_SPECIAL_TRAUMA_BOOST) && prob(50))
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_MAGIC)
|
||||
else
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_MAGIC)
|
||||
experience_given = MEDICAL_SKILL_ADVANCED*0.8
|
||||
if(3)
|
||||
target.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_MAGIC)
|
||||
experience_given = MEDICAL_SKILL_ADVANCED*0.5
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/lobotomize/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
time = 50
|
||||
chems_needed = list(/datum/reagent/toxin/zombiepowder, /datum/reagent/medicine/rezadone)
|
||||
require_all_chems = FALSE
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/bionecrosis/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to grow a romerol tumor on [target]'s brain...</span>",
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
name = "rewire brain"
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/pacify/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to pacify [target]...</span>",
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
implements = list(TOOL_CAUTERY = 100, TOOL_WELDER = 50, /obj/item = 30) // 30% success with any hot item.
|
||||
time = 100
|
||||
chems_needed = list(/datum/reagent/medicine/spaceacillin,/datum/reagent/consumable/virus_food,/datum/reagent/toxin/formaldehyde)
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/viral_bond/tool_check(mob/user, obj/item/tool)
|
||||
if(implement_type == TOOL_WELDER || implement_type == /obj/item)
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
name = "sever limb"
|
||||
implements = list(/obj/item/shears = 300, TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25)
|
||||
time = 64
|
||||
experience_given = MEDICAL_SKILL_ORGAN_FIX
|
||||
|
||||
/datum/surgery_step/sever_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to sever [target]'s [parse_zone(target_zone)]...</span>",
|
||||
@@ -26,6 +25,4 @@
|
||||
if(surgery.operated_bodypart)
|
||||
var/obj/item/bodypart/target_limb = surgery.operated_bodypart
|
||||
target_limb.drop_limb()
|
||||
if(user.mind)
|
||||
user.mind.adjust_experience(/datum/skill/healing, experience_given)
|
||||
return ..()
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
name = "repair hairline fracture (bonesetter/bone gel/tape)"
|
||||
implements = list(/obj/item/bonesetter = 100, /obj/item/stack/medical/bone_gel = 100, /obj/item/stack/sticky_tape/surgical = 100, /obj/item/stack/sticky_tape/super = 50, /obj/item/stack/sticky_tape = 30)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/repair_bone_hairline/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -76,7 +75,6 @@
|
||||
name = "reset bone"
|
||||
implements = list(/obj/item/bonesetter = 100, /obj/item/stack/sticky_tape/surgical = 60, /obj/item/stack/sticky_tape/super = 40, /obj/item/stack/sticky_tape = 20)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/reset_compound_fracture/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -111,7 +109,6 @@
|
||||
name = "repair compound fracture (bone gel/tape)"
|
||||
implements = list(/obj/item/stack/medical/bone_gel = 100, /obj/item/stack/sticky_tape/surgical = 100, /obj/item/stack/sticky_tape/super = 50, /obj/item/stack/sticky_tape = 30)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/repair_bone_compound/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
implements = list(TOOL_HEMOSTAT = 85, TOOL_SCREWDRIVER = 35, /obj/item/pen = 15) //don't worry, pouring some alcohol on their open brain will get that chance to 100
|
||||
repeatable = TRUE
|
||||
time = 100 //long and complicated
|
||||
experience_given = 0 // per_trauma
|
||||
|
||||
/datum/surgery/brain_surgery/can_start(mob/user, mob/living/carbon/target)
|
||||
var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN)
|
||||
@@ -37,8 +36,6 @@
|
||||
if(target.mind?.has_antag_datum(/datum/antagonist/brainwashed))
|
||||
target.mind.remove_antag_datum(/datum/antagonist/brainwashed)
|
||||
target.setOrganLoss(ORGAN_SLOT_BRAIN, target.getOrganLoss(ORGAN_SLOT_BRAIN) - 50) //we set damage in this case in order to clear the "failing" flag
|
||||
var/cured_num = target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
|
||||
experience_given = (MEDICAL_SKILL_EASY*2*cured_num)
|
||||
if(target.getOrganLoss(ORGAN_SLOT_BRAIN) > 0)
|
||||
to_chat(user, "[target]'s brain looks like it could be fixed further.")
|
||||
return ..()
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCALPEL = 85, TOOL_SAW = 60, TOOL_WIRECUTTER = 40)
|
||||
time = 30
|
||||
repeatable = TRUE
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/debride/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
if(surgery.operated_wound)
|
||||
@@ -76,7 +75,6 @@
|
||||
name = "bandage burns"
|
||||
implements = list(/obj/item/stack/medical/gauze = 100, /obj/item/stack/sticky_tape/surgical = 100)
|
||||
time = 40
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/dress/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
var/datum/wound/burn/burn_wound = surgery.operated_wound
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
name = "graft coronary bypass"
|
||||
implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/package_wrap = 15, /obj/item/stack/cable_coil = 5)
|
||||
time = 90
|
||||
experience_given = MEDICAL_SKILL_ORGAN_FIX
|
||||
|
||||
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to graft a bypass onto [target]'s heart...</span>",
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
name = "insert pill"
|
||||
implements = list(/obj/item/reagent_containers/pill = 100)
|
||||
time = 16
|
||||
experience_given = (MEDICAL_SKILL_MEDIUM*0.4) //quick to do
|
||||
|
||||
/datum/surgery_step/insert_pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection
|
||||
name = "Dissection"
|
||||
desc = "A surgical procedure which analyzes the biology of a corpse, and greatly increases one's medical knowledge."
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/dissection,
|
||||
/datum/surgery_step/clamp_bleeders,
|
||||
/datum/surgery_step/close)
|
||||
possible_locs = list(BODY_ZONE_CHEST)
|
||||
target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic.
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/adv
|
||||
requires_tech = FALSE
|
||||
var/value_multiplier = 1
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/can_start(mob/user, mob/living/target)
|
||||
. = ..()
|
||||
if(HAS_TRAIT_FROM(target, TRAIT_DISSECTED,"[name]"))
|
||||
return FALSE
|
||||
if(target.stat != DEAD)
|
||||
return FALSE
|
||||
|
||||
/datum/surgery_step/dissection
|
||||
name = "dissection"
|
||||
implements = list(/obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, TOOL_SCALPEL = 45, /obj/item/kitchen/knife = 20, /obj/item/shard = 10)// special tools not only cut down time but also improve probability
|
||||
time = 125
|
||||
silicons_obey_prob = TRUE
|
||||
repeatable = TRUE
|
||||
experience_given = 0 //experience received scales with what's being dissected + which step you're doing.
|
||||
|
||||
/datum/surgery_step/dissection/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("<span class='notice'>[user] starts dissecting [target].</span>", "<span class='notice'>You start dissecting [target].</span>")
|
||||
|
||||
/datum/surgery_step/dissection/proc/check_value(mob/living/target, datum/surgery/advanced/experimental_dissection/ED)
|
||||
var/cost = MEDICAL_SKILL_DISSECT
|
||||
var/multi_surgery_adjust = 0
|
||||
|
||||
//determine bonus applied
|
||||
if(isalienroyal(target))
|
||||
cost = (MEDICAL_SKILL_DISSECT*5)
|
||||
else if(isalienadult(target))
|
||||
cost = (MEDICAL_SKILL_DISSECT*3)
|
||||
else if(ismonkey(target))
|
||||
cost = (MEDICAL_SKILL_DISSECT*0.5)
|
||||
else if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H?.dna?.species)
|
||||
if(isabductor(H))
|
||||
cost = (MEDICAL_SKILL_DISSECT*3)
|
||||
else if(isgolem(H) || iszombie(H))
|
||||
cost = (MEDICAL_SKILL_DISSECT*2.5)
|
||||
else if(isjellyperson(H) || ispodperson(H))
|
||||
cost = (MEDICAL_SKILL_DISSECT*1.5)
|
||||
else
|
||||
cost = (MEDICAL_SKILL_DISSECT * 0.6)
|
||||
|
||||
|
||||
|
||||
//now we do math for surgeries already done (no double dipping!).
|
||||
for(var/i in typesof(/datum/surgery/advanced/experimental_dissection))
|
||||
var/datum/surgery/advanced/experimental_dissection/cringe = i
|
||||
if(HAS_TRAIT_FROM(target,TRAIT_DISSECTED,"[initial(cringe.name)]"))
|
||||
multi_surgery_adjust = max(multi_surgery_adjust,initial(cringe.value_multiplier)) - 1
|
||||
|
||||
multi_surgery_adjust *= cost
|
||||
|
||||
//multiply by multiplier in surgery
|
||||
cost *= ED.value_multiplier
|
||||
return (cost-multi_surgery_adjust)
|
||||
|
||||
/datum/surgery_step/dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
user.visible_message("<span class='notice'>[user] dissects [target], enhancing their medical knowledge!", "<span class='notice'>You dissect [target] and receive some healing experience!</span>")
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L, wound_bonus=CANT_WOUND)
|
||||
ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]")
|
||||
repeatable = FALSE
|
||||
experience_given = check_value(target, surgery)
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("<span class='notice'>[user] dissects [target]!</span>", "<span class='notice'>You attempt to dissect [target], but do not find anything particularly interesting.</span>")
|
||||
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
|
||||
target.apply_damage(80, BRUTE, L, wound_bonus=CANT_WOUND)
|
||||
return TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/adv
|
||||
name = "Thorough Dissection"
|
||||
value_multiplier = 1.5
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/exp
|
||||
requires_tech = TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/exp
|
||||
name = "Experimental Dissection"
|
||||
value_multiplier = 2
|
||||
replaced_by = /datum/surgery/advanced/experimental_dissection/alien
|
||||
requires_tech = TRUE
|
||||
|
||||
/datum/surgery/advanced/experimental_dissection/alien
|
||||
name = "Extraterrestrial Dissection"
|
||||
value_multiplier = 5
|
||||
requires_tech = TRUE
|
||||
replaced_by = null
|
||||
@@ -10,7 +10,6 @@
|
||||
name = "fix eyes"
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 45, /obj/item/pen = 25)
|
||||
time = 64
|
||||
experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.6) //repeatable and can be done at any damage
|
||||
|
||||
/datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target)
|
||||
var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES)
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
|
||||
/obj/item/shard = 35)
|
||||
time = 52
|
||||
experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //for consistency across organ surgeries
|
||||
|
||||
/datum/surgery_step/gastrectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to cut out a damaged piece of [target]'s stomach...</span>",
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#define PER_ITERATION_XP_CAP MEDICAL_SKILL_MEDIUM //TW XP gain scales with repeated iterations so we cap it.
|
||||
|
||||
/datum/surgery/healing
|
||||
steps = list(/datum/surgery_step/incise,
|
||||
/datum/surgery_step/retract_skin,
|
||||
@@ -71,7 +69,6 @@
|
||||
urhealedamt_burn *= 0.55
|
||||
umsg += " as best as you can while they have clothing on"
|
||||
tmsg += " as best as they can while [target] has clothing on"
|
||||
experience_given = CEILING((target.heal_bodypart_damage(urhealedamt_brute,urhealedamt_burn)/5),1)
|
||||
display_results(user, target, "<span class='notice'>[umsg].</span>",
|
||||
"[tmsg].",
|
||||
"[tmsg].")
|
||||
@@ -216,5 +213,3 @@
|
||||
"<span class='warning'>[user] screws up!</span>",
|
||||
"<span class='notice'>[user] fixes some of [target]'s wounds.</span>", TRUE)
|
||||
target.take_bodypart_damage(5,5)
|
||||
|
||||
#undef PER_ITERATION_XP_CAP
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
|
||||
/obj/item/shard = 35)
|
||||
time = 52
|
||||
experience_given = (MEDICAL_SKILL_ORGAN_FIX*0.8) //repeatable so not as much xp
|
||||
|
||||
/datum/surgery_step/hepatectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to cut out a damaged peice of [target]'s liver...</span>",
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
name = "extract implant"
|
||||
implements = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65, /obj/item/kitchen/fork = 35)
|
||||
time = 64
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
var/obj/item/implant/I = null
|
||||
|
||||
/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
name = "replace limb"
|
||||
implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100)
|
||||
time = 32
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
var/obj/item/bodypart/L = null // L because "limb"
|
||||
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
name = "remove loose fat"
|
||||
implements = list(TOOL_RETRACTOR = 100, TOOL_SCREWDRIVER = 45, TOOL_WIRECUTTER = 35)
|
||||
time = 32
|
||||
experience_given = 0 //scales with fat removed
|
||||
|
||||
/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to extract [target]'s loose fat...</span>",
|
||||
@@ -47,7 +46,6 @@
|
||||
var/removednutriment = target.nutrition
|
||||
target.set_nutrition(NUTRITION_LEVEL_WELL_FED)
|
||||
removednutriment -= NUTRITION_LEVEL_WELL_FED //whatever was removed goes into the meat
|
||||
experience_given = (round(removednutriment/(MEDICAL_SKILL_EASY*5)))
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/typeofmeat = /obj/item/reagent_containers/food/snacks/meat/slab/human
|
||||
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
|
||||
/obj/item/shard = 35)
|
||||
time = 42
|
||||
experience_given = MEDICAL_SKILL_ORGAN_FIX
|
||||
|
||||
/datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s lungs...</span>",
|
||||
|
||||
@@ -29,18 +29,11 @@
|
||||
BP.generic_bleedstacks += 10
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/incise/nobleed //silly friendly!
|
||||
experience_given = 1 //safer so not as much XP
|
||||
|
||||
/datum/surgery_step/incise/nobleed/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]...</span>",
|
||||
"<span class='notice'>[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] begins to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)].</span>")
|
||||
|
||||
/datum/surgery_step/incise/nobleed/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
|
||||
user?.mind.adjust_experience(/datum/skill/healing, experience_given)
|
||||
return TRUE
|
||||
|
||||
//clamp bleeders
|
||||
/datum/surgery_step/clamp_bleeders
|
||||
name = "clamp bleeders"
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
name = "reshape face"
|
||||
implements = list(TOOL_SCALPEL = 100, /obj/item/kitchen/knife = 50, TOOL_WIRECUTTER = 35)
|
||||
time = 64
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
|
||||
/datum/surgery_step/reshape_face/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
user.visible_message("<span class='notice'>[user] begins to alter [target]'s appearance.</span>", "<span class='notice'>You begin to alter [target]'s appearance...</span>")
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
name = "add prosthetic"
|
||||
implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100)
|
||||
time = 32
|
||||
experience_given = MEDICAL_SKILL_ORGAN_FIX //won't get full XP if rejected
|
||||
var/organ_rejection_dam = 0
|
||||
|
||||
/datum/surgery_step/add_prosthetic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
@@ -79,7 +78,6 @@
|
||||
return
|
||||
if(organ_rejection_dam)
|
||||
target.adjustToxLoss(organ_rejection_dam)
|
||||
experience_given -= (round(organ_rejection_dam/10))
|
||||
display_results(user, target, "<span class='notice'>You succeed in replacing [target]'s [parse_zone(target_zone)].</span>",
|
||||
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)] with [tool]!</span>",
|
||||
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)]!</span>")
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
name = "remove embedded objects"
|
||||
time = 32
|
||||
accept_hand = 1
|
||||
experience_given = MEDICAL_SKILL_MEDIUM
|
||||
var/obj/item/bodypart/L = null
|
||||
|
||||
|
||||
@@ -36,7 +35,6 @@
|
||||
display_results(user, target, "<span class='notice'>You successfully remove [objects] objects from [H]'s [L.name].</span>",
|
||||
"<span class='notice'>[user] successfully removes [objects] objects from [H]'s [L]!</span>",
|
||||
"<span class='notice'>[user] successfully removes [objects] objects from [H]'s [L]!</span>")
|
||||
experience_given = MEDICAL_SKILL_MEDIUM*(objects*0.75)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You find no objects embedded in [H]'s [L]!</span>")
|
||||
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
implements = list(/obj/item/shockpaddles = 100, /obj/item/melee/baton = 75, /obj/item/gun/energy = 60)
|
||||
repeatable = TRUE
|
||||
time = 120
|
||||
experience_given = MEDICAL_SKILL_ADVANCED
|
||||
|
||||
/datum/surgery_step/revive/tool_check(mob/user, obj/item/tool)
|
||||
. = TRUE
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
accept_hand = TRUE
|
||||
repeatable = TRUE
|
||||
time = 20
|
||||
experience_given = 0
|
||||
|
||||
/datum/surgery_step/stomach_pump/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
display_results(user, target, "<span class='notice'>You begin pumping [target]'s stomach...</span>",
|
||||
@@ -39,16 +38,10 @@
|
||||
/datum/surgery_step/stomach_pump/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
|
||||
if(ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/reagents_volume_before_pump = H.reagents.total_volume
|
||||
display_results(user, target, "<span class='notice'>[user] forces [H] to vomit, cleansing their stomach of some chemicals!</span>",
|
||||
"<span class='notice'>[user] forces [H] to vomit, cleansing their stomach of some chemicals!</span>",
|
||||
"[user] forces [H] to vomit!")
|
||||
H.vomit(20, FALSE, TRUE, 1, TRUE, FALSE, purge = TRUE) //called with purge as true to lose more reagents
|
||||
if(istype(surgery,/datum/surgery/stomach_pump))
|
||||
var/datum/surgery/stomach_pump/stom_pump = surgery
|
||||
if(stom_pump.accumulated_experience > MEDICAL_SKILL_MEDIUM*10) //capped so you can't dope bodies and purge for ezxp
|
||||
experience_given = (H.reagents.total_volume - reagents_volume_before_pump)/(MEDICAL_SKILL_MEDIUM)
|
||||
stom_pump.accumulated_experience += experience_given
|
||||
return ..()
|
||||
|
||||
/datum/surgery_step/stomach_pump/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob.
|
||||
var/require_all_chems = TRUE //any on the list or all on the list?
|
||||
var/silicons_obey_prob = FALSE
|
||||
/// The amount of experience given for successfully completing the step.
|
||||
var/experience_given = MEDICAL_SKILL_EASY
|
||||
|
||||
/datum/surgery_step/proc/try_op(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
|
||||
var/success = FALSE
|
||||
@@ -83,7 +81,7 @@
|
||||
implement_speed_mod = implements[implement_type] / 100.0
|
||||
|
||||
speed_mod /= (get_location_modifier(target) * (1 + surgery.speed_modifier) * implement_speed_mod)
|
||||
var/modded_time = time * speed_mod * user.mind.get_skill_modifier(/datum/skill/healing, SKILL_SPEED_MODIFIER)
|
||||
var/modded_time = time * speed_mod
|
||||
|
||||
|
||||
fail_prob = min(max(0, modded_time - (time * SURGERY_SLOWDOWN_CAP_MULTIPLIER)),99)//if modded_time > time * modifier, then fail_prob = modded_time - time*modifier. starts at 0, caps at 99
|
||||
@@ -127,7 +125,6 @@
|
||||
display_results(user, target, "<span class='notice'>You succeed.</span>",
|
||||
"<span class='notice'>[user] succeeds!</span>",
|
||||
"<span class='notice'>[user] finishes.</span>")
|
||||
user?.mind.adjust_experience(/datum/skill/healing, round(experience_given))
|
||||
return TRUE
|
||||
|
||||
/datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, var/fail_prob = 0)
|
||||
|
||||
@@ -612,7 +612,6 @@
|
||||
#include "code\datums\skills\_skill.dm"
|
||||
#include "code\datums\skills\cleaning.dm"
|
||||
#include "code\datums\skills\gaming.dm"
|
||||
#include "code\datums\skills\medical.dm"
|
||||
#include "code\datums\skills\mining.dm"
|
||||
#include "code\datums\status_effects\buffs.dm"
|
||||
#include "code\datums\status_effects\debuffs.dm"
|
||||
@@ -2997,7 +2996,6 @@
|
||||
#include "code\modules\surgery\core_removal.dm"
|
||||
#include "code\modules\surgery\coronary_bypass.dm"
|
||||
#include "code\modules\surgery\dental_implant.dm"
|
||||
#include "code\modules\surgery\experimental_dissection.dm"
|
||||
#include "code\modules\surgery\eye_surgery.dm"
|
||||
#include "code\modules\surgery\gastrectomy.dm"
|
||||
#include "code\modules\surgery\healing.dm"
|
||||
|
||||
Reference in New Issue
Block a user