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 76642925abd..67e1d659ef1 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -111,66 +111,3 @@ max_integrity = 1500 resistance_flags = FIRE_PROOF | ACID_PROOF buildstacktype = /obj/item/stack/sheet/mineral/plastitanium - -/obj/structure/chair/wheelchair/bike - name = "bicycle" - desc = "Two wheels of FURY!" - //placeholder until i get a bike sprite - icon = 'icons/vehicles/motorcycle.dmi' - icon_state = "motorcycle_4dir" - -/obj/structure/chair/wheelchair/bike/relaymove(mob/user, direction) - if(propelled) - return 0 - - if(!Process_Spacemove(direction) || !has_gravity(src.loc) || !isturf(loc)) //bikes in space. - return 0 - - if(world.time < move_delay) - return - - var/calculated_move_delay - calculated_move_delay = 0 //bikes are infact sport bikes - - if(has_buckled_mobs()) - var/mob/living/buckled_mob = buckled_mobs[1] - if(buckled_mob.incapacitated()) - unbuckle_mob(buckled_mob) //if the rider is incapacitated, unbuckle them (they can't balance so they fall off) - return 0 - - var/mob/living/thedriver = user - var/mob_delay = thedriver.movement_delay() - if(mob_delay > 0) - calculated_move_delay += mob_delay - - if(ishuman(buckled_mob)) - 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") - if(!l_hand && !r_hand) - calculated_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")) - var/obj/item/organ/external/E = driver.get_organ(organ_name) - if(!E) - return 0 //Bikes need both feet/legs to work. missing even one makes it so you can't ride the bike - else if(E.status & ORGAN_SPLINTED) - calculated_move_delay += 0.5 - else if(E.status & ORGAN_BROKEN) - calculated_move_delay += 1.5 - - move_delay = world.time - move_delay += calculated_move_delay - - if(!buckled_mob.Move(get_step(buckled_mob, direction), direction)) - loc = buckled_mob.loc //we gotta go back - last_move = buckled_mob.last_move - inertia_dir = last_move - buckled_mob.inertia_dir = last_move - . = 0 - - else - . = 1 - -/obj/structure/chair/wheelchair/bike/wrench_act(mob/user, obj/item/I) - return diff --git a/code/modules/arcade/prize_datums.dm b/code/modules/arcade/prize_datums.dm index 65a7002534c..c7d027bf4d0 100644 --- a/code/modules/arcade/prize_datums.dm +++ b/code/modules/arcade/prize_datums.dm @@ -398,5 +398,5 @@ GLOBAL_DATUM_INIT(global_prizes, /datum/prizes, new()) /datum/prize_item/bike name = "Awesome Bike!" desc = "WOAH." - typepath = /obj/structure/chair/wheelchair/bike + typepath = /obj/vehicle/bike cost = 10000 //max stack + 1 tickets. diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index f37366b16a3..03b7d8144ae 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -189,7 +189,7 @@ if(!proximity || !ishuman(user) || user.incapacitated()) return - if(istype(target, /obj/structure/chair/wheelchair) && !istype(target, /obj/structure/chair/wheelchair/bike)) + if(istype(target, /obj/structure/chair/wheelchair)) to_chat(user, "You modify the appearance of [target].") var/obj/structure/chair/wheelchair/chair = target chair.icon = 'icons/obj/custom_items.dmi' diff --git a/code/modules/vehicle/bicycle.dm b/code/modules/vehicle/bicycle.dm new file mode 100644 index 00000000000..5f222e44a9b --- /dev/null +++ b/code/modules/vehicle/bicycle.dm @@ -0,0 +1,59 @@ +/obj/vehicle/bike + name = "bicycle" + desc = "Two wheels of FURY!" + icon = 'icons/obj/vehicles.dmi' + icon_state = "bicycle" + vehicle_move_delay = 1 + var/mutable_appearance/bicycle_overlay + +/obj/vehicle/bike/Initialize(mapload) + . = ..() + 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") + 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")) + var/obj/item/organ/external/E = driver.get_organ(organ_name) + if(!E) + return // Bikes need both feet/legs to work. missing even one makes it so you can't ride the bike + if(E.status & ORGAN_SPLINTED) + vehicle_move_delay += 0.5 + else if(E.status & ORGAN_BROKEN) + vehicle_move_delay += 1.5 + +/obj/vehicle/bike/post_buckle_mob(mob/living/M) + . = ..() + var/datum/action/bicycle_bell/bell_action = new(src) + bell_action.Grant(M) + add_overlay(bicycle_overlay) + +/obj/vehicle/bike/post_unbuckle_mob(mob/living/M) + for(var/datum/action/bicycle_bell/bell_action in M.actions) + bell_action.Remove(M) + cut_overlay(bicycle_overlay) + return ..() + +/obj/vehicle/bike/handle_vehicle_layer() + return + +/datum/action/bicycle_bell + name = "Ring Bell" + desc = "Go on, ring your bicycle bell!" + icon_icon = 'icons/obj/bureaucracy.dmi' + button_icon_state = "desk_bell" + COOLDOWN_DECLARE(ring_cooldown) + +/datum/action/bicycle_bell/Trigger(left_click) + . = ..() + if(!COOLDOWN_FINISHED(src, ring_cooldown)) + return + var/obj/vehicle/bike/B = target + playsound(B, 'sound/machines/bell.ogg', 70, TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + COOLDOWN_START(src, ring_cooldown, 1 SECONDS) diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index d377ff37a3f..8edac76155b 100644 Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ diff --git a/paradise.dme b/paradise.dme index 7b8c2010397..519863b6fcd 100644 --- a/paradise.dme +++ b/paradise.dme @@ -2747,6 +2747,7 @@ #include "code\modules\unit_tests\_unit_tests.dm" #include "code\modules\vehicle\ambulance.dm" #include "code\modules\vehicle\atv.dm" +#include "code\modules\vehicle\bicycle.dm" #include "code\modules\vehicle\janivehicle.dm" #include "code\modules\vehicle\motorcycle.dm" #include "code\modules\vehicle\secway.dm"