diff --git a/code/datums/vehicles.dm b/code/datums/vehicles.dm index 2611e7f5b5..00bdfa1aed 100644 --- a/code/datums/vehicles.dm +++ b/code/datums/vehicles.dm @@ -113,3 +113,15 @@ /datum/map_template/interior/uppapc name = "ZSL-68" interior_id = "uppapc" + +/datum/map_template/interior/humvee + name = "Humvee" + interior_id = "humvee" + +/datum/map_template/interior/humvee/transport + name = "Transport Humvee" + interior_id = "humvee_transport" + +/datum/map_template/interior/humvee/medical + name = "Medical Humvee" + interior_id = "humvee_medical" diff --git a/code/modules/vehicles/hardpoints/holder/humvee_turret.dm b/code/modules/vehicles/hardpoints/holder/humvee_turret.dm new file mode 100644 index 0000000000..e5ca98d61f --- /dev/null +++ b/code/modules/vehicles/hardpoints/holder/humvee_turret.dm @@ -0,0 +1,229 @@ +/obj/item/hardpoint/holder/tank_turret/humvee + name = "\improper M34A2-A Multipurpose Turret" + desc = "The centerpiece of the tank. Designed to support quick installation and deinstallation of various tank weapon modules. Has inbuilt flare deployment system." + + icon = 'icons/obj/vehicles/hardpoints/humvee.dmi' + icon_state = "humveeturret" + disp_icon = "humvee" + disp_icon_state = "humveeturret" + pixel_x = -65 + pixel_y = -65 + + max_clips = 2 + rotation_windup = 3 + + activatable = FALSE + + // big beefy chonk of metal + health = 1500 + damage_multiplier = 0.05 + + accepted_hardpoints = list( + /obj/item/hardpoint/primary/autocannon/humvee, + /obj/item/hardpoint/secondary/grenade_launcher/humvee, + ) + + hdpt_layer = HDPT_LAYER_TURRET + px_offsets = list( + "1" = list(0, 4), + "2" = list(0, 15), + "4" = list(-6, 16), + "8" = list(6, 16) + ) + +/obj/item/hardpoint/holder/tank_turret/humvee/update_icon() + icon_state = "humveeturret_[(health <= 0)]" + overlays.Cut() + for(var/obj/item/hardpoint/hardpoint in hardpoints) + var/image/image = hardpoint.get_hardpoint_image() + overlays += image + +/obj/item/hardpoint/holder/tank_turret/humvee/get_tgui_info() + var/list/data = list() + + data += list(list( // turret smokescreen data + "name" = "M34A2-A Turret Flare Mortar", + "health" = health <= 0 ? null : floor(get_integrity_percent()), + "uses_ammo" = TRUE, + "current_rounds" = ammo.current_rounds / 2, + "max_rounds"= ammo.max_rounds / 2, + "mags" = LAZYLEN(backup_clips), + "max_mags" = max_clips, + )) + + for(var/obj/item/hardpoint/H in hardpoints) + data += list(H.get_tgui_info()) + + return data + +/obj/item/hardpoint/primary/autocannon/humvee + name = "\improper AC3-E Autocannon" + desc = "A primary autocannon for tanks that shoots explosive flak rounds." + icon = 'icons/obj/vehicles/hardpoints/humvee.dmi' + icon_state = "humveecannon" + disp_icon = "humvee" + disp_icon_state = "humveecannon" + activation_sounds = list('sound/weapons/vehicles/autocannon_fire.ogg') + + health = 2000 + firing_arc = 75 + + ammo = new /obj/item/ammo_magazine/hardpoint/humvee_autocannon + max_clips = 3 + + angle_muzzleflash = FALSE + use_muzzle_flash = TRUE + muzzleflash_icon_state = "muzzle_flash" + + muzzle_flash_pos = list( + "1" = list(-16, 0), + "2" = list(-17, -64), + "4" = list(18, -33), + "8" = list(-50, -32) + ) + + px_offsets = list( + "1" = list(0, 0), + "2" = list(0, 0), + "4" = list(0, 0), + "8" = list(0, 0) + ) + + var/list/bullet_px_offsets = list( + "1" = list(-16, 0), + "2" = list(16, 0), + "4" = list(0, 32), + "8" = list(0, 0) + ) + + scatter = 1 + gun_firemode = GUN_FIREMODE_AUTOMATIC + gun_firemode_list = list(GUN_FIREMODE_AUTOMATIC) + fire_delay = 4 + +/obj/item/hardpoint/primary/autocannon/humvee/generate_bullet(mob/user, turf/origin_turf) + var/obj/projectile/bullet = new projectile_type(origin_turf, create_cause_data(initial(name), user)) + + var/obj/item/hardpoint/holder/holder = loc + bullet.process_start_pixel_x = bullet_px_offsets["[holder.dir]"][1] + bullet.process_start_pixel_y = bullet_px_offsets["[holder.dir]"][2] + bullet.generate_bullet(new ammo.default_ammo) + + + // Apply bullet traits from gun + for(var/entry in traits_to_give) + var/list/traits_list + // Check if this is an ID'd bullet trait + if(istext(entry)) + traits_list = traits_to_give[entry].Copy() + else + // Prepend the bullet trait to the list + traits_list = list(entry) + traits_to_give[entry] + bullet.apply_bullet_trait(traits_list) + + return bullet + +/obj/item/ammo_magazine/hardpoint/humvee_autocannon + name = "AC3-E Autocannon Magazine" + desc = "A 100 round magazine holding 40mm telescoped shells for the AC3-E autocannon." + caliber = "40mm" + icon_state = "ace_autocannon" + w_class = SIZE_LARGE + default_ammo = /datum/ammo/bullet/tank/flak/humvee + max_rounds = 100 + gun_type = /obj/item/hardpoint/primary/autocannon/humvee + +/datum/ammo/bullet/tank/flak/humvee + name = "flak autocannon bullet" + icon_state = "autocannon" + sound_hit = null + sound_armor = null + sound_bounce = null + damage_falloff = 0 + flags_ammo_behavior = AMMO_BALLISTIC + accurate_range_min = 4 + ammo_glowing = TRUE + bullet_light_color = LIGHT_COLOR_FIRE + + accuracy = HIT_ACCURACY_TIER_8 + scatter = 0 + damage = 150 + damage_var_high = PROJECTILE_VARIANCE_TIER_8 + penetration = ARMOR_PENETRATION_TIER_7 + accurate_range = 32 + max_range = 32 + shell_speed = AMMO_SPEED_TIER_8 + +/datum/ammo/bullet/tank/flak/humvee/on_hit_mob(mob/target, obj/projectile/projectile) + knockback(target, projectile, 10) + playsound(target, "ballistic_hit", 30) + +/datum/ammo/bullet/tank/flak/humvee/on_hit_obj(obj/O,obj/projectile/P) + return + +/datum/ammo/bullet/tank/flak/humvee/on_hit_turf(turf/T,obj/projectile/P) + playsound(T, pick(60;"ballistic_miss", 40;"ballistic_bounce"), 65) + return + +/obj/item/hardpoint/secondary/grenade_launcher/humvee + name = "\improper M92T Grenade Launcher" + desc = "A magazine fed secondary grenade launcher for tanks that shoots M40 grenades." + + icon = 'icons/obj/vehicles/hardpoints/humvee.dmi' + icon_state = "humveelauncher_installed" + disp_icon = "humvee" + disp_icon_state = "humveelauncher" + activation_sounds = list('sound/weapons/handling/m79_shoot.ogg') + + health = 2000 + firing_arc = 120 + + ammo = new /obj/item/ammo_magazine/hardpoint/tank_glauncher + max_clips = 4 + + angle_muzzleflash = FALSE + muzzleflash_icon_state = "muzzle_laser" + use_muzzle_flash = TRUE + + px_offsets = list( + "1" = list(0, 0), + "2" = list(0, 0), + "4" = list(0, 0), + "8" = list(0, 0) + ) + + muzzle_flash_pos = list( + "1" = list(-27, -28), + "2" = list(-5, -37), + "4" = list(-12, -19), + "8" = list(-21, -42) + ) + + scatter = 3 + gun_firemode = GUN_FIREMODE_SEMIAUTO + gun_firemode_list = list( + GUN_FIREMODE_SEMIAUTO, + ) + fire_delay = 10 + +/obj/item/hardpoint/secondary/grenade_launcher/humvee/update_icon() + if(!ammo || ammo?.current_rounds <= 0) + icon_state = "humveelauncher_2" + else if(health <= 0) + icon_state = "humveelauncher_1" + else + icon_state = "humveelauncher_0" + +/obj/item/ammo_magazine/hardpoint/humvee_glauncher + name = "M92T Grenade Launcher Magazine" + desc = "A magazine loaded with frag grenades. Used to reload the magazine fed M92T Grenade launcher." + caliber = "grenade" + icon_state = "glauncher_2" + w_class = SIZE_LARGE + default_ammo = /datum/ammo/grenade_container/humvee_glauncher + max_rounds = 20 + gun_type = /obj/item/hardpoint/secondary/grenade_launcher/humvee + +/datum/ammo/grenade_container/humvee_glauncher + nade_type = /obj/item/explosive/grenade/high_explosive/impact/frag + diff --git a/code/modules/vehicles/hardpoints/support/humvee_lights.dm b/code/modules/vehicles/hardpoints/support/humvee_lights.dm new file mode 100644 index 0000000000..a47447d16c --- /dev/null +++ b/code/modules/vehicles/hardpoints/support/humvee_lights.dm @@ -0,0 +1,40 @@ +/obj/item/hardpoint/support/humvee_overhead_lights + name = "\improper JTMV Overhead Lights" + desc = "Overhead lights for the JTMV. For when you really need to brighten your day." + icon = 'icons/obj/vehicles/hardpoints/humvee.dmi' + + icon_state = "overlight" + disp_icon = "humvee" + disp_icon_state = "overlight" + + slot = HDPT_SUPPORT + hdpt_layer = HDPT_LAYER_SUPPORT + + health = 150 + + var/light_range_upgrade = 10 + var/light_power_upgrade = 8 + +/obj/item/hardpoint/support/humvee_overhead_lights/proc/turn_off_lights() + var/obj/vehicle/multitile/humvee_owner = owner + if(!istype(humvee_owner)) + return + + humvee_owner.light_holder.set_light_range(humvee_owner.vehicle_light_range) + humvee_owner.light_holder.set_light_power(humvee_owner.vehicle_light_power) + +/obj/item/hardpoint/support/humvee_overhead_lights/on_install(obj/vehicle/multitile/vehicle) + . = ..() + vehicle.light_holder.set_light_range(light_range_upgrade) + vehicle.light_holder.set_light_power(light_power_upgrade) + +/obj/item/hardpoint/support/humvee_overhead_lights/on_uninstall(obj/vehicle/multitile/vehicle) + . = ..() + turn_off_lights() + +/obj/item/hardpoint/support/humvee_overhead_lights/on_destroy() + . = ..() + var/obj/vehicle/multitile/humvee_owner = owner + if(!istype(humvee_owner)) + return + turn_off_lights() diff --git a/code/modules/vehicles/hardpoints/wheels/van_wheels.dm b/code/modules/vehicles/hardpoints/wheels/van_wheels.dm index d693482406..094138a55e 100644 --- a/code/modules/vehicles/hardpoints/wheels/van_wheels.dm +++ b/code/modules/vehicles/hardpoints/wheels/van_wheels.dm @@ -27,3 +27,12 @@ health = 1200 move_delay = VEHICLE_SPEED_VERYFAST + +/obj/item/hardpoint/locomotion/van_wheels/humvee + name = "Humvee tires" + icon = 'icons/obj/vehicles/hardpoints/humvee.dmi' + + disp_icon = "humvee" + disp_icon_state = "humvee_wheels" + + health = 1200 diff --git a/code/modules/vehicles/humvee/humvee.dm b/code/modules/vehicles/humvee/humvee.dm new file mode 100644 index 0000000000..e9369c5d1c --- /dev/null +++ b/code/modules/vehicles/humvee/humvee.dm @@ -0,0 +1,384 @@ + +//Trucks +//Read the documentation in multitile.dm before trying to decipher this stuff + +/obj/vehicle/multitile/humvee + name = "M26-JLTV" + layer = ABOVE_XENO_LAYER + + icon = 'icons/obj/vehicles/humvee.dmi' + icon_state = "humvee_base" + pixel_x = -16 + pixel_y = -16 + + bound_width = 64 + bound_height = 64 + + bound_x = 0 + bound_y = 0 + + health = 800 + + interior_map = /datum/map_template/interior/humvee + + entrances = list( + "left" = list(2, 0), + "right" = list(-1, 0), + "back_left" = list(1, 2), + "back_right" = list(0, 2) + ) + + vehicle_flags = VEHICLE_CLASS_WEAK + + passengers_slots = 14 + xenos_slots = 2 + + misc_multipliers = list( + "move" = 0.5, // fucking annoying how this is the only way to modify speed + "accuracy" = 1, + "cooldown" = 1 + ) + + movement_sound = 'sound/vehicles/tank_driving.ogg' + honk_sound = 'sound/vehicles/honk_2_truck.ogg' + + light_range = 3 + vehicle_light_range = 6 + + dmg_multipliers = list( + "all" = 1, + "acid" = 1.8, + "slash" = 1.1, + "bullet" = 0.6, + "explosive" = 0.8, + "blunt" = 0.8, + "abstract" = 1, + ) + + move_max_momentum = 2.2 + move_momentum_build_factor = 1.5 + move_turn_momentum_loss_factor = 0.8 + + vehicle_ram_multiplier = VEHICLE_TRAMPLE_DAMAGE_APC_REDUCTION + + + hardpoints_allowed = list( + /obj/item/hardpoint/locomotion/van_wheels/humvee, + /obj/item/hardpoint/holder/tank_turret/humvee, + ) + + req_access = list() + req_one_access = list() + + door_locked = FALSE + + var/overdrive_next = 0 + var/overdrive_cooldown = 15 SECONDS + var/overdrive_duration = 3 SECONDS + var/overdrive_speed_mult = 0.3 // Additive (30% more speed, adds to 80% more speed) + + var/momentum_loss_on_weeds_factor = 0.2 + + move_on_turn = TRUE + + var/list/mobs_under = list() + var/image/under_image + var/image/normal_image + + var/next_push = 0 + var/push_delay = 0.5 SECONDS + +/obj/vehicle/multitile/humveetank/load_role_reserved_slots() + var/datum/role_reserved_slots/RRS = new + RRS.category_name = "Crewmen" + RRS.roles = list(JOB_TANK_CREW, JOB_WO_CREWMAN, JOB_UPP_CREWMAN, JOB_PMC_CREWMAN) + RRS.total = 2 + role_reserved_slots += RRS + +/obj/vehicle/multitile/humvee/add_seated_verbs(mob/living/M, seat) + if(!M.client) + return + add_verb(M.client, list( + /obj/vehicle/multitile/proc/switch_hardpoint, + /obj/vehicle/multitile/proc/get_status_info, + /obj/vehicle/multitile/proc/open_controls_guide, + /obj/vehicle/multitile/proc/name_vehicle, + )) + if(seat == VEHICLE_DRIVER) + add_verb(M.client, list( + /obj/vehicle/multitile/proc/toggle_door_lock, + /obj/vehicle/multitile/proc/activate_horn, + )) + else if(seat == VEHICLE_GUNNER) + add_verb(M.client, list( + /obj/vehicle/multitile/proc/cycle_hardpoint, + /obj/vehicle/multitile/proc/toggle_gyrostabilizer, + )) + + +/obj/vehicle/multitile/humvee/remove_seated_verbs(mob/living/M, seat) + if(!M.client) + return + remove_verb(M.client, list( + /obj/vehicle/multitile/proc/get_status_info, + /obj/vehicle/multitile/proc/open_controls_guide, + /obj/vehicle/multitile/proc/name_vehicle, + /obj/vehicle/multitile/proc/switch_hardpoint, + )) + SStgui.close_user_uis(M, src) + if(seat == VEHICLE_DRIVER) + remove_verb(M.client, list( + /obj/vehicle/multitile/proc/toggle_door_lock, + /obj/vehicle/multitile/proc/activate_horn, + )) + else if(seat == VEHICLE_GUNNER) + remove_verb(M.client, list( + /obj/vehicle/multitile/proc/cycle_hardpoint, + /obj/vehicle/multitile/proc/toggle_gyrostabilizer, + )) + +/obj/vehicle/multitile/humvee/Initialize() + . = ..() + under_image = image(icon, src, icon_state, layer = BELOW_MOB_LAYER) + under_image.alpha = 127 + + normal_image = image(icon, src, icon_state, layer = layer) + + icon_state = null + + RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGGED_IN, PROC_REF(add_default_image)) + + for(var/I in GLOB.player_list) + add_default_image(SSdcs, I) + +/obj/vehicle/multitile/humvee/relaymove(mob/user, direction) + if(user == seats[VEHICLE_DRIVER]) + return ..() + + if(user != seats[VEHICLE_GUNNER]) + return FALSE + + var/obj/item/hardpoint/holder/tank_turret/humvee/turret = null + for(var/obj/item/hardpoint/holder/tank_turret/humvee/tonkturret in hardpoints) + turret = tonkturret + break + if(!turret) + return FALSE + + if(direction == GLOB.reverse_dir[turret.dir] || direction == turret.dir) + return FALSE + + turret.user_rotation(user, turning_angle(turret.dir, direction)) + update_icon() + + return TRUE + +/obj/vehicle/multitile/humvee/BlockedPassDirs(atom/movable/mover, target_dir) + if(mover in mobs_under) //can't collide with the thing you're buckled to + return NO_BLOCKED_MOVEMENT + + if(isliving(mover)) + var/mob/living/M = mover + if(M.mob_flags & SQUEEZE_UNDER_VEHICLES) + add_under_van(M) + return NO_BLOCKED_MOVEMENT + + if(M.body_position == LYING_DOWN) + return NO_BLOCKED_MOVEMENT + + if(M.mob_size >= MOB_SIZE_IMMOBILE && next_push < world.time) + if(try_move(target_dir, force=TRUE)) + next_push = world.time + push_delay + return NO_BLOCKED_MOVEMENT + + return ..() + +/obj/vehicle/multitile/humvee/pre_movement() + if(locate(/obj/effect/alien/weeds) in loc) + move_momentum *= momentum_loss_on_weeds_factor + + . = ..() + + for(var/I in mobs_under) + var/mob/M = I + if(!(M.loc in locs)) + remove_under_van(M) + +/obj/vehicle/multitile/humvee/proc/add_under_van(mob/living/L) + if(L in mobs_under) + return + + mobs_under += L + RegisterSignal(L, COMSIG_PARENT_QDELETING, PROC_REF(remove_under_van)) + RegisterSignal(L, COMSIG_MOB_LOGGED_IN, PROC_REF(add_client)) + RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(check_under_van)) + + if(L.client) + add_client(L) + +/obj/vehicle/multitile/humvee/proc/remove_under_van(mob/living/L) + SIGNAL_HANDLER + mobs_under -= L + + if(L.client) + L.client.images -= under_image + add_default_image(SSdcs, L) + + UnregisterSignal(L, list( + COMSIG_PARENT_QDELETING, + COMSIG_MOB_LOGGED_IN, + COMSIG_MOVABLE_MOVED, + )) + +/obj/vehicle/multitile/humvee/proc/check_under_van(mob/M, turf/oldloc, direction) + SIGNAL_HANDLER + if(!(M.loc in locs)) + remove_under_van(M) + +/obj/vehicle/multitile/humvee/proc/add_client(mob/living/L) + SIGNAL_HANDLER + L.client.images += under_image + L.client.images -= normal_image + +/obj/vehicle/multitile/humvee/proc/add_default_image(subsystem, mob/M) + SIGNAL_HANDLER + M.client.images += normal_image + +/obj/vehicle/multitile/humvee/Destroy() + for(var/I in mobs_under) + remove_under_van(I) + + for(var/I in GLOB.player_list) + var/mob/M = I + M.client.images -= normal_image + + QDEL_NULL(light_holder) + + return ..() + +/obj/vehicle/multitile/humvee/attackby(obj/item/O, mob/user) + if(user.z != z) + return ..() + + if(iswelder(O) && health >= initial(health)) + if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH)) + to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) + return + var/obj/item/hardpoint/H + for(var/obj/item/hardpoint/potential_hardpoint in hardpoints) + if(potential_hardpoint.health < initial(potential_hardpoint.health)) + H = potential_hardpoint + break + + if(H) + H.handle_repair(O, user) + update_icon() + return + + . = ..() + + +/obj/vehicle/multitile/humvee/handle_click(mob/living/user, atom/A, list/mods) + if(mods["shift"] && !mods["alt"]) + if(overdrive_next > world.time) + to_chat(user, SPAN_WARNING("You can't activate overdrive yet! Wait [round((overdrive_next - world.time) / 10, 0.1)] seconds.")) + return + + misc_multipliers["move"] -= overdrive_speed_mult + addtimer(CALLBACK(src, PROC_REF(reset_overdrive)), overdrive_duration) + + overdrive_next = world.time + overdrive_cooldown + to_chat(user, SPAN_NOTICE("You activate overdrive.")) + playsound(src, 'sound/vehicles/overdrive_activate.ogg', 75, FALSE) + return + + return ..() + +/obj/vehicle/multitile/humvee/proc/reset_overdrive() + misc_multipliers["move"] += overdrive_speed_mult + +/obj/vehicle/multitile/humvee/get_projectile_hit_boolean(obj/projectile/P) + if(src == P.original) //clicking on the van itself will hit it. + var/hitchance = P.get_effective_accuracy() + if(prob(hitchance)) + return TRUE + return FALSE + +/* +** PRESETS +*/ + +/obj/vehicle/multitile/humvee/transport + icon = 'icons/obj/vehicles/humvee_transport.dmi' + + interior_map = /datum/map_template/interior/humvee/transport + + hardpoints_allowed = list(/obj/item/hardpoint/locomotion/van_wheels/humvee) + +/obj/vehicle/multitile/humvee/medical + icon = 'icons/obj/vehicles/humvee_medical.dmi' + + interior_map = /datum/map_template/interior/humvee/medical + + hardpoints_allowed = list(/obj/item/hardpoint/locomotion/van_wheels/humvee) + +/* +** PRESETS SPAWNERS +*/ + +/obj/effect/vehicle_spawner/humvee + name = "Van Spawner" + icon = 'icons/obj/vehicles/humvee.dmi' + icon_state = "humvee_base" + pixel_x = -16 + pixel_y = -16 + +/obj/effect/vehicle_spawner/humvee/Initialize() + . = ..() + spawn_vehicle() + qdel(src) + +//PRESET: no hardpoints +/obj/effect/vehicle_spawner/humvee/spawn_vehicle() + var/obj/vehicle/multitile/humvee/VAN = new (loc) + + load_misc(VAN) + handle_direction(VAN) + VAN.update_icon() + +//PRESET: wheels installed +/obj/effect/vehicle_spawner/humvee/assault/spawn_vehicle() + var/obj/vehicle/multitile/humvee/VAN = new (loc) + + load_misc(VAN) + load_hardpoints(VAN) + handle_direction(VAN) + VAN.update_icon() + +/obj/effect/vehicle_spawner/humvee/assault/load_hardpoints(obj/vehicle/multitile/humvee/V) + V.add_hardpoint(new /obj/item/hardpoint/locomotion/van_wheels/humvee) + V.add_hardpoint(new /obj/item/hardpoint/holder/tank_turret/humvee) + for(var/obj/item/hardpoint/holder/tank_turret/humvee/turret in V.hardpoints) + turret.add_hardpoint(new /obj/item/hardpoint/primary/autocannon/humvee) + +/obj/effect/vehicle_spawner/humvee/transport/spawn_vehicle() + var/obj/vehicle/multitile/humvee/VAN = new (loc) + + load_misc(VAN) + load_hardpoints(VAN) + handle_direction(VAN) + VAN.update_icon() + +/obj/effect/vehicle_spawner/humvee/transport/load_hardpoints(obj/vehicle/multitile/humvee/V) + V.add_hardpoint(new /obj/item/hardpoint/locomotion/van_wheels/humvee) + +/obj/effect/vehicle_spawner/humvee/medical/spawn_vehicle() + var/obj/vehicle/multitile/humvee/VAN = new (loc) + + load_misc(VAN) + load_hardpoints(VAN) + handle_direction(VAN) + VAN.update_icon() + +/obj/effect/vehicle_spawner/humvee/medical/load_hardpoints(obj/vehicle/multitile/humvee/V) + V.add_hardpoint(new /obj/item/hardpoint/locomotion/van_wheels/humvee) diff --git a/code/modules/vehicles/humvee/interior.dm b/code/modules/vehicles/humvee/interior.dm new file mode 100644 index 0000000000..c780db9f60 --- /dev/null +++ b/code/modules/vehicles/humvee/interior.dm @@ -0,0 +1,71 @@ +/obj/structure/interior_exit/vehicle/humvee + name = "Humvee side door" + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "exit_door" + density = FALSE + +/obj/structure/interior_exit/vehicle/humvee/left + entrance_id = "left" + icon_state = "exit_door1" + layer = DOOR_OPEN_LAYER + +/obj/structure/interior_exit/vehicle/humvee/right + entrance_id = "right" + alpha = 50 + +/obj/structure/interior_exit/vehicle/humvee/left2 + entrance_id = "rear left" + icon_state = "exit_door1" + layer = DOOR_OPEN_LAYER + +/obj/structure/interior_exit/vehicle/humvee/right2 + entrance_id = "rear right" + alpha = 50 + +/obj/structure/interior_exit/vehicle/humvee/back/left + entrance_id = "rear left" + icon_state = "carrier_backdoor1" + +/obj/structure/interior_exit/vehicle/humvee/back/right + entrance_id = "rear right" + icon_state = "carrier_backdoor2" + +/obj/structure/interior_exit/vehicle/humvee/back/medical/left + entrance_id = "rear left" + icon_state = "medical_backdoor1" + +/obj/structure/interior_exit/vehicle/humvee/back/medical/right + entrance_id = "rear right" + icon_state = "medical_backdoor2" + +/obj/structure/bed/chair/comfy/vehicle/driver/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "car_seat" + +/obj/structure/bed/chair/comfy/vehicle/gunner/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "car_seat" + +/obj/structure/bed/chair/comfy/vehicle/passager + name = "seat" + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "car_seat" + unacidable = TRUE + unslashable = TRUE + can_rotate = FALSE + +/obj/structure/prop/vehicle/humvee + name = "Humvee chassis" + + icon = 'icons/obj/vehicles/interiors/humvee_chassis.dmi' + icon_state = "humvee_chassis" + layer = ABOVE_TURF_LAYER + mouse_opacity = FALSE + density = FALSE + opacity = TRUE + +/obj/structure/prop/vehicle/humvee/medical + icon_state = "humvee_chassis_medical" + +/obj/structure/prop/vehicle/humvee/transport + icon_state = "humvee_chassis_transport" diff --git a/code/modules/vehicles/interior/areas.dm b/code/modules/vehicles/interior/areas.dm index 2a9a6166c7..c1c9ec2c2b 100644 --- a/code/modules/vehicles/interior/areas.dm +++ b/code/modules/vehicles/interior/areas.dm @@ -92,3 +92,15 @@ /area/interior/vehicle/uppvan/prisoner name = "\improper UPP van prisoner interior" icon_state = "upp_van_prisoner" + +/area/interior/vehicle/humvee + name = "\improper vehicle interior" + icon_state = "apc" + +/area/interior/vehicle/humvee/medical + name = "\improper vehicle interior" + icon_state = "apc" + +/area/interior/vehicle/humvee/transport + name = "\improper vehicle interior" + icon_state = "apc" diff --git a/code/modules/vehicles/interior/interactable/vehicle_locker.dm b/code/modules/vehicles/interior/interactable/vehicle_locker.dm index fdbaf37d1f..5fb5e4a238 100644 --- a/code/modules/vehicles/interior/interactable/vehicle_locker.dm +++ b/code/modules/vehicles/interior/interactable/vehicle_locker.dm @@ -250,6 +250,8 @@ if (container.handle_mousedrop(user, over_object)) ..(over_object) +/obj/structure/vehicle_locker/med/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' /obj/structure/vehicle_locker/med/verb/remove_surgical_tray() set name = "Remove Surgical Tray" diff --git a/code/modules/vehicles/interior/interactable/vendors.dm b/code/modules/vehicles/interior/interactable/vendors.dm index bacea95efd..de11000dba 100644 --- a/code/modules/vehicles/interior/interactable/vendors.dm +++ b/code/modules/vehicles/interior/interactable/vendors.dm @@ -112,6 +112,10 @@ list("Empty Blood Pack", floor(scale * 2), /obj/item/reagent_container/blood, VENDOR_ITEM_REGULAR) ) +//Humvee version +/obj/structure/machinery/cm_vending/sorted/medical/blood/vehicle/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + //----------------------SUPPLY VENDORS-------------------- //Combined vehicle version of req guns and ammo vendors. Starts, basically, empty, but can become a resupply point if marines bother to stock it with ammo and weapons. diff --git a/code/modules/vehicles/interior/interactable/viewports.dm b/code/modules/vehicles/interior/interactable/viewports.dm index e6febbe270..8b0aaff58b 100644 --- a/code/modules/vehicles/interior/interactable/viewports.dm +++ b/code/modules/vehicles/interior/interactable/viewports.dm @@ -44,3 +44,9 @@ /obj/structure/interior_viewport/terminal/tank name = "Command & Control Terminal" desc = "A terminal hooked up to the various sensors of the M579 ADS-C, featuring plenty of flashing buttons and whooping alarms alongside a more rudimentary external-view system." + +/obj/structure/interior_viewport/humvee + name = "humvee window" + desc = "Nothing beats the good old sheet of glass." + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "viewport_door" diff --git a/code/modules/vehicles/interior/interactable/weapons_loader.dm b/code/modules/vehicles/interior/interactable/weapons_loader.dm index 872d2906cd..d111943703 100644 --- a/code/modules/vehicles/interior/interactable/weapons_loader.dm +++ b/code/modules/vehicles/interior/interactable/weapons_loader.dm @@ -109,3 +109,8 @@ playsound(loc, 'sound/machines/hydraulics_3.ogg', 50) to_chat(user, SPAN_NOTICE("You reload \the [HP]. Ammo: [SPAN_HELPFUL(HP.ammo.current_rounds)]/[SPAN_HELPFUL(HP.ammo.max_rounds)] | Mags: [SPAN_HELPFUL(LAZYLEN(HP.backup_clips))]/[SPAN_HELPFUL(HP.max_clips)]")) + +/obj/structure/weapons_loader/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + density = FALSE + opacity = TRUE diff --git a/code/modules/vehicles/interior/interior_landmarks.dm b/code/modules/vehicles/interior/interior_landmarks.dm index fe703df088..33ef1d4b99 100644 --- a/code/modules/vehicles/interior/interior_landmarks.dm +++ b/code/modules/vehicles/interior/interior_landmarks.dm @@ -128,6 +128,24 @@ qdel(src) +/obj/effect/landmark/interior/spawn/vehicle_gunner_seat/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "car_seat" + color = "blue" + +/obj/effect/landmark/interior/spawn/vehicle_gunner_seat/humvee/on_load(datum/interior/interior) + var/obj/structure/bed/chair/comfy/vehicle/gunner/humvee/S = new(loc) + S.layer = layer + S.vehicle = interior.exterior + S.setDir(dir) + S.alpha = alpha + S.update_icon() + S.handle_rotation() + S.pixel_x = pixel_x + S.pixel_y = pixel_y + + qdel(src) + /obj/effect/landmark/interior/spawn/vehicle_gunner_seat/armor name = "armor gunner's seat spawner" icon = 'icons/obj/vehicles/interiors/general.dmi' @@ -149,6 +167,26 @@ qdel(src) +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "car_seat" + color = "red" + var/buckling_x = -3 + var/buckling_y = 1 + +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee/on_load(datum/interior/interior) + var/obj/structure/bed/chair/comfy/vehicle/driver/humvee/S = new(loc) + S.vehicle = interior.exterior + S.required_skill = S.vehicle.required_skill + S.setDir(dir) + S.update_icon() + S.alpha = alpha + S.handle_rotation() + S.pixel_x = pixel_x + S.pixel_y = pixel_y + + qdel(src) + /obj/effect/landmark/interior/spawn/vehicle_commander_seat/armor name = "armor commander's seat spawner" icon = 'icons/obj/vehicles/interiors/general.dmi' @@ -278,6 +316,22 @@ qdel(src) +/obj/effect/landmark/interior/spawn/weapons_loader/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "weapons_loader" + color = "#00920c" + +/obj/effect/landmark/interior/spawn/weapons_loader/humvee/on_load(datum/interior/interior) + var/obj/structure/weapons_loader/humvee/R = new(loc) + R.layer = layer + R.pixel_x = pixel_x + R.pixel_y = pixel_y + R.vehicle = interior.exterior + R.setDir(dir) + R.update_icon() + + qdel(src) + //This one spawns armored vehicles version of viewport /obj/effect/landmark/interior/spawn/interior_viewport name = "armored vehicle viewport spawner" @@ -328,15 +382,29 @@ color = "#009cb8" alpha = 80 -/obj/effect/landmark/interior/spawn/interior_viewport/simple/windshield/on_load(datum/interior/I) - var/obj/structure/interior_viewport/simple/windshield/V = new(loc) +/obj/effect/landmark/interior/spawn/interior_viewport/simple/windshield/on_load(datum/interior/interior) + var/obj/structure/interior_viewport/simple/windshield/viewport = new(loc) - V.vehicle = I.exterior - V.pixel_x = pixel_x - V.pixel_y = pixel_y - V.alpha = alpha - V.icon = icon + viewport.vehicle = interior.exterior + viewport.pixel_x = pixel_x + viewport.pixel_y = pixel_y + viewport.alpha = alpha + viewport.icon = icon + qdel(src) +/obj/effect/landmark/interior/spawn/interior_viewport/humvee + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + icon_state = "viewport_door" + +/obj/effect/landmark/interior/spawn/interior_viewport/humvee/on_load(datum/interior/interior) + var/obj/structure/interior_viewport/humvee/viewport = new(loc) + viewport.vehicle = interior.exterior + viewport.pixel_x = pixel_x + viewport.pixel_y = pixel_y + viewport.alpha = alpha + viewport.icon = icon + viewport.icon_state = icon_state + viewport.layer = layer qdel(src) //AA APC fancy viewport spawner diff --git a/colonialmarines.dme b/colonialmarines.dme index e2b70b1e95..9bc1c69802 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2629,6 +2629,7 @@ #include "code\modules\vehicles\hardpoints\hardpoint_ammo\tow_ammo.dm" #include "code\modules\vehicles\hardpoints\holder\apc_turret.dm" #include "code\modules\vehicles\hardpoints\holder\holder.dm" +#include "code\modules\vehicles\hardpoints\holder\humvee_turret.dm" #include "code\modules\vehicles\hardpoints\holder\tank_turret.dm" #include "code\modules\vehicles\hardpoints\holder\van_turret.dm" #include "code\modules\vehicles\hardpoints\primary\aa_cannon.dm" @@ -2658,6 +2659,7 @@ #include "code\modules\vehicles\hardpoints\support\antenna.dm" #include "code\modules\vehicles\hardpoints\support\artillery.dm" #include "code\modules\vehicles\hardpoints\support\flare.dm" +#include "code\modules\vehicles\hardpoints\support\humvee_lights.dm" #include "code\modules\vehicles\hardpoints\support\iwsa.dm" #include "code\modules\vehicles\hardpoints\support\overdrive.dm" #include "code\modules\vehicles\hardpoints\support\smokelauncher.dm" @@ -2667,6 +2669,8 @@ #include "code\modules\vehicles\hardpoints\wheels\locomotion.dm" #include "code\modules\vehicles\hardpoints\wheels\treads.dm" #include "code\modules\vehicles\hardpoints\wheels\van_wheels.dm" +#include "code\modules\vehicles\humvee\humvee.dm" +#include "code\modules\vehicles\humvee\interior.dm" #include "code\modules\vehicles\interior\areas.dm" #include "code\modules\vehicles\interior\interior.dm" #include "code\modules\vehicles\interior\interior_hull.dm" diff --git a/icons/obj/vehicles/hardpoints/humvee.dmi b/icons/obj/vehicles/hardpoints/humvee.dmi new file mode 100644 index 0000000000..6a608af7d7 Binary files /dev/null and b/icons/obj/vehicles/hardpoints/humvee.dmi differ diff --git a/icons/obj/vehicles/humvee.dmi b/icons/obj/vehicles/humvee.dmi new file mode 100644 index 0000000000..4ad4fe804b Binary files /dev/null and b/icons/obj/vehicles/humvee.dmi differ diff --git a/icons/obj/vehicles/humvee_medical.dmi b/icons/obj/vehicles/humvee_medical.dmi new file mode 100644 index 0000000000..319567107f Binary files /dev/null and b/icons/obj/vehicles/humvee_medical.dmi differ diff --git a/icons/obj/vehicles/humvee_transport.dmi b/icons/obj/vehicles/humvee_transport.dmi new file mode 100644 index 0000000000..c672efc85b Binary files /dev/null and b/icons/obj/vehicles/humvee_transport.dmi differ diff --git a/icons/obj/vehicles/interiors/general_humvee.dmi b/icons/obj/vehicles/interiors/general_humvee.dmi new file mode 100644 index 0000000000..10de4b2eac Binary files /dev/null and b/icons/obj/vehicles/interiors/general_humvee.dmi differ diff --git a/icons/obj/vehicles/interiors/humvee_chassis.dmi b/icons/obj/vehicles/interiors/humvee_chassis.dmi new file mode 100644 index 0000000000..0c97680f9b Binary files /dev/null and b/icons/obj/vehicles/interiors/humvee_chassis.dmi differ diff --git a/maps/interiors/humvee.dmm b/maps/interiors/humvee.dmm new file mode 100644 index 0000000000..cccad23816 --- /dev/null +++ b/maps/interiors/humvee.dmm @@ -0,0 +1,165 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"h" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = 1; + pixel_y = -8; + layer = 5.23; + alpha = 150 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 4; + pixel_y = 5; + buckling_y = 5; + pixel_x = 1; + buckling_x = 1 + }, +/obj/effect/landmark/interior/spawn/entrance{ + alpha = 75; + exit_type = /obj/structure/interior_exit/vehicle/humvee/right2; + name = "back right entrance marker"; + tag = "back right"; + pixel_x = 1; + pixel_y = -10; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door"; + layer = 5.22 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee) +"o" = ( +/obj/structure/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = 16 + }, +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee{ + dir = 4; + pixel_x = -3; + pixel_y = 1; + layer = 2.8 + }, +/obj/effect/landmark/interior/spawn/weapons_loader/humvee{ + pixel_x = -17; + pixel_y = -13; + layer = 3.1 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = 16 + }, +/obj/effect/landmark/interior/spawn/entrance{ + dir = 1; + exit_type = /obj/structure/interior_exit/vehicle/humvee/left; + name = "left entrance marker"; + tag = "left"; + pixel_x = -3; + pixel_y = 14; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door1"; + layer = 2.8 + }, +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee{ + dir = 4; + pixel_x = -3; + pixel_y = 1 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee) +"t" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_north"; + pixel_x = -10; + pixel_y = 5 + }, +/turf/open/void/vehicle, +/area/space) +"v" = ( +/obj/structure/prop/vehicle/humvee{ + pixel_x = 16; + pixel_y = -12 + }, +/turf/open/void/vehicle, +/area/space) +"y" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_south"; + pixel_x = -10; + pixel_y = 7 + }, +/turf/open/void/vehicle, +/area/space) +"G" = ( +/obj/effect/landmark/interior/spawn/vehicle_gunner_seat/humvee{ + dir = 4; + pixel_y = 5; + layer = 3.12 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = -8; + layer = 5.23; + alpha = 150 + }, +/obj/effect/landmark/interior/spawn/entrance{ + alpha = 75; + exit_type = /obj/structure/interior_exit/vehicle/humvee/right; + name = "right entrance marker"; + tag = "right"; + pixel_x = -3; + pixel_y = -10; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door"; + layer = 5.22 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee) +"M" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = 1; + pixel_y = 16 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 4; + pixel_y = 1; + buckling_y = 1; + pixel_x = 1; + buckling_x = 1 + }, +/obj/effect/landmark/interior/spawn/entrance{ + dir = 1; + exit_type = /obj/structure/interior_exit/vehicle/humvee/left2; + name = "back left entrance marker"; + tag = "back left"; + pixel_y = 14; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door1" + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee) +"O" = ( +/turf/open/void/vehicle, +/area/space) + +(1,1,1) = {" +O +O +v +O +"} +(2,1,1) = {" +O +M +h +O +"} +(3,1,1) = {" +O +o +G +O +"} +(4,1,1) = {" +O +t +y +O +"} diff --git a/maps/interiors/humvee_medical.dmm b/maps/interiors/humvee_medical.dmm new file mode 100644 index 0000000000..bfefa5fcba --- /dev/null +++ b/maps/interiors/humvee_medical.dmm @@ -0,0 +1,182 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"g" = ( +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "small_viewport"; + pixel_x = -1; + pixel_y = -7; + alpha = 150 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"o" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + icon = 'icons/obj/vehicles/interiors/general.dmi'; + pixel_x = -18; + pixel_y = 13 + }, +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee{ + dir = 4; + pixel_x = -3; + pixel_y = 1; + buckling_x = -3; + buckling_y = 1 + }, +/obj/effect/landmark/interior/spawn/entrance{ + dir = 4; + exit_type = /obj/structure/interior_exit/vehicle/humvee/left; + name = "left entrance marker"; + tag = "left"; + pixel_x = -3; + pixel_y = 14; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door1"; + layer = 2.8 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = 16 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"s" = ( +/obj/structure/machinery/cm_vending/sorted/medical/vehicle{ + pixel_x = -4; + pixel_y = 3 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"t" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_north"; + pixel_x = -10; + pixel_y = 5 + }, +/turf/open/void/vehicle, +/area/space) +"v" = ( +/obj/structure/prop/vehicle/humvee/medical{ + pixel_x = 24; + pixel_y = -12 + }, +/turf/open/void/vehicle, +/area/space) +"y" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_south"; + pixel_x = -10; + pixel_y = 7 + }, +/turf/open/void/vehicle, +/area/space) +"C" = ( +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 4; + pixel_y = 5; + buckling_y = 5; + pixel_x = -3; + buckling_x = -3 + }, +/obj/effect/landmark/interior/spawn/entrance{ + alpha = 75; + exit_type = /obj/structure/interior_exit/vehicle/humvee/right; + name = "right entrance marker"; + tag = "right"; + pixel_x = -3; + pixel_y = -10; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door"; + layer = 5.22 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = -8; + layer = 5.23; + alpha = 150 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"G" = ( +/obj/effect/landmark/interior/spawn/entrance{ + dir = 8; + exit_type = /obj/structure/interior_exit/vehicle/humvee/back/medical/right; + name = "back right entrance marker"; + pixel_x = -31; + tag = "back right"; + icon_state = "medical_backdoor2"; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1; + pixel_x = 16; + buckling_x = 16 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"M" = ( +/obj/effect/landmark/interior/spawn/entrance{ + dir = 8; + exit_type = /obj/structure/interior_exit/vehicle/humvee/back/medical/left; + name = "back left entrance marker"; + pixel_x = -31; + tag = "back left"; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "medical_backdoor1" + }, +/obj/structure/machinery/cm_vending/sorted/medical/blood/vehicle/humvee{ + pixel_x = -7; + pixel_y = 14 + }, +/obj/structure/vehicle_locker/med/humvee{ + pixel_x = 15; + pixel_y = 14; + layer = 2.98 + }, +/obj/structure/bed/portable_surgery{ + icon_state = "surgical_up"; + pixel_x = 2; + pixel_y = -4; + buckling_x = 2; + buckling_y = -4 + }, +/turf/open/shuttle/vehicle/med, +/area/interior/vehicle/humvee/medical) +"O" = ( +/turf/open/void/vehicle, +/area/space) + +(1,1,1) = {" +O +O +v +O +"} +(2,1,1) = {" +O +M +G +O +"} +(3,1,1) = {" +O +s +g +O +"} +(4,1,1) = {" +O +o +C +O +"} +(5,1,1) = {" +O +t +y +O +"} diff --git a/maps/interiors/humvee_transport.dmm b/maps/interiors/humvee_transport.dmm new file mode 100644 index 0000000000..cb50820450 --- /dev/null +++ b/maps/interiors/humvee_transport.dmm @@ -0,0 +1,179 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"h" = ( +/obj/effect/landmark/interior/spawn/entrance{ + dir = 8; + exit_type = /obj/structure/interior_exit/vehicle/humvee/back/right; + name = "back right entrance marker"; + pixel_x = -31; + tag = "back right"; + icon_state = "carrier_backdoor2"; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + }, +/obj/structure/prop/vehicle/humvee/transport{ + pixel_x = -8; + pixel_y = -12 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1; + pixel_x = 16; + buckling_x = 16 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) +"o" = ( +/obj/structure/bed/chair/comfy/vehicle/passager{ + pixel_y = 1; + buckling_y = 1 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "small_viewport"; + pixel_x = -1; + pixel_y = 17; + layer = 3 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) +"t" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_north"; + pixel_x = -10; + pixel_y = 5 + }, +/turf/open/void/vehicle, +/area/space) +"v" = ( +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 4; + pixel_y = 5; + buckling_y = 5; + pixel_x = -3; + buckling_x = -3 + }, +/obj/effect/landmark/interior/spawn/entrance{ + alpha = 75; + exit_type = /obj/structure/interior_exit/vehicle/humvee/right; + name = "right entrance marker"; + tag = "right"; + pixel_x = -3; + pixel_y = -10; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door"; + layer = 5.22 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = -8; + layer = 5.23; + alpha = 150 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) +"y" = ( +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "viewport_frontwindow_south"; + pixel_x = -10; + pixel_y = 7 + }, +/turf/open/void/vehicle, +/area/space) +"G" = ( +/obj/structure/bed/chair/comfy/vehicle/passager{ + dir = 1 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + icon_state = "small_viewport"; + pixel_x = -1; + pixel_y = -7; + alpha = 150 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) +"M" = ( +/obj/effect/landmark/interior/spawn/entrance{ + dir = 8; + exit_type = /obj/structure/interior_exit/vehicle/humvee/back/left; + name = "back left entrance marker"; + pixel_x = -31; + tag = "back left"; + icon_state = "carrier_backdoor1"; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi' + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + pixel_x = 16; + pixel_y = 1; + buckling_x = 16; + buckling_y = 1 + }, +/obj/structure/bed/chair/comfy/vehicle/passager{ + pixel_y = 1; + buckling_y = 1 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) +"O" = ( +/turf/open/void/vehicle, +/area/space) +"V" = ( +/obj/structure/extinguisher_cabinet/lifeboat{ + icon = 'icons/obj/vehicles/interiors/general.dmi'; + pixel_x = -19; + pixel_y = 14 + }, +/obj/effect/landmark/interior/spawn/vehicle_driver_seat/armor/humvee{ + dir = 4; + pixel_x = -3; + pixel_y = 1; + buckling_x = -3; + buckling_y = 1 + }, +/obj/effect/landmark/interior/spawn/entrance{ + dir = 4; + exit_type = /obj/structure/interior_exit/vehicle/humvee/left; + name = "left entrance marker"; + tag = "left"; + pixel_x = -3; + pixel_y = 14; + icon = 'icons/obj/vehicles/interiors/general_humvee.dmi'; + icon_state = "exit_door1"; + layer = 2.8 + }, +/obj/effect/landmark/interior/spawn/interior_viewport/humvee{ + pixel_x = -3; + pixel_y = 16 + }, +/turf/open/shuttle/vehicle, +/area/interior/vehicle/humvee/transport) + +(1,1,1) = {" +O +O +O +O +"} +(2,1,1) = {" +O +M +h +O +"} +(3,1,1) = {" +O +o +G +O +"} +(4,1,1) = {" +O +V +v +O +"} +(5,1,1) = {" +O +t +y +O +"}