diff --git a/code/datums/supplypacks/munitions_vr.dm b/code/datums/supplypacks/munitions_vr.dm new file mode 100644 index 00000000000..01a5becdf9d --- /dev/null +++ b/code/datums/supplypacks/munitions_vr.dm @@ -0,0 +1,9 @@ +/datum/supply_packs/munitions/expeditionguns + name = "Frontier phaser (station-locked) crate" + contains = list( + /obj/item/weapon/gun/energy/frontier/locked = 2, + ) + cost = 35 + containertype = /obj/structure/closet/crate/secure + containername = "frontier phaser crate" + access = access_explorer \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index 52008088ec7..29f37d379e9 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -778,3 +778,86 @@ name = "speedloader (.44 rubber)" icon_state = "r357" ammo_type = /obj/item/ammo_casing/a44/rubber + +//Expedition pistol +/obj/item/weapon/gun/energy/frontier + name = "frontier phaser" + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization." + icon = 'icons/obj/gun_vr.dmi' + icon_state = "phaser" + item_state = "phaser" + item_icons = list(slot_l_hand_str = 'icons/mob/items/lefthand_guns_vr.dmi', slot_r_hand_str = 'icons/mob/items/righthand_guns_vr.dmi', "slot_belt" = 'icons/mob/belt_vr.dmi') + item_state_slots = list(slot_r_hand_str = "phaser", slot_l_hand_str = "phaser", "slot_belt" = "phaser") + fire_sound = 'sound/weapons/laser2.ogg' + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) + + battery_lock = 1 + unacidable = 1 + + var/recharging = 0 + + projectile_type = /obj/item/projectile/beam + firemodes = list( + list(mode_name="normal", fire_delay=12, projectile_type=/obj/item/projectile/beam, charge_cost = 300), + list(mode_name="low-power", fire_delay=8, projectile_type=/obj/item/projectile/beam/weaklaser, charge_cost = 60), + ) + +/obj/item/weapon/gun/energy/frontier/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + update_icon() + user.visible_message("[user] opens \the [src] and starts pumping the handle.", \ + "You open \the [src] and start pumping the handle.") + while(recharging) + if(!do_after(user, 10, src)) + break + playsound(get_turf(src),'sound/items/change_drill.ogg',25,1) + if(power_supply.give(60) < 60) + break + + recharging = 0 + update_icon() + +/obj/item/weapon/gun/energy/frontier/update_icon() + if(recharging) + icon_state = "[initial(icon_state)]_pump" + update_held_icon() + return + ..() + +/obj/item/weapon/gun/energy/frontier/emp_act(severity) + return ..(severity+2) + +/obj/item/weapon/gun/energy/frontier/ex_act() //|rugged| + return + +/obj/item/weapon/gun/energy/frontier/locked + desc = "An extraordinarily rugged laser weapon, built to last and requiring effectively no maintenance. Includes a built-in crank charger for recharging away from civilization. This one has a safety interlock that prevents firing while in proximity to the facility." + req_access = list(access_armory) //for toggling safety + var/locked = 1 + +/obj/item/weapon/gun/energy/frontier/locked/attackby(obj/item/I, mob/user) + var/obj/item/weapon/card/id/id = I.GetID() + if(istype(id)) + if(check_access(id)) + locked = !locked + to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src].") + else + to_chat(user, "Access denied.") + user.visible_message("[user] swipes \the [I] against \the [src].") + else + return ..() + +/obj/item/weapon/gun/energy/frontier/locked/emag_act(var/remaining_charges,var/mob/user) + ..() + locked = !locked + to_chat(user, "You [locked ? "enable" : "disable"] the safety lock on \the [src]!") + +/obj/item/weapon/gun/energy/frontier/locked/special_check(mob/user) + if(locked) + var/turf/T = get_turf(src) + if(T.z in using_map.map_levels) + to_chat(user, "The safety device prevents the gun from firing this close to the facility.") + return 0 + return ..() \ No newline at end of file diff --git a/icons/mob/belt_vr.dmi b/icons/mob/belt_vr.dmi index d48f6d7a97e..a1422e4af41 100644 Binary files a/icons/mob/belt_vr.dmi and b/icons/mob/belt_vr.dmi differ diff --git a/icons/mob/items/lefthand_guns_vr.dmi b/icons/mob/items/lefthand_guns_vr.dmi new file mode 100644 index 00000000000..46c0497d387 Binary files /dev/null and b/icons/mob/items/lefthand_guns_vr.dmi differ diff --git a/icons/mob/items/righthand_guns_vr.dmi b/icons/mob/items/righthand_guns_vr.dmi new file mode 100644 index 00000000000..6d8b68356e8 Binary files /dev/null and b/icons/mob/items/righthand_guns_vr.dmi differ diff --git a/icons/obj/gun_vr.dmi b/icons/obj/gun_vr.dmi index 198d2b90fe4..d5022674393 100644 Binary files a/icons/obj/gun_vr.dmi and b/icons/obj/gun_vr.dmi differ diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm index 4f6859ae450..b2d5bf42d32 100644 --- a/maps/tether/tether-05-station1.dmm +++ b/maps/tether/tether-05-station1.dmm @@ -21629,6 +21629,20 @@ }, /turf/simulated/shuttle/wall/voidcraft, /area/shuttle/excursion/tether) +"RIb" = ( +/obj/effect/floor_decal/steeldecal/steel_decals9, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals9{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/excursion, +/turf/simulated/floor/tiled/monotile, +/area/tether/station/explorer_prep) "PYd" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan{ dir = 10 @@ -32436,7 +32450,7 @@ aiv bQJ bQT bQJ -aiv +bQJ aiv aac aac @@ -32558,6 +32572,7 @@ aiv bQK bQK bQK +RIb aiv aac aac @@ -32565,7 +32580,6 @@ aac aac aac aac -aac alA amg amg @@ -32681,7 +32695,7 @@ aiv aiv aiv aiv -aac +aiv aac aac aac diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index e5110f05202..16c7c219ed3 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -362,6 +362,15 @@ var/global/list/latejoin_tram = list() return ..(user) +/obj/structure/closet/secure_closet/guncabinet/excursion + name = "expedition weaponry cabinet" + req_one_access = list(access_explorer,access_brig) + +/obj/structure/closet/secure_closet/guncabinet/excursion/New() + ..() + for(var/i = 1 to 4) + new /obj/item/weapon/gun/energy/frontier/locked(src) + // // ### Wall Machines On Full Windows ### // To make sure wall-mounted machines placed on full-tile windows are clickable they must be above the window