diff --git a/baystation12.dme b/baystation12.dme index 45853abe79c..baed6e5b6da 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -637,6 +637,7 @@ #include "code\game\objects\devices\chameleonproj.dm" #include "code\game\objects\devices\flash.dm" #include "code\game\objects\devices\flashlight.dm" +#include "code\game\objects\devices\geneanalyzer.dm" #include "code\game\objects\devices\infra_sensor.dm" #include "code\game\objects\devices\multitool.dm" #include "code\game\objects\devices\paicard.dm" diff --git a/code/defines/global.dm b/code/defines/global.dm index 170b887a2be..6ab31cc2054 100644 --- a/code/defines/global.dm +++ b/code/defines/global.dm @@ -37,6 +37,23 @@ var FAKEBLOCK = 0 BLOCKADD = 0 DIFFMUT = 0 + HEADACHEBLOCK = 0 + COUGHBLOCK = 0 + TWITCHBLOCK = 0 + NERVOUSBLOCK = 0 + NOBREATHBLOCK = 0 + REMOTEVIEWBLOCK = 0 + REGENERATEBLOCK = 0 + INCREASERUNBLOCK = 0 + REMOTETALKBLOCK = 0 + MORPHBLOCK = 0 + BLENDBLOCK = 0 + HALLUCINATIONBLOCK = 0 + NOPRINTSBLOCK = 0 + SHOCKIMMUNITYBLOCK = 0 + SMALLSIZEBLOCK = 0 + GLASSESBLOCK = 0 + MONKEYBLOCK = 27 skipupdate = 0 /////////////// diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm index 0b8320cc8cd..828db621342 100644 --- a/code/defines/mob/mob.dm +++ b/code/defines/mob/mob.dm @@ -66,7 +66,6 @@ var/other_mobs = null var/memory = "" var/poll_answer = 0.0 - var/sdisabilities = 0//Carbon var/disabilities = 0//Carbon var/atom/movable/pulling = null var/stat = 0.0 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index 3ae04a7cb39..411a5e19c22 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -85,6 +85,11 @@ return if (ishuman(M)) add_fibers(M) + if (M.mutations & mFingerprints) + if(src.fingerprintslast != M.key) + src.fingerprintshidden += "(Has no fingerprints) Real name: [M.real_name], Key: [M.key]" + src.fingerprintslast = M.key + return 0 var/mob/living/carbon/human/H = M if (!istype(H.dna, /datum/dna)) return 0 diff --git a/code/game/dna.dm b/code/game/dna.dm index 553c96c2236..b0d6dc91c89 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -1,4 +1,7 @@ /////////////////////////// DNA DATUM + +#define STRUCDNASIZE 27 + /datum/dna var/unique_enzymes = null var/struc_enzymes = null @@ -9,7 +12,7 @@ /datum/dna/proc/check_integrity() //Lazy. if(length(uni_identity) != 39) uni_identity = "00600200A00E0110148FC01300B0095BD7FD3F4" - if(length(struc_enzymes)!= 42) struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4000" + if(length(struc_enzymes)!= 81) struc_enzymes = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B02D6" /datum/dna/proc/ready_dna(mob/living/carbon/human/character) @@ -63,7 +66,7 @@ uni_identity = temp - var/mutstring = "2013E85C944C19A4B00185144725785DC6406A4508" + var/mutstring = "43359156756131E13763334D1C369012032164D4FE4CD61544B6C03F251B6C60A42821D26BA3B02D6" struc_enzymes = mutstring @@ -84,7 +87,7 @@ /proc/getrightblocks(input,blocknumber,blocksize) var/string - string = copytext(input,blocksize*blocknumber+1,length(input)+1) + string = copytext(input,blocksize*blocknumber+1) if (blocknumber < (length(input)/blocksize)) return string else @@ -152,7 +155,7 @@ if(!M) return var/num var/newdna - num = pick(1,3,FAKEBLOCK,5,CLUMSYBLOCK,7,9,BLINDBLOCK,DEAFBLOCK) + num = pick(GLASSESBLOCK,COUGHBLOCK,FAKEBLOCK,NERVOUSBLOCK,CLUMSYBLOCK,TWITCHBLOCK,HEADACHEBLOCK,BLINDBLOCK,DEAFBLOCK) M.dna.check_integrity() newdna = setblock(M.dna.struc_enzymes,num,toggledblock(getblock(M.dna.struc_enzymes,num,3)),3) M.dna.struc_enzymes = newdna @@ -172,13 +175,13 @@ if(!M) return M.dna.check_integrity() if(type) - for(var/i = 1, i <= 13, i++) + for(var/i = 1, i <= 26, i++) if(prob(p)) M.dna.uni_identity = setblock(M.dna.uni_identity, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) updateappearance(M, M.dna.uni_identity) else - for(var/i = 1, i <= 13, i++) + for(var/i = 1, i <= 26, i++) if(prob(p)) M.dna.struc_enzymes = setblock(M.dna.struc_enzymes, i, add_zero2(num2hex(rand(1,4095), 1), 3), 3) domutcheck(M, null) @@ -263,32 +266,108 @@ else return 0 +/proc/ismuton(var/block,var/mob/M) + return isblockon(getblock(M.dna.struc_enzymes, block,3),block) + /proc/domutcheck(mob/living/M as mob, connected, inj) - //telekinesis = 1 - //firemut = 2 - //xray = 4 - //hulk = 8 - //clumsy = 16 + if (!M) return + //mutations + /* + TK =(1<<0) + COLD_RESISTANCE =(1<<1) + XRAY =(1<<2) + HULK =(1<<3) + CLUMSY =(1<<4) + //FAT =(1<<5) + HUSK =(1<<6) + LASER =(1<<7) + HEAL =(1<<8) + mNobreath =(1<<9) + mRemote =(1<<10) + mRegen =(1<<11) + mRun =(1<<12) + mRemotetalk =(1<<13) + mMorph =(1<<14) + mBlend =(1<<15) + mHallucination =(1<<16) + mFingerprints =(1<<17) + mShock =(1<<18) + mSmallsize =(1<<19) + */ + + //disabilities + //1 = blurry eyes + //2 = headache + //4 = coughing + //8 = twitch + //16 = nervous + //32 = deaf + //64 = mute + //128 = blind + M.dna.check_integrity() M.disabilities = 0 - M.sdisabilities = 0 M.mutations = 0 M.see_in_dark = 2 M.see_invisible = 0 - if (isblockon(getblock(M.dna.struc_enzymes, 1,3),1)) - M.disabilities |= 1 - M << "\red Your eyes feel strange." - if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),2)) + if(ismuton(NOBREATHBLOCK,M)) + if(prob(50)) + M << "\blue You feel no need to breathe." + M.mutations |= mNobreath + if(ismuton(REMOTEVIEWBLOCK,M)) + if(prob(50)) + M << "\blue Your mind expands" + M.mutations |= mRemote + if(ismuton(REGENERATEBLOCK,M)) + if(prob(50)) + M << "\blue You feel strange" + M.mutations |= mRegen + if(ismuton(INCREASERUNBLOCK,M)) + if(prob(50)) + M << "\blue You feel quick" + M.mutations |= mRun + if(ismuton(REMOTETALKBLOCK,M)) + if(prob(50)) + M << "\blue You expand your mind outwards" + M.mutations |= mRemotetalk + if(ismuton(MORPHBLOCK,M)) + if(prob(50)) + M.mutations |= mMorph + M << "\blue Your skin feels strange" + if(ismuton(BLENDBLOCK,M)) + if(prob(50)) + M.mutations |= mBlend + M << "\blue You feel alone" + if(ismuton(HALLUCINATIONBLOCK,M)) + if(prob(50)) + M.mutations |= mHallucination + M << "\blue Your mind says 'Hello'" + if(ismuton(NOPRINTSBLOCK,M)) + if(prob(50)) + M.mutations |= mFingerprints + M << "\blue Your fingers feel numb" + if(ismuton(SHOCKIMMUNITYBLOCK,M)) + if(prob(50)) + M.mutations |= mShock + M << "\blue You feel strange" + if(ismuton(SMALLSIZEBLOCK,M)) + if(prob(50)) + M << "\blue Your skin feels rubbery" + M.mutations |= mSmallsize + + + + if (isblockon(getblock(M.dna.struc_enzymes, HULKBLOCK,3),HULKBLOCK)) if(inj || prob(5)) M << "\blue Your muscles hurt." M.mutations |= HULK - if (isblockon(getblock(M.dna.struc_enzymes, 3,3),3)) + if (isblockon(getblock(M.dna.struc_enzymes, HEADACHEBLOCK,3),HEADACHEBLOCK)) M.disabilities |= 2 M << "\red You get a headache." - if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),4)) + if (isblockon(getblock(M.dna.struc_enzymes, FAKEBLOCK,3),FAKEBLOCK)) M << "\red You feel strange." if (prob(95)) if(prob(50)) @@ -297,49 +376,46 @@ randmuti(M) else randmutg(M) - if (isblockon(getblock(M.dna.struc_enzymes, 5,3),5)) + if (isblockon(getblock(M.dna.struc_enzymes, COUGHBLOCK,3),COUGHBLOCK)) M.disabilities |= 4 M << "\red You start coughing." - if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),6)) + if (isblockon(getblock(M.dna.struc_enzymes, CLUMSYBLOCK,3),CLUMSYBLOCK)) M << "\red You feel lightheaded." M.mutations |= CLUMSY - if (isblockon(getblock(M.dna.struc_enzymes, 7,3),7)) + if (isblockon(getblock(M.dna.struc_enzymes, TWITCHBLOCK,3),TWITCHBLOCK)) M.disabilities |= 8 M << "\red You twitch." - if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),8)) + if (isblockon(getblock(M.dna.struc_enzymes, XRAYBLOCK,3),XRAYBLOCK)) if(inj || prob(30)) M << "\blue The walls suddenly disappear." M.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS) M.see_in_dark = 8 M.see_invisible = 2 M.mutations |= XRAY - if (isblockon(getblock(M.dna.struc_enzymes, 9,3),9)) + if (isblockon(getblock(M.dna.struc_enzymes, NERVOUSBLOCK,3),NERVOUSBLOCK)) M.disabilities |= 16 M << "\red You feel nervous." - if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),10)) + if (isblockon(getblock(M.dna.struc_enzymes, FIREBLOCK,3),FIREBLOCK)) if(inj || prob(30)) M << "\blue Your body feels warm." M.mutations |= COLD_RESISTANCE - if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),11)) - M.sdisabilities |= 1 + if (isblockon(getblock(M.dna.struc_enzymes, BLINDBLOCK,3),BLINDBLOCK)) + M.disabilities |= 128 M << "\red You can't seem to see anything." - if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),12)) + if (isblockon(getblock(M.dna.struc_enzymes, TELEBLOCK,3),TELEBLOCK)) if(inj || prob(15)) M << "\blue You feel smarter." M.mutations |= TK - if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),13)) - M.sdisabilities |= 4 + if (isblockon(getblock(M.dna.struc_enzymes, DEAFBLOCK,3),DEAFBLOCK)) + M.disabilities |= 32 M.ear_deaf = 1 - M << "\red You can't seem to hear anything..." - - /* If you want the new mutations to work, UNCOMMENT THIS. - if(istype(M, /mob/living/carbon)) - for (var/datum/mutations/mut in global_mutations) - mut.check_mutation(M) - */ + M << "\red Its kinda quiet.." + if (isblockon(getblock(M.dna.struc_enzymes, GLASSESBLOCK,3),GLASSESBLOCK)) + M.disabilities |= 1 + M << "Your eyes feel weird..." //////////////////////////////////////////////////////////// Monkey Block - if (isblockon(getblock(M.dna.struc_enzymes, 14,3),14) && istype(M, /mob/living/carbon/human)) + if (isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && istype(M, /mob/living/carbon/human)) // human > monkey var/mob/living/carbon/human/H = M H.monkeyizing = 1 @@ -409,7 +485,7 @@ del(M) return - if (!isblockon(getblock(M.dna.struc_enzymes, 14,3),14) && !istype(M, /mob/living/carbon/human)) + if (!isblockon(getblock(M.dna.struc_enzymes, MONKEYBLOCK,3),MONKEYBLOCK) && !istype(M, /mob/living/carbon/human)) // monkey > human, var/mob/living/carbon/monkey/Mo = M Mo.monkeyizing = 1 @@ -902,20 +978,28 @@ src.temphtml = text("Structural Enzymes: [getleftblocks(src.connected.occupant.dna.struc_enzymes,strucblock,3)][src.subblock == 1 ? ""+getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),1,1)+"" : getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),1,1)][src.subblock == 2 ? ""+getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),2,1)+"" : getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),2,1)][src.subblock == 3 ? ""+getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),3,1)+"" : getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),3,1)][getrightblocks(src.connected.occupant.dna.struc_enzymes,strucblock,3)]

") //src.temphtml = text("Structural Enzymes: []

", src.connected.occupant.dna.struc_enzymes) src.temphtml += text("Selected Block: []
", src.strucblock) - src.temphtml += text("<- Block ->

", src, src) + src.temphtml += text("<- Block ->

", src, src, src) src.temphtml += text("Selected Sub-Block: []
", src.subblock) src.temphtml += text("<- Sub-Block ->

", src, src) src.temphtml += "Modify Block:
" src.temphtml += text("Radiation
", src) src.delete = 0 if (href_list["strucmenuplus"]) - if (src.strucblock < 14) + if (src.strucblock < 27) src.strucblock++ dopage(src,"strucmenu") if (href_list["strucmenuminus"]) if (src.strucblock > 1) src.strucblock-- dopage(src,"strucmenu") + if (href_list["strucmenuchoose"]) + var/temp = input("What block?", "Block", src.strucblock) as num + if (temp > 27) + temp = 27 + if (temp < 1) + temp = 1 + src.strucblock = temp + dopage(src,"strucmenu") if (href_list["strucmenusubplus"]) if (src.subblock < 3) src.subblock++ @@ -945,13 +1029,13 @@ /// if(src.connected.occupant) if (prob((80 + (src.radduration / 2)))) - if ((src.strucblock != 2 || src.strucblock != 12 || src.strucblock != 8 || src.strucblock || 10) && prob (20)) + if (prob (20)) oldblock = src.strucblock block = miniscramble(block, src.radstrength, src.radduration) newblock = null - if (src.strucblock > 1 && src.strucblock < 5) + if (src.strucblock > 1 && src.strucblock < STRUCDNASIZE/2) src.strucblock++ - else if (src.strucblock > 5 && src.strucblock < 14) + else if (src.strucblock > STRUCDNASIZE/2 && src.strucblock < STRUCDNASIZE) src.strucblock-- if (src.subblock == 1) newblock = block + getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),2,1) + getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),3,1) if (src.subblock == 2) newblock = getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),1,1) + block + getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),3,1) @@ -962,7 +1046,6 @@ src.connected.occupant.radiation += (src.radstrength+src.radduration) src.strucblock = oldblock else - // block = miniscramble(block, src.radstrength, src.radduration) newblock = null if (src.subblock == 1) newblock = block + getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),2,1) + getblock(getblock(src.connected.occupant.dna.struc_enzymes,src.strucblock,3),3,1) diff --git a/code/game/events/Events/VirusEpidemic.dm b/code/game/events/Events/VirusEpidemic.dm index 9825853a149..fa02c073cf8 100644 --- a/code/game/events/Events/VirusEpidemic.dm +++ b/code/game/events/Events/VirusEpidemic.dm @@ -53,7 +53,7 @@ continue if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. - if((!H.dna) || (H.sdisabilities & 1)) //A blindness disease would be the worst. + if((!H.dna) || (H.disabilities & 128)) //A blindness disease would be the worst. continue var/datum/disease/dnaspread/D = new D.strain_data["name"] = H.real_name diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm index 8672b1f3d8f..4500d17f8f5 100644 --- a/code/game/gamemodes/changeling/changeling_powers.dm +++ b/code/game/gamemodes/changeling/changeling_powers.dm @@ -558,9 +558,9 @@ usr << "\blue We stealthily sting [T]." if(!T.changeling) - T.sdisabilities |= 4 + T.disabilities |= 32 spawn(300) - T.sdisabilities &= ~4 + T.disabilities &= ~32 usr.verbs -= /client/proc/changeling_deaf_sting diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index e1813724151..69d76a45ee7 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -5,18 +5,9 @@ if (prob(75)) DIFFMUT = rand(0,20) - var/list/avnums = new/list() + var/list/avnums = list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26) var/tempnum - avnums.Add(2) - avnums.Add(12) - avnums.Add(10) - avnums.Add(8) - avnums.Add(4) - avnums.Add(11) - avnums.Add(13) - avnums.Add(6) - tempnum = pick(avnums) avnums.Remove(tempnum) HULKBLOCK = tempnum @@ -41,6 +32,54 @@ tempnum = pick(avnums) avnums.Remove(tempnum) BLINDBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + HEADACHEBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + COUGHBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + TWITCHBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + NERVOUSBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + NOBREATHBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + REMOTEVIEWBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + REGENERATEBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + INCREASERUNBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + REMOTETALKBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + MORPHBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + BLENDBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + HALLUCINATIONBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + NOPRINTSBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + SHOCKIMMUNITYBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + SMALLSIZEBLOCK = tempnum + tempnum = pick(avnums) + avnums.Remove(tempnum) + GLASSESBLOCK = tempnum // HIDDEN MUTATIONS / SUPERPOWERS INITIALIZTION diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index b165fe74ce5..f6e52efe7fa 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -246,6 +246,12 @@ var/global/datum/controller/occupations/job_master var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H) H.equip_if_possible(BPK, H.slot_back,1) H.equip_if_possible(new /obj/item/weapon/storage/box(H.back), H.slot_in_backpack) + //Give'em glasses if they are nearsighted + if(H.disabilities & 1) + var/eqipped = H.equip_if_possible(new /obj/item/clothing/glasses/regular(H), H.slot_glasses) + if(!eqipped) + var/obj/item/clothing/glasses/G = H.slot_glasses + G.prescription = 1 H.update_clothing() return 1 diff --git a/code/game/magic/cultist/runes.dm b/code/game/magic/cultist/runes.dm index 95511f603d7..43ce87f50c5 100644 --- a/code/game/magic/cultist/runes.dm +++ b/code/game/magic/cultist/runes.dm @@ -831,7 +831,7 @@ var/list/sacrificed = list() if(prob(5)) C.disabilities |= 1 if(prob(10)) - C.sdisabilities |= 1 + C.disabilities |= 128 C.show_message("\red Suddenly you see red flash that blinds you.", 3) affected++ if(affected) diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/devices/flashlight.dm index 922d6dbe129..0ed8fc7172e 100644 --- a/code/game/objects/devices/flashlight.dm +++ b/code/game/objects/devices/flashlight.dm @@ -48,7 +48,7 @@ O.show_message("\blue [(O==user?"You direct":"[user] directs")] [src] to [(M==user? "your":"[M]")] eyes", 1) if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey))//robots and aliens are unaffected - if(M.stat > 1 || M.sdisabilities & 1)//mob is dead or fully blind + if(M.stat > 1 || M.disabilities & 128)//mob is dead or fully blind if(M!=user) user.show_message(text("\red [] pupils does not react to the light!", M),1) else if(M.mutations & XRAY)//mob has X-RAY vision diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index c37a7919ca3..a68dbe441e5 100755 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -473,7 +473,7 @@ mob/proc/flash_weak_pain() if (prob(M.eye_stat - 10 + 1)) if(M.stat != 2) M << "\red You go blind!" - M.sdisabilities |= 1 + M.disabilities |= 128 return diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index 8edac23a62f..11da0553758 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -208,12 +208,12 @@ FLASHBANG M.disabilities |= 1 if (prob(M.eye_stat - 20 + 1)) M << "\red You can't see anything!" - M.sdisabilities |= 1 + M.disabilities |= 128 if (M.ear_damage >= 15) M << "\red Your ears start to ring badly!" if (prob(M.ear_damage - 10 + 5)) M << "\red You can't hear anything!" - M.sdisabilities |= 4 + M.disabilities |= 32 else if (M.ear_damage >= 5) M << "\red Your ears start to ring!" diff --git a/code/game/objects/items/weapons/surgery_tools.dm b/code/game/objects/items/weapons/surgery_tools.dm index a02524ceae0..8f918ca7f70 100644 --- a/code/game/objects/items/weapons/surgery_tools.dm +++ b/code/game/objects/items/weapons/surgery_tools.dm @@ -531,7 +531,7 @@ CIRCULAR SAW M.updatehealth() else M.take_organ_damage(15) - M.sdisabilities &= ~1 + M.disabilities &= ~128 M:eye_op_stage = 0.0 else diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index a6f00c091a0..8bc5ce81fd4 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -248,7 +248,7 @@ WELDINGTOOOL user << "\red Your eyes are really starting to hurt. This can't be good for you!" if (prob(user.eye_stat - 25 + 1)) user << "\red You go blind!" - user.sdisabilities |= 1 + user.disabilities |= 128 else if (prob(user.eye_stat - 15 + 1)) user << "\red You go blind!" user.eye_blind = 5 diff --git a/code/game/objects/tables_racks.dm b/code/game/objects/tables_racks.dm index 68e77257a07..945752a3c5d 100644 --- a/code/game/objects/tables_racks.dm +++ b/code/game/objects/tables_racks.dm @@ -79,7 +79,7 @@ TABLE AND RACK OBJECT INTERATIONS /obj/structure/table/attack_hand(mob/user as mob) - if ((usr.mutations & HULK)) + if (usr.mutations & HULK) usr << text("\blue You destroy the table.") for(var/mob/O in oviewers()) if ((O.client && !( O.blinded ))) @@ -92,6 +92,13 @@ TABLE AND RACK OBJECT INTERATIONS new /obj/item/weapon/table_parts( src.loc ) src.density = 0 del(src) + if (usr.mutations & mSmallsize) + step(user, get_dir(user, src)) + if (user.loc == src.loc) + user.layer = TURF_LAYER + for(var/mob/M in viewers(user, null)) + M.show_message("[user] hides under the table!", 1) + //Foreach goto(69) return diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 9ff8f835b41..df748a5ab2c 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -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) diff --git a/code/modules/clothing/glasses.dm b/code/modules/clothing/glasses.dm index 4c1002a97b8..53f7e1eaf86 100644 --- a/code/modules/clothing/glasses.dm +++ b/code/modules/clothing/glasses.dm @@ -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 diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 539d9b626e6..8186eac57e1 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -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" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index d9d9e130dc3..b43dadeaf9f 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -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) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm index 6444ee1974a..18068790767 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm @@ -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) diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index 2a6bd8680d2..6228ec167a0 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm index 8c2bff36562..ebc027a2411 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm @@ -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) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 0bffacb7108..1f1e446b401 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm index e1a26252e98..55c40cb4ce7 100644 --- a/code/modules/mob/living/carbon/brain/life.dm +++ b/code/modules/mob/living/carbon/brain/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 67b3c3f3028..0dba3b3ea51 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -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("Telepathic message from [src] to [target]: [say]") + +/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 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index e32ed9eab1b..f0be0d73983 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 4c3e6ef9a23..e85dac790ca 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -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)) diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 1f9933e8a47..85f435aa96a 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 268e4b0085c..a1f797f8f6e 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -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) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index cbde6f02a06..87177caa61a 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -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 diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 991df4346b8..861541ac003 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -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 diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index f701ba2a0ab..bc667c7395e 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -53,7 +53,7 @@ return // Mute disability - if (sdisabilities & 2) + if (disabilities & 64) return if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 2af2ec67095..e8221c8c815 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -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) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 83bf307127f..3c59347ea96 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -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) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index d864340eff7..e0b443fdbed 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -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 diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 0af50509919..55ccf171db4 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -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 += "
Eyes
" dat += "Change Color
__
" + dat += "
Disabilities: [disabilities]
" + dat += "
Flavor Text
" dat += "Change
" 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 \ No newline at end of file diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm index 95ba0bdb751..b58b000ce75 100644 --- a/code/modules/mob/new_player/savefile.dm +++ b/code/modules/mob/new_player/savefile.dm @@ -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) diff --git a/code/setup.dm b/code/setup.dm index b062f20ce95..2269e987090 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -159,7 +159,17 @@ var/const HUSK =(1<<6) LASER =(1<<7) HEAL =(1<<8) - + mNobreath =(1<<9) + mRemote =(1<<10) + mRegen =(1<<11) + mRun =(1<<12) + mRemotetalk =(1<<13) + mMorph =(1<<14) + mBlend =(1<<15) + mHallucination =(1<<16) + mFingerprints =(1<<17) + mShock =(1<<18) + mSmallsize =(1<<19) //mob/var/stat things var/const diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 64d4b0adc04..ac6c756c600 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ