diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 4897a04fea82..df98b2b247ba 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 @@ -233,7 +237,9 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_TWOBORE_TRAINING, TRAIT_LEADERSHIP, TRAIT_DEXTROUS, - TRAIT_REAGENT_SCANNER + TRAIT_REAGENT_SCANNER, + TRAIT_IMPROVISER, + TRAIT_FASTLEARNER, )) /* @@ -264,6 +270,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 a8646fa15807..7529aacf923b 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..adc00e0cdc55 100644 --- a/code/modules/surgery/surgery_steps.dm +++ b/code/modules/surgery/surgery_steps.dm @@ -102,6 +102,7 @@ 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] + if(!(HAS_TRAIT(user, TRAIT_IMPROVISER))) step_duration *= tool_modifier if(surgery.lying_required) //Surgery surface modifier. @@ -111,7 +112,7 @@ 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 - + if(!(HAS_TRAIT(user, TRAIT_FASTLEARNER))) step_duration *= surface_modifier var/list/human_modifiers = list("surgery_speed" = 1.0, "pain_reduction" = 0)