diff --git a/code/modules/vore/fluffstuff/guns/nsfw.dm b/code/modules/vore/fluffstuff/guns/nsfw.dm
index 78aa05de536..b239b58393b 100644
--- a/code/modules/vore/fluffstuff/guns/nsfw.dm
+++ b/code/modules/vore/fluffstuff/guns/nsfw.dm
@@ -1,15 +1,11 @@
// -------------- NSFW -------------
-/obj/item/weapon/gun/projectile/nsfw
+/obj/item/weapon/gun/projectile/nsfw //this one can load both medical and security cells! for ERT/admin use.
name = "cell-loaded revolver"
- desc = "Variety is the spice of life! The KHI-102b 'Nanotech Selectable-Fire Weapon', or NSFW for short, is an unholy hybrid of an ammo-driven \
- energy weapon that allows the user to mix and match their own fire modes. Up to three combinations of \
+ desc = "Variety is the spice of life! This weapon is a hybrid of the KHI-102b 'Nanotech Selectable-Fire Weapon' and the Vey-Med ML-3 'Medigun', dubbed the 'NSFW-ML3M'. \
+ It can fire both harmful and healing cells with an internal nanite fabricator and energy weapon cell loader. Up to three combinations of \
energy beams can be configured at once. Ammo not included."
catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
- description_info = "This gun is an energy weapon that uses interchangable microbatteries in a magazine. Each battery is a different beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
- description_fluff = "The Kitsuhana 'Nanotech Selectable Fire Weapon' allows one to customize their loadout in the field, or before deploying, to achieve various results in a weapon they are already familiar with wielding."
- description_antag = ""
-
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "nsfw"
@@ -142,14 +138,35 @@
charge_bar.color = batt_color
add_overlay(charge_bar)
+/obj/item/weapon/gun/projectile/nsfw/combat
+ name = "cell-loaded revolver"
+ desc = "Variety is the spice of life! The KHI-102b 'Nanotech Selectable-Fire Weapon', or NSFW for short, is an unholy hybrid of an ammo-driven \
+ energy weapon that allows the user to mix and match their own fire modes. Up to three combinations of \
+ energy beams can be configured at once. Ammo not included."
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
+
+ description_info = "This gun is an energy weapon that uses interchangable microbatteries in a magazine. Each battery is a different beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
+ description_fluff = "The Kitsuhana 'Nanotech Selectable Fire Weapon' allows one to customize their loadout in the field, or before deploying, to achieve various results in a weapon they are already familiar with wielding."
+ description_antag = ""
+ allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag/combat)
+
+
+/obj/item/weapon/gun/projectile/nsfw/medical
+ name = "\improper ML-3 \'Medigun\'"
+ desc = "The ML-3 'Medigun', or ML3M for short, is a powerful cell-based ranged healing device based on the KHI-102b NSFW. \
+ It uses an internal nanite fabricator, powered and controlled by discrete cells, to deliver a variety of effects at range. Up to three combinations of \
+ healing beams can be configured at once. Ammo not included."
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
+
+ description_info = "This is a ranged healing device that uses interchangable nanite discharge cells in a magazine. Each cell is a different healing beam type, and up to three can be loaded in the magazine. Each battery usually provides four discharges of that beam type, and multiple from the same type may be loaded to increase the number of shots for that type."
+ description_fluff = "The Vey-Med ML-3 'Medigun' allows one to customize their loadout in the field, or before deploying, to allow emergency response personnel to deliver a variety of ranged healing options."
+ description_antag = ""
+ allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag/medical)
+
// The Magazine //
/obj/item/ammo_magazine/nsfw_mag
name = "microbattery magazine"
- desc = "A microbattery holder for the \'NSFW\'"
- catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
-
- description_info = "This magazine holds NSFW microbatteries to power the NSFW handgun. Up to three can be loaded at once, and each provides four shots of their respective energy type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
-
+ desc = "A microbattery holder for a cell-based variable weapon."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "nsfw_mag"
caliber = "nsfw"
@@ -157,6 +174,9 @@
ammo_type = /obj/item/ammo_casing/nsfw_batt
initial_ammo = 0
max_ammo = 3
+ var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags
+ var/capname = "nsfw_mag" //as above
+ var/chargename = "nsfw_mag" //as above
mag_type = MAGAZINE
var/list/modes = list()
@@ -166,24 +186,45 @@
if(!stored_ammo.len)
return //Why bother
- var/x_offset = 5
var/current = 0
for(var/B in stored_ammo)
var/obj/item/ammo_casing/nsfw_batt/batt = B
- var/image/cap = image(icon, icon_state = "[initial(icon_state)]_cap")
+ var/image/cap = image(icon, icon_state = "[capname]_cap")
cap.color = batt.type_color
cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset
add_overlay(cap)
if(batt.shots_left)
var/ratio = CEILING(((batt.shots_left / initial(batt.shots_left)) * 4), 1) //4 is how many lights we have a sprite for
- var/image/charge = image(icon, icon_state = "[initial(icon_state)]_charge-[ratio]")
+ var/image/charge = image(icon, icon_state = "[chargename]_charge-[ratio]")
charge.color = "#29EAF4" //Could use battery color but eh.
charge.pixel_x = current * x_offset
add_overlay(charge)
current++ //Increment for offsets
+/obj/item/ammo_magazine/nsfw_mag/combat //security
+ name = "microbattery magazine"
+ desc = "A microbattery holder for the \'NSFW\'"
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
+ description_info = "This magazine holds NSFW microbatteries to power the NSFW handgun. Up to three can be loaded at once, and each provides four shots of their respective energy type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
+ ammo_type = /obj/item/ammo_casing/nsfw_batt/combat
+
+/obj/item/ammo_magazine/nsfw_mag/medical //medical
+ name = "nanite magazine"
+ desc = "A nanite fabrication magazine for the \'ML-3/M\'"
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
+ description_info = "This magazine holds self-charging nanite fabricators to power the ML-3 'Medigun'. Up to three can be loaded at once, and each provides four shots of their respective healing type. Loading multiple of the same type will provide additional shots of that type. The batteries can be recharged in a normal recharger."
+ ammo_type = /obj/item/ammo_casing/nsfw_batt/medical
+ icon_state = "ml3m_mag"
+
+/obj/item/ammo_magazine/nsfw_mag/medical/advanced
+ name = "advanced nanite magazine"
+ desc = "A nanite discharge cell for the \'ML-3/M\'. This one is a more advanced version which can hold six individual nanite discharge cells."
+ max_ammo = 6
+ x_offset = 3
+ icon_state = "ml3m_mag_extended"
+
// The Casing //
/obj/item/ammo_casing/nsfw_batt
name = "\'NSFW\' microbattery - UNKNOWN"
@@ -194,10 +235,10 @@
slot_flags = SLOT_BELT | SLOT_EARS
throwforce = 1
w_class = ITEMSIZE_TINY
+ var/shots_left = 4
leaves_residue = 0
caliber = "nsfw"
- var/shots_left = 4
var/type_color = null
var/type_name = null
projectile_type = /obj/item/projectile/beam
@@ -219,31 +260,38 @@
shots_left--
// Specific batteries //
-/obj/item/ammo_casing/nsfw_batt/lethal
+// Security (Combat) //
+
+/obj/item/ammo_casing/nsfw_batt/combat
+ name = "\'NSFW\' microbattery - UNKNOWN"
+ desc = "A miniature battery for an energy weapon."
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
+
+/obj/item/ammo_casing/nsfw_batt/combat/lethal
name = "\'NSFW\' microbattery - LETHAL"
type_color = "#bf3d3d"
type_name = "LETHAL"
projectile_type = /obj/item/projectile/beam
-/obj/item/ammo_casing/nsfw_batt/stun
+/obj/item/ammo_casing/nsfw_batt/combat/stun
name = "\'NSFW\' microbattery - STUN"
type_color = "#0f81bc"
type_name = "STUN"
projectile_type = /obj/item/projectile/beam/stun/blue
-/obj/item/ammo_casing/nsfw_batt/net
+/obj/item/ammo_casing/nsfw_batt/combat/net
name = "\'NSFW\' microbattery - NET"
type_color = "#43f136"
type_name = "NET"
projectile_type = /obj/item/projectile/beam/energy_net
-/obj/item/ammo_casing/nsfw_batt/xray
+/obj/item/ammo_casing/nsfw_batt/combat/xray
name = "\'NSFW\' microbattery - XRAY"
type_color = "#32c025"
type_name = "XRAY"
projectile_type = /obj/item/projectile/beam/xray
-/obj/item/ammo_casing/nsfw_batt/shotstun
+/obj/item/ammo_casing/nsfw_batt/combat/shotstun
name = "\'NSFW\' microbattery - SCATTERSTUN"
type_color = "#88ffff"
type_name = "SCATTERSTUN"
@@ -261,13 +309,13 @@
sharp = 0
check_armour = "melee"
-/obj/item/ammo_casing/nsfw_batt/ion
+/obj/item/ammo_casing/nsfw_batt/combat/ion
name = "\'NSFW\' microbattery - ION"
type_color = "#d084d6"
type_name = "ION"
projectile_type = /obj/item/projectile/ion/small
-/obj/item/ammo_casing/nsfw_batt/stripper
+/obj/item/ammo_casing/nsfw_batt/combat/stripper
name = "\'NSFW\' microbattery - STRIPPER"
type_color = "#fc8d0f"
type_name = "STRIPPER"
@@ -297,7 +345,7 @@
//Hats can stay! Most other things fall off with removing these.
..()
-/obj/item/ammo_casing/nsfw_batt/final
+/obj/item/ammo_casing/nsfw_batt/combat/final
name = "\'NSFW\' microbattery - FINAL OPTION"
type_color = "#fcfc0f"
type_name = "FINAL OPTION" //Doesn't look good in yellow in chat
@@ -327,44 +375,333 @@
L.gib()
..()
-/*
-/obj/item/ammo_casing/nsfw_batt/shrink
- name = "\'NSFW\' microbattery - SHRINK"
- type_color = "#910ffc"
- type_name = "SHRINK"
- projectile_type = /obj/item/projectile/beam/shrinklaser
-/obj/item/ammo_casing/nsfw_batt/grow
- name = "\'NSFW\' microbattery - GROW"
- type_color = "#fc0fdc"
- type_name = "GROW"
- projectile_type = /obj/item/projectile/beam/growlaser
-*/
/obj/item/weapon/storage/secure/briefcase/nsfw_pack
name = "\improper KHI-102b \'NSFW\' gun kit"
desc = "A storage case for a multi-purpose handgun. Variety hour!"
max_w_class = ITEMSIZE_NORMAL
+ w_class = ITEMSIZE_NORMAL
/obj/item/weapon/storage/secure/briefcase/nsfw_pack/New()
..()
- new /obj/item/weapon/gun/projectile/nsfw(src)
- new /obj/item/ammo_magazine/nsfw_mag(src)
- for(var/path in subtypesof(/obj/item/ammo_casing/nsfw_batt))
+ new /obj/item/weapon/gun/projectile/nsfw/combat(src)
+ new /obj/item/ammo_magazine/nsfw_mag/combat(src)
+ for(var/path in subtypesof(/obj/item/ammo_casing/nsfw_batt/combat))
new path(src)
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos
name = "\improper KHI-102b \'NSFW\' gun kit"
desc = "A storage case for a multi-purpose handgun. Variety hour!"
max_w_class = ITEMSIZE_NORMAL
+ w_class = ITEMSIZE_NORMAL
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos/New()
..()
- new /obj/item/weapon/gun/projectile/nsfw(src)
- new /obj/item/ammo_magazine/nsfw_mag(src)
- new /obj/item/ammo_casing/nsfw_batt/lethal(src)
- new /obj/item/ammo_casing/nsfw_batt/lethal(src)
- new /obj/item/ammo_casing/nsfw_batt/stun(src)
- new /obj/item/ammo_casing/nsfw_batt/stun(src)
- new /obj/item/ammo_casing/nsfw_batt/net(src)
- new /obj/item/ammo_casing/nsfw_batt/ion(src)
+ new /obj/item/weapon/gun/projectile/nsfw/combat(src)
+ new /obj/item/ammo_magazine/nsfw_mag/combat(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/lethal(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/lethal(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/stun(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/stun(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/net(src)
+ new /obj/item/ammo_casing/nsfw_batt/combat/ion(src)
+
+// Medical //
+
+/obj/item/ammo_casing/nsfw_batt/medical
+ name = "\'ML-3/M\' nanite cell - UNKNOWN"
+ desc = "A miniature nanite fabricator for a medigun."
+ catalogue_data = list(/datum/category_item/catalogue/information/organization/vey_med)
+ icon_state = "ml3m_batt"
+
+/obj/item/projectile/beam/ML3M
+ name = "\improper healing beam"
+ icon_state = "medbeam"
+ nodamage = 1
+ damage = 0
+ check_armour = "laser"
+ light_color = "#80F5FF"
+
+ combustion = FALSE
+
+ muzzle_type = /obj/effect/projectile/muzzle/medigun
+ tracer_type = /obj/effect/projectile/tracer/medigun
+ impact_type = /obj/effect/projectile/impact/medigun
+
+/obj/item/projectile/beam/ML3M/on_hit(var/mob/living/carbon/human/target) //what does it do when it hits someone?
+ return
+
+/obj/item/ammo_casing/nsfw_batt/medical/brute
+ name = "\'ML-3/M\' nanite cell - BRUTE"
+ type_color = "#BF0000"
+ type_name = "BRUTE"
+ projectile_type = /obj/item/projectile/beam/ML3M/brute
+
+/obj/item/projectile/beam/ML3M/brute/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustBruteLoss(-10)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/burn
+ name = "\'ML-3/M\' nanite cell - BURN"
+ type_color = "#FF8000"
+ type_name = "BURN"
+ projectile_type = /obj/item/projectile/beam/ML3M/burn
+
+/obj/item/projectile/beam/ML3M/burn/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustFireLoss(-10)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/stabilize
+ name = "\'ML-3/M\' nanite cell - STABILIZE" //Disinfects all open wounds, cures oxy damage
+ type_color = "#0080FF"
+ type_name = "STABILIZE"
+ projectile_type = /obj/item/projectile/beam/ML3M/stabilize
+
+/obj/item/projectile/beam/ML3M/stabilize/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustOxyLoss(-30)
+ for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
+ var/obj/item/organ/external/O = target.organs_by_name[name]
+ for (var/datum/wound/W in O.wounds)
+ if (W.internal)
+ continue
+ W.disinfect()
+ target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
+ else
+ return 1
+
+/datum/modifier/stabilize
+ name = "stabilize"
+ desc = "Your injuries are stabilized and your pain abates!"
+ mob_overlay_state = "cyan_sparkles"
+ stacks = MODIFIER_STACK_EXTEND
+ pain_immunity = TRUE
+ bleeding_rate_percent = 0.1 //only a little
+ incoming_oxy_damage_percent = 0
+
+/obj/item/ammo_casing/nsfw_batt/medical/tox
+ name = "\'ML-3/M\' nanite cell - TOX"
+ type_color = "#00A000"
+ type_name = "TOX"
+ projectile_type = /obj/item/projectile/beam/ML3M/tox
+
+/obj/item/projectile/beam/ML3M/tox/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustToxLoss(-10)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/omni
+ name = "\'ML-3/M\' nanite cell - OMNI"
+ type_color = "#8040FF"
+ type_name = "OMNI"
+ projectile_type = /obj/item/projectile/beam/ML3M/omni
+
+/obj/item/projectile/beam/ML3M/omni/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustBruteLoss(-5)
+ target.adjustFireLoss(-5)
+ target.adjustToxLoss(-5)
+ target.adjustOxyLoss(-5)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/antirad
+ name = "\'ML-3/M\' nanite cell - OMNI"
+ type_color = "#008000"
+ type_name = "ANTIRAD"
+ projectile_type = /obj/item/projectile/beam/ML3M/antirad
+
+/obj/item/projectile/beam/ML3M/antirad/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustToxLoss(-5)
+ target.radiation = max(target.radiation - 350, 0) //same as 5 units of arithrazine, sans the brute damage
+ else
+ return 1
+
+
+/obj/item/ammo_casing/nsfw_batt/medical/brute2
+ name = "\'ML-3/M\' nanite cell - BRUTE-II"
+ type_color = "#BF0000"
+ type_name = "BRUTE-II"
+ projectile_type = /obj/item/projectile/beam/ML3M/brute2
+
+/obj/item/projectile/beam/ML3M/brute2/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustBruteLoss(-20)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/burn2
+ name = "\'ML-3/M\' nanite cell - BURN-II"
+ type_color = "#FF8000"
+ type_name = "BURN-II"
+ projectile_type = /obj/item/projectile/beam/ML3M/burn2
+
+/obj/item/projectile/beam/ML3M/burn2/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustFireLoss(-20)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/stabilize2
+ name = "\'ML-3/M\' nanite cell - STABILIZE-II" //Disinfects and bandages all open wounds, cures all oxy damage
+ type_color = "#0080FF"
+ type_name = "STABILIZE-II"
+ projectile_type = /obj/item/projectile/beam/ML3M/stabilize2
+
+/obj/item/projectile/beam/ML3M/stabilize2/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustOxyLoss(-200)
+ for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
+ var/obj/item/organ/external/O = target.organs_by_name[name]
+ for (var/datum/wound/W in O.wounds)
+ if(W.internal)
+ continue
+ if(O.is_bandaged() == FALSE)
+ W.bandage()
+ if(O.is_salved() == FALSE)
+ W.salve()
+ W.disinfect()
+ target.add_modifier(/datum/modifier/stabilize, 20 SECONDS)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/omni2
+ name = "\'ML-3/M\' nanite cell - OMNI-II"
+ type_color = "#8040FF"
+ type_name = "OMNI-II"
+ projectile_type = /obj/item/projectile/beam/ML3M/omni2
+
+/obj/item/projectile/beam/ML3M/omni2/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustBruteLoss(-10)
+ target.adjustFireLoss(-10)
+ target.adjustToxLoss(-10)
+ target.adjustOxyLoss(-10)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/tox2
+ name = "\'ML-3/M\' nanite cell - TOX-II"
+ type_color = "#00A000"
+ type_name = "TOX-II"
+ projectile_type = /obj/item/projectile/beam/ML3M/tox2
+
+/obj/item/projectile/beam/ML3M/tox2/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.adjustToxLoss(-20)
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/haste
+ name = "\'ML-3/M\' nanite cell - HASTE"
+ type_color = "#FF3300"
+ type_name = "HASTE"
+ projectile_type = /obj/item/projectile/beam/ML3M/haste
+
+/obj/item/projectile/beam/ML3M/haste/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.add_modifier(/datum/modifier/ml3mhaste, 20 SECONDS)
+ else
+ return 1
+
+/datum/modifier/ml3mhaste
+ name = "haste"
+ desc = "You can move much faster!"
+ mob_overlay_state = "haste"
+ stacks = MODIFIER_STACK_EXTEND
+ slowdown = -1 //a little faster!
+ evasion = 1.25 //and a little harder to hit!
+
+/obj/item/ammo_casing/nsfw_batt/medical/resistance
+ name = "\'ML-3/M\' nanite cell - RESIST"
+ type_color = "#555555"
+ type_name = "RESIST"
+ projectile_type = /obj/item/projectile/beam/ML3M/resistance
+
+/obj/item/projectile/beam/ML3M/resistance/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.add_modifier(/datum/modifier/resistance, 20 SECONDS)
+ else
+ return 1
+
+/datum/modifier/resistance
+ name = "resistance"
+ desc = "You resist 25% of all incoming damage and stuns!"
+ mob_overlay_state = "repel_missiles"
+ stacks = MODIFIER_STACK_EXTEND
+ disable_duration_percent = 0.75
+ incoming_damage_percent = 0.75
+
+/obj/item/ammo_casing/nsfw_batt/medical/revival
+ name = "\'ML-3/M\' nanite cell - REVIVAL"
+ type_color = "#669900"
+ type_name = "REVIVAL"
+ projectile_type = /obj/item/projectile/beam/ML3M/resistance
+
+/obj/item/projectile/beam/ML3M/revival/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ if(target.stat == DEAD)
+ target.adjustBruteLoss(-50)
+ target.adjustFireLoss(-50)
+ target.adjustToxLoss(-50)
+ target.adjustOxyLoss(-200)
+ else
+ return 1
+
+/datum/modifier/resistance
+ name = "resistance"
+ desc = "You resist 25% of all incoming damage and stuns!"
+ mob_overlay_state = "repel_missiles"
+ stacks = MODIFIER_STACK_EXTEND
+ disable_duration_percent = 0.75
+ incoming_damage_percent = 0.75
+
+// Illegal cells!
+/obj/item/ammo_casing/nsfw_batt/medical/shrink
+ name = "\'ML-3/M\' nanite cell - SHRINK"
+ type_color = "#910ffc"
+ type_name = "SHRINK"
+ projectile_type = /obj/item/projectile/beam/ML3M/shrink
+
+/obj/item/projectile/beam/ML3M/shrink/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.resize(0.5)
+ target.show_message(" The beam fires into your body, changing your size!")
+ target.updateicon()
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/grow
+ name = "\'ML-3/M\' nanite cell - GROW"
+ type_color = "#fc0fdc"
+ type_name = "GROW"
+ projectile_type = /obj/item/projectile/beam/ML3M/grow
+
+/obj/item/projectile/beam/ML3M/grow/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.resize(2.0)
+ target.show_message(" The beam fires into your body, changing your size!")
+ target.updateicon()
+ else
+ return 1
+
+/obj/item/ammo_casing/nsfw_batt/medical/normalsize
+ name = "\'ML-3/M\' nanite cell - NORMALSIZE"
+ type_color = "#C70FEC"
+ type_name = "NORMALSIZE"
+ projectile_type = /obj/item/projectile/beam/ML3M/normalsize
+
+/obj/item/projectile/beam/ML3M/normalsize/on_hit(var/mob/living/carbon/human/target)
+ if(istype(target, /mob/living/carbon/human))
+ target.resize(1)
+ target.show_message(" The beam fires into your body, changing your size!")
+ target.updateicon()
+ else
+ return 1
\ No newline at end of file
diff --git a/code/modules/vore/resizing/sizegun_vr.dm b/code/modules/vore/resizing/sizegun_vr.dm
index 705bf3538d7..984e05f8edf 100644
--- a/code/modules/vore/resizing/sizegun_vr.dm
+++ b/code/modules/vore/resizing/sizegun_vr.dm
@@ -82,3 +82,11 @@
H.updateicon()
else
return 1
+
+
+/obj/item/projectile/beam/sizelaser/shrink
+ set_size = 0.5 //50% of current size
+
+
+/obj/item/projectile/beam/sizelaser/grow
+ set_size = 2.0 //200% of current size
\ No newline at end of file
diff --git a/icons/obj/ammo_vr.dmi b/icons/obj/ammo_vr.dmi
index b5defc37829..2fa66e4424b 100644
Binary files a/icons/obj/ammo_vr.dmi and b/icons/obj/ammo_vr.dmi differ
diff --git a/icons/vore/custom_guns_vr.dmi b/icons/vore/custom_guns_vr.dmi
index c09ac65d222..f1e492aa285 100644
Binary files a/icons/vore/custom_guns_vr.dmi and b/icons/vore/custom_guns_vr.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index 392435080bc..53875549402 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -972,7 +972,6 @@
#include "code\game\objects\items\devices\laserpointer.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\locker_painter.dm"
-#include "code\game\objects\items\devices\medbeam.dm"
#include "code\game\objects\items\devices\megaphone.dm"
#include "code\game\objects\items\devices\modkit.dm"
#include "code\game\objects\items\devices\multitool.dm"