From cdd35ccb704abdf50d621a91d30f0eafa057a153 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Thu, 3 May 2018 17:52:27 -0400 Subject: [PATCH] VS: Support genetic modifiers in resleeving, fix colorblindness --- code/__defines/mobs_vr.dm | 12 ++++++------ .../human/species/station/traits_vr/negative.dm | 12 +++++++----- code/modules/resleeving/infocore_records.dm | 8 ++++++++ code/modules/resleeving/machines.dm | 4 ++++ 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm index eee6220f8b..d80d22df36 100644 --- a/code/__defines/mobs_vr.dm +++ b/code/__defines/mobs_vr.dm @@ -1,13 +1,13 @@ #undef VIS_COUNT -#define VIS_CH_STATUS_R 21 -#define VIS_CH_HEALTH_VR 22 -#define VIS_CH_BACKUP 23 -#define VIS_CH_VANTAG 24 +#define VIS_CH_STATUS_R 19 +#define VIS_CH_HEALTH_VR 20 +#define VIS_CH_BACKUP 21 +#define VIS_CH_VANTAG 22 -#define VIS_AUGMENTED 25 +#define VIS_AUGMENTED 23 -#define VIS_COUNT 25 +#define VIS_COUNT 23 //Protean organs #define O_ORCH "orchestrator" diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 4f5b839f5d..45a1fe9198 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -118,11 +118,13 @@ desc = "You simply can't see colors at all, period. You are 100% colorblind." cost = -1 +/datum/modifier/colorblindness_mono + name = "Colorblindness (Monochromancy)" + desc = "You simply can't see colors at all, period. You are 100% colorblind." + /datum/trait/colorblind/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) - if(!H.plane_holder) - H.plane_holder = new(H) - H.plane_holder.set_vis(VIS_D_COLORBLIND,TRUE) //The default is monocrhomia, no need to set values + H.add_modifier(/datum/modifier/trait/colorblind_mono) /datum/trait/colorblind/para_vulp name = "Colorblindness (Para Vulp)" @@ -131,7 +133,7 @@ /datum/trait/colorblind/para_vulp/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) - H.plane_holder.alter_values(VIS_D_COLORBLIND,list("variety" = "Paradise Vulp")) + H.add_modifier(/datum/modifier/trait/colorblind_vulp) /datum/trait/colorblind/para_taj name = "Colorblindness (Para Taj)" @@ -140,4 +142,4 @@ /datum/trait/colorblind/para_taj/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) - H.plane_holder.alter_values(VIS_D_COLORBLIND,list("variety" = "Paradise Taj")) + H.add_modifier(/datum/modifier/trait/colorblind_taj) diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm index caa1e61540..db9bbfa8ea 100644 --- a/code/modules/resleeving/infocore_records.dm +++ b/code/modules/resleeving/infocore_records.dm @@ -76,6 +76,7 @@ var/body_oocnotes var/list/limb_data = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO) var/list/organ_data = list(O_HEART, O_EYES, O_LUNGS, O_BRAIN) + var/list/genetic_modifiers = list() var/toocomplex var/sizemult var/weight @@ -174,6 +175,12 @@ //Just set the data to this. 0:normal, 1:assisted, 2:mechanical, 3:digital organ_data[org] = I.robotic + //Genetic modifiers + for(var/modifier in M.modifiers) + var/datum/modifier/mod = modifier + if(mod.flags & MODIFIER_GENETIC) + genetic_modifiers.Add(mod.type) + if(add_to_db) SStranscore.add_body(src) @@ -204,6 +211,7 @@ src.body_oocnotes = orig.body_oocnotes src.limb_data = orig.limb_data.Copy() src.organ_data = orig.organ_data.Copy() + src.genetic_modifiers = orig.genetic_modifiers.Copy() src.toocomplex = orig.toocomplex src.sizemult = orig.sizemult src.aflags = orig.aflags diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 08bdc863cd..ced1dcc634 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -69,6 +69,10 @@ H.dna = R.dna.Clone() H.original_player = current_project.ckey + //Apply genetic modifiers + for(var/modifier_type in R.genetic_modifiers) + H.add_modifier(modifier_type) + //Apply damage H.adjustCloneLoss((H.getMaxHealth() - config.health_threshold_dead)*0.75) H.Paralyse(4)