DNA and chooseable disabilities! Yaaay!

This commit is contained in:
SkyMarshal
2012-02-17 19:37:48 -07:00
parent 92e7123cad
commit a36982a677
40 changed files with 463 additions and 102 deletions
@@ -840,7 +840,6 @@ datum
if(!M) M = holder.my_atom
M.mutations = 0
M.disabilities = 0
M.sdisabilities = 0
..()
return
@@ -1302,11 +1301,9 @@ datum
holder.remove_reagent("zombiepowder", 5)
M.brainloss = 0
M.disabilities = 0
M.sdisabilities = 0
M.eye_blurry = 0
M.eye_blind = 0
M.disabilities &= ~1
M.sdisabilities &= ~1
M.SetWeakened(0)
M.SetStunned(0)
M.SetParalysis(0)
+1
View File
@@ -7,6 +7,7 @@
vision_flags = 0
darkness_view = 0//Base human is 2
invisa_view = 0
prescription = 0
/*
SEE_SELF // can see self, no matter what
+1
View File
@@ -41,6 +41,7 @@
desc = "Made by Nerd. Co."
icon_state = "glasses"
item_state = "glasses"
prescription = 1
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
@@ -147,9 +147,9 @@
src.density = !( src.lying )
if ((src.sdisabilities & 1))
if ((src.disabilities & 128))
src.blinded = 1
if ((src.sdisabilities & 4))
if ((src.disabilities & 32))
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -148,9 +148,9 @@
src.density = !( src.lying )
if ((src.sdisabilities & 1))
if ((src.disabilities & 128))
src.blinded = 1
if ((src.sdisabilities & 4))
if ((src.disabilities & 32))
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -463,9 +463,9 @@
src.density = !( src.lying )
if ((src.sdisabilities & 1))
if ((src.disabilities & 128))
src.blinded = 1
if ((src.sdisabilities & 4))
if ((src.disabilities & 32))
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -149,9 +149,9 @@
src.density = !( src.lying )
if ((src.sdisabilities & 1))
if ((src.disabilities & 128))
src.blinded = 1
if ((src.sdisabilities & 4))
if ((src.disabilities & 32))
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -388,9 +388,9 @@
density = !( lying )
if ((sdisabilities & 1))
if ((disabilities & 128))
blinded = 1
if ((sdisabilities & 4))
if ((disabilities & 32))
ear_deaf = 1
if (eye_blurry > 0)
+2 -2
View File
@@ -221,9 +221,9 @@
// density = !( lying )
if (sdisabilities & 1)
if (disabilities & 128)
blinded = 1
if (sdisabilities & 4)
if (disabilities & 32)
ear_deaf = 1
if (eye_blurry > 0)
@@ -194,6 +194,12 @@
if (shock_stage >= 10) tally += 3
if(tally < 0)
tally = 0
if(mutations & mRun)
tally = 0
return tally
/mob/living/carbon/human/Stat()
@@ -2431,3 +2437,96 @@ It can still be worn/put on as normal.
if(mutations & HULK)
return
..()
/mob/living/carbon/human/proc/morph()
set name = "Morph"
set category = "Superpower"
if(!(src.mutations & mMorph))
src.verbs -= /mob/living/carbon/human/proc/morph
return
var/new_facial = input("Please select facial hair color.", "Character Generation") as color
if(new_facial)
r_facial = hex2num(copytext(new_facial, 2, 4))
g_facial = hex2num(copytext(new_facial, 4, 6))
b_facial = hex2num(copytext(new_facial, 6, 8))
var/new_eyes = input("Please select eye color.", "Character Generation") as color
if(new_eyes)
r_eyes = hex2num(copytext(new_eyes, 2, 4))
g_eyes = hex2num(copytext(new_eyes, 4, 6))
b_eyes = hex2num(copytext(new_eyes, 6, 8))
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
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" )
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")
if (new_style)
f_style = new_style
var/new_gender = input("Please select gender") as null|anything in list("Male","Female")
if (new_gender)
if(new_gender == "Male")
gender = MALE
else
gender = FEMALE
update_body()
update_face()
update_clothing()
for(var/mob/M in view())
M.show_message("[src.name] just morphed!")
/mob/living/carbon/human/proc/remotesay()
set name = "Project mind"
set category = "Superpower"
if(!(src.mutations & mRemotetalk))
src.verbs -= /mob/living/carbon/human/proc/remotesay
return
var/list/creatures = list()
for(var/mob/living/carbon/h in world)
creatures += h
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
var/say = input ("What do you wish to say")
if(target.mutations & mRemotetalk)
target.show_message("\blue You hear [src.real_name]'s voice: [say]")
else
target.show_message("\blue You hear a voice: [say]")
usr.show_message("\blue You project your mind into [target.real_name]: [say]")
for(var/mob/dead/observer/G in world)
G.show_message("<i>Telepathic message from <b>[src]</b> to <b>[target]</b>: [say]</i>")
/mob/living/carbon/human/proc/remoteobserve()
set name = "Remote View"
set category = "Superpower"
if(!(src.mutations & mRemote))
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
return
var/list/mob/creatures = list()
for(var/mob/living/carbon/h in world)
creatures += h
client.perspective = EYE_PERSPECTIVE
var/mob/target = input ("Who do you want to project your mind to ?") as mob in creatures
if (target)
client.eye = target
else
client.eye = client.mob
+52 -5
View File
@@ -172,6 +172,52 @@
for(var/atom/a in hallucinations)
del a
if(mutations & mSmallsize)
if(!(flags & TABLEPASS))
flags |= TABLEPASS
else
if(flags & TABLEPASS)
flags &= ~TABLEPASS
if (mutations & mHallucination)
hallucination = 100
halloss = 0
if (mutations & mRegen)
src.bruteloss -= 2
src.fireloss -= 2
src.oxyloss -= 2
src.toxloss -= 2
for(var/datum/organ/external/org in organs)
org.brute_dam -= 2
org.burn_dam -= 2
org.brute_dam = max(org.brute_dam, 0)
org.burn_dam = max(org.burn_dam, 0)
if(!(/mob/living/carbon/human/proc/morph in src.verbs))
if(mutations & mMorph)
src.verbs += /mob/living/carbon/human/proc/morph
else
if(!(mutations & mMorph))
src.verbs -= /mob/living/carbon/human/proc/morph
if(!(/mob/living/carbon/human/proc/remoteobserve in src.verbs))
if(mutations & mRemote)
src.verbs += /mob/living/carbon/human/proc/remoteobserve
else
if(!(mutations & mRemote))
src.verbs += /mob/living/carbon/human/proc/remoteobserve
if(!(/mob/living/carbon/human/proc/remotesay in src.verbs))
if(mutations & mRemotetalk)
src.verbs += /mob/living/carbon/human/proc/remotesay
else
if(!(mutations & mRemotetalk))
src.verbs -= /mob/living/carbon/human/proc/remotesay
if (disabilities & 2)
if ((prob(1) && paralysis < 1 && r_epil < 1))
src << "\red You have a seizure!"
@@ -195,7 +241,7 @@
if(1)
emote("twitch")
if(2 to 3)
say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]")
say("[prob(50) ? ";" : ""][pick("EELS","MOTORBOATS","MERDE","ANTIDISESTABLISHMENTARIANISM","OGOPOGO","POPEMOBILE","RHOMBUS","TUMESCENCE","ZIGGURAT","DIRIGIBLES","WAFFLES","PICKLES","BIKINI","DUCK","KNICKERBOCKERS","LOQUACIOUS","MACADAMIA","MAHOGANY","KUMQUAT","PERCOLATOR","AUBERGINES","FLANGES","GOURDS","DONUTS","CALLIPYGIAN","DARJEELING","DWARFS","MAGMA","ARMOK","BERR","APPLES","SPACEMEN","NINJAS","PIRATES","BUNION")]!")
var/old_x = pixel_x
var/old_y = pixel_y
pixel_x += rand(-2,2)
@@ -207,6 +253,7 @@
if (disabilities & 16)
if (prob(10))
stuttering = max(10, stuttering)
if (brainloss >= 60 && stat != 2)
if (prob(7))
switch(pick(1,2,3))
@@ -374,7 +421,7 @@
else canmove = 1
handle_breath(datum/gas_mixture/breath)
if(nodamage)
if(nodamage || (mutations & mNobreath))
return
if(!breath || (breath.total_moles() == 0))
@@ -857,9 +904,9 @@
density = !( lying )
if ((sdisabilities & 1 || istype(glasses, /obj/item/clothing/glasses/blindfold)))
if ((disabilities & 128 || istype(glasses, /obj/item/clothing/glasses/blindfold)))
blinded = 1
if ((sdisabilities & 4 || istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)))
if ((disabilities & 32 || istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs)))
ear_deaf = 1
if (eye_blurry > 0)
@@ -1084,7 +1131,7 @@
else
blind.layer = 0
if (disabilities & 1 && !istype(glasses, /obj/item/clothing/glasses/regular) )
if (disabilities & 1 && ((glasses && !glasses.prescription) || !glasses))
client.screen += hud_used.vimpaired
if (eye_blurry)
@@ -22,7 +22,7 @@
var/mob/living/carbon/human/H = src
alt_name = " (as [H.get_visible_name()])"
// Mute disability
if (src.sdisabilities & 2)
if (src.disabilities & 64)
return
if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle))
@@ -462,9 +462,9 @@
src.density = !( src.lying )
if (src.sdisabilities & 1)
if (src.disabilities & 128)
src.blinded = 1
if (src.sdisabilities & 4)
if (src.disabilities & 32)
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -469,9 +469,9 @@
src.density = !( src.lying )
if (src.sdisabilities & 1)
if (src.disabilities & 128)
src.blinded = 1
if (src.sdisabilities & 4)
if (src.disabilities & 32)
src.ear_deaf = 1
if (src.eye_blurry > 0)
@@ -7,7 +7,7 @@
gender = pick(MALE, FEMALE)
dna = new /datum/dna( null )
dna.uni_identity = "00600200A00E0110148FC01300B009"
dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
dna.struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B0FD6"
dna.unique_enzymes = md5(name)
//////////blah
var/gendervar
+2
View File
@@ -17,6 +17,8 @@
//sort of a legacy burn method for /electrocute, /shock, and the e_chair
/mob/living/proc/burn_skin(burn_amount)
if(istype(src, /mob/living/carbon/human))
if(src.mutations & mShock)
return 0
//world << "DEBUG: burn_skin(), mutations=[mutations]"
if (src.mutations & COLD_RESISTANCE) //fireproof
return 0
+1 -1
View File
@@ -53,7 +53,7 @@
return
// Mute disability
if (sdisabilities & 2)
if (disabilities & 64)
return
if (istype(wear_mask, /obj/item/clothing/mask/muzzle))
@@ -136,9 +136,9 @@
src.density = !( src.lying )
if ((src.sdisabilities & 1))
if ((src.disabilities & 128))
src.blinded = 1
if ((src.sdisabilities & 4))
if ((src.disabilities & 32))
src.ear_deaf = 1
if (src.eye_blurry > 0)
+3 -3
View File
@@ -43,19 +43,19 @@
/mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
if(!client) return
if (type)
if ((type & 1 && (sdisabilities & 1 || (blinded || paralysis))))//Vision related
if ((type & 1 && (disabilities & 128 || (blinded || paralysis))))//Vision related
if (!( alt ))
return
else
msg = alt
type = alt_type
if ((type & 2 && (sdisabilities & 4 || ear_deaf)))//Hearing related
if ((type & 2 && (disabilities & 32 || ear_deaf)))//Hearing related
if (!( alt ))
return
else
msg = alt
type = alt_type
if ((type & 1 && sdisabilities & 1))
if ((type & 1 && disabilities & 128))
return
// Added voice muffling for Issue 41.
if (stat == 1 || sleeping > 0)
@@ -369,6 +369,7 @@
new_character.dna.ready_dna(new_character)
preferences.copydisabilities(new_character)
if(mind)
mind.transfer_to(new_character)
mind.original = new_character
+44 -3
View File
@@ -108,9 +108,10 @@ datum/preferences
flavor_text = ""
// slot stuff
var/slotname
var/curslot = 0
// slot stuff (Why were they var/var? --SkyMarshal)
slotname
curslot = 0
disabilities = 0
New()
hair_style = new/datum/sprite_accessory/hair/short
@@ -169,6 +170,8 @@ datum/preferences
dat += "<hr><b>Eyes</b><br>"
dat += "<a href='byond://?src=\ref[user];preferences=1;eyes=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]\"><tr><td>__</td></tr></table></font>"
dat += "<hr><b>Disabilities: </b><a href=\"byond://?src=\ref[user];preferences=1;disabilities=1\">[disabilities]</a><br>"
dat += "<hr><b>Flavor Text</b><br>"
dat += "<a href='byond://?src=\ref[user];preferences=1;flavor_text=1'>Change</a><br>"
if(lentext(flavor_text) <= 40)
@@ -683,6 +686,25 @@ datum/preferences
b_type = "A+"
UI = UI_OLD
midis = 1
disabilities = 0
if(link_tags["disabilities"])
var/temp = input(usr,"Disability number","Disabilities",disabilities) as num
disabilities = min(max(temp,0),63)
usr << "You have chosen..."
if(disabilities == 0)
usr << "No disabilities"
if(disabilities & 1)
usr << "Nearsightedness"
if(disabilities & 2)
usr << "Headaches"
if(disabilities & 4)
usr << "Coughing"
if(disabilities & 8)
usr << "Twitchiness"
if(disabilities & 16)
usr << "Nervousness"
if(disabilities & 32)
usr << "Trenna's Disorder (Deafness)"
ShowChoices(user)
@@ -738,5 +760,24 @@ datum/preferences
character.client.be_alien = be_special&BE_ALIEN
character.client.be_pai = be_special&BE_PAI
proc/copydisabilities(mob/living/carbon/human/character)
if(disabilities & 1)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,GLASSESBLOCK,toggledblock(getblock(character.dna.struc_enzymes,GLASSESBLOCK,3)),3)
if(disabilities & 2)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,HEADACHEBLOCK,toggledblock(getblock(character.dna.struc_enzymes,HEADACHEBLOCK,3)),3)
if(disabilities & 4)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,COUGHBLOCK,toggledblock(getblock(character.dna.struc_enzymes,COUGHBLOCK,3)),3)
if(disabilities & 8)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,TWITCHBLOCK,toggledblock(getblock(character.dna.struc_enzymes,TWITCHBLOCK,3)),3)
if(disabilities & 16)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,NERVOUSBLOCK,toggledblock(getblock(character.dna.struc_enzymes,NERVOUSBLOCK,3)),3)
if(disabilities & 32)
character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,DEAFBLOCK,toggledblock(getblock(character.dna.struc_enzymes,DEAFBLOCK,3)),3)
//if(disabilities & 64)
//mute
//if(disabilities & 128)
//character.dna.struc_enzymes = setblock(character.dna.struc_enzymes,BLINDBLOCK,toggledblock(getblock(character.dna.struc_enzymes,BLINDBLOCK,3)),3)
character.disabilities = disabilities
#undef UI_OLD
#undef UI_NEW
+5
View File
@@ -139,6 +139,7 @@ datum/preferences/proc/savefile_save(mob/user, slot)
F["pregame_music"] << src.pregame_music
F["ooccolor"] << src.ooccolor
F["lastchangelog"] << src.lastchangelog
F["disabilities"] << src.disabilities
return 1
@@ -213,6 +214,10 @@ datum/preferences/proc/savefile_load(mob/user, slot)
F["job_engsec_high"] >> src.job_engsec_high
F["job_engsec_med"] >> src.job_engsec_med
F["job_engsec_low"] >> src.job_engsec_low
F["disabilities"] >> src.disabilities
if(isnull(src.disabilities)) //Sanity checking
src.disabilities = 0
F["disabilities"] << src.disabilities
F["job_alt_titles"] >> job_alt_titles
if(!job_alt_titles)