diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 297040931f..5cb74fe4a3 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -458,13 +458,18 @@ var/global/datum/controller/occupations/job_master if(istype(H)) //give humans wheelchairs, if they need them. var/obj/item/organ/external/l_foot = H.get_organ("l_foot") var/obj/item/organ/external/r_foot = H.get_organ("r_foot") - if(!l_foot || !r_foot) + var/obj/item/weapon/storage/S = locate() in H.contents + var/obj/item/wheelchair/R = locate() in S.contents + if(!l_foot || !r_foot || R) var/obj/structure/bed/chair/wheelchair/W = new /obj/structure/bed/chair/wheelchair(H.loc) H.buckled = W H.update_canmove() W.set_dir(H.dir) W.buckled_mob = H W.add_fingerprint(H) + if(R) + W.color = R.color + qdel(R) H << "You are [job.total_positions == 1 ? "the" : "a"] [alt_title ? alt_title : rank]." diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 08a1282e52..846f62c729 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -430,6 +430,10 @@ else W.forceMove(src.loc) + for(var/obj/structure/B in items) + if(istype(B,/obj/structure/bed)) + qdel(B) + //Update any existing objectives involving this mob. for(var/datum/objective/O in all_objectives) // We don't want revs to get objectives that aren't for heads of staff. Letting @@ -521,6 +525,9 @@ for(var/obj/item/W in items) W.forceMove(get_turf(src)) + for(var/obj/structure/bed/S in src.contents) + S.forceMove(get_turf(src)) + go_out() add_fingerprint(usr) @@ -563,6 +570,8 @@ if(ishuman(usr) && applies_stasis) var/mob/living/carbon/human/H = occupant H.Stasis(1000) + if(usr.buckled && istype(usr.buckled, /obj/structure/bed/chair/wheelchair)) + usr.buckled.loc = usr.loc icon_state = occupied_icon_state @@ -660,6 +669,8 @@ if(ishuman(M) && applies_stasis) var/mob/living/carbon/human/H = M H.Stasis(1000) + if(M.buckled && istype(M.buckled, /obj/structure/bed/chair/wheelchair)) + M.buckled.loc = M.loc // Book keeping! var/turf/location = get_turf(src) @@ -667,4 +678,4 @@ message_admins("[key_name_admin(M)] has entered a stasis pod.") //Despawning occurs when process() is called with an occupant without a client. - add_fingerprint(M) \ No newline at end of file + add_fingerprint(M) diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 9ae19769eb..bdd4b87b0e 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -193,3 +193,31 @@ pulling = null usr.pulledby = null ..() + +/obj/item/wheelchair + name = "wheelchair" + desc = "A folded wheelchair that can be carried around." + icon = 'icons/obj/furniture.dmi' + icon_state = "wheelchair_folded" + item_state = "wheelchair" + w_class = ITEMSIZE_HUGE // Can't be put in backpacks. Oh well. + +/obj/item/wheelchair/attack_self(mob/user) + var/obj/structure/bed/chair/wheelchair/R = new /obj/structure/bed/chair/wheelchair(user.loc) + R.add_fingerprint(user) + R.name = src.name + R.color = src.color + qdel(src) + +/obj/structure/bed/chair/wheelchair/MouseDrop(over_object, src_location, over_location) + ..() + if((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) + if(!ishuman(usr)) return + if(buckled_mob) return 0 + visible_message("[usr] collapses \the [src.name].") + var/obj/item/wheelchair/R = new/obj/item/wheelchair(get_turf(src)) + R.name = src.name + R.color = src.color + spawn(0) + qdel(src) + return diff --git a/code/modules/client/preference_setup/loadout/loadout_utility.dm b/code/modules/client/preference_setup/loadout/loadout_utility.dm index c30291c3a5..5e7fa24d9f 100644 --- a/code/modules/client/preference_setup/loadout/loadout_utility.dm +++ b/code/modules/client/preference_setup/loadout/loadout_utility.dm @@ -90,4 +90,13 @@ /datum/gear/utility/pen display_name = "Fountain Pen" - path = /obj/item/weapon/pen/fountain \ No newline at end of file + path = /obj/item/weapon/pen/fountain + +/datum/gear/utility/wheelchair/color + display_name = "wheelchair" + path = /obj/item/wheelchair + cost = 4 + +/datum/gear/utility/wheelchair/color/New() + ..() + gear_tweaks = list(gear_tweak_free_color_choice) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 98f8f81d9c..7720016611 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -35,7 +35,7 @@ var/obj/item/organ/external/E = get_organ(organ_name) if(!E || E.is_stump()) tally += 4 - if(E.splinted) + else if(E.splinted) tally += 0.5 else if(E.status & ORGAN_BROKEN) tally += 1.5 diff --git a/html/changelogs/PrismaticGynoid-wheelchairs.yml b/html/changelogs/PrismaticGynoid-wheelchairs.yml new file mode 100644 index 0000000000..cebda68e5a --- /dev/null +++ b/html/changelogs/PrismaticGynoid-wheelchairs.yml @@ -0,0 +1,6 @@ +author: PrismaticGynoid +delete-after: True +changes: + - rscadd: "Wheelchairs can now be collapsed like rollerbeds for ease of storage and movement. Too big to put in backpacks though." + - rscadd: "Wheelchairs are now available in a color-customizable form via the loadout, under utility. Now you can ride in style, and keep your feet too." + - bugfix: "Wheelchair users can now enter the gateway and residential elevator without being forced to leave behind their mobility aid." diff --git a/icons/mob/items/lefthand.dmi b/icons/mob/items/lefthand.dmi index 751f70c5cf..b5a6d0dd87 100644 Binary files a/icons/mob/items/lefthand.dmi and b/icons/mob/items/lefthand.dmi differ diff --git a/icons/mob/items/righthand.dmi b/icons/mob/items/righthand.dmi index a24f71fea6..f854d73ea8 100644 Binary files a/icons/mob/items/righthand.dmi and b/icons/mob/items/righthand.dmi differ diff --git a/icons/obj/furniture.dmi b/icons/obj/furniture.dmi index 39dbbdcc67..0e6659ae4f 100644 Binary files a/icons/obj/furniture.dmi and b/icons/obj/furniture.dmi differ