Merge pull request #1752 from VOREStation/aro-nonlethals

KHI-102b "NSFW" Handgun
This commit is contained in:
Spades
2017-06-20 01:21:12 -04:00
committed by GitHub
12 changed files with 436 additions and 32 deletions
+14 -1
View File
@@ -8,7 +8,7 @@ obj/machinery/recharger
idle_power_usage = 4
active_power_usage = 40000 //40 kW
var/obj/item/charging = null
var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric)
var/list/allowed_devices = list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/device/laptop, /obj/item/weapon/cell, /obj/item/device/flashlight, /obj/item/device/electronic_assembly, /obj/item/weapon/weldingtool/electric, /obj/item/ammo_casing/nsfw_batt) //VOREStation Add - NSFW Batteries
var/icon_state_charged = "recharger2"
var/icon_state_charging = "recharger1"
var/icon_state_idle = "recharger0" //also when unpowered
@@ -187,6 +187,19 @@ obj/machinery/recharger
update_use_power(1)
return
//VOREStation Add - NSFW Batteries
if(istype(charging, /obj/item/ammo_casing/nsfw_batt))
var/obj/item/ammo_casing/nsfw_batt/batt = charging
if(batt.shots_left >= initial(batt.shots_left))
icon_state = icon_state_charged
update_use_power(1)
else
icon_state = icon_state_charging
batt.shots_left++
update_use_power(2)
return
//VOREStation Add End
/obj/machinery/recharger/emp_act(severity)
if(stat & (NOPOWER|BROKEN) || !anchored)
..(severity)
@@ -163,19 +163,15 @@
New()
..() //Might look like a lot... but all small items.
/*
new /obj/item/weapon/reagent_containers/hypospray/vr/fluff/aronai(src)
new /obj/item/weapon/reagent_containers/glass/beaker/vial/vr/fluff/aro_st(src)
new /obj/item/weapon/reagent_containers/glass/beaker/vial/vr/fluff/aro_bt(src)
new /obj/item/weapon/reagent_containers/glass/beaker/vial/vr/fluff/aro_bu(src)
new /obj/item/weapon/reagent_containers/glass/beaker/vial/vr/fluff/aro_tx(src)
*/
//Centcom stuff and permit
new /obj/item/weapon/card/id/centcom/fluff/aronai(src)
new /obj/item/fluff/permit/aronai_kadigan(src)
//new /obj/item/clothing/glasses/omnihud/med/fluff/aronai(src)
//Gun and holster
new /obj/item/weapon/gun/energy/netgun(src)
new /obj/item/weapon/gun/projectile/nsfw(src)
new /obj/item/ammo_magazine/nsfw_mag(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/clothing/accessory/holster(src)
//Aerowing:Sebastian Aji
@@ -77,7 +77,7 @@
<b>DOB:</b> 12/Jul/2530 | <b>HEIGHT:</b> 188cm | <b>SEX:</b> Male
The individual named above is licensed by the Nanotrasen Department of Civil Protection
to carry one KIN (foreign) personal defense weapon, non-lethal only.
to carry one KHI (foreign) personal defense weapon, non-lethal only.
This license expires on 16/Feb/2562 and must be renewed by CentCom prior to this date."}
// joanrisu:Joan Risu
+383
View File
@@ -0,0 +1,383 @@
// -------------- NSFW -------------
/obj/item/weapon/gun/projectile/nsfw
name = "KHI-102b \'NSFW\'"
desc = "Variety is the spice of life! The 'Nanotech Selectable-Fire Weapon' 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."
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"
icon_override = 'icons/vore/custom_guns_vr.dmi'
item_state = "gun"
caliber = "nsfw"
origin_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 6, TECH_MAGNETS = 4)
fire_sound = 'sound/weapons/Taser.ogg'
load_method = MAGAZINE //Nyeh heh hehhh.
magazine_type = null
allowed_magazines = list(/obj/item/ammo_magazine/nsfw_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()
if(chambered && ammo_magazine)
var/obj/item/ammo_casing/nsfw_batt/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
if(istype(other_batt,chambered.type) && other_batt.shots_left)
switch_to(other_batt)
return new chambered.projectile_type()
break
return null
/obj/item/weapon/gun/projectile/nsfw/proc/update_charge()
charge_left = 0
max_charge = 0
if(!chambered)
return
var/obj/item/ammo_casing/nsfw_batt/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
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)
if(ishuman(loc))
if(chambered && new_batt.type == chambered.type)
to_chat(loc,"<span class='warning'>\The [src] is now using the next [new_batt.type_name] power cell.</span>")
else
to_chat(loc,"<span class='warning'>\The [src] is now firing [new_batt.type_name].</span>")
chambered = new_batt
update_charge()
update_icon()
/obj/item/weapon/gun/projectile/nsfw/attack_self(mob/user)
if(!chambered)
return
var/list/stored_ammo = ammo_magazine.stored_ammo
if(stored_ammo.len == 1)
return //silly you.
//Find an ammotype that ISN'T the same, or exhaust the list and don't change.
var/our_slot = stored_ammo.Find(chambered)
var/index = our_slot + 1
var/obj/item/ammo_casing/nsfw_batt/new_choice
while((index != our_slot) && !new_choice)
if(index > stored_ammo.len)
index = 1
var/obj/item/ammo_casing/nsfw_batt/next_batt = stored_ammo[index]
if(!istype(next_batt,chambered.type))
new_choice = next_batt
index++
if(new_choice)
switch_to(new_choice)
/*
/obj/item/weapon/gun/projectile/nsfw/special_check(mob/user)
if(!chambered)
return
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
if(!batt.shots_left)
return FALSE
return TRUE
*/
/obj/item/weapon/gun/projectile/nsfw/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)
chambered = null
return ..()
/obj/item/weapon/gun/projectile/nsfw/update_icon()
var/mutable_appearance/ma = new(src)
update_charge()
if(!chambered)
ma.overlays = list()
appearance = ma
return
var/obj/item/ammo_casing/nsfw_batt/batt = chambered
var/batt_color = batt.type_color //Used many times
var/list/newverlays = list()
//Mode bar
var/mutable_appearance/mode_bar = mutable_appearance(icon, "[initial(icon_state)]_type")
mode_bar.color = batt_color
newverlays += mode_bar
//Barrel color
var/mutable_appearance/barrel_color = mutable_appearance(icon, "[initial(icon_state)]_barrel")
barrel_color.alpha = 150
barrel_color.color = batt_color
newverlays += barrel_color
//Charge bar
var/ratio = Ceiling((charge_left / max_charge) * charge_sections)
for(var/i = 0, i < ratio, i++)
var/mutable_appearance/charge_bar = mutable_appearance(icon, "[initial(icon_state)]_charge")
charge_bar.pixel_x = i
charge_bar.color = batt_color
newverlays += charge_bar
ma.overlays = newverlays
if(ma.overlays.len != newverlays.len) //PANIC!
del(ma)
spawn(5)
update_icon()
return
appearance = ma
// The Magazine //
/obj/item/ammo_magazine/nsfw_mag
name = "microbattery magazine"
desc = "A microbattery holder for the \'NSFW\'"
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."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "nsfw_mag"
caliber = "nsfw"
matter = list(DEFAULT_WALL_MATERIAL = 1680, "glass" = 2000)
ammo_type = /obj/item/ammo_casing/nsfw_batt
initial_ammo = 0
max_ammo = 3
mag_type = MAGAZINE
var/list/modes
/obj/item/ammo_magazine/nsfw_mag/New()
..()
modes = list()
/obj/item/ammo_magazine/nsfw_mag/update_icon()
var/mutable_appearance/ma = new(src)
if(!stored_ammo.len)
ma.overlays = list()
appearance = ma
return //Why bother
var/x_offset = 5
var/list/newverlays = list()
var/current = 0
for(var/B in stored_ammo)
var/obj/item/ammo_casing/nsfw_batt/batt = B
var/mutable_appearance/cap = mutable_appearance(icon,"[initial(icon_state)]_cap")
cap.color = batt.type_color
cap.pixel_x = current * x_offset //Caps don't need a pixel_y offset
newverlays += cap
if(batt.shots_left)
var/ratio = Ceiling((batt.shots_left / initial(batt.shots_left)) * 4) //4 is how many lights we have a sprite for
var/mutable_appearance/charge = mutable_appearance(icon,"[initial(icon_state)]_charge-[ratio]")
charge.color = "#29EAF4" //Could use battery color but eh.
charge.pixel_x = current * x_offset
newverlays += charge
current++ //Increment for offsets
ma.overlays = newverlays
if(ma.overlays.len != newverlays.len) //PANIC!
del(ma)
spawn(5)
update_icon()
return
appearance = ma
// The Casing //
/obj/item/ammo_casing/nsfw_batt
name = "\'NSFW\' microbattery - LETHAL"
desc = "A miniature battery for an energy weapon."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "nsfw_batt"
flags = CONDUCT
slot_flags = SLOT_BELT | SLOT_EARS
throwforce = 1
w_class = ITEMSIZE_TINY
leaves_residue = 0
caliber = "nsfw"
var/shots_left = 4
var/type_color = "#bf3d3d"
var/type_name = "<span style='color:#bf3d3d;font-weight:bold;'>LETHAL</span>"
projectile_type = /obj/item/projectile/beam
/obj/item/ammo_casing/nsfw_batt/New()
pixel_x = rand(-10, 10)
pixel_y = rand(-10, 10)
update_icon()
/obj/item/ammo_casing/nsfw_batt/update_icon()
var/mutable_appearance/ma = new(src)
ma.overlays.Cut()
var/mutable_appearance/ends = mutable_appearance(icon,"[initial(icon_state)]_ends")
ends.color = type_color
ma.overlays += ends
appearance = ma
/obj/item/ammo_casing/nsfw_batt/expend()
shots_left--
// Specific batteries //
/obj/item/ammo_casing/nsfw_batt/stun
name = "\'NSFW\' microbattery - STUN"
type_color = "#0f81bc"
type_name = "<span style='color:#0f81bc;font-weight:bold;'>STUN</span>"
projectile_type = /obj/item/projectile/beam/stun/blue
/obj/item/ammo_casing/nsfw_batt/net
name = "\'NSFW\' microbattery - NET"
type_color = "#43f136"
type_name = "<span style='color:#43d136;font-weight:bold;'>NET</span>"
projectile_type = /obj/item/projectile/beam/energy_net
/obj/item/ammo_casing/nsfw_batt/xray
name = "\'NSFW\' microbattery - XRAY"
type_color = "#32c025"
type_name = "<span style='color:#32c025;font-weight:bold;'>XRAY</span>"
projectile_type = /obj/item/projectile/beam/xray
/obj/item/ammo_casing/nsfw_batt/shotstun
name = "\'NSFW\' microbattery - SCATTERSTUN"
type_color = "#88ffff"
type_name = "<span style='color:#88ffff;font-weight:bold;'>SCATTERSTUN</span>"
projectile_type = /obj/item/projectile/bullet/pellet/e_shot_stun
/obj/item/projectile/bullet/pellet/e_shot_stun
icon_state = "spell"
damage = 2
agony = 20
pellets = 6 //number of pellets
range_step = 2 //projectile will lose a fragment each time it travels this distance. Can be a non-integer.
base_spread = 90 //lower means the pellets spread more across body parts. If zero then this is considered a shrapnel explosion instead of a shrapnel cone
spread_step = 10
embed_chance = 0
sharp = 0
check_armour = "melee"
/obj/item/ammo_casing/nsfw_batt/ion
name = "\'NSFW\' microbattery - ION"
type_color = "#d084d6"
type_name = "<span style='color:#d084d6;font-weight:bold;'>ION</span>"
projectile_type = /obj/item/projectile/ion/small
/obj/item/ammo_casing/nsfw_batt/stripper
name = "\'NSFW\' microbattery - STRIPPER"
type_color = "#fc8d0f"
type_name = "<span style='color:#fc8d0f;font-weight:bold;'>STRIPPER</span>"
projectile_type = /obj/item/projectile/bullet/stripper
/obj/item/projectile/bullet/stripper
icon_state = "magicm"
nodamage = 1
agony = 5
embed_chance = 0
sharp = 0
check_armour = "melee"
/obj/item/projectile/bullet/stripper/on_hit(var/atom/stripped)
if(ishuman(stripped))
var/mob/living/carbon/human/H = stripped
if(H.wear_suit)
H.unEquip(H.wear_suit)
if(H.w_uniform)
H.unEquip(H.w_uniform)
if(H.back)
H.unEquip(H.back)
if(H.shoes)
H.unEquip(H.shoes)
if(H.gloves)
H.unEquip(H.gloves)
//Hats can stay! Most other things fall off with removing these.
..()
/obj/item/ammo_casing/nsfw_batt/final
name = "\'NSFW\' microbattery - FINAL OPTION"
type_color = "#fcfc0f"
type_name = "<span style='color:#000000;font-weight:bold;'>FINAL OPTION</span>" //Doesn't look good in yellow in chat
projectile_type = /obj/item/projectile/beam/final_option
/obj/item/projectile/beam/final_option
name = "final option beam"
icon_state = "omnilaser"
nodamage = 1
agony = 5
damage_type = HALLOSS
light_color = "#00CC33"
muzzle_type = /obj/effect/projectile/laser_omni/muzzle
tracer_type = /obj/effect/projectile/laser_omni/tracer
impact_type = /obj/effect/projectile/laser_omni/impact
/obj/item/projectile/beam/final_option/on_hit(var/atom/impacted)
if(isliving(impacted))
var/mob/living/L = impacted
if(L.mind)
var/nif
if(ishuman(L))
var/mob/living/carbon/human/H = L
nif = H.nif
SStranscore.m_backup(L.mind,nif,one_time = TRUE)
L.gib()
..()
/obj/item/ammo_casing/nsfw_batt/shrink
name = "\'NSFW\' microbattery - SHRINK"
type_color = "#910ffc"
type_name = "<span style='color:#910ffc;font-weight:bold;'>SHRINK</span>"
projectile_type = /obj/item/projectile/beam/shrinklaser
/obj/item/ammo_casing/nsfw_batt/grow
name = "\'NSFW\' microbattery - GROW"
type_color = "#fc0fdc"
type_name = "<span style='color:#fc0fdc;font-weight:bold;'>GROW</span>"
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
/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 typesof(/obj/item/ammo_casing/nsfw_batt))
new path(src)
@@ -2,8 +2,11 @@
/obj/item/weapon/gun/energy/protector
name = "\improper KHI-98a \'Protector\'"
desc = "The KHI-98a is the first firearm custom-designed for Nanotrasen by KHI. It features a powerful stun mode, and \
an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight! \
(CtrlClick to toggle flashlight)"
an alert-level-locked lethal mode, only usable on code blue and higher. It also features an integrated flashlight!"
description_info = "This gun can only be fired in lethal mode while on higher security alert levels. It is legal for sec to carry for this reason, since it cannot be used for lethal force until SOP allows it, in essence."
description_fluff = "The first 'commission' from a Kitsuhana citizen for NanoTrasen, this gun has a wireless connection to the computer's datacore to ensure it can't be used without authorization from heads of staff who have raised the alert level. Until then, *click*!"
description_antag = "The gun can be emagged to remove the lethal security level restriction, allowing it to be fired on lethal mode at all times."
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "prot"
@@ -5,6 +5,10 @@
sonic blast in the direction of fire, throwing the target away from you at high speed. Now you can REALLY \
turn up the bass to max."
description_info = "This gun punts people away and has a chance of knocking them down briefly. It may also throw them over railings in the process!"
description_fluff = ""
description_antag = ""
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "pum"
@@ -5,6 +5,10 @@
Using a short-range concentrated blast of disruptive sound, the Sickshot will nauseate and confuse the target for several seconds. NOTE: Not suitable \
for use in vacuum, or on animals. May cause contraction and release of various 'things' from various 'orifices'."
description_info = "This gun causes nausea in targets, stunning them briefly and causing vomiting. It will also cause them to vomit up prey, sometimes. Repeated shots may help in that case."
description_fluff = ""
description_antag = ""
icon = 'icons/vore/custom_guns_vr.dmi'
icon_state = "sickshot"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 28 KiB

+17 -18
View File
@@ -533,7 +533,7 @@
"km" = (/obj/structure/closet/l3closet/virology,/obj/item/clothing/mask/gas,/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"kn" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"ko" = (/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"kp" = (/turf/unsimulated/wall{icon = 'icons/turf/transit_vr.dmi'},/area/centcom/specops)
"kp" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/storage/secure/briefcase/nsfw_pack,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"kq" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/medical)
"kr" = (/obj/structure/table/steel,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/cautery,/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/medical)
"ks" = (/obj/machinery/optable,/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/medical)
@@ -1399,7 +1399,7 @@
"AU" = (/obj/machinery/computer/prisoner{tag = "icon-computer (NORTH)"; name = "Implant Management"; icon_state = "computer"; dir = 1},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/specops/centcom)
"AV" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_port"; name = "port docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_port_hatch"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/specops/centcom)
"AW" = (/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/specops/centcom)
"AX" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/obj/item/weapon/gun/energy/pulse_rifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"AX" = (/obj/structure/sign/nanotrasen,/turf/unsimulated/wall,/area/centcom/specops)
"AY" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"AZ" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"Ba" = (/obj/structure/table/rack,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/weapon/rig/ert/medical,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/obj/item/clothing/accessory/storage/white_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -1444,7 +1444,7 @@
"BN" = (/obj/structure/closet/wardrobe/ert,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"BO" = (/obj/structure/undies_wardrobe,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"BP" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_centcom_dock"; name = "docking port controller"; pixel_x = 0; pixel_y = 25; req_one_access = list(103); tag_door = "specops_centcom_dock_door"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"BQ" = (/obj/structure/sign/nanotrasen,/turf/unsimulated/wall{icon = 'icons/turf/transit_vr.dmi'},/area/centcom/specops)
"BQ" = (/obj/structure/table/reinforced,/obj/item/ammo_casing/nsfw_batt/stun,/obj/item/ammo_casing/nsfw_batt/stun,/obj/item/ammo_casing/nsfw_batt/stun,/obj/item/ammo_casing/nsfw_batt,/obj/item/ammo_casing/nsfw_batt,/obj/item/ammo_casing/nsfw_batt,/obj/item/ammo_casing/nsfw_batt/net,/obj/item/ammo_casing/nsfw_batt/net,/obj/item/ammo_magazine/nsfw_mag,/obj/item/weapon/gun/projectile/nsfw,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"BR" = (/obj/machinery/door/blast/regular{name = "When Everything else fails."},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"BS" = (/obj/effect/floor_decal/corner/white{tag = "icon-corner_white (SOUTHWEST)"; icon_state = "corner_white"; dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"BT" = (/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1459,7 +1459,6 @@
"Cc" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor/steel,/area/centcom/specops)
"Cd" = (/obj/structure/table/reinforced,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/obj/item/weapon/stamp/centcomm,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"Ce" = (/obj/machinery/door/airlock/centcom{name = "Commander"; opacity = 1; req_access = list(103)},/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"Cf" = (/obj/structure/table/reinforced,/obj/item/weapon/gun/projectile/deagle/camo,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"Cg" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"; pixel_y = -32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"Ch" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/specops)
"Ci" = (/obj/effect/floor_decal/corner/yellow{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1556,22 +1555,22 @@ aaababababababababababababababababababababababababababababababababababababababab
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaceZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaceZjyjTjTjTjTjTjTjTjTjTjTkokoeZ
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpkpkpkpkpkpkpkpkpkpkpkpkpkpkXkZkYnunununununNApnOjTkoeZ
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpkpkpkpkpkpkpkpkpkpkpkpkpAqAsArAuAtAwAvAyAxAAAzACABkpkXAEADAFAFAFAFAFAFAFAGAHkoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpAIkokpAKAJAMALAOANAQAPARAqkokokokokokokokokokokokokpkXAEASAUATATAVAFAFAWnOjTkoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpAXkokpAZAYAYAYAYAYAYAYBaAqBbkokoBcBeBdBgBfBhkokoBikpBjjTjTjTjTjTjTBkBkjTjTkokoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpBlkoAqBmAYBoBnBqBpBrAYBskpkokokoBtBvBuBxBwBykokoBzkpkpkpkpkpkpkpkpBABAkpkokokoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpBBkoAqBCAYBEBDBGBFBHAYBIkpBKBJkokokokokokokokokoBLkpBMBNBNBNBOkpBPAYAYkpkpkpkpeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacackpBQBRAqAqBSBSBSBSBSBSBSAqkpkpkpBTBTBTBTBTBTBTBTkpkpkpBUBVBVBVBUkpAYAYAYkpBWBYBXeZ
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAqAqAqAqAqAqAqAqAqAqAqAqAqkXkZkYnunununununNApnOjTkoeZ
aaabababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAqAqAqAqAqAqAqAqAqAqAqAqAqAsArAuAtAwAvAyAxAAAzACABAqkXAEADAFAFAFAFAFAFAFAGAHkoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAIkoAqAKAJAMALAOANAQAPARAqkokokokokokokokokokokokoAqkXAEASAUATATAVAFAFAWnOjTkoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqkpkoAqAZAYAYAYAYAYAYAYBaAqBbkokoBcBeBdBgBfBhkokoBiAqBjjTjTjTjTjTjTBkBkjTjTkokoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqBlkoAqBmAYBoBnBqBpBrAYBsAqkokokoBtBvBuBxBwBykokoBzAqAqAqAqAqAqAqAqBABAAqkokokoeZ
aaababababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqBBkoAqBCAYBEBDBGBFBHAYBIAqBKBJkokokokokokokokokoBLAqBMBNBNBNBOAqBPAYAYAqAqAqAqeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAXBRAqAqBSBSBSBSBSBSBSAqAqAqAqBTBTBTBTBTBTBTBTAqAqAqBUBVBVBVBUAqAYAYAYAqBWBYBQeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAYBZAYAYAYAYAYAYAYBZAYAYCaAYAYAYAYAYAYAYAYCaAYBUBUCbCbCbBUBUAYAYAYCcBUBUCdeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYBUBUBUBUBUBUBUAYAYAYCeBUBUCfeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYAYBUBUBUBUBUBUBUAYAYAYCeBUBUBXeZ
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAYCgAYAYAYAYAYAYAYCgAYAYAYAYAYAYAYAYAYAYAYAYAYBUBUCbCbCbBUBUAYAYAYCcBUBUCheZ
aaabababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqAqCiCiCiCiCiCiCiAqAqAqAqCjCjClCkCnCmCjCjAqAqAqBUBVBVBVBUkpAYAYAYkpCoCqCpeZ
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCrkokokokokokokokokpkokokokoCtCsCvCukokokokoAqCwBNBNBNCxkpAYAYAYkpkpkpkpeZ
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCykokokoCACzCCCBCBkpCDkokokokokokokokokokoCEAqkpkpkpkpkpkpAYAYAYkpCFCHCGeZ
aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCIkokokoCKCJCMCLCNkpCOkokokokokokokokokokoCPAqacacacacackpAYAYAYCQkokokoeZ
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadadadadAqacacacacacAqAYAYAqCSCRCUCTCWCVCMCLCNkpCYCXDaCZDcDbDeDdDgDfDiDhAqacacacacackpAYAYAYDjkokokoeZ
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadagahagAqkpkpkpkpkpBQDkDkAqaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaf
aaabababababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqAqCiCiCiCiCiCiCiAqAqAqAqCjCjClCkCnCmCjCjAqAqAqBUBVBVBVBUAqAYAYAYAqCoCqCpeZ
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCrkokokokokokokokoAqkokokokoCtCsCvCukokokokoAqCwBNBNBNCxAqAYAYAYAqAqAqAqeZ
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCykokokoCACzCCCBCBAqCDkokokokokokokokokokoCEAqAqAqAqAqAqAqAYAYAYAqCFCHCGeZ
aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacAqAYAYAqCIkokokoCKCJCMCLCNAqCOkokokokokokokokokokoCPAqacacacacacAqAYAYAYCQkokokoeZ
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadadadadAqacacacacacAqAYAYAqCSCRCUCTCWCVCMCLCNAqCYCXDaCZDcDbDeDdDgDfDiDhAqacacacacacAqAYAYAYDjkokokoeZ
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadagahagAqAqAqAqAqAqAXDkDkAqaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaf
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacadagahahahaiahahahahahahahahahahaiahahahahahDmDlDlDlDlDlDlDlDlDnaeajakakakalamanaoapapaeaqarasatauavawaxayaeazaAaBaCaDaEaFaeaGaHaIaJaKaLaf
aaababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacadahahahahahahahahahahahahahahahahahahahahahDmDlDlDlDlDlDlDlDlDnaeajakakakakakakakakakaeaMaraNaNaraMaMaMaMaeaOaPaQaQaQaRaSaTaUaVaWaXaYaYaf
aaabababababababababababababababababababababababababababababababababababacacaZaZaZaZaZaZaZaZacacacacacadahahahahahahahahahahahahahahahahahahahahahAqaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebaaeaeakakaeaMaMaMaMaMaMaMaMaMaeaObbbcbdbebfbgaTbdbdbdbdbdbdaf
+2 -1
View File
@@ -259,6 +259,7 @@
"eY" = (/obj/effect/floor_decal/techfloor,/obj/structure/table/steel_reinforced,/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/turf/simulated/floor/tiled/techfloor,/area/houseboat/cargo)
"eZ" = (/obj/effect/floor_decal/techfloor,/obj/structure/table/steel_reinforced,/obj/item/stack/material/plasteel,/obj/item/stack/material/plasteel,/turf/simulated/floor/tiled/techfloor,/area/houseboat/cargo)
"fa" = (/obj/effect/floor_decal/techfloor{dir = 6},/obj/structure/table/steel_reinforced,/obj/item/stack/material/plastic,/obj/item/stack/material/plastic,/turf/simulated/floor/tiled/techfloor,/area/houseboat/cargo)
"fb" = (/obj/structure/table/steel_reinforced,/obj/item/weapon/storage/secure/briefcase/nsfw_pack,/turf/simulated/floor/tiled/techfloor,/area/houseboat/bridge)
(1,1,1) = {"
aaabababababaaabababababaaabababababaaabababababaaabababababaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
@@ -286,7 +287,7 @@ acacacacacacacacacacacacacacacacacacacacacacacblbnbobpbqbrbsblblacacacacacblbmbm
acacacacacacacacacacacacacacacacacblbmbmbmbmbmblbtbubvbwbxbyblbnbmbmbmbnblbnbzbAbBbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacacacacacacacacacacacacacblblbEbFbGbHbIblbJbKbLbLbLbMblbNbObPbQbRbSbTbUbUbVbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacacacacblblbnbmbmbmbmbmbmblblbWbXbXbXbYblbZcacbcccacdblcecfcgchblcicjckclcmbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacacacblblcnblcocpcpcqcrcrcsblctcucvcwcxblblbRcyblblblblcecgcgczcAclclclcBbnblblacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacacacblblfbblcocpcpcqcrcrcsblctcucvcwcxblblbRcyblblblblcecgcgczcAclclclcBbnblblacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacacblblcCcDblcEcpcpcpcFcFcGblblbRcybRblblcHcIcJcIcKcLcMcNcgcgcOblcPcQcRcSblbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacaccTcUcVcVblcWcpcpcXcYcYcsblcZcZcZcZcZbldadbdcdddedfdgdhcgcgdiblblblblblbnbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
acacacacaccTdjdkdlbnblblcyblblblblbncZcZcZcZcZcAdmdbdndodpdpbRdqcgcgdrbldsdtdudvdwbCbDacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
+1
View File
@@ -2405,6 +2405,7 @@
#include "code\modules\vore\fluffstuff\custom_permits_vr.dm"
#include "code\modules\vore\fluffstuff\guns\bsharpoon.dm"
#include "code\modules\vore\fluffstuff\guns\dominator.dm"
#include "code\modules\vore\fluffstuff\guns\nsfw.dm"
#include "code\modules\vore\fluffstuff\guns\protector.dm"
#include "code\modules\vore\fluffstuff\guns\pummeler.dm"
#include "code\modules\vore\fluffstuff\guns\sickshot.dm"