mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
128 lines
4.0 KiB
Plaintext
128 lines
4.0 KiB
Plaintext
/////////////////////////// DNA DATUM
|
|
/datum/dna
|
|
var/unique_enzymes = null
|
|
var/struc_enzymes = null
|
|
var/uni_identity = null
|
|
var/b_type = "A+"
|
|
var/mutantrace = null //The type of mutant race the player is if applicable (i.e. potato-man)
|
|
var/real_name //Stores the real name of the person who originally got this dna datum. Used primarely for changelings,
|
|
|
|
/datum/dna/proc/check_integrity(var/mob/living/carbon/human/character)
|
|
if(character)
|
|
if(length(uni_identity) != 39)
|
|
//Lazy.
|
|
var/temp
|
|
|
|
//Hair
|
|
var/hair = 0
|
|
if(!character.h_style)
|
|
character.h_style = "Skinhead"
|
|
|
|
var/hrange = round(4095 / hair_styles_list.len)
|
|
var/index = hair_styles_list.Find(character.h_style)
|
|
if(index)
|
|
hair = index * hrange - rand(1,hrange-1)
|
|
|
|
//Facial Hair
|
|
var/beard = 0
|
|
if(!character.f_style)
|
|
character.f_style = "Shaved"
|
|
|
|
var/f_hrange = round(4095 / facial_hair_styles_list.len)
|
|
index = facial_hair_styles_list.Find(character.f_style)
|
|
if(index)
|
|
beard = index * f_hrange - rand(1,f_hrange-1)
|
|
|
|
temp = add_zero2(num2hex((character.r_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.b_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.g_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.r_facial),1), 3)
|
|
temp += add_zero2(num2hex((character.b_facial),1), 3)
|
|
temp += add_zero2(num2hex((character.g_facial),1), 3)
|
|
temp += add_zero2(num2hex(((character.s_tone + 220) * 16),1), 3)
|
|
temp += add_zero2(num2hex((character.r_eyes),1), 3)
|
|
temp += add_zero2(num2hex((character.g_eyes),1), 3)
|
|
temp += add_zero2(num2hex((character.b_eyes),1), 3)
|
|
|
|
var/gender
|
|
|
|
if (character.gender == MALE)
|
|
gender = add_zero2(num2hex((rand(1,(2050+BLOCKADD))),1), 3)
|
|
else
|
|
gender = add_zero2(num2hex((rand((2051+BLOCKADD),4094)),1), 3)
|
|
|
|
temp += gender
|
|
temp += add_zero2(num2hex((beard),1), 3)
|
|
temp += add_zero2(num2hex((hair),1), 3)
|
|
|
|
uni_identity = temp
|
|
if(length(struc_enzymes)!= 3*STRUCDNASIZE)
|
|
var/mutstring = ""
|
|
for(var/i = 1, i <= STRUCDNASIZE, i++)
|
|
mutstring += add_zero2(num2hex(rand(1,1024)),3)
|
|
|
|
struc_enzymes = mutstring
|
|
if(length(unique_enzymes) != 32)
|
|
unique_enzymes = md5(character.real_name)
|
|
else
|
|
if(length(uni_identity) != 39) uni_identity = "00600200A00E0110148FC01300B0095BD7FD3F4"
|
|
if(length(struc_enzymes)!= 3*STRUCDNASIZE) struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
|
|
|
|
/datum/dna/proc/ready_dna(mob/living/carbon/human/character)
|
|
var/temp
|
|
|
|
//Hair
|
|
var/hair = 0
|
|
if(!character.h_style)
|
|
character.h_style = "Bald"
|
|
|
|
var/hrange = round(4095 / hair_styles_list.len)
|
|
var/index = hair_styles_list.Find(character.h_style)
|
|
if(index)
|
|
hair = index * hrange - rand(1,hrange-1)
|
|
|
|
//Facial Hair
|
|
var/beard = 0
|
|
if(!character.f_style)
|
|
character.f_style = "Shaved"
|
|
|
|
var/f_hrange = round(4095 / facial_hair_styles_list.len)
|
|
index = facial_hair_styles_list.Find(character.f_style)
|
|
if(index)
|
|
beard = index * f_hrange - rand(1,f_hrange-1)
|
|
|
|
temp = add_zero2(num2hex((character.r_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.b_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.g_hair),1), 3)
|
|
temp += add_zero2(num2hex((character.r_facial),1), 3)
|
|
temp += add_zero2(num2hex((character.b_facial),1), 3)
|
|
temp += add_zero2(num2hex((character.g_facial),1), 3)
|
|
temp += add_zero2(num2hex(((character.s_tone + 220) * 16),1), 3)
|
|
temp += add_zero2(num2hex((character.r_eyes),1), 3)
|
|
temp += add_zero2(num2hex((character.g_eyes),1), 3)
|
|
temp += add_zero2(num2hex((character.b_eyes),1), 3)
|
|
|
|
var/gender
|
|
|
|
if (character.gender == MALE)
|
|
gender = add_zero2(num2hex((rand(1,(2050+BLOCKADD))),1), 3)
|
|
else
|
|
gender = add_zero2(num2hex((rand((2051+BLOCKADD),4094)),1), 3)
|
|
|
|
temp += gender
|
|
temp += add_zero2(num2hex((beard),1), 3)
|
|
temp += add_zero2(num2hex((hair),1), 3)
|
|
|
|
uni_identity = temp
|
|
|
|
var/mutstring = ""
|
|
for(var/i = 1, i <= STRUCDNASIZE, i++)
|
|
mutstring += add_zero2(num2hex(rand(1,1024)),3)
|
|
|
|
|
|
struc_enzymes = mutstring
|
|
|
|
unique_enzymes = md5(character.real_name)
|
|
reg_dna[unique_enzymes] = character.real_name
|
|
|
|
/////////////////////////// DNA DATUM |