diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index ab6268c2a8a..ee3f3ee70fa 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -26,3 +26,8 @@ //number defines #define CLEAN_SKILL_BEAUTY_ADJUSTMENT 15//It's a denominator so no 0. Higher number = less cleaning xp per cleanable #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_ORGAN_FIX (MEDICAL_SKILL_MEDIUM*1.75) +#define MEDICAL_SKILL_ADVANCED (MEDICAL_SKILL_MEDIUM*2.5) diff --git a/code/modules/surgery/advanced/bioware/ligament_hook.dm b/code/modules/surgery/advanced/bioware/ligament_hook.dm index 64739fa1339..244ec6ef630 100644 --- a/code/modules/surgery/advanced/bioware/ligament_hook.dm +++ b/code/modules/surgery/advanced/bioware/ligament_hook.dm @@ -16,7 +16,7 @@ name = "reshape ligaments" accept_hand = TRUE time = 125 - experience_given = 5 + 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, "You start reshaping [target]'s ligaments into a hook-like shape.", diff --git a/code/modules/surgery/advanced/bioware/ligament_reinforcement.dm b/code/modules/surgery/advanced/bioware/ligament_reinforcement.dm index ad483bd2be7..624306009b9 100644 --- a/code/modules/surgery/advanced/bioware/ligament_reinforcement.dm +++ b/code/modules/surgery/advanced/bioware/ligament_reinforcement.dm @@ -16,7 +16,7 @@ name = "reinforce ligaments" accept_hand = TRUE time = 125 - experience_given = 5 + 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, "You start reinforcing [target]'s ligaments.", diff --git a/code/modules/surgery/advanced/bioware/muscled_veins.dm b/code/modules/surgery/advanced/bioware/muscled_veins.dm index 0ecec896b02..63f624d81f5 100644 --- a/code/modules/surgery/advanced/bioware/muscled_veins.dm +++ b/code/modules/surgery/advanced/bioware/muscled_veins.dm @@ -15,7 +15,7 @@ name = "shape vein muscles" accept_hand = TRUE time = 125 - experience_given = 5 + 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, "You start wrapping muscles around [target]'s circulatory system.", diff --git a/code/modules/surgery/advanced/bioware/nerve_grounding.dm b/code/modules/surgery/advanced/bioware/nerve_grounding.dm index aec78edb080..a624422af0c 100644 --- a/code/modules/surgery/advanced/bioware/nerve_grounding.dm +++ b/code/modules/surgery/advanced/bioware/nerve_grounding.dm @@ -15,7 +15,7 @@ name = "ground nerves" accept_hand = TRUE time = 155 - experience_given = 5 + 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, "You start rerouting [target]'s nerves.", diff --git a/code/modules/surgery/advanced/bioware/nerve_splicing.dm b/code/modules/surgery/advanced/bioware/nerve_splicing.dm index 38be1a35174..f50d45dab67 100644 --- a/code/modules/surgery/advanced/bioware/nerve_splicing.dm +++ b/code/modules/surgery/advanced/bioware/nerve_splicing.dm @@ -15,7 +15,7 @@ name = "splice nerves" accept_hand = TRUE time = 155 - experience_given = 5 + 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, "You start splicing together [target]'s nerves.", diff --git a/code/modules/surgery/advanced/bioware/vein_threading.dm b/code/modules/surgery/advanced/bioware/vein_threading.dm index dd89dfa7a04..cf3fe0633a8 100644 --- a/code/modules/surgery/advanced/bioware/vein_threading.dm +++ b/code/modules/surgery/advanced/bioware/vein_threading.dm @@ -15,7 +15,7 @@ name = "thread veins" accept_hand = TRUE time = 125 - experience_given = 5 + 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, "You start weaving [target]'s circulatory system.", diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm index 37c4cc0acdb..ab2df4a5559 100644 --- a/code/modules/surgery/advanced/brainwashing.dm +++ b/code/modules/surgery/advanced/brainwashing.dm @@ -29,6 +29,7 @@ name = "brainwash" implements = list(TOOL_HEMOSTAT = 85, TOOL_WIRECUTTER = 50, /obj/item/stack/packageWrap = 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) @@ -39,7 +40,7 @@ "[user] begins to fix [target]'s brain.", "[user] begins to perform surgery on [target]'s brain.") -/datum/surgery_step/brainwash/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) +/datum/surgery_step/brainwash/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) if(!target.mind) to_chat(user, "[target] doesn't respond to the brainwashing, as if [target.p_they()] lacked a mind...") return FALSE @@ -53,7 +54,7 @@ brainwash(target, objective) message_admins("[ADMIN_LOOKUPFLW(user)] surgically brainwashed [ADMIN_LOOKUPFLW(target)] with the objective '[objective]'.") log_game("[key_name(user)] surgically brainwashed [key_name(target)] with the objective '[objective]'.") - return TRUE + return ..() /datum/surgery_step/brainwash/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(target.getorganslot(ORGAN_SLOT_BRAIN)) diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index 4ec56e046fa..fd02138a0cc 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -26,6 +26,7 @@ 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()) @@ -37,7 +38,7 @@ "[user] begins to perform a lobotomy on [target]'s brain.", "[user] begins to perform surgery on [target]'s brain.") -/datum/surgery_step/lobotomize/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) +/datum/surgery_step/lobotomize/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) display_results(user, target, "You succeed in lobotomizing [target].", "[user] successfully lobotomizes [target]!", "[user] completes the surgery on [target]'s brain.") @@ -47,11 +48,14 @@ 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) 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) - return TRUE + 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) var/obj/item/organ/brain/B = target.getorganslot(ORGAN_SLOT_BRAIN) diff --git a/code/modules/surgery/advanced/necrotic_revival.dm b/code/modules/surgery/advanced/necrotic_revival.dm index 495fe43d5bd..41f63b1a5f3 100644 --- a/code/modules/surgery/advanced/necrotic_revival.dm +++ b/code/modules/surgery/advanced/necrotic_revival.dm @@ -22,17 +22,18 @@ 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, "You begin to grow a romerol tumor on [target]'s brain...", "[user] begins to tinker with [target]'s brain...", "[user] begins to perform surgery on [target]'s brain.") -/datum/surgery_step/bionecrosis/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) +/datum/surgery_step/bionecrosis/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) display_results(user, target, "You succeed in growing a romerol tumor on [target]'s brain.", "[user] successfully grows a romerol tumor on [target]'s brain!", "[user] completes the surgery on [target]'s brain.") if(!target.getorganslot(ORGAN_SLOT_ZOMBIE)) var/obj/item/organ/zombie_infection/ZI = new() ZI.Insert(target) - return TRUE + return ..() diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm index bb41b7176ea..ccbb6325183 100644 --- a/code/modules/surgery/advanced/pacification.dm +++ b/code/modules/surgery/advanced/pacification.dm @@ -22,18 +22,19 @@ 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, "You begin to pacify [target]...", "[user] begins to fix [target]'s brain.", "[user] begins to perform surgery on [target]'s brain.") -/datum/surgery_step/pacify/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) +/datum/surgery_step/pacify/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) display_results(user, target, "You succeed in neurologically pacifying [target].", "[user] successfully fixes [target]'s brain!", "[user] completes the surgery on [target]'s brain.") target.gain_trauma(/datum/brain_trauma/severe/pacifism, TRAUMA_RESILIENCE_LOBOTOMY) - return TRUE + return ..() /datum/surgery_step/pacify/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) display_results(user, target, "You screw up, rewiring [target]'s brain the wrong way around...", diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm index 3a1a8efcff4..815eaa93816 100644 --- a/code/modules/surgery/advanced/revival.dm +++ b/code/modules/surgery/advanced/revival.dm @@ -30,6 +30,7 @@ implements = list(/obj/item/twohanded/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 diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm index cf0b1cc3d7e..006ebc947ce 100644 --- a/code/modules/surgery/advanced/viral_bonding.dm +++ b/code/modules/surgery/advanced/viral_bonding.dm @@ -23,6 +23,7 @@ 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) diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm index 27d3e622a3a..4d9827a52b5 100644 --- a/code/modules/surgery/amputation.dm +++ b/code/modules/surgery/amputation.dm @@ -11,7 +11,7 @@ name = "sever limb" implements = list(/obj/item/shears = 300, TOOL_SCALPEL = 100, TOOL_SAW = 100, /obj/item/melee/arm_blade = 80, /obj/item/twohanded/fireaxe = 50, /obj/item/hatchet = 40, /obj/item/kitchen/knife/butcher = 25) time = 64 - experience_given = 5 + 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, "You begin to sever [target]'s [parse_zone(target_zone)]...", diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm index af8b3346b98..be09daf8ed0 100644 --- a/code/modules/surgery/brain_surgery.dm +++ b/code/modules/surgery/brain_surgery.dm @@ -38,7 +38,7 @@ 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 = 2*cured_num + 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 ..() diff --git a/code/modules/surgery/coronary_bypass.dm b/code/modules/surgery/coronary_bypass.dm index 5fb613e16e5..ebe735278ee 100644 --- a/code/modules/surgery/coronary_bypass.dm +++ b/code/modules/surgery/coronary_bypass.dm @@ -50,7 +50,7 @@ name = "graft coronary bypass" implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5) time = 90 - experience_given = 20 + 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, "You begin to graft a bypass onto [target]'s heart...", diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index 26d6f76ae84..478877ed357 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -7,6 +7,7 @@ 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, "You begin to wedge [tool] in [target]'s [parse_zone(target_zone)]...", diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index f697d48fa83..491dfde8cf2 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -87,7 +87,7 @@ target.apply_damage(80, BRUTE, L) ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]") repeatable = FALSE - experience_given = 1+(points_earned/(BASE_HUMAN_REWARD/10))//if BHR = 500, 10 XP on base surgery + experience_given = max(points_earned/(BASE_HUMAN_REWARD/MEDICAL_SKILL_MEDIUM),1) return ..() /datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm index d50840291c2..40e9ceee34e 100644 --- a/code/modules/surgery/eye_surgery.dm +++ b/code/modules/surgery/eye_surgery.dm @@ -10,7 +10,7 @@ name = "fix eyes" implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 45, /obj/item/pen = 25) time = 64 - experience_given = 5 + 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) diff --git a/code/modules/surgery/healing.dm b/code/modules/surgery/healing.dm index 6e8e3e18015..e6f58159f5f 100644 --- a/code/modules/surgery/healing.dm +++ b/code/modules/surgery/healing.dm @@ -1,4 +1,4 @@ -#define PER_ITERATION_XP_CAP 3 //TW XP gain scales with repeated iterations. +#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, @@ -28,7 +28,6 @@ implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 65, /obj/item/pen = 55) repeatable = TRUE time = 25 - experience_given = 1 //scales with repeated iterations var/brutehealing = 0 var/burnhealing = 0 var/missinghpbonus = 0 //heals an extra point of damager per X missing damage of type (burn damage for burn healing, brute for brute). Smaller Number = More Healing! @@ -50,11 +49,11 @@ /datum/surgery_step/heal/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) if(..()) - experience_given = min(experience_given+0.25,PER_ITERATION_XP_CAP) + experience_given = min(experience_given+1,PER_ITERATION_XP_CAP) while((brutehealing && target.getBruteLoss()) || (burnhealing && target.getFireLoss())) if(!..()) break - experience_given = min(experience_given+0.25,PER_ITERATION_XP_CAP) + experience_given = min(experience_given+1,PER_ITERATION_XP_CAP) /datum/surgery_step/heal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) var/umsg = "You succeed in fixing some of [target]'s wounds" //no period, add initial space to "addons" diff --git a/code/modules/surgery/hepatectomy.dm b/code/modules/surgery/hepatectomy.dm index ed04b918f03..c55db698c67 100644 --- a/code/modules/surgery/hepatectomy.dm +++ b/code/modules/surgery/hepatectomy.dm @@ -24,7 +24,7 @@ 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 = 10 + 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, "You begin to cut out a damaged peice of [target]'s liver...", diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index 2597464ea59..66658cf47a2 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -10,6 +10,7 @@ name = "extract implant" implements = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 65) 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) diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm index 1ba0464fa7e..db53ad47aea 100644 --- a/code/modules/surgery/limb_augmentation.dm +++ b/code/modules/surgery/limb_augmentation.dm @@ -8,7 +8,7 @@ name = "replace limb" implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100) time = 32 - experience_given = 10 + experience_given = MEDICAL_SKILL_MEDIUM var/obj/item/bodypart/L = null // L because "limb" diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm index 3b164188fdc..2c3ea560cd2 100644 --- a/code/modules/surgery/lipoplasty.dm +++ b/code/modules/surgery/lipoplasty.dm @@ -14,7 +14,6 @@ name = "cut excess fat" implements = list(TOOL_SAW = 100, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25) time = 64 - experience_given = 2 /datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) user.visible_message("[user] begins to cut away [target]'s excess fat.", "You begin to cut away [target]'s excess fat...") @@ -48,7 +47,7 @@ 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/30)) + 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 diff --git a/code/modules/surgery/lobectomy.dm b/code/modules/surgery/lobectomy.dm index 156c1ab4913..6ca80fe13c7 100644 --- a/code/modules/surgery/lobectomy.dm +++ b/code/modules/surgery/lobectomy.dm @@ -18,7 +18,7 @@ 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 = 10 + 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, "You begin to make an incision in [target]'s lungs...", diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm index e02df6b395f..340236ccc22 100644 --- a/code/modules/surgery/organ_manipulation.dm +++ b/code/modules/surgery/organ_manipulation.dm @@ -67,7 +67,7 @@ /datum/surgery_step/manipulate_organs time = 64 name = "manipulate organs" - repeatable = 1 + repeatable = TRUE implements = list(/obj/item/organ = 100, /obj/item/organ_storage = 100) var/implements_extract = list(TOOL_HEMOSTAT = 100, TOOL_CROWBAR = 55) var/current_type diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm index 135008f3f0b..0e64a08b349 100644 --- a/code/modules/surgery/plastic_surgery.dm +++ b/code/modules/surgery/plastic_surgery.dm @@ -8,7 +8,7 @@ name = "reshape face" implements = list(TOOL_SCALPEL = 100, /obj/item/kitchen/knife = 50, TOOL_WIRECUTTER = 35) time = 64 - experience_given = 5 + 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("[user] begins to alter [target]'s appearance.", "You begin to alter [target]'s appearance...") diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm index 5f262b40709..0b701d194fc 100644 --- a/code/modules/surgery/prosthetic_replacement.dm +++ b/code/modules/surgery/prosthetic_replacement.dm @@ -19,7 +19,7 @@ name = "add prosthetic" implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/twohanded/required/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100) time = 32 - experience_given = 5 //won't get full XP if rejected + 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) diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm index 30e08da31be..39f9bcfff54 100644 --- a/code/modules/surgery/remove_embedded_object.dm +++ b/code/modules/surgery/remove_embedded_object.dm @@ -8,7 +8,7 @@ name = "remove embedded objects" time = 32 accept_hand = 1 - experience_given = 5 + experience_given = MEDICAL_SKILL_MEDIUM var/obj/item/bodypart/L = null @@ -40,6 +40,7 @@ display_results(user, target, "You successfully remove [objects] objects from [H]'s [L.name].", "[user] successfully removes [objects] objects from [H]'s [L]!", "[user] successfully removes [objects] objects from [H]'s [L]!") + experience_given = MEDICAL_SKILL_MEDIUM*(objects*0.75) else to_chat(user, "You find no objects embedded in [H]'s [L]!") diff --git a/code/modules/surgery/stomachpump.dm b/code/modules/surgery/stomachpump.dm index 6e844940ce2..63bdfedff9d 100644 --- a/code/modules/surgery/stomachpump.dm +++ b/code/modules/surgery/stomachpump.dm @@ -11,6 +11,7 @@ possible_locs = list(BODY_ZONE_CHEST) requires_bodypart_type = TRUE ignore_clothes = FALSE + var/accumulated_experience = 0 /datum/surgery/stomach_pump/can_start(mob/user, mob/living/carbon/target) var/obj/item/organ/stomach/S = target.getorganslot(ORGAN_SLOT_STOMACH) @@ -28,6 +29,7 @@ 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, "You begin pumping [target]'s stomach...", @@ -37,10 +39,16 @@ /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, "[user] forces [H] to vomit, cleansing their stomach of some chemicals!", "[user] forces [H] to vomit, cleansing their stomach of some chemicals!", "[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) diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index 95507477c33..da43e384032 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -10,7 +10,7 @@ var/require_all_chems = TRUE //any on the list or all on the list? var/silicons_obey_prob = FALSE /// The amount of a experience given for successfully completing the step. - var/experience_given = 1 + 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