Merge branch 'master' into plumb
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
// Embedded signaller used in anomalies.
|
||||
/obj/item/assembly/signaler/anomaly
|
||||
name = "anomaly core"
|
||||
desc = "The neutralized core of an anomaly. It'd probably be valuable for research."
|
||||
icon_state = "anomaly_core"
|
||||
//inhand_icon_state = "electronic"
|
||||
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/anomaly_type = /obj/effect/anomaly
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal)
|
||||
if(!signal)
|
||||
return FALSE
|
||||
if(signal.data["code"] != code)
|
||||
return FALSE
|
||||
if(suicider)
|
||||
manual_suicide(suicider)
|
||||
for(var/obj/effect/anomaly/A in get_turf(src))
|
||||
A.anomalyNeutralize()
|
||||
return TRUE
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/manual_suicide(mob/living/carbon/user)
|
||||
user.visible_message("<span class='suicide'>[user]'s [src] is reacting to the radio signal, warping [user.p_their()] body!</span>")
|
||||
//user.set_suicide(TRUE)
|
||||
user.suicide_log()
|
||||
user.gib()
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/attackby(obj/item/I, mob/user, params)
|
||||
if(I.tool_behaviour == TOOL_ANALYZER)
|
||||
to_chat(user, "<span class='notice'>Analyzing... [src]'s stabilized field is fluctuating along frequency [format_frequency(frequency)], code [code].</span>")
|
||||
return ..()
|
||||
|
||||
//Anomaly cores
|
||||
/obj/item/assembly/signaler/anomaly/pyro
|
||||
name = "\improper pyroclastic anomaly core"
|
||||
desc = "The neutralized core of a pyroclastic anomaly. It feels warm to the touch. It'd probably be valuable for research."
|
||||
icon_state = "pyro_core"
|
||||
anomaly_type = /obj/effect/anomaly/pyro
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/grav
|
||||
name = "\improper gravitational anomaly core"
|
||||
desc = "The neutralized core of a gravitational anomaly. It feels much heavier than it looks. It'd probably be valuable for research."
|
||||
icon_state = "grav_core"
|
||||
anomaly_type = /obj/effect/anomaly/grav
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/flux
|
||||
name = "\improper flux anomaly core"
|
||||
desc = "The neutralized core of a flux anomaly. Touching it makes your skin tingle. It'd probably be valuable for research."
|
||||
icon_state = "flux_core"
|
||||
anomaly_type = /obj/effect/anomaly/flux
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/bluespace
|
||||
name = "\improper bluespace anomaly core"
|
||||
desc = "The neutralized core of a bluespace anomaly. It keeps phasing in and out of view. It'd probably be valuable for research."
|
||||
icon_state = "anomaly_core"
|
||||
anomaly_type = /obj/effect/anomaly/bluespace
|
||||
|
||||
/obj/item/assembly/signaler/anomaly/vortex
|
||||
name = "\improper vortex anomaly core"
|
||||
desc = "The neutralized core of a vortex anomaly. It won't sit still, as if some invisible force is acting on it. It'd probably be valuable for research."
|
||||
icon_state = "vortex_core"
|
||||
anomaly_type = /obj/effect/anomaly/bhole
|
||||
@@ -33,11 +33,13 @@
|
||||
var/inaccuracy_percentage = 1.5
|
||||
var/positive_cash_offset = 0
|
||||
var/negative_cash_offset = 0
|
||||
var/minor_rewards = list(/obj/item/stack/circuit_stack/full, //To add a new minor reward, add it here.
|
||||
/obj/item/flashlight/flashdark,
|
||||
/obj/item/pen/survival,
|
||||
/obj/item/circuitboard/machine/sleeper/party,
|
||||
/obj/item/toy/sprayoncan)
|
||||
var/list/minor_rewards = list(
|
||||
//To add a new minor reward, add it here.
|
||||
/obj/item/stack/circuit_stack/full,
|
||||
/obj/item/pen/survival,
|
||||
/obj/item/circuitboard/machine/sleeper/party,
|
||||
/obj/item/toy/sprayoncan,
|
||||
)
|
||||
var/static/list/item_list = list()
|
||||
|
||||
/obj/machinery/rnd/bepis/attackby(obj/item/O, mob/user, params)
|
||||
@@ -101,6 +103,7 @@
|
||||
return
|
||||
account.adjust_money(-deposit_value) //The money vanishes, not paid to any accounts.
|
||||
SSblackbox.record_feedback("amount", "BEPIS_credits_spent", deposit_value)
|
||||
//log_econ("[deposit_value] credits were inserted into [src] by [account.account_holder]")
|
||||
banked_cash += deposit_value
|
||||
use_power(1000 * power_saver)
|
||||
say("Cash deposit successful. There is [banked_cash] in the chamber.")
|
||||
@@ -179,10 +182,10 @@
|
||||
icon_state = "chamber"
|
||||
return
|
||||
|
||||
/obj/machinery/rnd/bepis/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/machinery/rnd/bepis/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "Bepis", name, 500, 480, master_ui, state)
|
||||
ui = new(user, src, "Bepis", name)
|
||||
ui.open()
|
||||
RefreshParts()
|
||||
|
||||
|
||||
+18
@@ -119,6 +119,24 @@
|
||||
category = list("initial", "Medical","Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/bonesetter
|
||||
name = "Bonesetter"
|
||||
id = "bonesetter"
|
||||
build_type = AUTOLATHE | PROTOLATHE
|
||||
materials = list(/datum/material/iron = 1000)
|
||||
build_path = /obj/item/bonesetter
|
||||
category = list("initial", "Medical", "Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/sticky_tape/surgical
|
||||
name = "Surgical Tape"
|
||||
id = "surgical_tape"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/plastic = 500)
|
||||
build_path = /obj/item/stack/sticky_tape/surgical
|
||||
category = list("initial", "Medical")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/beaker
|
||||
name = "Beaker"
|
||||
id = "beaker"
|
||||
|
||||
@@ -92,6 +92,16 @@
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/ranged_analyzer
|
||||
name = "Long-range Analyzer"
|
||||
desc = "A new advanced atmospheric analyzer design, capable of performing scans at long range."
|
||||
id = "ranged_analyzer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/iron = 400, /datum/material/glass = 1000, /datum/material/uranium = 800, /datum/material/gold = 200, /datum/material/plastic = 200)
|
||||
build_path = /obj/item/analyzer/ranged
|
||||
category = list("Tool Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/////////////////////////////////////////
|
||||
//////////////Alien Tools////////////////
|
||||
/////////////////////////////////////////
|
||||
|
||||
@@ -150,8 +150,6 @@
|
||||
return
|
||||
if(busy)
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_BREAKOUT)
|
||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
user.visible_message("<span class='notice'>You see [user] kicking against the door of [src]!</span>", \
|
||||
"<span class='notice'>You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
||||
"<span class='hear'>You hear a metallic creaking from [src].</span>")
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
icon_screen = "nanite_chamber_control"
|
||||
circuit = /obj/item/circuitboard/computer/nanite_chamber_control
|
||||
ui_x = 380
|
||||
ui_y = 570
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/Initialize()
|
||||
. = ..()
|
||||
@@ -25,10 +23,10 @@
|
||||
find_chamber()
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/machinery/computer/nanite_chamber_control/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "NaniteChamberControl", name, ui_x, ui_y, master_ui, state)
|
||||
ui = new(user, src, "NaniteChamberControl", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/nanite_chamber_control/ui_data()
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
/obj/machinery/computer/nanite_cloud_controller
|
||||
name = "nanite cloud controller"
|
||||
desc = "Stores and controls nanite cloud backups."
|
||||
circuit = /obj/item/circuitboard/computer/nanite_cloud_controller
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "nanite_cloud_controller"
|
||||
ui_x = 375
|
||||
ui_y = 700
|
||||
circuit = /obj/item/circuitboard/computer/nanite_cloud_controller
|
||||
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/list/datum/nanite_cloud_backup/cloud_backups = list()
|
||||
@@ -20,19 +18,25 @@
|
||||
/obj/machinery/computer/nanite_cloud_controller/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
if (user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
if(disk)
|
||||
eject(user)
|
||||
disk = N
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/AltClick(mob/user)
|
||||
if(disk && user.canUseTopic(src, !issilicon(user)))
|
||||
to_chat(user, "<span class='notice'>You take out [disk] from [src].</span>")
|
||||
eject(user)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user) ||!user.put_in_active_hand(disk))
|
||||
if(!istype(user) || !Adjacent(user))// ||!user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
|
||||
@@ -53,10 +57,10 @@
|
||||
backup.nanites = cloud_copy
|
||||
investigate_log("[key_name(user)] created a new nanite cloud backup with id #[cloud_id]", INVESTIGATE_NANITES)
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/machinery/computer/nanite_cloud_controller/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "NaniteCloudControl", name, ui_x, ui_y, master_ui, state)
|
||||
ui = new(user, src, "NaniteCloudControl", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/nanite_cloud_controller/ui_data()
|
||||
|
||||
@@ -3,26 +3,24 @@
|
||||
desc = "Compiles nanite programs from the techweb servers and downloads them into disks."
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "nanite_program_hub"
|
||||
circuit = /obj/item/circuitboard/machine/nanite_program_hub
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
ui_x = 500
|
||||
ui_y = 700
|
||||
circuit = /obj/item/circuitboard/machine/nanite_program_hub
|
||||
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/datum/techweb/linked_techweb
|
||||
var/current_category = "Main"
|
||||
var/detail_view = TRUE
|
||||
var/categories = list(
|
||||
list(name = "Utility Nanites"),
|
||||
list(name = "Medical Nanites"),
|
||||
list(name = "Sensor Nanites"),
|
||||
list(name = "Augmentation Nanites"),
|
||||
list(name = "Suppression Nanites"),
|
||||
list(name = "Weaponized Nanites"),
|
||||
list(name = "Protocols") //Moved to default techweb from B.E.P.I.S. research, for now
|
||||
)
|
||||
list(name = "Utility Nanites"),
|
||||
list(name = "Medical Nanites"),
|
||||
list(name = "Sensor Nanites"),
|
||||
list(name = "Augmentation Nanites"),
|
||||
list(name = "Suppression Nanites"),
|
||||
list(name = "Weaponized Nanites"),
|
||||
list(name = "Protocols"),
|
||||
)
|
||||
|
||||
/obj/machinery/nanite_program_hub/Initialize()
|
||||
. = ..()
|
||||
@@ -31,26 +29,44 @@
|
||||
/obj/machinery/nanite_program_hub/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
if(disk)
|
||||
eject(user)
|
||||
disk = N
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/nanite_program_hub/screwdriver_act(mob/living/user, obj/item/I) //remove when runtimed
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
return default_deconstruction_screwdriver(user, "nanite_program_hub_t", "nanite_program_hub", I)
|
||||
|
||||
/obj/machinery/nanite_program_hub/crowbar_act(mob/living/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
return default_deconstruction_crowbar(I)
|
||||
|
||||
/obj/machinery/nanite_program_hub/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk))
|
||||
if(!istype(user) || !Adjacent(user))// || !user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/machinery/nanite_program_hub/AltClick(mob/user)
|
||||
if(disk && user.canUseTopic(src, !issilicon(user)))
|
||||
to_chat(user, "<span class='notice'>You take out [disk] from [src].</span>")
|
||||
eject(user)
|
||||
return
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "NaniteProgramHub", name, ui_x, ui_y, master_ui, state)
|
||||
ui = new(user, src, "NaniteProgramHub", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/nanite_program_hub/ui_data()
|
||||
@@ -123,9 +139,3 @@
|
||||
disk.program = null
|
||||
disk.name = initial(disk.name)
|
||||
. = TRUE
|
||||
|
||||
|
||||
/obj/machinery/nanite_program_hub/admin/Initialize()
|
||||
. = ..()
|
||||
linked_techweb = SSresearch.admin_tech
|
||||
|
||||
|
||||
@@ -3,41 +3,57 @@
|
||||
desc = "A device that can edit nanite program disks to adjust their functionality."
|
||||
var/obj/item/disk/nanite_program/disk
|
||||
var/datum/nanite_program/program
|
||||
circuit = /obj/item/circuitboard/machine/nanite_programmer
|
||||
icon = 'icons/obj/machines/research.dmi'
|
||||
icon_state = "nanite_programmer"
|
||||
use_power = IDLE_POWER_USE
|
||||
anchored = TRUE
|
||||
density = TRUE
|
||||
flags_1 = HEAR_1
|
||||
ui_x = 420
|
||||
ui_y = 550
|
||||
circuit = /obj/item/circuitboard/machine/nanite_programmer
|
||||
|
||||
/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
var/obj/item/disk/nanite_program/N = I
|
||||
if(disk)
|
||||
eject(user)
|
||||
if(user.transferItemToLoc(N, src))
|
||||
to_chat(user, "<span class='notice'>You insert [N] into [src]</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
if(disk)
|
||||
eject(user)
|
||||
disk = N
|
||||
program = N.program
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/machinery/nanite_programmer/screwdriver_act(mob/living/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
return default_deconstruction_screwdriver(user, "nanite_programmer_t", "nanite_programmer", I)
|
||||
|
||||
/obj/machinery/nanite_programmer/crowbar_act(mob/living/user, obj/item/I)
|
||||
if(..())
|
||||
return TRUE
|
||||
|
||||
return default_deconstruction_crowbar(I)
|
||||
|
||||
/obj/machinery/nanite_programmer/proc/eject(mob/living/user)
|
||||
if(!disk)
|
||||
return
|
||||
if(!istype(user) || !Adjacent(user) || !user.put_in_active_hand(disk))
|
||||
if(!istype(user) || !Adjacent(user))// || !user.put_in_active_hand(disk))
|
||||
disk.forceMove(drop_location())
|
||||
disk = null
|
||||
program = null
|
||||
|
||||
/obj/machinery/nanite_programmer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/machinery/nanite_programmer/AltClick(mob/user)
|
||||
if(disk && user.canUseTopic(src, !issilicon(user)))
|
||||
to_chat(user, "<span class='notice'>You take out [disk] from [src].</span>")
|
||||
eject(user)
|
||||
return
|
||||
|
||||
/obj/machinery/nanite_programmer/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "NaniteProgrammer", name, ui_x, ui_y, master_ui, state)
|
||||
ui = new(user, src, "NaniteProgrammer", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/nanite_programmer/ui_data()
|
||||
@@ -131,7 +147,7 @@
|
||||
program.timer_trigger_delay = timer
|
||||
. = TRUE
|
||||
|
||||
/obj/machinery/nanite_programmer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode, atom/movable/source)
|
||||
/obj/machinery/nanite_programmer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, list/message_mods = list())
|
||||
. = ..()
|
||||
var/static/regex/when = regex("(?:^\\W*when|when\\W*$)", "i") //starts or ends with when
|
||||
if(findtext(raw_message, when) && !istype(speaker, /obj/machinery/nanite_programmer))
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
rogue_types = list(/datum/nanite_program/toxic)
|
||||
|
||||
/datum/nanite_program/self_scan/register_extra_settings()
|
||||
extra_settings[NES_SCAN_TYPE] = new /datum/nanite_extra_setting/type("Medical", list("Medical", "Chemical", "Nanite"))
|
||||
extra_settings[NES_SCAN_TYPE] = new /datum/nanite_extra_setting/type("Medical", list("Medical", "Chemical", "Wound", "Nanite"))
|
||||
|
||||
/datum/nanite_program/self_scan/on_trigger(comm_message)
|
||||
if(host_mob.stat == DEAD)
|
||||
@@ -62,6 +62,8 @@
|
||||
healthscan(host_mob, host_mob)
|
||||
if("Chemical")
|
||||
chemscan(host_mob, host_mob)
|
||||
if("Wound")
|
||||
woundscan(host_mob, host_mob)
|
||||
if("Nanite")
|
||||
SEND_SIGNAL(host_mob, COMSIG_NANITE_SCAN, host_mob, TRUE)
|
||||
|
||||
|
||||
@@ -80,10 +80,13 @@
|
||||
var/datum/nanite_program/relay/N = X
|
||||
N.relay_signal(code, relay_code, source)
|
||||
|
||||
/obj/item/nanite_remote/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
/obj/item/nanite_remote/ui_state(mob/user)
|
||||
return GLOB.hands_state
|
||||
|
||||
/obj/item/nanite_remote/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "NaniteRemote", name, 420, 500, master_ui, state)
|
||||
ui = new(user, src, "NaniteRemote", name)
|
||||
ui.open()
|
||||
|
||||
/obj/item/nanite_remote/ui_data()
|
||||
@@ -94,7 +97,6 @@
|
||||
data["locked"] = locked
|
||||
data["saved_settings"] = saved_settings
|
||||
data["program_name"] = current_program_name
|
||||
|
||||
return data
|
||||
|
||||
/obj/item/nanite_remote/ui_act(action, params)
|
||||
|
||||
@@ -130,8 +130,6 @@
|
||||
return
|
||||
if(busy)
|
||||
return
|
||||
user.changeNext_move(CLICK_CD_BREAKOUT)
|
||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
user.visible_message("<span class='notice'>You see [user] kicking against the door of [src]!</span>", \
|
||||
"<span class='notice'>You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)</span>", \
|
||||
"<span class='hear'>You hear a metallic creaking from [src].</span>")
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
display_name = "Advanced Surgery Tools"
|
||||
description = "Refined and improved redesigns for the run-of-the-mill medical utensils."
|
||||
prereq_ids = list("adv_biotech", "adv_surgery")
|
||||
design_ids = list("drapes", "retractor_adv", "surgicaldrill_adv", "scalpel_adv")
|
||||
design_ids = list("drapes", "retractor_adv", "surgicaldrill_adv", "scalpel_adv", "bonesetter", "surgical_tape")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_surgery
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
id = "exp_tools"
|
||||
display_name = "Experimental Tools"
|
||||
description = "Highly advanced construction tools."
|
||||
design_ids = list("exwelder", "jawsoflife", "handdrill", "holosigncombifan")
|
||||
design_ids = list("exwelder", "jawsoflife", "handdrill", "holosigncombifan", "ranged_analyzer")
|
||||
prereq_ids = list("adv_engi")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ Slimecrossing Armor
|
||||
light_color = newcolor
|
||||
set_light(5)
|
||||
|
||||
/obj/structure/light_prism/attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
/obj/structure/light_prism/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
to_chat(user, "<span class='notice'>You dispel [src]</span>")
|
||||
qdel(src)
|
||||
|
||||
@@ -118,7 +118,7 @@ Slimecrossing Armor
|
||||
..()
|
||||
REMOVE_TRAIT(user, TRAIT_PACIFISM, "peaceflower_[REF(src)]")
|
||||
|
||||
/obj/item/clothing/head/peaceflower/attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
/obj/item/clothing/head/peaceflower/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
if(iscarbon(user))
|
||||
var/mob/living/carbon/C = user
|
||||
if(src == C.head)
|
||||
|
||||
Reference in New Issue
Block a user