mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-24 04:26:38 +01:00
Merge branch 'master' of https://github.com/VOREStation/VOREStation into Fluff_Items_worshop
This commit is contained in:
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -116,7 +116,7 @@
|
||||
unbuckle_mob()
|
||||
|
||||
processing_objects -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/energy_net/process()
|
||||
if(isnull(buckled_mob) || buckled_mob.loc != loc)
|
||||
|
||||
Reference in New Issue
Block a user