diff --git a/code/datums/vehicles.dm b/code/datums/vehicles.dm index 4c74ece75d..9370909eba 100644 --- a/code/datums/vehicles.dm +++ b/code/datums/vehicles.dm @@ -42,6 +42,10 @@ name = "Tank" interior_id = "tank" +/datum/map_template/interior/aev + name = "AEV" + interior_id = "aev" + /datum/map_template/interior/van name = "Van" interior_id = "van" diff --git a/code/modules/vehicles/tank/aev.dm b/code/modules/vehicles/tank/aev.dm new file mode 100644 index 0000000000..3ce66b94f3 --- /dev/null +++ b/code/modules/vehicles/tank/aev.dm @@ -0,0 +1,80 @@ +/obj/vehicle/multitile/tank/aev + name = "M34E1 Armored Engineering Vehicle" + desc = "A giant piece of armor with a plow, you know what to do. Entrance in the back." + desc_lore = "M34E1 is an extremely rare vehicle in the arsenal of USCMC that was developed after Operation Odolla Onslaught conducted by USS Stalwart forces against massive CLF insurrection. Being pinned down with improvised mortars and surrounded by IEDs, marines of 1/2 \"Iron Heads\" outfitted a Longstreet tank with improvised armor and mine plow, sending it unmanned into a minefield and allowing for a quick assault against enemy positions. MEUCOM took notice of this event, and after record-breaking 3 months of development and 10 million dollars of cost introduced M34E1 in limited numbers." + + icon_state = "aev_base" + + hardpoints_allowed = list( + /obj/item/hardpoint/support/overdrive_enhancer, + /obj/item/hardpoint/armor/ballistic, + /obj/item/hardpoint/armor/caustic, + /obj/item/hardpoint/armor/concussive, + /obj/item/hardpoint/armor/paladin, + /obj/item/hardpoint/armor/snowplow, + /obj/item/hardpoint/locomotion/treads, + /obj/item/hardpoint/locomotion/treads/robust, + ) + + + required_skill = SKILL_VEHICLE_LARGE + interior_map = /datum/map_template/interior/aev + + active_hp = list(VEHICLE_DRIVER = null) + + explosive_resistance = 750 + + passengers_slots = 15 + + wall_ram_damage = 500 + +/obj/vehicle/multitile/tank/aev/initialize_cameras(change_tag = FALSE) + if(!camera) + camera = new /obj/structure/machinery/camera/vehicle(src) + if(change_tag) + camera.c_tag = "#[rand(1,100)] M34E1 \"[nickname]\" AEV" + if(camera_int) + camera_int.c_tag = camera.c_tag + " interior" //this fluff allows it to be at the start of cams list + else + camera.c_tag = "#[rand(1,100)] M34E1 AEV" + if(camera_int) + camera_int.c_tag = camera.c_tag + " interior" //this fluff allows it to be at the start of cams list + +/obj/vehicle/multitile/tank/aev/load_hardpoints() + return + +/obj/effect/vehicle_spawner/aev + name = "AEV Spawner" + icon = 'icons/obj/vehicles/tank.dmi' + icon_state = "aev_base" + pixel_x = -48 + pixel_y = -48 + +/obj/effect/vehicle_spawner/aev/Initialize() + . = ..() + spawn_vehicle() + qdel(src) + +/obj/effect/vehicle_spawner/aev/spawn_vehicle() + var/obj/vehicle/multitile/tank/aev/AEV = new(loc) + + load_misc(AEV) + load_hardpoints(AEV) + handle_direction(AEV) + AEV.update_icon() + + return AEV + +/obj/effect/vehicle_spawner/aev/load_hardpoints(obj/vehicle/multitile/tank/V) + V.add_hardpoint(new /obj/item/hardpoint/locomotion/treads) + V.add_hardpoint(new /obj/item/hardpoint/armor/snowplow) + V.add_hardpoint(new /obj/item/hardpoint/support/overdrive_enhancer) + +/obj/effect/vehicle_spawner/aev/decrepit/spawn_vehicle() + var/obj/vehicle/multitile/tank/aev/AEV = new(loc) + + load_misc(AEV) + handle_direction(AEV) + load_hardpoints(AEV) + load_damage(AEV) + AEV.update_icon() diff --git a/colonialmarines.dme b/colonialmarines.dme index 4e16283d5c..9851acb625 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2458,6 +2458,7 @@ #include "code\modules\vehicles\multitile\multitile_interaction.dm" #include "code\modules\vehicles\multitile\multitile_movement.dm" #include "code\modules\vehicles\multitile\multitile_verbs.dm" +#include "code\modules\vehicles\tank\aev.dm" #include "code\modules\vehicles\tank\interior.dm" #include "code\modules\vehicles\tank\tank.dm" #include "code\modules\vehicles\van\interior.dm" diff --git a/icons/obj/vehicles/interiors/tank.dmi b/icons/obj/vehicles/interiors/tank.dmi index d0153fedae..7377d481a2 100644 Binary files a/icons/obj/vehicles/interiors/tank.dmi and b/icons/obj/vehicles/interiors/tank.dmi differ diff --git a/icons/obj/vehicles/tank.dmi b/icons/obj/vehicles/tank.dmi index ec8135c2dd..a37188b129 100644 Binary files a/icons/obj/vehicles/tank.dmi and b/icons/obj/vehicles/tank.dmi differ diff --git a/maps/interiors/aev.dmm b/maps/interiors/aev.dmm new file mode 100644 index 0000000000..edb12832ce --- /dev/null +++ b/maps/interiors/aev.dmm @@ -0,0 +1,285 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/effect/landmark/interior/spawn/entrance{ + dir = 8; + exit_type = /obj/structure/interior_exit/vehicle/tank; + name = "back entrance marker"; + tag = "back" + }, +/turf/open/shuttle/vehicle, +/area/vehicle/tank) +"c" = ( +/turf/open/shuttle/vehicle, +/area/vehicle/tank) +"e" = ( +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = -8 + }, +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = 8 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_5" + }, +/area/vehicle/tank) +"f" = ( +/obj/structure/interior_wall/tank{ + layer = 2; + icon_state = "wall_1" + }, +/turf/open/void/vehicle, +/area/space) +"g" = ( +/obj/structure/interior_wall/tank{ + alpha = 50; + icon_state = "exterior_1"; + layer = 5.2; + pixel_y = 32 + }, +/turf/open/void/vehicle, +/area/space) +"i" = ( +/turf/open/void/vehicle, +/area/space) +"j" = ( +/obj/structure/interior_wall/tank{ + icon_state = "back_3" + }, +/turf/open/void/vehicle, +/area/space) +"l" = ( +/obj/structure/interior_wall/tank{ + alpha = 50; + icon_state = "exterior_2"; + layer = 5.2; + pixel_y = 32 + }, +/turf/open/void/vehicle, +/area/space) +"n" = ( +/obj/structure/prop/tank{ + icon_state = "prop_aev2"; + layer = 3 + }, +/turf/open/shuttle/vehicle, +/area/vehicle/tank) +"r" = ( +/obj/structure/interior_wall/tank{ + icon_state = "front_1" + }, +/turf/open/void/vehicle, +/area/space) +"u" = ( +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor{ + dir = 4; + pixel_y = 2 + }, +/obj/structure/prop/tank{ + density = 0; + icon_state = "prop6"; + pixel_x = 0; + pixel_y = 32 + }, +/obj/structure/prop/tank{ + density = 0; + icon_state = "prop4"; + layer = 3; + pixel_x = 0 + }, +/obj/structure/phone_base{ + dir = 8; + layer = 3.1; + name = "AEV Telephone"; + phone_category = "Vehicles"; + phone_id = "M34E1 Armored Engineering Vehicle"; + pixel_x = 14; + pixel_y = -21 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_5" + }, +/area/vehicle/tank) +"v" = ( +/obj/structure/interior_wall/tank{ + layer = 2 + }, +/turf/open/void/vehicle, +/area/space) +"y" = ( +/obj/structure/interior_wall/tank{ + icon_state = "back_2" + }, +/turf/open/void/vehicle, +/area/space) +"B" = ( +/obj/structure/prop/tank{ + icon_state = "prop_aev1"; + pixel_x = 0 + }, +/obj/structure/prop/tank{ + icon_state = "prop7"; + pixel_x = 0; + pixel_y = 32 + }, +/turf/open/shuttle/vehicle, +/area/vehicle/tank) +"C" = ( +/obj/structure/prop/tank{ + icon_state = "prop_aev2"; + layer = 3 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_1_1" + }, +/area/vehicle/tank) +"D" = ( +/obj/structure/interior_wall/tank{ + icon_state = "back_1" + }, +/turf/open/void/vehicle, +/area/space) +"G" = ( +/obj/structure/bed/chair/vehicle{ + pixel_x = -8; + pixel_y = 12 + }, +/obj/structure/bed/chair/vehicle{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/effect/landmark/interior/spawn/interior_viewport{ + pixel_y = 24; + layer = 2.9; + pixel_x = -7 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_5" + }, +/area/vehicle/tank) +"H" = ( +/obj/structure/interior_wall/tank{ + icon_state = "exterior_3"; + layer = 5.2; + pixel_y = 32 + }, +/turf/open/void/vehicle, +/area/space) +"J" = ( +/obj/effect/landmark/interior/spawn/interior_camera{ + dir = 10; + layer = 3.2; + pixel_x = 12; + pixel_y = 58 + }, +/obj/structure/vehicle_locker/tank{ + pixel_x = 32; + pixel_y = -2 + }, +/turf/open/shuttle/vehicle, +/area/vehicle/tank) +"N" = ( +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = -8 + }, +/obj/structure/bed/chair/vehicle{ + dir = 1; + pixel_x = 8 + }, +/obj/effect/landmark/interior/spawn/interior_viewport{ + dir = 1; + pixel_y = -10; + pixel_x = -7 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_5" + }, +/area/vehicle/tank) +"T" = ( +/obj/structure/interior_wall/tank{ + icon_state = "front_2" + }, +/turf/open/void/vehicle, +/area/space) +"W" = ( +/obj/structure/interior_wall/tank{ + icon_state = "front_3" + }, +/turf/open/void/vehicle, +/area/space) +"Y" = ( +/obj/structure/interior_wall/tank{ + alpha = 50; + icon_state = "tank_left_2"; + layer = 5.2; + pixel_y = 32 + }, +/turf/open/void/vehicle, +/area/space) +"Z" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med/lifeboat{ + name = "Vehicle NanoMed"; + pixel_x = -5; + pixel_y = 31 + }, +/obj/structure/extinguisher_cabinet/lifeboat{ + pixel_x = 9; + pixel_y = 31 + }, +/obj/structure/bed/chair/vehicle{ + pixel_x = -8; + pixel_y = 12 + }, +/obj/structure/bed/chair/vehicle{ + pixel_x = 8; + pixel_y = 12 + }, +/turf/open/shuttle/vehicle{ + icon_state = "floor_3_5" + }, +/area/vehicle/tank) + +(1,1,1) = {" +j +y +y +D +i +"} +(2,1,1) = {" +v +Z +b +e +g +"} +(3,1,1) = {" +f +G +c +N +l +"} +(4,1,1) = {" +v +u +J +e +Y +"} +(5,1,1) = {" +v +B +n +C +H +"} +(6,1,1) = {" +W +T +T +r +i +"}