diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicle/train/train.dm similarity index 100% rename from code/modules/vehicles/train.dm rename to code/modules/vehicle/train/train.dm diff --git a/code/modules/vehicles/ambulance.dm b/code/modules/vehicle/train/trains/ambulance.dm similarity index 100% rename from code/modules/vehicles/ambulance.dm rename to code/modules/vehicle/train/trains/ambulance.dm diff --git a/code/modules/vehicle/train/trains/cargo/cargo_subtypes/fourwheeler.dm b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/fourwheeler.dm new file mode 100644 index 00000000000..9033a1f5014 --- /dev/null +++ b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/fourwheeler.dm @@ -0,0 +1,32 @@ +/obj/vehicle/train/cargo/engine/fourwheeler //make this hold passengers + name = "fourwheeler" + desc = "A fast and highly maneuverable vehicle." + icon = 'icons/vehicles/4wheeler.dmi' + icon_state = "fourwheel" + emagged = 0 + mob_offset_y = 6 + load_offset_x = 0 + health = 200 + charge_use = 0 + +/obj/vehicle/train/cargo/engine/fourwheeler/proc/update_dir_fourwheel_overlays() + overlays = null + if(src.dir == NORTH||SOUTH) + if(src.dir == NORTH) + var/image/I = new(icon = 'icons/vehicles/4wheeler.dmi', icon_state = "4wheeler_north", layer = src.layer + 0.2) //over mobs + overlays += I + else if(src.dir == SOUTH) + var/image/I = new(icon = 'icons/vehicles/4wheeler.dmi', icon_state = "4wheeler_south", layer = src.layer + 0.2) //over mobs + overlays += I + +/obj/vehicle/train/cargo/engine/fourwheeler/New() + ..() + update_dir_fourwheel_overlays() + +/obj/vehicle/train/cargo/engine/fourwheeler/Move() + ..() + update_dir_fourwheel_overlays() + +/obj/vehicle/train/cargo/engine/fourwheeler/handle_rotation() + update_dir_fourwheel_overlays() + ..() \ No newline at end of file diff --git a/code/modules/vehicle/train/trains/cargo/cargo_subtypes/motorcycle.dm b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/motorcycle.dm new file mode 100644 index 00000000000..1986b195a17 --- /dev/null +++ b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/motorcycle.dm @@ -0,0 +1,35 @@ +/obj/vehicle/train/cargo/engine/motorcycle + name = "motorcycle" + desc = "A fast and highly maneuverable vehicle." + icon = 'icons/vehicles/motorcycle.dmi' + icon_state = "motorcycle_4dir" + emagged = 0 + mob_offset_y = 6 + load_offset_x = 0 + health = 100 + charge_use = 0 + +/obj/vehicle/train/cargo/engine/motorcycle/proc/update_dir_motorcycle_overlays() + overlays = null + if(src.dir == NORTH||SOUTH) + if(src.dir == NORTH) + var/image/I = new(icon = 'icons/vehicles/motorcycle.dmi', icon_state = "motorcycle_overlay_n", layer = src.layer + 0.2) //over mobs + overlays += I + else if(src.dir == SOUTH) + var/image/I = new(icon = 'icons/vehicles/motorcycle.dmi', icon_state = "motorcycle_overlay_s", layer = src.layer + 0.2) //over mobs + overlays += I + else + var/image/I = new(icon = 'icons/vehicles/motorcycle.dmi', icon_state = "motorcycle_overlay_side", layer = src.layer + 0.2) //over mobs + overlays += I + +/obj/vehicle/train/cargo/engine/motorcycle/New() + ..() + update_dir_motorcycle_overlays() + +/obj/vehicle/train/cargo/engine/motorcycle/Move() + ..() + update_dir_motorcycle_overlays() + +/obj/vehicle/train/cargo/engine/motorcycle/handle_rotation() + update_dir_motorcycle_overlays() //this goes first, because vehicle/handle_rotation() just returns + ..() diff --git a/code/modules/vehicle/train/trains/cargo/cargo_subtypes/sportscar.dm b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/sportscar.dm new file mode 100644 index 00000000000..52505312945 --- /dev/null +++ b/code/modules/vehicle/train/trains/cargo/cargo_subtypes/sportscar.dm @@ -0,0 +1,52 @@ +//rename to sportscar if you need +//mostly, my changes just update the C.pixel_ y and x on every iteration of the overlay update proc, since default vehicle code //only does that upon entering. Watch the weird formatting pastebin introduces. + +/obj/vehicle/train/cargo/engine/sportscar + name = "sports car" + desc = "A very luxurious vehicle." + icon = 'icons/vehicles/sportscar.dmi' + icon_state = "sportscar" + emagged = 0 + health = 100 + charge_use = 0 + bound_width = 64 + bound_height = 64 + movable = 0 + + +/obj/vehicle/train/cargo/engine/sportscar/proc/update_dir_sportscar_overlays() + var/atom/movable/C = src.load + src.overlays = null + if(src.dir == NORTH||SOUTH||WEST) + if(src.dir == NORTH) + var/image/I = new(icon = 'icons/vehicles/sportscar.dmi', icon_state = "sportscar_north", layer = src.layer + 0.2) //over mobs + src.overlays += I + src.mob_offset_x = 2 + src.mob_offset_y = 20 + else if(src.dir == SOUTH) + var/image/I = new(icon = 'icons/vehicles/sportscar.dmi', icon_state = "sportscar_south", layer = src.layer + 0.2) //over mobs + overlays += I + src.mob_offset_x = 20 + src.mob_offset_y = 27 + else if(src.dir == WEST) + src.mob_offset_x = 34 + src.mob_offset_y = 10 + var/image/I = new(icon = 'icons/vehicles/sportscar.dmi', icon_state = "sportscar_west", layer = src.layer + 0.2) //over mobs + src.overlays += I + else if(src.dir == EAST) + var/image/I = new(icon = 'icons/vehicles/sportscar.dmi', icon_state = "sportscar_east", layer = src.layer + 0.2) //over mobs + src.mob_offset_x = 20 + src.mob_offset_y = 23 + src.overlays += I + if(ismob(C)) + C.pixel_y = src.mob_offset_y + C.pixel_x = src.mob_offset_x + + +/obj/vehicle/train/cargo/engine/sportscar/New() + ..() + update_dir_sportscar_overlays() + +/obj/vehicle/train/cargo/engine/sportscar/Move() + ..() + update_dir_sportscar_overlays() \ No newline at end of file diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicle/train/trains/cargo/cargo_train.dm similarity index 100% rename from code/modules/vehicles/cargo_train.dm rename to code/modules/vehicle/train/trains/cargo/cargo_train.dm diff --git a/code/modules/vehicles/janicart.dm b/code/modules/vehicle/train/trains/janicart.dm similarity index 100% rename from code/modules/vehicles/janicart.dm rename to code/modules/vehicle/train/trains/janicart.dm diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicle/vehicle.dm similarity index 97% rename from code/modules/vehicles/vehicle.dm rename to code/modules/vehicle/vehicle.dm index ae8db010b44..d345c31ea21 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -28,8 +28,10 @@ var/load_item_visible = 1 //set if the loaded item should be overlayed on the vehicle sprite var/load_offset_x = 0 //pixel_x offset for item overlay var/load_offset_y = 0 //pixel_y offset for item overlay + var/mob_offset_x = 0 //pixel_x offset for mob overlay var/mob_offset_y = 0 //pixel_y offset for mob overlay + //------------------------------------------- // Standard procs //------------------------------------------- @@ -290,10 +292,11 @@ load = C if(load_item_visible) - C.pixel_x += load_offset_x - if(ismob(C)) + if(ismob(C) && mob_offset_x != 0 && mob_offset_y != 0) //if the offset is not set, use load offset + C.pixel_x += mob_offset_x C.pixel_y += mob_offset_y else + C.pixel_x += load_offset_x C.pixel_y += load_offset_y C.layer = layer + 0.1 //so it sits above the vehicle diff --git a/icons/vehicles/4wheeler.dmi b/icons/vehicles/4wheeler.dmi new file mode 100644 index 00000000000..db819e44f9d Binary files /dev/null and b/icons/vehicles/4wheeler.dmi differ diff --git a/icons/vehicles/motorcycle.dmi b/icons/vehicles/motorcycle.dmi new file mode 100644 index 00000000000..6d833a86a44 Binary files /dev/null and b/icons/vehicles/motorcycle.dmi differ diff --git a/icons/vehicles/sportscar.dmi b/icons/vehicles/sportscar.dmi new file mode 100644 index 00000000000..e6e73261950 Binary files /dev/null and b/icons/vehicles/sportscar.dmi differ diff --git a/paradise.dme b/paradise.dme index 8460f9bd996..d48809714fd 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1667,11 +1667,14 @@ #include "code\modules\telesci\gps.dm" #include "code\modules\telesci\telepad.dm" #include "code\modules\telesci\telesci_computer.dm" -#include "code\modules\vehicles\ambulance.dm" -#include "code\modules\vehicles\cargo_train.dm" -#include "code\modules\vehicles\janicart.dm" -#include "code\modules\vehicles\train.dm" -#include "code\modules\vehicles\vehicle.dm" +#include "code\modules\vehicle\vehicle.dm" +#include "code\modules\vehicle\train\train.dm" +#include "code\modules\vehicle\train\trains\ambulance.dm" +#include "code\modules\vehicle\train\trains\janicart.dm" +#include "code\modules\vehicle\train\trains\cargo\cargo_train.dm" +#include "code\modules\vehicle\train\trains\cargo\cargo_subtypes\fourwheeler.dm" +#include "code\modules\vehicle\train\trains\cargo\cargo_subtypes\motorcycle.dm" +#include "code\modules\vehicle\train\trains\cargo\cargo_subtypes\sportscar.dm" #include "code\modules\virus2\analyser.dm" #include "code\modules\virus2\antibodies.dm" #include "code\modules\virus2\centrifuge.dm"