diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 691492a88fd..e9997425078 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -10,7 +10,7 @@
active_power_usage = 40000 //40 kW
var/efficiency = 40000 //will provide the modified power rate when upgraded
var/obj/item/charging = null
- var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries
+ var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/modular_computer, /obj/item/weapon/computer_hardware/battery_module, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_magazine/smart, /obj/item/device/flash, /obj/item/ammo_casing/microbattery) //VOREStation Add - NSFW Batteries
var/icon_state_charged = "recharger2"
var/icon_state_charging = "recharger1"
var/icon_state_idle = "recharger0" //also when unpowered
@@ -72,7 +72,7 @@
if(EW.use_external_power)
to_chat(user, "\The [EW] has no recharge port.")
return
- else if(!G.get_cell() && !istype(G, /obj/item/ammo_casing/nsfw_batt)) //VOREStation Edit: NSFW charging
+ else if(!G.get_cell() && !istype(G, /obj/item/ammo_casing/microbattery)) //VOREStation Edit: NSFW charging
to_chat(user, "\The [G] does not have a battery installed.")
return
@@ -157,8 +157,8 @@
update_use_power(1)
//VOREStation Add - NSFW Batteries
- else if(istype(charging, /obj/item/ammo_casing/nsfw_batt))
- var/obj/item/ammo_casing/nsfw_batt/batt = charging
+ else if(istype(charging, /obj/item/ammo_casing/microbattery))
+ var/obj/item/ammo_casing/microbattery/batt = charging
if(batt.shots_left >= initial(batt.shots_left))
icon_state = icon_state_charged
update_use_power(1)
diff --git a/code/modules/vore/fluffstuff/guns/nsfw.dm b/code/modules/vore/fluffstuff/guns/nsfw.dm
index 26a6c9c5c19..983de082eb0 100644
--- a/code/modules/vore/fluffstuff/guns/nsfw.dm
+++ b/code/modules/vore/fluffstuff/guns/nsfw.dm
@@ -1,6 +1,6 @@
// -------------- NSFW -------------
-/obj/item/weapon/gun/projectile/nsfw //this one can load both medical and security cells! for ERT/admin use.
- name = "cell-loaded revolver"
+/obj/item/weapon/gun/projectile/cell_loaded //this one can load both medical and security cells! for ERT/admin use.
+ name = "multipurpose cell-loaded revolver"
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."
@@ -20,21 +20,21 @@
load_method = MAGAZINE //Nyeh heh hehhh.
magazine_type = null
- allowed_magazines = list(/obj/item/ammo_magazine/nsfw_mag)
+ allowed_magazines = list(/obj/item/ammo_magazine/cell_mag)
handle_casings = HOLD_CASINGS //Don't eject batteries!
recoil = 0
var/charge_left = 0
var/max_charge = 0
charge_sections = 5
-/obj/item/weapon/gun/projectile/nsfw/consume_next_projectile()
+/obj/item/weapon/gun/projectile/cell_loaded/consume_next_projectile()
if(chambered && ammo_magazine)
- var/obj/item/ammo_casing/nsfw_batt/batt = chambered
+ var/obj/item/ammo_casing/microbattery/batt = chambered
if(batt.shots_left)
return new chambered.projectile_type()
else
for(var/B in ammo_magazine.stored_ammo)
- var/obj/item/ammo_casing/nsfw_batt/other_batt = B
+ var/obj/item/ammo_casing/microbattery/other_batt = B
if(istype(other_batt,chambered.type) && other_batt.shots_left)
switch_to(other_batt)
return new chambered.projectile_type()
@@ -42,25 +42,25 @@
return null
-/obj/item/weapon/gun/projectile/nsfw/proc/update_charge()
+/obj/item/weapon/gun/projectile/cell_loaded/proc/update_charge()
charge_left = 0
max_charge = 0
if(!chambered)
return
- var/obj/item/ammo_casing/nsfw_batt/batt = chambered
+ var/obj/item/ammo_casing/microbattery/batt = chambered
charge_left = batt.shots_left
max_charge = initial(batt.shots_left)
if(ammo_magazine) //Crawl to find more
for(var/B in ammo_magazine.stored_ammo)
- var/obj/item/ammo_casing/nsfw_batt/bullet = B
+ var/obj/item/ammo_casing/microbattery/bullet = B
if(istype(bullet,batt.type))
charge_left += bullet.shots_left
max_charge += initial(bullet.shots_left)
-/obj/item/weapon/gun/projectile/nsfw/proc/switch_to(obj/item/ammo_casing/nsfw_batt/new_batt)
+/obj/item/weapon/gun/projectile/cell_loaded/proc/switch_to(obj/item/ammo_casing/microbattery/new_batt)
if(ishuman(loc))
if(chambered && new_batt.type == chambered.type)
to_chat(loc,"\The [src] is now using the next [new_batt.type_name] power cell.")
@@ -71,7 +71,7 @@
update_charge()
update_icon()
-/obj/item/weapon/gun/projectile/nsfw/attack_self(mob/user)
+/obj/item/weapon/gun/projectile/cell_loaded/attack_self(mob/user)
if(!chambered)
return
@@ -85,38 +85,38 @@
for(var/index in 1 to stored_ammo.len)
var/true_index = ((our_slot + index - 1) % stored_ammo.len) + 1 // Stupid ONE BASED lists!
- var/obj/item/ammo_casing/nsfw_batt/next_batt = stored_ammo[true_index]
+ var/obj/item/ammo_casing/microbattery/next_batt = stored_ammo[true_index]
if(chambered != next_batt && !istype(next_batt, chambered.type))
switch_to(next_batt)
break
/*
-/obj/item/weapon/gun/projectile/nsfw/special_check(mob/user)
+/obj/item/weapon/gun/projectile/cell_loaded/special_check(mob/user)
if(!chambered)
return
- var/obj/item/ammo_casing/nsfw_batt/batt = chambered
+ var/obj/item/ammo_casing/microbattery/batt = chambered
if(!batt.shots_left)
return FALSE
return TRUE
*/
-/obj/item/weapon/gun/projectile/nsfw/load_ammo(var/obj/item/A, mob/user)
+/obj/item/weapon/gun/projectile/cell_loaded/load_ammo(var/obj/item/A, mob/user)
. = ..()
if(ammo_magazine && ammo_magazine.stored_ammo.len)
switch_to(ammo_magazine.stored_ammo[1])
-/obj/item/weapon/gun/projectile/nsfw/unload_ammo(mob/user, var/allow_dump=1)
+/obj/item/weapon/gun/projectile/cell_loaded/unload_ammo(mob/user, var/allow_dump=1)
chambered = null
return ..()
-/obj/item/weapon/gun/projectile/nsfw/update_icon()
+/obj/item/weapon/gun/projectile/cell_loaded/update_icon()
update_charge()
cut_overlays()
if(!chambered)
return
- var/obj/item/ammo_casing/nsfw_batt/batt = chambered
+ var/obj/item/ammo_casing/microbattery/batt = chambered
var/batt_color = batt.type_color //Used many times
//Mode bar
@@ -138,20 +138,28 @@
charge_bar.color = batt_color
add_overlay(charge_bar)
-/obj/item/weapon/gun/projectile/nsfw/combat
+/obj/item/weapon/gun/projectile/cell_loaded/combat
+ name = "prototype cell-loaded revolver"
+ desc = "Variety is the spice of life! A prototype based on 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 two combinations of \
+ energy beams can be configured at once. Ammo not included."
+
+ 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_antag = ""
+ allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat/prototype)
+
+/obj/item/weapon/gun/projectile/cell_loaded/combat/advanced
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 weapon that allows the user to mix and match their own fire modes. Up to four 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)
+ allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/combat)
-/obj/item/weapon/gun/projectile/nsfw/medical
+/obj/item/weapon/gun/projectile/cell_loaded/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 \
@@ -162,9 +170,9 @@
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)
+ allowed_magazines = list(/obj/item/ammo_magazine/cell_mag/medical)
-/obj/item/weapon/gun/projectile/nsfw/medical/cmo
+/obj/item/weapon/gun/projectile/cell_loaded/medical/cmo
name = "\improper Advanced ML-3 \'Medigun\'"
desc = "This is a variation on the ML-3 'Medigun', a powerful cell-based ranged healing device based on the KHI-102b NSFW. \
It has an extended sight for increased accuracy, and is capable of holding large magazines. Ammo not included."
@@ -173,14 +181,14 @@
// The Magazine //
-/obj/item/ammo_magazine/nsfw_mag
+/obj/item/ammo_magazine/cell_mag
name = "microbattery magazine"
desc = "A microbattery holder for a cell-based variable weapon."
icon = 'icons/obj/ammo_vr.dmi'
- icon_state = "nsfw_mag"
+ icon_state = "cell_mag"
caliber = "nsfw"
matter = list(DEFAULT_WALL_MATERIAL = 1680, "glass" = 2000)
- ammo_type = /obj/item/ammo_casing/nsfw_batt
+ ammo_type = /obj/item/ammo_casing/microbattery
initial_ammo = 0
max_ammo = 3
var/x_offset = 5 //for update_icon() shenanigans- moved here so it can be adjusted for bigger mags
@@ -190,14 +198,30 @@
var/list/modes = list()
-/obj/item/ammo_magazine/nsfw_mag/update_icon()
+/obj/item/ammo_magazine/cell_mag/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/ammo_casing/microbattery))
+ var/obj/item/ammo_casing/microbattery/B = W
+ if(!istype(B, ammo_type))
+ to_chat(user, "[B] does not fit into [src].")
+ return
+ if(stored_ammo.len >= max_ammo)
+ to_chat(user, "[src] is full!")
+ return
+ user.remove_from_mob(B)
+ B.loc = src
+ stored_ammo.Add(B)
+ update_icon()
+ playsound(user.loc, 'sound/weapons/flipblade.ogg', 50, 1)
+ update_icon()
+
+/obj/item/ammo_magazine/cell_mag/update_icon()
cut_overlays()
if(!stored_ammo.len)
return //Why bother
var/current = 0
for(var/B in stored_ammo)
- var/obj/item/ammo_casing/nsfw_batt/batt = B
+ var/obj/item/ammo_casing/microbattery/batt = B
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
@@ -212,22 +236,32 @@
current++ //Increment for offsets
-/obj/item/ammo_magazine/nsfw_mag/combat //security
+/obj/item/ammo_magazine/cell_mag/combat //security
name = "microbattery magazine"
desc = "A microbattery holder for the \'NSFW\'"
+ icon_state = "nsfw_mag"
+ max_ammo = 4
+ x_offset = 4
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
+ ammo_type = /obj/item/ammo_casing/microbattery/combat
-/obj/item/ammo_magazine/nsfw_mag/medical //medical
+/obj/item/ammo_magazine/cell_mag/combat/prototype
+ name = "prototype microbattery magazine"
+ icon_state = "nsfw_mag_prototype"
+ max_ammo = 2
+ x_offset = 6
+ catalogue_data = null
+
+/obj/item/ammo_magazine/cell_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
+ ammo_type = /obj/item/ammo_casing/microbattery/medical
icon_state = "ml3m_mag"
-/obj/item/ammo_magazine/nsfw_mag/medical/advanced
+/obj/item/ammo_magazine/cell_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
@@ -235,7 +269,7 @@
icon_state = "ml3m_mag_extended"
// The Casing //
-/obj/item/ammo_casing/nsfw_batt
+/obj/item/ammo_casing/microbattery
name = "\'NSFW\' microbattery - UNKNOWN"
desc = "A miniature battery for an energy weapon."
catalogue_data = list(/datum/category_item/catalogue/information/organization/khi)
@@ -252,55 +286,55 @@
var/type_name = null
projectile_type = /obj/item/projectile/beam
-/obj/item/ammo_casing/nsfw_batt/Initialize()
+/obj/item/ammo_casing/microbattery/Initialize()
. = ..()
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
update_icon()
-/obj/item/ammo_casing/nsfw_batt/update_icon()
+/obj/item/ammo_casing/microbattery/update_icon()
cut_overlays()
var/image/ends = image(icon, icon_state = "[initial(icon_state)]_ends")
ends.color = type_color
add_overlay(ends)
-/obj/item/ammo_casing/nsfw_batt/expend()
+/obj/item/ammo_casing/microbattery/expend()
shots_left--
// Specific batteries //
// Security (Combat) //
-/obj/item/ammo_casing/nsfw_batt/combat
+/obj/item/ammo_casing/microbattery/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
+/obj/item/ammo_casing/microbattery/combat/lethal
name = "\'NSFW\' microbattery - LETHAL"
type_color = "#bf3d3d"
type_name = "LETHAL"
projectile_type = /obj/item/projectile/beam
-/obj/item/ammo_casing/nsfw_batt/combat/stun
+/obj/item/ammo_casing/microbattery/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/combat/net
+/obj/item/ammo_casing/microbattery/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/combat/xray
+/obj/item/ammo_casing/microbattery/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/combat/shotstun
+/obj/item/ammo_casing/microbattery/combat/shotstun
name = "\'NSFW\' microbattery - SCATTERSTUN"
type_color = "#88ffff"
type_name = "SCATTERSTUN"
@@ -318,13 +352,13 @@
sharp = 0
check_armour = "melee"
-/obj/item/ammo_casing/nsfw_batt/combat/ion
+/obj/item/ammo_casing/microbattery/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/combat/stripper
+/obj/item/ammo_casing/microbattery/combat/stripper
name = "\'NSFW\' microbattery - STRIPPER"
type_color = "#fc8d0f"
type_name = "STRIPPER"
@@ -354,7 +388,7 @@
//Hats can stay! Most other things fall off with removing these.
..()
-/obj/item/ammo_casing/nsfw_batt/combat/final
+/obj/item/ammo_casing/microbattery/combat/final
name = "\'NSFW\' microbattery - FINAL OPTION"
type_color = "#fcfc0f"
type_name = "FINAL OPTION" //Doesn't look good in yellow in chat
@@ -393,9 +427,9 @@
/obj/item/weapon/storage/secure/briefcase/nsfw_pack/New()
..()
- 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 /obj/item/weapon/gun/projectile/cell_loaded/combat(src)
+ new /obj/item/ammo_magazine/cell_mag/combat(src)
+ for(var/path in subtypesof(/obj/item/ammo_casing/microbattery/combat))
new path(src)
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos
@@ -406,14 +440,27 @@
/obj/item/weapon/storage/secure/briefcase/nsfw_pack_hos/New()
..()
- 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)
+ new /obj/item/weapon/gun/projectile/cell_loaded/combat(src)
+ new /obj/item/ammo_magazine/cell_mag/combat(src)
+ new /obj/item/ammo_casing/microbattery/combat/lethal(src)
+ new /obj/item/ammo_casing/microbattery/combat/lethal(src)
+ new /obj/item/ammo_casing/microbattery/combat/stun(src)
+ new /obj/item/ammo_casing/microbattery/combat/stun(src)
+ new /obj/item/ammo_casing/microbattery/combat/net(src)
+ new /obj/item/ammo_casing/microbattery/combat/ion(src)
+
+/obj/item/weapon/storage/secure/briefcase/ml3m_pack
+ name = "\improper Advanced ML-3 \'Medigun\' kit"
+ desc = "A storage case for a multi-purpose healing gun. Variety hour!"
+ w_class = ITEMSIZE_NORMAL
+ max_w_class = ITEMSIZE_NORMAL
+
+/obj/item/weapon/storage/secure/briefcase/ml3m_pack/New()
+ ..()
+ new /obj/item/weapon/gun/projectile/cell_loaded/medical/cmo(src)
+ new /obj/item/ammo_magazine/cell_mag/medical/advanced(src)
+ for(var/path in subtypesof(/obj/item/ammo_casing/microbattery/medical))
+ new path(src)
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med
name = "\improper ML-3 \'Medigun\' kit"
@@ -423,11 +470,11 @@
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_med/New()
..()
- new /obj/item/weapon/gun/projectile/nsfw/medical(src)
- new /obj/item/ammo_magazine/nsfw_mag/medical(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/brute(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/burn(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/stabilize(src)
+ new /obj/item/weapon/gun/projectile/cell_loaded/medical(src)
+ new /obj/item/ammo_magazine/cell_mag/medical(src)
+ new /obj/item/ammo_casing/microbattery/medical/brute(src)
+ new /obj/item/ammo_casing/microbattery/medical/burn(src)
+ new /obj/item/ammo_casing/microbattery/medical/stabilize(src)
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo
name = "\improper Advanced ML-3 \'Medigun\' kit"
@@ -437,25 +484,24 @@
/obj/item/weapon/storage/secure/briefcase/ml3m_pack_cmo/New()
..()
- new /obj/item/weapon/gun/projectile/nsfw/medical/cmo(src)
- new /obj/item/ammo_magazine/nsfw_mag/medical/advanced(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/brute2(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/brute2(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/burn2(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/burn2(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/stabilize2(src)
- new /obj/item/ammo_casing/nsfw_batt/medical/stabilize2(src)
+ new /obj/item/weapon/gun/projectile/cell_loaded/medical/cmo(src)
+ new /obj/item/ammo_magazine/cell_mag/medical(src)
+ new /obj/item/ammo_casing/microbattery/medical/brute(src)
+ new /obj/item/ammo_casing/microbattery/medical/burn(src)
+ new /obj/item/ammo_casing/microbattery/medical/stabilize(src)
+ new /obj/item/ammo_casing/microbattery/medical/toxin(src)
+ new /obj/item/ammo_casing/microbattery/medical/omni(src)
// Medical //
-/obj/item/ammo_casing/nsfw_batt/medical
+/obj/item/ammo_casing/microbattery/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
+/obj/item/projectile/beam/medical_cell
name = "\improper healing beam"
icon_state = "medbeam"
nodamage = 1
@@ -469,40 +515,40 @@
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?
+/obj/item/projectile/beam/medical_cell/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
+/obj/item/ammo_casing/microbattery/medical/brute
name = "\'ML-3/M\' nanite cell - BRUTE"
type_color = "#BF0000"
type_name = "BRUTE"
- projectile_type = /obj/item/projectile/beam/ML3M/brute
+ projectile_type = /obj/item/projectile/beam/medical_cell/brute
-/obj/item/projectile/beam/ML3M/brute/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/brute/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
- target.adjustBruteLoss(-10)
+ target.adjustBruteLoss(-5)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/burn
+/obj/item/ammo_casing/microbattery/medical/burn
name = "\'ML-3/M\' nanite cell - BURN"
type_color = "#FF8000"
type_name = "BURN"
- projectile_type = /obj/item/projectile/beam/ML3M/burn
+ projectile_type = /obj/item/projectile/beam/medical_cell/burn
-/obj/item/projectile/beam/ML3M/burn/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/burn/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
- target.adjustFireLoss(-10)
+ target.adjustFireLoss(-5)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/stabilize
+/obj/item/ammo_casing/microbattery/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
+ projectile_type = /obj/item/projectile/beam/medical_cell/stabilize
-/obj/item/projectile/beam/ML3M/stabilize/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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))
@@ -524,78 +570,78 @@
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"
+/obj/item/ammo_casing/microbattery/medical/toxin
+ name = "\'ML-3/M\' nanite cell - TOXIN"
type_color = "#00A000"
- type_name = "TOX"
- projectile_type = /obj/item/projectile/beam/ML3M/tox
+ type_name = "TOXIN"
+ projectile_type = /obj/item/projectile/beam/medical_cell/tox
-/obj/item/projectile/beam/ML3M/tox/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/tox/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
- target.adjustToxLoss(-10)
+ target.adjustToxLoss(-5)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/omni
+/obj/item/ammo_casing/microbattery/medical/omni
name = "\'ML-3/M\' nanite cell - OMNI"
type_color = "#8040FF"
type_name = "OMNI"
- projectile_type = /obj/item/projectile/beam/ML3M/omni
+ projectile_type = /obj/item/projectile/beam/medical_cell/omni
-/obj/item/projectile/beam/ML3M/omni/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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(-15)
+ target.adjustBruteLoss(-2.5)
+ target.adjustFireLoss(-2.5)
+ target.adjustToxLoss(-2.5)
+ target.adjustOxyLoss(-10)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/antirad
+/obj/item/ammo_casing/microbattery/medical/antirad
name = "\'ML-3/M\' nanite cell - OMNI"
type_color = "#008000"
type_name = "ANTIRAD"
- projectile_type = /obj/item/projectile/beam/ML3M/antirad
+ projectile_type = /obj/item/projectile/beam/medical_cell/antirad
-/obj/item/projectile/beam/ML3M/antirad/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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
+ target.adjustToxLoss(-2.5)
+ target.radiation = max(target.radiation - 150, 0) //same as 5 units of arithrazine, sans the brute damage
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/brute2
+/obj/item/ammo_casing/microbattery/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
+ projectile_type = /obj/item/projectile/beam/medical_cell/brute2
-/obj/item/projectile/beam/ML3M/brute2/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/brute2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
- target.adjustBruteLoss(-20)
+ target.adjustBruteLoss(-10)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/burn2
+/obj/item/ammo_casing/microbattery/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
+ projectile_type = /obj/item/projectile/beam/medical_cell/burn2
-/obj/item/projectile/beam/ML3M/burn2/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/burn2/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
- target.adjustFireLoss(-20)
+ target.adjustFireLoss(-10)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/stabilize2
+/obj/item/ammo_casing/microbattery/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
+ projectile_type = /obj/item/projectile/beam/medical_cell/stabilize2
-/obj/item/projectile/beam/ML3M/stabilize2/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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))
@@ -612,40 +658,40 @@
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/omni2
+/obj/item/ammo_casing/microbattery/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
+ projectile_type = /obj/item/projectile/beam/medical_cell/omni2
-/obj/item/projectile/beam/ML3M/omni2/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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.adjustBruteLoss(-5)
+ target.adjustFireLoss(-5)
+ target.adjustToxLoss(-5)
target.adjustOxyLoss(-30)
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/tox2
- name = "\'ML-3/M\' nanite cell - TOX-II"
+/obj/item/ammo_casing/microbattery/medical/toxin2
+ name = "\'ML-3/M\' nanite cell - TOXIN-II"
type_color = "#00A000"
type_name = "TOX-II"
- projectile_type = /obj/item/projectile/beam/ML3M/tox2
+ projectile_type = /obj/item/projectile/beam/medical_cell/tox2
-/obj/item/projectile/beam/ML3M/tox2/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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
+/obj/item/ammo_casing/microbattery/medical/haste
name = "\'ML-3/M\' nanite cell - HASTE"
type_color = "#FF3300"
type_name = "HASTE"
- projectile_type = /obj/item/projectile/beam/ML3M/haste
+ projectile_type = /obj/item/projectile/beam/medical_cell/haste
-/obj/item/projectile/beam/ML3M/haste/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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
@@ -656,16 +702,16 @@
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!
+ slowdown = -0.5 //a little faster!
+ evasion = 1.15 //and a little harder to hit!
-/obj/item/ammo_casing/nsfw_batt/medical/resistance
+/obj/item/ammo_casing/microbattery/medical/resistance
name = "\'ML-3/M\' nanite cell - RESIST"
type_color = "#555555"
type_name = "RESIST"
- projectile_type = /obj/item/projectile/beam/ML3M/resistance
+ projectile_type = /obj/item/projectile/beam/medical_cell/resistance
-/obj/item/projectile/beam/ML3M/resistance/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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
@@ -673,19 +719,19 @@
/datum/modifier/resistance
name = "resistance"
- desc = "You resist 25% of all incoming damage and stuns!"
+ desc = "You resist 15% 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
+ disable_duration_percent = 0.85
+ incoming_damage_percent = 0.85
-/obj/item/ammo_casing/nsfw_batt/medical/revival
+/obj/item/ammo_casing/microbattery/medical/revival
name = "\'ML-3/M\' nanite cell - REVIVAL"
type_color = "#669900"
type_name = "REVIVAL"
- projectile_type = /obj/item/projectile/beam/ML3M/revival
+ projectile_type = /obj/item/projectile/beam/medical_cell/revival
-/obj/item/projectile/beam/ML3M/revival/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/revival/on_hit(var/mob/living/carbon/human/target)
if(istype(target, /mob/living/carbon/human))
if(target.stat == DEAD)
target.adjustBruteLoss(-50)
@@ -695,22 +741,14 @@
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
+/obj/item/ammo_casing/microbattery/medical/shrink
name = "\'ML-3/M\' nanite cell - SHRINK"
type_color = "#910ffc"
type_name = "SHRINK"
- projectile_type = /obj/item/projectile/beam/ML3M/shrink
+ projectile_type = /obj/item/projectile/beam/medical_cell/shrink
-/obj/item/projectile/beam/ML3M/shrink/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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!")
@@ -718,13 +756,13 @@
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/grow
+/obj/item/ammo_casing/microbattery/medical/grow
name = "\'ML-3/M\' nanite cell - GROW"
type_color = "#fc0fdc"
type_name = "GROW"
- projectile_type = /obj/item/projectile/beam/ML3M/grow
+ projectile_type = /obj/item/projectile/beam/medical_cell/grow
-/obj/item/projectile/beam/ML3M/grow/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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!")
@@ -732,13 +770,13 @@
else
return 1
-/obj/item/ammo_casing/nsfw_batt/medical/normalsize
+/obj/item/ammo_casing/microbattery/medical/normalsize
name = "\'ML-3/M\' nanite cell - NORMALSIZE"
type_color = "#C70FEC"
type_name = "NORMALSIZE"
- projectile_type = /obj/item/projectile/beam/ML3M/normalsize
+ projectile_type = /obj/item/projectile/beam/medical_cell/normalsize
-/obj/item/projectile/beam/ML3M/normalsize/on_hit(var/mob/living/carbon/human/target)
+/obj/item/projectile/beam/medical_cell/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!")
diff --git a/icons/obj/ammo_vr.dmi b/icons/obj/ammo_vr.dmi
index 2fa66e4424b..441c9547f67 100644
Binary files a/icons/obj/ammo_vr.dmi and b/icons/obj/ammo_vr.dmi differ
diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm
index 72262b63e18..110ddafbb53 100644
--- a/maps/tether/tether-10-colony.dmm
+++ b/maps/tether/tether-10-colony.dmm
@@ -1158,16 +1158,16 @@
/area/centcom/specops)
"bW" = (
/obj/structure/table/reinforced,
-/obj/item/ammo_casing/nsfw_batt/combat/stun,
-/obj/item/ammo_casing/nsfw_batt/combat/stun,
-/obj/item/ammo_casing/nsfw_batt/combat/stun,
-/obj/item/ammo_casing/nsfw_batt/medical/brute2,
-/obj/item/ammo_casing/nsfw_batt/medical/burn2,
-/obj/item/ammo_casing/nsfw_batt/medical/stabilize2,
-/obj/item/ammo_casing/nsfw_batt/combat/net,
-/obj/item/ammo_casing/nsfw_batt/combat/net,
-/obj/item/ammo_magazine/nsfw_mag,
-/obj/item/weapon/gun/projectile/nsfw,
+/obj/item/ammo_casing/microbattery/combat/stun,
+/obj/item/ammo_casing/microbattery/combat/stun,
+/obj/item/ammo_casing/microbattery/combat/stun,
+/obj/item/ammo_casing/microbattery/medical/brute2,
+/obj/item/ammo_casing/microbattery/medical/burn2,
+/obj/item/ammo_casing/microbattery/medical/stabilize2,
+/obj/item/ammo_casing/microbattery/combat/net,
+/obj/item/ammo_casing/microbattery/combat/net,
+/obj/item/ammo_magazine/cell_mag,
+/obj/item/weapon/gun/projectile/cell_loaded,
/turf/unsimulated/floor/steel{
icon = 'icons/turf/floors_vr.dmi';
icon_state = "wood"