Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adds improvisation traits #3836

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion code/__DEFINES/traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
))

/*
Expand Down Expand Up @@ -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,
Expand Down
4 changes: 4 additions & 0 deletions code/modules/gear_presets/survivors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/species/synthetic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 4 additions & 3 deletions code/modules/surgery/surgery_steps.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just half the malus rather than completely remove it, regular tools should still be better


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.
Expand All @@ -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)))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No go for fast learner

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)
Expand Down