Fix painful vehicles for legless riders (janicart and bike) (#31195)

* Change vehicle behavior for legless riders
- Make janicart unbucklable without legs
- Make bike unmovable without legs, but not painful, and pullable by other parties

* Thanks, linters!

* Apply suggestions from review.
This commit is contained in:
Alan
2025-12-09 08:10:24 +00:00
committed by GitHub
parent a4572e0aed
commit 924e512840
3 changed files with 17 additions and 2 deletions
@@ -42,7 +42,7 @@
// Buckled to a bed/chair. Stance damage is forced to 0 since they're sitting on something solid
// Not standing, so no need to care about stance
if(istype(buckled, /obj/structure/chair) || !isturf(loc))
if(istype(buckled, /obj/structure/chair) || istype(buckled, /obj/vehicle/bike) || !isturf(loc))
return
for(var/limb_tag in list("l_leg","r_leg","l_foot","r_foot"))
+7 -1
View File
@@ -10,12 +10,17 @@
bicycle_overlay = mutable_appearance(icon, "bicycle_overlay", ABOVE_MOB_LAYER)
/obj/vehicle/bike/relaymove(mob/user, direction)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/driver = user
var/obj/item/organ/external/l_hand = driver.get_organ("l_hand")
var/obj/item/organ/external/r_hand = driver.get_organ("r_hand")
var/obj/item/organ/external/l_leg = driver.get_organ("l_leg")
var/obj/item/organ/external/r_leg = driver.get_organ("r_leg")
if(!l_hand && !r_hand && !l_leg && !r_leg) // if you don't have limbs then fall off the bike
unbuckle_mob(driver)
driver.emote("collapse")
return
if(!l_hand && !r_hand)
vehicle_move_delay += 0.5 // I can ride my bike with no handlebars... (but it's slower)
for(var/organ_name in list("l_leg", "r_leg", "l_foot", "r_foot"))
@@ -26,6 +31,7 @@
vehicle_move_delay += 0.5
else if(E.status & ORGAN_BROKEN)
vehicle_move_delay += 1.5
return ..()
/obj/vehicle/bike/post_buckle_mob(mob/living/M)
. = ..()
+9
View File
@@ -60,6 +60,15 @@
J.vehicle_move_delay -= J.buffer_delay
to_chat(usr, "<span class='notice'>The floor buffer is now [J.floorbuffer ? "active" : "deactivated"].</span>")
/obj/vehicle/janicart/user_buckle_mob(mob/living/M, mob/user)
var/mob/living/carbon/human/driver = M
var/obj/item/organ/external/l_leg = driver.get_organ("l_leg")
var/obj/item/organ/external/r_leg = driver.get_organ("r_leg")
if(!l_leg && !r_leg)
to_chat(user, "<span class='warning'>[src] requires legs to ride!</span>")
return
return ..()
/obj/vehicle/janicart/post_buckle_mob(mob/living/M)
. = ..()
if(!buffer_installed)