diff --git a/code/game/objects/items/devices/translocator_vr.dm b/code/game/objects/items/devices/translocator_vr.dm
index 7400b14ddb..348046cd64 100644
--- a/code/game/objects/items/devices/translocator_vr.dm
+++ b/code/game/objects/items/devices/translocator_vr.dm
@@ -92,11 +92,11 @@
else
return ..()
-/obj/item/device/perfect_tele/proc/unload_ammo(mob/user)
+/obj/item/device/perfect_tele/proc/unload_ammo(mob/user, var/ignore_inactive_hand_check = 0)
if(battery_lock)
to_chat(user,"[src] does not have a battery port.")
return
- if(user.get_inactive_hand() == src && power_source)
+ if((user.get_inactive_hand() == src || ignore_inactive_hand_check) && power_source)
to_chat(user,"You eject \the [power_source] from \the [src].")
user.put_in_hands(power_source)
power_source = null
@@ -111,7 +111,7 @@
return FALSE
return TRUE
-/obj/item/device/perfect_tele/attack_self(mob/user)
+/obj/item/device/perfect_tele/attack_self(mob/user, var/radial_menu_anchor = src)
if(loc_network)
for(var/obj/item/device/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons)
if(nb.tele_network == loc_network)
@@ -124,8 +124,7 @@
and tele-vore. Make sure you carefully examine someone's OOC prefs before teleporting them if you are \
going to use this device for ERP purposes. This device records all warnings given and teleport events for \
admin review in case of pref-breaking, so just don't do it.","OOC WARNING")
-
- var/choice = show_radial_menu(user, src, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, radial_menu_anchor, radial_images, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
if(!choice)
return
@@ -281,7 +280,7 @@
//Seems okay to me!
return TRUE
-/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity)
+/obj/item/device/perfect_tele/afterattack(mob/living/target, mob/living/user, proximity, var/ignore_fail_chance = 0)
//No, you can't teleport people from over there.
if(!proximity)
return
@@ -312,11 +311,12 @@
R.force_dismount(rider)
//Failure chance
- if(prob(failure_chance) && beacons.len >= 2)
- var/list/wrong_choices = beacons - destination.tele_name
- var/wrong_name = pick(wrong_choices)
- destination = beacons[wrong_name]
- to_chat(user,"\The [src] malfunctions and sends you to the wrong beacon!")
+ if (!ignore_fail_chance)
+ if(prob(failure_chance) && beacons.len >= 2)
+ var/list/wrong_choices = beacons - destination.tele_name
+ var/wrong_name = pick(wrong_choices)
+ destination = beacons[wrong_name]
+ to_chat(user,"\The [src] malfunctions and sends you to the wrong beacon!")
//Destination beacon vore checking
var/turf/dT = get_turf(destination)
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index bf0148f510..63f5749c2b 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -739,6 +739,12 @@
character_name = list("Clara Mali")
cost = 1
+/datum/gear/fluff/nikki_dorky_outfit
+ path = /obj/item/weapon/storage/box/fluff
+ display_name = "Nikki's Witchy Outfit"
+ ckeywhitelist = list("ryumi")
+ character_name = list("Nikki Yumeno")
+
// S CKEYS
/datum/gear/fluff/brynhild_medal
path = /obj/item/clothing/accessory/medal/silver/valor
diff --git a/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun_vr.dm b/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun_vr.dm
new file mode 100644
index 0000000000..96f609a1da
--- /dev/null
+++ b/code/modules/clothing/spacesuits/rig/modules/specific/mounted_gun_vr.dm
@@ -0,0 +1,12 @@
+/obj/item/rig_module/mounted/sizegun
+ icon = 'icons/obj/rig_modules.dmi'
+ icon_state = "sizegun"
+ name = "mounted size gun"
+ desc = "A size gun to be mounted on a rig suit. Features interface-based target size adjustment for hands-free size-altering shenanigans."
+
+ engage_string = "Select Size"
+
+ interface_name = "mounted sizegun"
+ interface_desc = "A wrist-mounted, hardsuit cell-powered, size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
+
+ gun_type = /obj/item/weapon/gun/energy/sizegun/mounted
diff --git a/code/modules/research/mechfab_designs_vr.dm b/code/modules/research/mechfab_designs_vr.dm
index 1de0cc2dda..099d2a2374 100644
--- a/code/modules/research/mechfab_designs_vr.dm
+++ b/code/modules/research/mechfab_designs_vr.dm
@@ -5,3 +5,11 @@
req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_MAGNET = 5, TECH_BIO = 4)
materials = list(MAT_PLASTEEL = 3000, MAT_GRAPHITE = 2000, MAT_PLASTIC = 3500, MAT_SILVER = 1750, MAT_GOLD = 1250)
build_path = /obj/item/rig_module/rescue_pharm
+
+/datum/design/item/mechfab/rigsuit/mounted_sizegun
+ name = "hardsuit mounted size gun"
+ desc = "A suit mounted size gun. Features interface-based target size adjustment for hands-free size-altering shenanigans."
+ id = "rig_gun_sizegun"
+ req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
+ materials = list(DEFAULT_WALL_MATERIAL = 3000, MAT_GLASS = 2000, MAT_URANIUM = 2000)
+ build_path = /obj/item/rig_module/mounted/sizegun
\ No newline at end of file
diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
index 4b16e1d66f..b718453f2e 100644
--- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
@@ -217,6 +217,16 @@
/obj/item/weapon/melee/fluffstuff/wolfgirlsword,
/obj/item/weapon/shield/fluff/wolfgirlshield)
+// Ryumi: Nikki Yumeno
+/obj/item/weapon/storage/box/fluff
+ name = "Nikki's Outfit Box"
+ desc = "Warning: Contains dangerous amounts of dork."
+ has_items = list(
+ /obj/item/weapon/rig/nikki,
+ /obj/item/clothing/head/fluff/nikki,
+ /obj/item/clothing/under/skirt/outfit/fluff/nikki,
+ /obj/item/clothing/shoes/fluff/nikki)
+
/*
Swimsuits, for general use, to avoid arriving to work with your swimsuit.
*/
diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
index ffff210dbc..b127475a85 100644
--- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
@@ -2007,4 +2007,222 @@ Departamental Swimsuits, for general use
//BobOfBoblandia: Charles Gettler
/obj/item/clothing/head/that/fluff/gettler
name = "Charles' Top-Hat"
- desc = "A special hat, removed from its owner."
\ No newline at end of file
+ desc = "A special hat, removed from its owner."
+
+//Ryumi: Nikki Yumeno
+/obj/item/clothing/under/skirt/outfit/fluff/nikki
+ name = "dorky outfit"
+ desc = "A little witch costume that looks like it's been worn as ordinary clothes. Who in their right mind would...??"
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_override = 'icons/vore/custom_onmob_vr.dmi'
+ icon_state = "nikki_outfit"
+ item_state = "nikki_outfit"
+ item_icons = list()
+ sensor_mode = 3 // I'm a dumbass and forget these all the time please understand :(
+
+/obj/item/clothing/under/skirt/outfit/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
+ if(..())
+ if (M.ckey == "ryumi")
+ return 1
+ else if (M.get_active_hand() == src)
+ to_chat(M, "What the heck? \The [src] doesn't fit!")
+ return 0
+
+/obj/item/clothing/shoes/fluff/nikki
+ name = "non-magical boots"
+ desc = "Boots optimally built for a dork. They don't sparkle or anything, but you can imagine them doing that when you click the heels together."
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_override = 'icons/vore/custom_onmob_vr.dmi'
+ icon_state = "nikki_boots"
+ item_state = "nikki_boots"
+
+/obj/item/clothing/shoes/fluff/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0)
+ if(..())
+ if (M.ckey == "ryumi")
+ return 1
+ else if (M.get_active_hand() == src)
+ to_chat(M, "What the heck? \The [src] doesn't fit!")
+ return 0
+
+/obj/item/clothing/suit/fluff/nikki //see /obj/item/weapon/rig/nikki
+ name = "cape"
+ desc = "Snazzy!"
+ flags = null
+ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0) // It's not armor, it's a dorky frickin cape
+ body_parts_covered = null // Cape ain't gonna cover a THING
+ cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS // It will keep you toasty tho, it's more than big enough to help with that! Just wrap the thing around you when on the surface, idk
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_override = 'icons/vore/custom_onmob_vr.dmi'
+ icon_state = "nikki"
+
+/obj/item/clothing/head/fluff/nikki
+ // I have never tryharded so much just to accomplish something so stupid as "Vore By Hat" in my entire life, and I apologize to each and every one of you.
+ name = "oversized witch hat"
+ desc = "A dork-shaped hat. Its long, pointed tip reaches far more than most hats had ought to, its wide brim complementing \
+ this with its tendency to droop at the ends under its own weight."
+ description_fluff = "Despite what Nikki Yumeno may believe, her hat is not in fact a magical artifact of teleportation magicks. \
+ It is however the result of clever utilization of bluespace technology combined with style. Like a classic magician's trick, \
+ the power of this hat lies in the hidden compartment hidden on the inside, into which a personal translocation device can be \
+ snapped inside. Once installed, bluespace electronics inside the hat sync with the translocator and utilize its teleportation \
+ technology to create a localized bluespace portal within the hole of the hat. This tiny portal will warp anything or anyone \
+ who makes physical contact with it to whatever beacon the translocator within is locked onto."
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_state = "nikki-hat"
+ item_state = "nikki-hat"
+ item_icons = list(
+ slot_l_hand_str = 'icons/vore/custom_clothes_left_hand_vr.dmi',
+ slot_r_hand_str = 'icons/vore/custom_clothes_right_hand_vr.dmi',
+ slot_head_str = 'icons/vore/custom_onmob_32x48_vr.dmi'
+ )
+ flags_inv = HIDEEARS
+ w_class = ITEMSIZE_LARGE // THIS HAT IS FUCKIN HUGE YO
+ var/owner = "ryumi"
+ var/obj/item/device/perfect_tele/translocator = null // The translocator installed inside, if there is one. Gotta go out and get it first!
+
+/obj/item/clothing/head/fluff/nikki/verb/verb_translocator_unequip()
+ set category = "Object"
+ set name = "Nikki's Hat - Unequip Translocator"
+ set src in usr
+ translocator_unequip(translocator, usr)
+
+/obj/item/clothing/head/fluff/nikki/proc/translocator_equip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
+ if (do_after(user, 2 SECONDS, T))
+ user.unEquip(T)
+ translocator_unequip(translocator, user)
+ T.forceMove(src)
+ translocator = T
+ user.show_message("[bicon(src)]*click!*")
+ playsound(src, 'sound/machines/click.ogg', 30, 1)
+
+/obj/item/clothing/head/fluff/nikki/proc/translocator_unequip(var/obj/item/device/perfect_tele/T, var/mob/living/carbon/human/user)
+ if (translocator)
+ if (user)
+ user.put_in_hands(T)
+ user.show_message("[bicon(src)]*click!*")
+ else
+ translocator.forceMove(get_turf(src))
+ translocator = null
+ playsound(src, 'sound/machines/click.ogg', 30, 1)
+
+/obj/item/clothing/head/fluff/nikki/proc/teleport_fail(mob/user, mob/target)
+ if (target != user)
+ user.visible_message("[user] harmlessly bops [target] with \the [src].", \
+ "\The [src] harmlessly bops [target]. The hat seems... unwilling?")
+ else
+ user.visible_message("\The [src] flops over [user]'s' head for a moment, but they seem alright.", \
+ "\The [src] flops over your head for a moment, but you correct it without issue. There we go!")
+
+/obj/item/clothing/head/fluff/nikki/proc/hat_warp_checks(var/mob/living/target, mob/user, proximity_flag)
+ if (!proximity_flag)
+ return 0
+
+ if (!translocator)
+ to_chat(user, "\The [src] doesn't have a translocator inside it yet, you goof!")
+ return 0
+
+ if (target.ckey == owner && target != user) // ur not getting me that easy sonny jim......
+ to_chat(user, "You think to turn \the [src] on its creator?! FOOOOOOOOL.")
+ to_chat(user, "From seemingly nowhere you hear echoing, derisive laughter, accompanied by a stock laugh track and... Are those bike horns?")
+ return 0
+
+ if (!istype(target))
+ to_chat(user, "\The [src] isn't a valid target!")
+ return 0
+
+ // Because other mobs (i.e. monkeys) apparently have dropnom prey set to 0, we check SPECIFICALLY for humans' dropnom setting.
+ if (target.type == /mob/living/carbon/human && !target.can_be_drop_prey)
+ teleport_fail(user, target)
+ return 0
+
+ if (!translocator.teleport_checks(target, user))
+ return 0
+
+ else return 1
+
+/obj/item/clothing/head/fluff/nikki/attackby(obj/item/weapon/I as obj, mob/user as mob)
+ if (istype(I, /obj/item/device/perfect_tele) && user.get_inactive_hand() == src)
+ if (translocator)
+ visible_message("[user] starts to pull \a [translocator] out of \the [src] to swap it out with \the [I]...", \
+ "You start pulling \the [translocator] pops out of its compartment with a soft 'click' as you replace it with \the [I]....")
+ else
+ visible_message("[user] begins slipping \the [I] into \the [src]...", \
+ "You begin to snap \the [I] into a small, hidden compartment inside \the [src]...")
+ // This works for both adding and replacing a translocator
+ translocator_equip(I, user)
+ return
+ else if (translocator)
+ translocator.attackby(I, user)
+ return
+ ..()
+
+/obj/item/clothing/head/fluff/nikki/get_description_interaction()
+ . = ..()
+ if (translocator)
+ . += "It has \a [translocator] inside of it. Alt-click while holding it on your inactive hand to remove it."
+ . += "Otherwise, this hat functions exactly as the translocator it has inside while still being a sweet head accessory."
+ else
+ . += "A translocator can be placed inside of it! While holding the hat in your inactive hand, use a translocator on it to slip it inside."
+ . += "After doing this, it will function as both a head accessory and teleportation device."
+
+
+/obj/item/clothing/head/fluff/nikki/attack_hand(mob/user)
+ if (translocator && (user.get_inactive_hand() == src))
+ translocator.unload_ammo(user, ignore_inactive_hand_check = 1)
+ return
+ ..()
+
+/obj/item/clothing/head/fluff/nikki/AltClick(mob/user)
+ if (translocator && (user.get_inactive_hand() == src))
+ translocator_unequip(translocator, user)
+
+/obj/item/clothing/head/fluff/nikki/attack_self(mob/user)
+ ..()
+ if (translocator)
+ translocator.attack_self(user, user)
+ return
+ else
+ to_chat(user, "\The [src] doesn't have a translocator inside it right now.")
+ return
+
+/obj/item/clothing/head/fluff/nikki/examine(mob/user) // If it has a translocator installed, make it very obvious to viewers that something WEIRD is going on with this hat.
+ . = ..()
+ if (translocator)
+ . += "Weird... You can't see the bottom of the hole inside the hat..."
+
+/obj/item/clothing/head/fluff/nikki/equipped(mob/living/carbon/human/user, slot)
+ . = ..()
+ if (slot == slot_head && translocator && user.ckey != owner) // This way we don't unnecessarily spam the chat with hat/translocator errors
+ // hey, are we actually able to teleport this poor person?
+ if (hat_warp_checks(user, user, proximity_flag = 1))
+ // YOU FOOL! YOU HAVE ACTIVATED MY STAND, 「VORE BY HAT」!
+ src.visible_message("\The [src] falls over [user]'s head... and somehow falls over the rest of their body, causing them to vanish inside. Where did they go?!", \
+ "The hat falls over your head as you put it on, enveloping you in a bright green light! Uh oh.")
+ var/uh_oh = pick(translocator.beacons)
+ user.remove_from_mob(src, get_turf(user))
+ translocator.destination = translocator.beacons[uh_oh]
+ translocator.afterattack(user, user, proximity = 1, ignore_fail_chance = 1)
+ add_attack_logs(user, user, "Tried to put on \the [src] and was involuntarily teleported by it (via \the [translocator] within)!")
+ return
+
+/obj/item/clothing/head/fluff/nikki/afterattack(var/mob/living/target, mob/user, proximity_flag, click_parameters)
+ // If the hat is willing to cooperate with the holder...
+ if (hat_warp_checks(target, user, proximity_flag))
+ // Silly fluffed up styles of teleporting people based on user intent.
+ switch (user.a_intent)
+ if (I_HELP)
+ user.visible_message("[user] guides \the [target] to the bottomless hole within \the [src]. They begin to climb inside...")
+ if (do_after(user, 5 SECONDS, target))
+ translocator.afterattack(target, user, proximity_flag)
+ if (I_DISARM)
+ user.visible_message("[user] plops \the [src] onto \the [target]'s head!")
+ translocator.afterattack(target, user, proximity_flag)
+ if (I_GRAB)
+ user.visible_message("[user] begins stuffing [target] into \the [src]!")
+ if (do_after(user, 5 SECONDS, target))
+ translocator.afterattack(target, user, proximity_flag)
+ if (I_HURT)
+ user.visible_message("[user] swipes \the [src] over \the [target]!")
+ translocator.afterattack(target, user, proximity_flag)
+
+ add_attack_logs(user, target, "Teleported [target] with via \the [src]'s [translocator]!")
+ else ..()
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index b2d82a7066..8fee419597 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -1250,6 +1250,52 @@
else
return 1
+//Ryumi - Nikki Yumeno
+/obj/item/weapon/rig/nikki
+ name = "weird necklace"
+ desc = "A necklace with a brilliantly blue crystal encased in protective glass."
+ icon = 'icons/vore/custom_clothes_vr.dmi'
+ icon_override = 'icons/vore/custom_onmob_vr.dmi'
+ suit_type = "probably not magical"
+ icon_state = "nikki"
+ w_class = ITEMSIZE_SMALL // It is after all only a necklace
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0) // this isn't armor, it's a dorky frickin cape
+ siemens_coefficient = 0.9
+ slowdown = 0
+ offline_slowdown = 0
+ offline_vision_restriction = 0
+ siemens_coefficient = 0.9
+ chest_type = /obj/item/clothing/suit/fluff/nikki
+
+ req_access = list()
+ req_one_access = list()
+
+ helm_type = null
+ glove_type = null
+ boot_type = null
+
+ allowed = list(
+ /obj/item/device/flashlight,
+ /obj/item/weapon/tank,
+ /obj/item/device/suit_cooling_unit,
+ /obj/item/weapon/storage,
+ )
+
+/obj/item/weapon/rig/nikki/attackby(obj/item/W, mob/living/user)
+ //This thing accepts ONLY mounted sizeguns. That's IT. Nothing else!
+ if(open && istype(W,/obj/item/rig_module) && !istype(W,/obj/item/rig_module/mounted/sizegun))
+ to_chat(user, "\The [src] only accepts mounted size gun modules.")
+ return
+ ..()
+
+/obj/item/weapon/rig/nikki/mob_can_equip(var/mob/living/carbon/human/M, slot, disable_warning = 0) // Feel free to (try to) put Nikki's hat on! The necklace though is a flat-out no-go.
+ if(..())
+ if (M.ckey == "ryumi")
+ return 1
+ else if (M.get_active_hand() == src)
+ to_chat(M, "For some reason, the necklace seems to never quite get past your head when you try to put it on... Weird, it looked like it would fit.")
+ return 0
+
//Nickcrazy - Damon Bones Xrim
/obj/item/clothing/suit/storage/toggle/bomber/bombersec
name = "Security Bomber Jacket"
diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm
index 7fdd357d7f..863fad54fc 100644
--- a/code/modules/vore/resizing/sizegun_vr.dm
+++ b/code/modules/vore/resizing/sizegun_vr.dm
@@ -82,3 +82,8 @@
/obj/item/projectile/beam/sizelaser/grow
set_size = 2.0 //200% of current size
+
+/obj/item/weapon/gun/energy/sizegun/mounted
+ name = "mounted size gun"
+ self_recharge = 1
+ use_external_power = 1
\ No newline at end of file
diff --git a/icons/obj/rig_modules_vr.dmi b/icons/obj/rig_modules_vr.dmi
new file mode 100644
index 0000000000..1ee2c008aa
Binary files /dev/null and b/icons/obj/rig_modules_vr.dmi differ
diff --git a/icons/vore/custom_clothes_left_hand_vr.dmi b/icons/vore/custom_clothes_left_hand_vr.dmi
new file mode 100644
index 0000000000..ec5dd4b55a
Binary files /dev/null and b/icons/vore/custom_clothes_left_hand_vr.dmi differ
diff --git a/icons/vore/custom_clothes_right_hand_vr.dmi b/icons/vore/custom_clothes_right_hand_vr.dmi
new file mode 100644
index 0000000000..2fc3bdb14f
Binary files /dev/null and b/icons/vore/custom_clothes_right_hand_vr.dmi differ
diff --git a/icons/vore/custom_clothes_vr.dmi b/icons/vore/custom_clothes_vr.dmi
index 52ef983f10..80b46f62af 100644
Binary files a/icons/vore/custom_clothes_vr.dmi and b/icons/vore/custom_clothes_vr.dmi differ
diff --git a/icons/vore/custom_onmob_32x48_vr.dmi b/icons/vore/custom_onmob_32x48_vr.dmi
new file mode 100644
index 0000000000..2889db5cc0
Binary files /dev/null and b/icons/vore/custom_onmob_32x48_vr.dmi differ
diff --git a/icons/vore/custom_onmob_vr.dmi b/icons/vore/custom_onmob_vr.dmi
index 1dbfb6d011..0c723da5e8 100644
Binary files a/icons/vore/custom_onmob_vr.dmi and b/icons/vore/custom_onmob_vr.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index a047dab4b2..0dee74e1e4 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2024,6 +2024,7 @@
#include "code\modules\clothing\spacesuits\rig\modules\specific\jetpack.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\metalfoam_launcher.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm"
+#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun_vr.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\pat_module_vr.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\powersink.dm"
#include "code\modules\clothing\spacesuits\rig\modules\specific\rescue_pharm_vr.dm"