Merge branch 'master' of https://github.com/VOREStation/VOREStation into Fluff_Items_worshop

This commit is contained in:
JOAN-RIG\Joan Risu
2017-07-01 01:46:18 -07:00
486 changed files with 13703 additions and 4253 deletions
+3 -6
View File
@@ -149,12 +149,9 @@
..()
/obj/structure/closet/body_bag/cryobag/Destroy()
if(syringe)
qdel(syringe)
syringe = null
qdel(tank)
tank = null
..()
qdel_null(syringe)
qdel_null(tank)
return ..()
/obj/structure/closet/body_bag/cryobag/open()
. = ..()
+3 -3
View File
@@ -6,7 +6,7 @@
item_state = "table_parts"
w_class = ITEMSIZE_HUGE
attack_self(mob/user as mob)
/obj/item/stolenpackage/attack_self(mob/user as mob)
// Another way of doing this. Commented out because the other method is better for this application.
/*var/spawn_chance = rand(1,100)
switch(spawn_chance)
@@ -79,8 +79,8 @@
/obj/random/contraband,
/obj/random/weapon/guarenteed)
new loot(usr.loc)
usr << "You unwrap the package."
del(src)
to_chat(user, "You unwrap the package.")
qdel(src)
/obj/item/weapon/storage/fancy/cigar/havana // Putting this here 'cuz fuck it. -Spades
name = "\improper Havana cigar case"
+10 -5
View File
@@ -1469,11 +1469,16 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/Destroy()
PDAs -= src
/* VOREStation Removal
if (src.id && prob(90)) //IDs are kept in 90% of the cases
src.id.loc = get_turf(src.loc)
*/
..()
// VOREStation Edit - Always destroy IDs
// if (src.id && prob(90)) //IDs are kept in 90% of the cases
// src.id.forceMove(get_turf(src.loc))
// else
// qdel_null(src.id)
qdel_null(src.id)
// VOREStation Edit End
qdel_null(src.cartridge)
qdel_null(src.pai)
return ..()
/obj/item/device/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery.
if (istype(AM, /mob/living))
+4 -4
View File
@@ -78,6 +78,10 @@ var/list/civilian_cartridges = list(
var/message2
var/list/stored_data = list()
/obj/item/weapon/cartridge/Destroy()
qdel_null(radio)
return ..()
/obj/item/weapon/cartridge/engineering
name = "\improper Power-ON cartridge"
icon_state = "cart-e"
@@ -164,10 +168,6 @@ var/list/civilian_cartridges = list(
radio = new /obj/item/radio/integrated/signal(src)
..()
/obj/item/weapon/cartridge/signal/Destroy()
qdel(radio)
..()
/obj/item/weapon/cartridge/quartermaster
name = "\improper Space Parts & Space Vendors cartridge"
desc = "Perfect for the Quartermaster on the go!"
+2 -2
View File
@@ -103,7 +103,7 @@
/obj/item/radio/integrated/beepsky/Destroy()
if(radio_controller)
radio_controller.remove_object(src, control_freq)
..()
return ..()
/*
* Radio Cartridge, essentially a signaler.
@@ -152,4 +152,4 @@
/obj/item/radio/integrated/signal/Destroy()
if(radio_controller)
radio_controller.remove_object(src, frequency)
..()
return ..()
@@ -256,12 +256,12 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
if(exonet)
exonet.remove_address()
exonet = null
..()
return ..()
// Proc: ui_interact()
// Parameters: 4 (standard NanoUI arguments)
// Description: Uses a bunch of for loops to turn lists into lists of lists, so they can be displayed in nanoUI, then displays various buttons to the user.
/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null)
// this is the data which will be sent to the ui
var/data[0] //General nanoUI information
var/communicators[0] //List of communicators
@@ -356,7 +356,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700)
ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700, state = key_state)
// when the ui is first opened this is the data it will use
ui.set_initial_data(data)
// open the new ui window
@@ -803,7 +803,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
if(exonet)
exonet.remove_address()
exonet = null
..()
return ..()
// Proc: update_icon()
// Parameters: None
+9 -1
View File
@@ -81,7 +81,15 @@
playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1)
var/flashfail = 0
if(iscarbon(M))
//VOREStation Add - NIF
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.nif && H.nif.flag_check(NIF_V_FLASHPROT,NIF_FLAGS_VISION))
flashfail = 1
H.nif.notify("High intensity light detected, and blocked!",TRUE)
//VOREStation Add End
if(iscarbon(M) && !flashfail) //VOREStation Add - NIF
var/mob/living/carbon/C = M
if(C.stat != DEAD)
var/safety = C.eyecheck()
@@ -37,7 +37,7 @@
/obj/item/device/flashlight/Destroy()
if(power_use)
processing_objects -= src
..()
return ..()
/obj/item/device/flashlight/verb/toggle()
set name = "Toggle Flashlight Brightness"
+53
View File
@@ -0,0 +1,53 @@
#define RAD_LEVEL_LOW 5 //10 // Around the level at which radiation starts to become harmful
#define RAD_LEVEL_MODERATE 15 //15
#define RAD_LEVEL_HIGH 50 //50
#define RAD_LEVEL_VERY_HIGH 100 //100
//Geiger counter
//Rewritten version of TG's geiger counter
//I opted to show exact radiation levels
/obj/item/device/geiger
name = "geiger counter"
desc = "A handheld device used for detecting and measuring radiation in an area."
icon_state = "geiger_off"
item_state = "multitool"
w_class = ITEMSIZE_SMALL
var/scanning = 0
var/radiation_count = 0
/obj/item/device/geiger/New()
processing_objects |= src
/obj/item/device/geiger/process()
if(!scanning)
return
radiation_count = radiation_repository.get_rads_at_turf(get_turf(src))
update_icon()
/obj/item/device/geiger/examine(mob/user)
..(user)
to_chat(user, "<span class='warning'>[scanning ? "ambient" : "stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq.</span>")
/obj/item/device/geiger/attack_self(var/mob/user)
scanning = !scanning
update_icon()
to_chat(user, "<span class='notice'>\icon[src] You switch [scanning ? "on" : "off"] [src].</span>")
/obj/item/device/geiger/update_icon()
if(!scanning)
icon_state = "geiger_off"
return 1
switch(radiation_count)
if(null) icon_state = "geiger_on_1"
if(-INFINITY to RAD_LEVEL_LOW) icon_state = "geiger_on_1"
if(RAD_LEVEL_LOW + 1 to RAD_LEVEL_MODERATE) icon_state = "geiger_on_2"
if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) icon_state = "geiger_on_3"
if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) icon_state = "geiger_on_4"
if(RAD_LEVEL_VERY_HIGH + 1 to INFINITY) icon_state = "geiger_on_5"
#undef RAD_LEVEL_LOW
#undef RAD_LEVEL_MODERATE
#undef RAD_LEVEL_HIGH
#undef RAD_LEVEL_VERY_HIGH
+2 -1
View File
@@ -27,7 +27,8 @@
//Will stop people throwing friend pAIs into the singularity so they can respawn
if(!isnull(pai))
pai.death(0)
..()
qdel_null(radio)
return ..()
/obj/item/device/paicard/attack_self(mob/user)
if (!in_range(src, user))
@@ -97,7 +97,7 @@
/obj/item/device/radio/intercom/Destroy()
processing_objects -= src
..()
return ..()
/obj/item/device/radio/intercom/attack_ai(mob/user as mob)
src.add_fingerprint(user)
@@ -33,10 +33,8 @@ var/global/list/active_radio_jammers = list()
/obj/item/device/radio_jammer/Destroy()
if(on)
turn_off()
if(power_source)
qdel(power_source)
power_source = null
..()
qdel_null(power_source)
return ..()
/obj/item/device/radio_jammer/proc/turn_off(mob/user)
if(user)
@@ -99,6 +99,8 @@ REAGENT SCANNER
if(M.status_flags & FAKEDEATH)
OX = fake_oxy > 50 ? "<span class='warning'>Severe oxygen deprivation detected</span>" : "Subject bloodstream oxygen level normal"
user.show_message("[OX] | [TX] | [BU] | [BR]")
if(M.radiation)
user.show_message("<span class='warning'>Radiation detected.</span>")
if(istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M
if(C.reagents.total_volume)
@@ -0,0 +1,214 @@
var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
//SleeveMate!
/obj/item/device/sleevemate
name = "\improper SleeveMate 3200"
desc = "A hand-held sleeve management tool for performing one-time backups and managing mindstates."
icon = 'icons/obj/device_alt.dmi'
icon_state = "sleevemate"
item_state = "healthanalyzer"
flags = CONDUCT
slot_flags = SLOT_BELT
throwforce = 3
w_class = ITEMSIZE_SMALL
throw_speed = 5
throw_range = 10
matter = list(DEFAULT_WALL_MATERIAL = 200)
origin_tech = list(TECH_MAGNET = 2, TECH_BIO = 2)
var/datum/mind/stored_mind
/obj/item/device/sleevemate/attack(mob/living/M, mob/living/user)
if(ishuman(M))
scan_mob(M, user)
else
to_chat(user,"<span class='warning'>Not a compatible subject to work with!</span>")
/obj/item/device/sleevemate/attack_self(mob/living/user)
if(!stored_mind)
to_chat(user,"<span class='warning'>No stored mind in \the [src].</span>")
return
var/choice = alert(user,"What would you like to do?","Stored: [stored_mind.name]","Delete","Backup","Cancel")
if(!stored_mind || user.get_active_hand() != src)
return
switch(choice)
if("Delete")
to_chat(user,"<span class='notice'>Internal copy of [stored_mind.name] deleted.</span>")
stored_mind = null
update_icon()
if("Backup")
to_chat(user,"<span class='notice'>Internal copy of [stored_mind.name] backed up to database.</span>")
SStranscore.m_backup(stored_mind,null,one_time = TRUE)
if("Cancel")
return
/obj/item/device/sleevemate/proc/scan_mob(mob/living/carbon/human/H, mob/living/user)
var/output = ""
output += "<br><br><span class='notice'><b>[src.name] Scan Results</b></span><br>"
//Mind name
output += "<b>Sleeved Mind:</b> "
if(H.mind)
output += "[H.mind.name]<br>"
else
output += "<span class='warning'>Unknown/None</span><br>"
//Mind status
output += "<b>Mind Status:</b> "
if(H.client)
output += "Healthy<br>"
else
output += "Space Sleep Disorder<br>"
//Body status
output += "<b>Sleeve Status:</b> "
switch(H.stat)
if(CONSCIOUS)
output += "Alive<br>"
if(UNCONSCIOUS)
output += "Unconscious<br>"
if(DEAD)
output += "<span class='warning'>Deceased</span><br>"
else
output += "<span class='warning'>Unknown</span><br>"
//Mind/body comparison
output += "<b>Sleeve Pair:</b> "
if(H.mind && ckey(H.mind.key) != H.ckey)
output += "<span class='warning'>May not be correct body</span><br>"
else if(H.mind && ckey(H.mind.key) == H.ckey)
output += "Appears to be correct mind in body<br>"
else
output += "Unable to perform comparison<br>"
//Actions
output += "<br><b>-- Possible Actions --</b><br>"
output += "<b>Mind-Scan (One Time): </b>\[<a href='?src=\ref[src];target=\ref[H];mindscan=1'>Perform</a>\]<br>"
output += "<b>Body-Scan (One Time): </b>\[<a href='?src=\ref[src];target=\ref[H];bodyscan=1'>Perform</a>\]<br>"
//Saving a mind
output += "<b>Store Full Mind: </b>"
if(stored_mind)
output += "<span class='notice'>Already Stored</span> ([stored_mind.name])<br>"
else if(H.mind)
output += "\[<a href='?src=\ref[src];target=\ref[H];mindsteal=1'>Perform</a>\]<br>"
else
output += "<span class='warning'>Unable</span><br>"
//Soulcatcher transfer
if(stored_mind && H.nif)
var/datum/nifsoft/soulcatcher/SC = H.nif.imp_check(NIF_SOULCATCHER)
if(SC)
output += "<b>Store in Soulcatcher: </b>\[<a href='?src=\ref[src];target=\ref[H];mindput=1'>Perform</a>\]<br>"
to_chat(user,output)
/obj/item/device/sleevemate/Topic(href, href_list)
usr.setClickCooldown(DEFAULT_ATTACK_COOLDOWN)
//Sanity checking/href-hacking checking
if(usr.get_active_hand() != src)
to_chat(usr,"<span class='warning'>You're not holding \the [src].</span>")
return
var/target_ref = href_list["target"]
var/mob/living/target = locate(target_ref) in mob_list
if(!target)
to_chat(usr,"<span class='warning'>Unable to operate on that target.</span>")
return
if(!usr.Adjacent(target))
to_chat(usr,"<span class='warning'>You are too far from that target.</span>")
return
//The actual options
if(href_list["mindscan"])
if(!target.mind)
to_chat(usr,"<span class='warning'>Target seems totally braindead.</span>")
return
var/nif
if(ishuman(target))
var/mob/living/carbon/human/H = target
nif = H.nif
usr.visible_message("[usr] begins scanning [target]'s mind.","<span class='notice'>You begin scanning [target]'s mind.</span>")
if(do_after(usr,8 SECONDS,target))
SStranscore.m_backup(target.mind,nif,one_time = TRUE)
to_chat(usr,"<span class='notice'>Mind backed up!</span>")
else
to_chat(usr,"<span class='warning'>You must remain close to your target!</span>")
return
if(href_list["bodyscan"])
if(!ishuman(target))
to_chat(usr,"<span class='warning'>Target is not of an acceeptable body type.</span>")
return
var/mob/living/carbon/human/H = target
usr.visible_message("[usr] begins scanning [target]'s body.","<span class='notice'>You begin scanning [target]'s body.</span>")
if(do_after(usr,8 SECONDS,target))
var/datum/transhuman/body_record/BR = new()
BR.init_from_mob(H, TRUE, TRUE)
to_chat(usr,"<span class='notice'>Body scanned!</span>")
else
to_chat(usr,"<span class='warning'>You must remain close to your target!</span>")
return
if(href_list["mindsteal"])
if(!target.mind)
to_chat(usr,"<span class='warning'>Target seems totally braindead.</span>")
return
var/choice = alert(usr,"This will remove the target's mind from their body. The only way to put it back is via a resleeving pod. Continue?","Confirmation","Continue","Cancel")
if(choice == "Continue" && usr.get_active_hand() == src && usr.Adjacent(target))
usr.visible_message("<span class='warning'>[usr] begins downloading [target]'s mind!</span>","<span class='notice'>You begin downloading [target]'s mind!</span>")
if(do_after(usr,35 SECONDS,target)) //This is powerful, yo.
if(!stored_mind && target.mind)
stored_mind = target.mind
target.ghostize()
stored_mind.current = null
update_icon()
to_chat(usr,"<span class='notice'>Mind downloaded!</span>")
return
if(href_list["mindput"])
if(!stored_mind)
to_chat(usr,"<span class='warning'>\The [src] no longer has a stored mind.</span>")
return
var/mob/living/carbon/human/H = target
if(!istype(target))
return //href hacking only
if(!H.nif)
return //Lost it? or href hacking
var/datum/nifsoft/soulcatcher/SC = H.nif.imp_check(NIF_SOULCATCHER)
if(!SC)
return //Uninstalled it?
//Lazzzyyy.
if(!sleevemate_mob)
sleevemate_mob = new()
stored_mind.active = TRUE //Setting this causes transfer_to, to key them into the mob
stored_mind.transfer_to(sleevemate_mob)
SC.catch_mob(sleevemate_mob)
stored_mind = null
to_chat(usr,"<span class='notice'>Mind transferred into Soulcatcher!</span>")
update_icon()
/obj/item/device/sleevemate/update_icon()
if(stored_mind)
icon_state = "[initial(icon_state)]_on"
else
icon_state = initial(icon_state)
@@ -169,7 +169,7 @@
valve_open = 0
if(deleted(tank_one) || deleted(tank_two))
if(QDELETED(tank_one) || QDELETED(tank_two))
return
var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume
@@ -27,15 +27,10 @@
/obj/item/weapon/flamethrower/Destroy()
if(weldtool)
qdel(weldtool)
if(igniter)
qdel(igniter)
if(ptank)
qdel(ptank)
..()
return
qdel_null(weldtool)
qdel_null(igniter)
qdel_null(ptank)
. = ..()
/obj/item/weapon/flamethrower/process()
if(!lit)
@@ -19,6 +19,11 @@
New()
create_reagents(1000)
Destroy()
qdel_null(detonator)
qdel_null_list(beakers)
return ..()
attack_self(mob/user as mob)
if(!stage || stage==1)
if(detonator)
@@ -91,6 +91,10 @@
M << "<span class='danger'>Your ears start to ring!</span>"
M.update_icons()
/obj/item/weapon/grenade/flashbang/Destroy()
walk(src, 0) // Because we might have called walk_away, we must stop the walk loop or BYOND keeps an internal reference to us forever.
return ..()
/obj/item/weapon/grenade/flashbang/clusterbang//Created by Polymorph, fixed by Sieve
desc = "Use of this weapon may constiute a war crime in your area, consult your local Colony Director."
name = "clusterbang"
@@ -52,7 +52,7 @@
/obj/item/weapon/implant/Destroy()
if(part)
part.implants.Remove(src)
..()
return ..()
/obj/item/weapon/implant/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/implanter))
@@ -452,11 +452,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
else
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
@@ -464,13 +464,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
var/name = prob(50) ? t.name : pick(teleportlocs)
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
else
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "General")
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
qdel(a)
@@ -14,6 +14,8 @@
var/list/self_emote_descriptor = list("transfer") //In format of You [self_emote_descriptor] some [generated_reagent] into [container]
var/list/random_emote = list() //An emote the person with the implant may be forced to perform after a prob check, such as [X] meows.
var/assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant
var/verb_name = "Transfer From Reagent Implant"
var/verb_desc = "Remove reagents from am internal reagent into a container"
/obj/item/weapon/implant/reagent_generator/New()
..()
@@ -31,7 +33,7 @@
/obj/item/weapon/implant/reagent_generator/implanted(mob/living/carbon/source)
processing_objects += src
to_chat(source, "<span class='notice'>You implant [source] with \the [src].</span>")
source.verbs |= assigned_proc
assigned_proc = new assigned_proc(source, verb_name, verb_desc)
return 1
/obj/item/weapon/implant/reagent_generator/process()
@@ -42,7 +42,7 @@ Protectiveness | Armor %
/obj/item/clothing/Destroy()
processing_objects -= src
..()
return ..()
/obj/item/clothing/get_material()
return material
@@ -71,7 +71,7 @@
/obj/item/weapon/material/Destroy()
processing_objects -= src
..()
. = ..()
/obj/item/weapon/material/apply_hit_effect()
..()
@@ -26,7 +26,7 @@
T.dirt = 0
for(var/obj/effect/O in src)
if(istype(O,/obj/effect/rune) || istype(O,/obj/effect/decal/cleanable) || istype(O,/obj/effect/overlay))
del(O)
qdel(O)
/* //Reagent code changed at some point and the below doesn't work. To be fixed later.
source.reagents.reaction(src, TOUCH, 10) //10 is the multiplier for the reaction effect. probably needed to wet the floor properly.
source.reagents.remove_any(1) //reaction() doesn't use up the reagents
@@ -47,16 +47,16 @@
return
..()
/obj/item/weapon/mop_deploy/Del()
/obj/item/weapon/mop_deploy/Destroy()
processing_objects -= src
..()
. = ..()
/obj/item/weapon/mop_deploy/attack_self(mob/user as mob)
user.drop_from_inventory(src)
spawn(1) if(src) del(src)
spawn(1) if(!QDELETED(src)) qdel(src)
/obj/item/weapon/mop_deploy/dropped()
spawn(1) if(src) del(src)
spawn(1) if(!QDELETED(src)) qdel(src)
/obj/item/weapon/mop_deploy/process()
if(!creator || loc != creator || !creator.item_is_in_hands(src))
@@ -71,4 +71,4 @@
host.pinned -= src
host.embedded -= src
host.drop_from_inventory(src)
spawn(1) if(src) del(src)
spawn(1) if(!QDELETED(src)) qdel(src)
@@ -124,7 +124,7 @@
/obj/item/weapon/handcuffs,
/obj/item/device/flash,
/obj/item/clothing/glasses,
/obj/item/ammo_casing/shotgun,
/obj/item/ammo_casing/a12g,
/obj/item/ammo_magazine,
/obj/item/weapon/cell/device,
/obj/item/weapon/reagent_containers/food/snacks/donut/,
@@ -75,13 +75,14 @@
..()
new /obj/item/clothing/mask/breath(src)
new /obj/item/weapon/tank/emergency/phoron_double(src)
//End Edit
new /obj/item/clothing/glasses/goggles(src)
/obj/item/weapon/storage/box/engineer/New()
..()
new /obj/item/clothing/mask/breath(src)
new /obj/item/weapon/tank/emergency/oxygen/engi(src)
new /obj/item/clothing/glasses/goggles(src)
//VOREStation Edit End
/obj/item/weapon/storage/box/gloves
name = "box of latex gloves"
desc = "Contains white gloves."
@@ -151,12 +152,12 @@
/obj/item/weapon/storage/box/blanks/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/blank(src)
new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/blanks/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/blank(src)
new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/beanbags
name = "box of beanbag shells"
@@ -167,12 +168,12 @@
/obj/item/weapon/storage/box/beanbags/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/beanbags/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/beanbag(src)
new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/shotgunammo
name = "box of shotgun slugs"
@@ -183,12 +184,12 @@
/obj/item/weapon/storage/box/shotgunammo/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunammo/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun(src)
new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunshells
name = "box of shotgun shells"
@@ -199,12 +200,12 @@
/obj/item/weapon/storage/box/shotgunshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/pellet(src)
new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/shotgunshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/pellet(src)
new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/flashshells
name = "box of illumination shells"
@@ -215,12 +216,12 @@
/obj/item/weapon/storage/box/flashshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/flash(src)
new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/flashshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/flash(src)
new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/stunshells
name = "box of stun shells"
@@ -231,12 +232,12 @@
/obj/item/weapon/storage/box/stunshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/stunshell(src)
new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/stunshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/stunshell(src)
new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/practiceshells
name = "box of practice shells"
@@ -247,12 +248,12 @@
/obj/item/weapon/storage/box/practiceshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/practice(src)
new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/practiceshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/practice(src)
new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/empshells
name = "box of emp shells"
@@ -263,12 +264,12 @@
/obj/item/weapon/storage/box/empshells/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/emp(src)
new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/empshells/large/New()
..()
for(var/i = 1 to 8)
new /obj/item/ammo_casing/shotgun/emp(src)
new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/sniperammo
name = "box of 14.5mm shells"
@@ -12,7 +12,7 @@
/obj/item/weapon/storage/internal/Destroy()
master_item = null
..()
. = ..()
/obj/item/weapon/storage/internal/attack_hand()
return //make sure this is never picked up
@@ -38,15 +38,15 @@
/obj/item/weapon/storage/Destroy()
close_all()
qdel(boxes)
qdel(src.storage_start)
qdel(src.storage_continue)
qdel(src.storage_end)
qdel(src.stored_start)
qdel(src.stored_continue)
qdel(src.stored_end)
qdel(closer)
..()
qdel_null(boxes)
qdel_null(src.storage_start)
qdel_null(src.storage_continue)
qdel_null(src.storage_end)
qdel_null(src.stored_start)
qdel_null(src.stored_continue)
qdel_null(src.stored_end)
qdel_null(closer)
. = ..()
/obj/item/weapon/storage/MouseDrop(obj/over_object as obj)
if(!canremove)
@@ -27,7 +27,7 @@
if("guns")
new /obj/item/weapon/gun/projectile/revolver(src)
new /obj/item/ammo_magazine/a357(src)
new /obj/item/ammo_magazine/s357(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/weapon/plastique(src)
new /obj/item/weapon/plastique(src)
@@ -24,8 +24,8 @@
ion_trail.set_up(src)
/obj/item/weapon/tank/jetpack/Destroy()
qdel(ion_trail)
..()
qdel_null(ion_trail)
return ..()
/obj/item/weapon/tank/jetpack/examine(mob/user)
. = ..()
@@ -2,10 +2,88 @@
name = "double emergency phoron tank"
desc = "An emergency air tank hastily painted red."
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_double_nitrogen"
gauge_icon = "indicator_emergency_double"
icon_state = "emergency_double_vox"
gauge_icon = "indicator_double"
gauge_cap = 3
volume = 10
/obj/item/weapon/tank/emergency/phoron_double/New()
..()
air_contents.adjust_gas("phoron", (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
//New icons
/obj/item/weapon/tank/oxygen
icon = 'icons/obj/tank_vr.dmi'
icon_state = "oxygen"
gauge_cap = 3
gauge_icon = "indicator_bigtank"
// /obj/item/weapon/tank/oxygen/yellow
// /obj/item/weapon/tank/oxygen/red
/obj/item/weapon/tank/anesthetic
icon = 'icons/obj/tank_vr.dmi'
icon_state = "anesthetic"
gauge_cap = 3
gauge_icon = "indicator_bigtank"
/obj/item/weapon/tank/air
icon = 'icons/obj/tank_vr.dmi'
icon_state = "oxygen"
gauge_cap = 3
gauge_icon = "indicator_bigtank"
/obj/item/weapon/tank/phoron
icon = 'icons/obj/tank_vr.dmi'
icon_state = "phoron"
/obj/item/weapon/tank/vox //Can't be a child of phoron or the gas amount gets screwey.
icon = 'icons/obj/tank_vr.dmi'
icon_state = "plasma_fr"
/obj/item/weapon/tank/emergency
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency"
gauge_icon = "indicator_smalltank"
gauge_cap = 3
/obj/item/weapon/tank/emergency/oxygen
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency"
gauge_icon = "indicator_smalltank"
gauge_cap = 3
/obj/item/weapon/tank/emergency/oxygen/engi
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_engi"
gauge_icon = "indicator_engi"
gauge_cap = 3
/obj/item/weapon/tank/emergency/oxygen/double
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_double"
gauge_icon = "indicator_double"
gauge_cap = 3
/obj/item/weapon/tank/emergency/nitrogen
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_nitrogen"
gauge_icon = "indicator_smalltank"
gauge_cap = 3
/obj/item/weapon/tank/emergency/nitrogen/double
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_double_vox"
gauge_icon = "indicator_double"
gauge_cap = 3
/obj/item/weapon/tank/emergency/phoron
icon = 'icons/obj/tank_vr.dmi'
icon_state = "emergency_p"
gauge_icon = "indicator_smalltank"
gauge_cap = 3
/obj/item/weapon/tank/nitrogen
icon = 'icons/obj/tank_vr.dmi'
icon_state = "oxygen_fr"
gauge_icon = "indicator_bigtank"
gauge_cap = 3
@@ -44,8 +44,7 @@ var/list/global/tank_gauge_cache = list()
return
/obj/item/weapon/tank/Destroy()
if(air_contents)
qdel(air_contents)
qdel_null(air_contents)
processing_objects.Remove(src)
@@ -53,7 +52,7 @@ var/list/global/tank_gauge_cache = list()
var/obj/item/device/transfer_valve/TTV = loc
TTV.remove_tank(src)
..()
return ..()
/obj/item/weapon/tank/examine(mob/user)
. = ..(user, 0)
+2 -1
View File
@@ -376,6 +376,7 @@
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
if(!E)
return
if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
switch(safety)
if(1)
usr << "<span class='warning'>Your eyes sting a little.</span>"
@@ -435,7 +436,7 @@
/obj/item/weapon/weldingtool/experimental/Destroy()
processing_objects -= src
..()
return ..()
/obj/item/weapon/weldingtool/experimental/process()
..()
+1 -1
View File
@@ -116,7 +116,7 @@
unbuckle_mob()
processing_objects -= src
..()
return ..()
/obj/effect/energy_net/process()
if(isnull(buckled_mob) || buckled_mob.loc != loc)