diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 288604434e34..0ac9cef3017a 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -175,6 +175,10 @@ #define TRAIT_USING_WHEELCHAIR "t_using_wheelchair" /// If the mob will instantly go permadead upon death #define TRAIT_HARDCORE "t_hardcore" +/// If the mob has experience in frontier surgery with poor tools +#define TRAIT_IMPROVISER "t_improviser" +/// If the mob has experience in frontier surgery with poor tools, and inhuman learning abilities +#define TRAIT_FASTLEARNER "t_fastlearner" // -- ability traits -- /// Xenos with this trait cannot have plasma transfered to them @@ -236,7 +240,9 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_LEADERSHIP, TRAIT_DEXTROUS, TRAIT_REAGENT_SCANNER, - TRAIT_ABILITY_BURROWED + TRAIT_IMPROVISER, + TRAIT_FASTLEARNER, + TRAIT_ABILITY_BURROWED, )) /* @@ -267,6 +273,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_EMOTE_CD_EXEMPT" = TRAIT_EMOTE_CD_EXEMPT, "TRAIT_LISPING" = TRAIT_LISPING, "TRAIT_CANNOT_EAT" = TRAIT_CANNOT_EAT, + "TRAIT_IMPROVISER" = TRAIT_IMPROVISER, + "TRAIT_FASTLEARNER" = TRAIT_FASTLEARNER, ), /mob/living/carbon/xenomorph = list( "TRAIT_ABILITY_NO_PLASMA_TRANSFER" = TRAIT_ABILITY_NO_PLASMA_TRANSFER, diff --git a/code/modules/gear_presets/survivors.dm b/code/modules/gear_presets/survivors.dm index 44808d7a374f..faaf908b6f0f 100644 --- a/code/modules/gear_presets/survivors.dm +++ b/code/modules/gear_presets/survivors.dm @@ -198,6 +198,10 @@ ..() +/datum/equipment_preset/survivor/doctor/load_race(mob/living/carbon/human/new_human,client/mob_client) + ..() + ADD_TRAIT(new_human, TRAIT_IMPROVISER, TRAIT_SOURCE_JOB) + /datum/equipment_preset/survivor/doctor/trijent name = "Survivor - Trijent Doctor" assignment = "Trijent Dam Doctor" diff --git a/code/modules/mob/living/carbon/human/species/synthetic.dm b/code/modules/mob/living/carbon/human/species/synthetic.dm index bfd3c74eb57b..9f42c2bcd110 100644 --- a/code/modules/mob/living/carbon/human/species/synthetic.dm +++ b/code/modules/mob/living/carbon/human/species/synthetic.dm @@ -76,7 +76,7 @@ name_plural = "Colonial Synthetics" uses_ethnicity = TRUE burn_mod = 0.8 - mob_inherent_traits = list(TRAIT_SUPER_STRONG) + mob_inherent_traits = list(TRAIT_SUPER_STRONG, TRAIT_IMPROVISER, TRAIT_FASTLEARNER) pain_type = /datum/pain/synthetic/colonial rarity_value = 1.5 diff --git a/code/modules/surgery/surgery_steps.dm b/code/modules/surgery/surgery_steps.dm index b58c62b57f68..33e3e0b02525 100644 --- a/code/modules/surgery/surgery_steps.dm +++ b/code/modules/surgery/surgery_steps.dm @@ -102,7 +102,8 @@ affected_limb, or location vars. Also, in that case there may be a wait between if(ispath(tool_type)) //Tool speed modifier. This means hand & any item are 100% efficient as surgical tools. tool_modifier = tools[tool_type] - step_duration *= tool_modifier + if(!(HAS_TRAIT(user, TRAIT_IMPROVISER))) + step_duration *= tool_modifier if(surgery.lying_required) //Surgery surface modifier. surface_modifier = target.buckled?.surgery_duration_multiplier //If they're buckled, use the surface modifier of the thing they're buckled to. @@ -111,8 +112,8 @@ affected_limb, or location vars. Also, in that case there may be a wait between for(var/obj/surface in get_turf(target)) //Otherwise, get the lowest surface modifier of objects on their turf. if(surface_modifier > surface.surgery_duration_multiplier) surface_modifier = surface.surgery_duration_multiplier - - step_duration *= surface_modifier + if(!(HAS_TRAIT(user, TRAIT_FASTLEARNER))) + step_duration *= surface_modifier var/list/human_modifiers = list("surgery_speed" = 1.0, "pain_reduction" = 0) SEND_SIGNAL(user, COMSIG_HUMAN_SURGERY_APPLY_MODIFIERS, human_modifiers)