diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index ba17a2bb4b9..1dea42fe849 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -389,6 +389,13 @@ var/global/datum/controller/occupations/job_master spawnId(H, rank, alt_title) H.equip_to_slot_or_del(new /obj/item/device/radio/headset(H), slot_ears) + + //Gives glasses to the vision impaired + if(H.disabilities & NEARSIGHTED) + var/equipped = H.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(H), slot_glasses) + if(equipped != 1) + var/obj/item/clothing/glasses/G = H.glasses + G.prescription = 1 // H.update_icons() return 1 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8a21fc6b6ce..6f0e2d07daa 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -252,6 +252,7 @@ datum/preferences dat += "Blood Type: [b_type]
" dat += "Skin Tone: [-s_tone + 35]/220
" //dat += "Skin pattern: Adjust
" + dat += "Needs Glasses: [disabilities == 0 ? "No" : "Yes"]
" dat += "Limbs: Adjust
" //display limbs below @@ -1007,6 +1008,11 @@ datum/preferences gender = FEMALE else gender = MALE + if("disabilities") + if(disabilities == 0) + disabilities = 1 + else + disabilities = 0 if("hear_adminhelps") toggles ^= SOUND_ADMINHELP diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f60a5409da9..4a4d49d25fb 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -237,6 +237,7 @@ S["sec_record"] << sec_record S["player_alt_titles"] << player_alt_titles S["be_special"] << be_special + S["disabilities"] << disabilities S["used_skillpoints"] << used_skillpoints S["skills"] << skills S["skill_specialization"] << skill_specialization diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 751dde212c9..9fb2749241c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -1,6 +1,10 @@ +/obj/item + var/prescription = 0 + /obj/item/clothing name = "clothing" + //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears name = "ears" diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index f5fef1be70e..d109260051c 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -8,7 +8,7 @@ //var/vision_flags = 0 //var/darkness_view = 0//Base human is 2 //var/invisa_view = 0 - var/prescription = 0 + //var/prescription = 0 /obj/item/clothing/glasses/meson name = "Optical Meson Scanner" @@ -61,6 +61,7 @@ desc = "Made by Nerd. Co." icon_state = "glasses" item_state = "glasses" + prescription = 1 /obj/item/clothing/glasses/regular/hipster name = "Prescription Glasses" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ae58b2fbcf4..fe981f489a1 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1223,7 +1223,7 @@ if(blinded) blind.layer = 18 else blind.layer = 0 - if( disabilities & NEARSIGHTED && !istype(glasses, /obj/item/clothing/glasses/regular) ) + if( disabilities & NEARSIGHTED && ((glasses && !glasses.prescription) || !glasses)) client.screen += global_hud.vimpaired if(eye_blurry) client.screen += global_hud.blurry if(druggy) client.screen += global_hud.druggy diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b6758bf0f49..253e4ee43dc 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -170,7 +170,7 @@ //This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to equip people when the rounds tarts and when events happen and such. /mob/proc/equip_to_slot_or_del(obj/item/W as obj, slot) - equip_to_slot_if_possible(W, slot, 1, 1, 0) + return equip_to_slot_if_possible(W, slot, 1, 1, 0) //The list of slots by priority. equip_to_appropriate_slot() uses this list. Doesn't matter if a mob type doesn't have a slot. var/list/slot_equipment_priority = list( \ diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1e8dd386928..97133deb4c4 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -365,6 +365,10 @@ new_character.dna.ready_dna(new_character) new_character.dna.b_type = client.prefs.b_type + if(client.prefs.disabilities) + new_character.dna.struc_enzymes = setblock(new_character.dna.struc_enzymes,GLASSESBLOCK,toggledblock(getblock(new_character.dna.struc_enzymes,GLASSESBLOCK,3)),3) + new_character.disabilities |= NEARSIGHTED + new_character.key = key //Manually transfer the key to log them in return new_character