diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 057c96e2044..6c1fd9d261e 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -485,7 +485,7 @@ var/global/list/remainless_species = list(SPECIES_PROMETHEAN, hair_accesories_list[path] = instance // Custom species traits - paths = typesof(/datum/trait) - /datum/trait + paths = typesof(/datum/trait) - /datum/trait - /datum/trait/negative - /datum/trait/neutral - /datum/trait/positive for(var/path in paths) var/datum/trait/instance = new path() if(!instance.name) diff --git a/code/game/dna/dna2_helpers.dm b/code/game/dna/dna2_helpers.dm index e94befcd8b7..3fb282d72d5 100644 --- a/code/game/dna/dna2_helpers.dm +++ b/code/game/dna/dna2_helpers.dm @@ -243,7 +243,7 @@ H.custom_exclaim = dna.custom_exclaim H.species.blood_color = dna.blood_color var/datum/species/S = H.species - S.produceCopy(dna.species_traits,src) + S.produceCopy(dna.species_traits, H, dna.base_species) // VOREStation Edit End H.force_update_organs() //VOREStation Add - Gotta do this too diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index ffbc9bd6a36..c6e4d889992 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -44,7 +44,7 @@ nif.nifsofts = nifsofts else ..() -/datum/species/proc/produceCopy(var/list/traits,var/mob/living/carbon/human/H) +/datum/species/proc/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base) //If species allows custom base, and custom base is set, apply it, otherwise use default. ASSERT(src) ASSERT(istype(H)) @@ -56,7 +56,7 @@ for(var/organ in has_limbs) //Copy important organ data generated by species. var/list/organ_data = has_limbs[organ] new_copy.has_limbs[organ] = organ_data.Copy() - + new_copy.traits = traits //If you had traits, apply them if(new_copy.traits) for(var/trait in new_copy.traits) @@ -81,7 +81,11 @@ //Makes thorough copy of species datum. for(var/i in vars) if(S.vars[i] != vars[i] && !islist(vars[i])) //If vars are same, no point in copying. - if(whitelist && !(i in whitelist) && i in blacklist) //If whitelist is provided, only vars in the list will be copied. + if(i in blacklist) + continue + if(whitelist)//If whitelist is provided, only vars in the list will be copied. + if(i in whitelist) + S.vars[i] = vars[i] continue S.vars[i] = vars[i] diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index cd148944df9..e5a3be77194 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -46,8 +46,8 @@ var/datum/species/real = GLOB.all_species[base_species] return real.race_key -/datum/species/custom/produceCopy(var/list/traits,var/mob/living/carbon/human/H,var/custom_base) - . = ..(traits, H) +/datum/species/custom/produceCopy(var/list/traits, var/mob/living/carbon/human/H, var/custom_base) + . = ..(traits, H, custom_base) if(selects_bodytype && custom_base) var/datum/species/S = GLOB.all_species[custom_base] S.copy_variables(., copy_vars) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index 011059a9e04..df7edc45af2 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -1,6 +1,8 @@ #define ORGANICS 1 #define SYNTHETICS 2 +/datum/trait/neutral + /datum/trait/neutral/metabolism_up name = "Fast Metabolism" desc = "You process ingested and injected reagents faster, but get hungry faster (Teshari speed)."