From d7c0fab8e851ac6c2918eb43461b422096b8b56c Mon Sep 17 00:00:00 2001 From: SkyMarshal Date: Sat, 18 Feb 2012 23:03:51 -0700 Subject: [PATCH] Bugfixes for my debugging stuff and for some of the DNA stuff. --- code/modules/admin/verbs/debug.dm | 20 +++--- code/modules/mob/living/carbon/human/human.dm | 61 ++++++++++++++++--- code/modules/mob/living/carbon/human/life.dm | 9 +-- 3 files changed, 69 insertions(+), 21 deletions(-) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index fb9733c707..29aa471f17 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -836,11 +836,12 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!islist(O.blood_DNA)) var/turf/T = get_turf(O) if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable!" + src << "[O] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable! (Last touched by [O.fingerprintslast])" else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable!" + src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable! (Last touched by [O.fingerprintslast])" world << "\red SCAN COMPLETE." world << "Thank you for your patience." + return /client/proc/cmd_debug_prints() @@ -865,21 +866,22 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(!islist(O.fingerprints)) var/turf/T = get_turf(O) if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a non-list fingerprints variable!" + src << "[O] at [T.x],[T.y],[T.z] has a non-list fingerprints variable! (Last touched by [O.fingerprintslast])" else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list fingerprints variable!" + src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list fingerprints variable! (Last touched by [O.fingerprintslast])" else if (O.fingerprints.len) - for(var/i, i <= O.fingerprints.len, i++) + for(var/i = 1, i <= O.fingerprints.len, i++) if(length(O.fingerprints[i]) != 69) var/turf/T = get_turf(O) if(isnull(T)) - src << "[O] at [O.loc] has a fingerprints variable of incorrect length! (TURF NOT FOUND)." + src << "[O] at [O.loc] has a fingerprints variable of incorrect length! (TURF NOT FOUND). (Last touched by [O.fingerprintslast])" else if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length!" + src << "[O] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length! (Last touched by [O.fingerprintslast])" else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length!" + src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length! (Last touched by [O.fingerprintslast])" break world << "\red SCAN COMPLETE." - world << "Thank you for your patience." \ No newline at end of file + world << "Thank you for your patience." + return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0dba3b3ea5..65275acb8a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2451,7 +2451,11 @@ It can still be worn/put on as normal. g_facial = hex2num(copytext(new_facial, 4, 6)) b_facial = hex2num(copytext(new_facial, 6, 8)) - + var/new_hair = input("Please select hair color.", "Character Generation") as color + if(new_facial) + r_hair = hex2num(copytext(new_hair, 2, 4)) + g_hair = hex2num(copytext(new_hair, 4, 6)) + b_hair = hex2num(copytext(new_hair, 6, 8)) var/new_eyes = input("Please select eye color.", "Character Generation") as color if(new_eyes) @@ -2461,21 +2465,57 @@ It can still be worn/put on as normal. var/new_tone = input("Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text - if (new_tone) - s_tone = max(min(round(text2num(new_tone)), 220), 1) - s_tone = -s_tone + 35 + if (!new_tone) + new_tone = 35 + s_tone = max(min(round(text2num(new_tone)), 220), 1) + s_tone = -s_tone + 35 - var/new_style = input("Please select hair style", "Character Generation") as null|anything in list( "Cut Hair", "Short Hair", "Long Hair", "Mohawk", "Balding", "Wave", "Bedhead", "Dreadlocks", "Ponytail", "Bald" ) + // hair + var/list/all_hairs = typesof(/datum/sprite_accessory/hair) - /datum/sprite_accessory/hair + var/list/hairs = list() + // loop through potential hairs + for(var/x in all_hairs) + var/datum/sprite_accessory/hair/H = new x // create new hair datum based on type x + hairs.Add(H.name) // add hair name to hairs + del(H) // delete the hair after it's all done + + var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs + + // if new style selected (not cancel) if (new_style) h_style = new_style - new_style = input("Please select facial style", "Character Generation") as null|anything in list("Watson", "Chaplin", "Selleck", "Full Beard", "Long Beard", "Neckbeard", "Van Dyke", "Elvis", "Abe", "Chinstrap", "Hipster", "Goatee", "Hogan", "Shaved") + for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly. + var/datum/sprite_accessory/hair/H = new x // create new hair datum + if(H.name == new_style) + hair_style = H // assign the hair_style variable a new hair datum + break + else + del(H) // if hair H not used, delete. BYOND can garbage collect, but better safe than sorry - if (new_style) + // facial hair + var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair) - /datum/sprite_accessory/facial_hair + var/list/fhairs = list() + + for(var/x in all_fhairs) + var/datum/sprite_accessory/facial_hair/H = new x + fhairs.Add(H.name) + del(H) + + new_style = input("Please select facial style", "Character Generation") as null|anything in fhairs + + if(new_style) f_style = new_style + for(var/x in all_fhairs) + var/datum/sprite_accessory/facial_hair/H = new x + if(H.name == new_style) + facial_hair_style = H + break + else + del(H) - var/new_gender = input("Please select gender") as null|anything in list("Male","Female") + var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female") if (new_gender) if(new_gender == "Male") gender = MALE @@ -2513,9 +2553,14 @@ It can still be worn/put on as normal. set category = "Superpower" if(!(src.mutations & mRemote)) + client.eye = client.mob src.verbs -= /mob/living/carbon/human/proc/remoteobserve return + if(client.eye != client.mob) + client.eye = client.mob + return + var/list/mob/creatures = list() for(var/mob/living/carbon/h in world) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 229aa9fdc8..39944cb0f9 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -154,8 +154,11 @@ handle_disabilities() - if(hallucination > 0) + if (mutations & mHallucination) + hallucination = 100 + halloss = 0 + if(hallucination > 0) if(hallucinations.len == 0 && hallucination >= 20 && health > 0) if(prob(2)) //Waaay to often. fake_attack(src) @@ -180,9 +183,7 @@ if(flags & PASSTABLE) flags &= ~PASSTABLE - if (mutations & mHallucination) - hallucination = 100 - halloss = 0 + if (mutations & mRegen) src.bruteloss -= 2