Merge remote-tracking branch 'upstream/dev' into 151210-TapeTape

Conflicts:
	code/__defines/misc.dm
This commit is contained in:
PsiOmegaDelta
2015-12-13 11:50:06 +01:00
91 changed files with 3150 additions and 2217 deletions

View File

@@ -23,6 +23,10 @@
var/buffer_name
var/atom/buffer_object
/obj/item/device/multitool/Destroy()
unregister_buffer(buffer_object)
return ..()
/obj/item/device/multitool/proc/get_buffer(var/typepath)
// Only allow clearing the buffer name when someone fetches the buffer.
// Means you cannot be sure the source hasn't been destroyed until the very moment it's needed.
@@ -41,16 +45,16 @@
if(!buffer || istype(buffer))
buffer_name = buffer ? buffer.name : null
if(buffer != buffer_object)
if(buffer_object)
buffer_object.unregister(OBSERVER_EVENT_DESTROY, src)
unregister_buffer(buffer_object)
buffer_object = buffer
if(buffer_object)
buffer_object.register(OBSERVER_EVENT_DESTROY, src, /obj/item/device/multitool/proc/on_buffer_destroyed)
buffer_object.register(OBSERVER_EVENT_DESTROY, src, /obj/item/device/multitool/proc/unregister_buffer)
/obj/item/device/multitool/proc/on_buffer_destroyed(var/atom/destroyed_buffer)
/obj/item/device/multitool/proc/unregister_buffer(var/atom/buffer_to_unregister)
// Only remove the buffered object, don't reset the name
// This means one cannot know if the buffer has been destroyed until one attempts to use it.
if(destroyed_buffer == buffer_object)
if(buffer_to_unregister == buffer_object && buffer_object)
buffer_object.unregister(OBSERVER_EVENT_DESTROY, src)
buffer_object = null
/obj/item/device/multitool/resolve_attackby(atom/A, mob/user)

View File

@@ -98,6 +98,8 @@
name = "head of personnel's encryption key"
icon_state = "hop_cypherkey"
channels = list("Supply" = 1, "Service" = 1, "Command" = 1, "Security" = 0)
/*
/obj/item/device/encryptionkey/headset_mine
name = "mining radio encryption key"
@@ -122,3 +124,7 @@
/obj/item/device/encryptionkey/ert
name = "\improper ERT radio encryption key"
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
/obj/item/device/encryptionkey/entertainment
name = "entertainment radio key"
channels = list("Entertainment" = 1)

View File

@@ -209,6 +209,13 @@
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/heads/hos
/obj/item/device/radio/headset/entertainment
name = "actor's radio headset"
desc = "specially made to make you sound less cheesy."
icon_state = "com_headset"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/entertainment
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.set_machine(src)

View File

@@ -39,6 +39,11 @@
name = "station intercom (Security)"
frequency = SEC_I_FREQ
/obj/item/device/radio/intercom/entertainment
name = "entertainment intercom"
frequency = ENT_FREQ
canhear_range = 4
/obj/item/device/radio/intercom/New()
..()
processing_objects += src
@@ -54,6 +59,13 @@
num2text(SEC_I_FREQ) = list(access_security)
)
/obj/item/device/radio/intercom/entertainment/New()
..()
internal_channels = list(
num2text(PUB_FREQ) = list(),
num2text(ENT_FREQ) = list()
)
/obj/item/device/radio/intercom/syndicate
name = "illicit intercom"
desc = "Talk through this. Evilly"

View File

@@ -2,6 +2,7 @@
var/global/list/default_internal_channels = list(
num2text(PUB_FREQ) = list(),
num2text(AI_FREQ) = list(access_synth),
num2text(ENT_FREQ) = list(),
num2text(ERT_FREQ) = list(access_cent_specops),
num2text(COMM_FREQ)= list(access_heads),
num2text(ENG_FREQ) = list(access_engine_equip, access_atmospherics),

View File

@@ -60,6 +60,10 @@
icon_state = "meson"
icon = 'icons/obj/clothing/glasses.dmi'
/obj/item/borg/sight/material
name = "\proper material scanner vision"
sight_mode = BORGMATERIAL
/obj/item/borg/sight/hud
name = "hud"
var/obj/item/clothing/glasses/hud/hud = null

View File

@@ -17,6 +17,7 @@
var/amount = 1
var/max_amount //also see stack recipes initialisation, param "max_res_amount" must be equal to this max_amount
var/stacktype //determines whether different stack types can merge
var/build_type = null //used when directly applied to a turf
var/uses_charge = 0
var/list/charge_costs = null
var/list/datum/matter_synth/synths = null

View File

@@ -12,7 +12,6 @@
desc = "A non-descript floor tile"
w_class = 3
max_amount = 60
var/build_type = null
/obj/item/stack/tile/New()
..()

View File

@@ -80,9 +80,14 @@
build_path = /obj/machinery/computer/cloning
origin_tech = list(TECH_DATA = 3, TECH_BIO = 3)
/obj/item/weapon/circuitboard/arcade
name = T_BOARD("arcade machine")
build_path = /obj/machinery/computer/arcade
/obj/item/weapon/circuitboard/arcade/battle
name = T_BOARD("battle arcade machine")
build_path = /obj/machinery/computer/arcade/battle
origin_tech = list(TECH_DATA = 1)
/obj/item/weapon/circuitboard/arcade/orion_trail
name = T_BOARD("orion trail arcade machine")
build_path = /obj/machinery/computer/arcade/orion_trail
origin_tech = list(TECH_DATA = 1)
/obj/item/weapon/circuitboard/turbine_control

View File

@@ -6,6 +6,7 @@
w_class = 2.0
force = 2.0
det_time = null
unacidable = 1
var/stage = 0
var/state = 0
var/path = 0

View File

@@ -45,11 +45,19 @@
return 1
/obj/proc/CouldUseTopic(var/mob/user)
if(!isAI(user) && src.Adjacent(user))
// We are -probably- in physical contact with the object, better than how Topics() previously did it and always applied fingerprints.
add_fingerprint(user)
user.AddTopicPrint(src)
/mob/proc/AddTopicPrint(var/obj/target)
target.add_hiddenprint(src)
/mob/living/AddTopicPrint(var/obj/target)
if(Adjacent(target))
target.add_fingerprint(src)
else
add_hiddenprint(user)
target.add_hiddenprint(src)
/mob/living/silicon/ai/AddTopicPrint(var/obj/target)
target.add_hiddenprint(src)
/obj/proc/CouldNotUseTopic(var/mob/user)
// Nada

View File

@@ -85,6 +85,7 @@
new /obj/item/weapon/storage/backpack/cultpack (src)
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/storage/fancy/candle_box(src)
new /obj/item/weapon/deck/tarot(src)
return