Merge upstream

This commit is contained in:
Cyberboss
2017-03-27 09:32:08 -04:00
110 changed files with 1368 additions and 705 deletions
@@ -1,4 +1,3 @@
/obj/item/device/encryptionkey
name = "standard encryption key"
desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN."
@@ -8,7 +7,7 @@
origin_tech = "engineering=2;bluespace=1"
var/translate_binary = 0
var/syndie = 0
var/centcom = 0
var/independent = FALSE
var/list/channels = list()
/obj/item/device/encryptionkey/syndicate
@@ -126,7 +125,7 @@
name = "centcom radio encryption key"
desc = "An encryption key for a radio headset. To access the centcom channel, use :y."
icon_state = "cent_cypherkey"
centcom = 1
independent = TRUE
channels = list("Centcom" = 1)
/obj/item/device/encryptionkey/ai //ported from NT, this goes 'inside' the AI.
@@ -291,8 +291,8 @@
if(keyslot2.syndie)
src.syndie = 1
if (keyslot2.centcom)
centcom = 1
if (keyslot2.independent)
independent = TRUE
for(var/ch_name in channels)
@@ -305,4 +305,4 @@
return
if (command)
use_command = !use_command
to_chat(user, "<span class='notice'>You toggle high-volume mode [use_command ? "on" : "off"].</span>")
to_chat(user, "<span class='notice'>You toggle high-volume mode [use_command ? "on" : "off"].</span>")
@@ -23,7 +23,7 @@
var/subspace_switchable = 0
var/subspace_transmission = 0
var/syndie = 0//Holder to see if it's a syndicate encrpyed radio
var/centcom = 0//Bleh, more dirty booleans
var/independent = FALSE // If true, bypasses any tcomms machinery.
var/freqlock = 0 //Frequency lock to stop the user from untuning specialist radios.
var/emped = 0 //Highjacked to track the number of consecutive EMPs on the radio, allowing consecutive EMP's to stack properly.
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
@@ -58,7 +58,7 @@
channels = list()
translate_binary = 0
syndie = 0
centcom = 0
independent = FALSE
if(keyslot)
for(var/ch_name in keyslot.channels)
@@ -73,8 +73,8 @@
if(keyslot.syndie)
syndie = 1
if(keyslot.centcom)
centcom = 1
if(keyslot.independent)
independent = TRUE
for(var/ch_name in channels)
secure_radio_connections[ch_name] = add_radio(src, radiochannels[ch_name])
@@ -299,9 +299,9 @@
else
jobname = "Unknown"
/* ###### Centcom channel bypasses all comms relays. ###### */
/* ###### `independent` radios bypass all comms relays. ###### */
if (freqnum == CENTCOM_FREQ && centcom)
if(independent)
var/datum/signal/signal = new
signal.transmission_method = 2
signal.data = list(
@@ -478,7 +478,7 @@
if(!(src.syndie)) //Checks to see if it's allowed on that frequency, based on the encryption keys
return -1
if(freq == CENTCOM_FREQ)
if (!(src.centcom))
if(!independent)
return -1
if (!on)
return -1
+36 -1
View File
@@ -206,7 +206,7 @@
lawsync = 0
O.connected_ai = null
else
O.notify_ai(1)
O.notify_ai(NEW_BORG)
if(forced_ai)
O.connected_ai = forced_ai
if(!lawsync)
@@ -248,6 +248,41 @@
else
to_chat(user, "<span class='warning'>The MMI must go in after everything else!</span>")
else if(istype(W, /obj/item/borg/upgrade/ai))
var/obj/item/borg/upgrade/ai/M = W
if(check_completion())
if(!isturf(loc))
to_chat(user, "<span class='warning'>You cannot install[M], the frame has to be standing on the ground to be perfectly precise!</span>")
return
if(!user.drop_item())
to_chat(user, "<span class='warning'>[M] is stuck to your hand!</span>")
return
qdel(M)
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot/shell(get_turf(src))
if(!aisync)
lawsync = FALSE
O.connected_ai = null
else
if(forced_ai)
O.connected_ai = forced_ai
O.notify_ai(AI_SHELL)
if(!lawsync)
O.lawupdate = FALSE
O.make_laws()
O.cell = chest.cell
chest.cell.loc = O
chest.cell = null
O.locked = panel_locked
O.job = "Cyborg"
forceMove(O)
O.robot_suit = src
if(!locomotion)
O.lockcharge = TRUE
O.update_canmove()
else if(istype(W,/obj/item/weapon/pen))
to_chat(user, "<span class='warning'>You need to use a multitool to name [src]!</span>")
else
@@ -43,7 +43,7 @@
R.custom_name = heldname
R.updatename()
if(oldname == R.real_name)
R.notify_ai(3, oldname, R.real_name)
R.notify_ai(RENAME, oldname, R.real_name)
return 1
@@ -381,3 +381,22 @@
R.module.add_module(S, FALSE, TRUE)
return 1
/obj/item/borg/upgrade/ai
name = "B.O.R.I.S. module"
desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI."
icon_state = "boris"
origin_tech = "engineering=4;magnets=4;programming=4"
/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/R)
if(..())
return
if(R.shell)
to_chat(usr, "<span class='warning'>This unit is already an AI shell!</span>")
return
if(R.key) //You cannot replace a player unless the key is completely removed.
to_chat(usr, "<span class='warning'>Intelligence patterns detected in this [R.braintype]. Aborting.</span>")
return
R.make_shell(src)
return TRUE
@@ -46,7 +46,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
materials = list(MAT_GLASS=MINERAL_MATERIAL_AMOUNT)
sheettype = "sandstone"
/obj/item/stack/sheet/mineral/sandstone/New(var/loc, var/amount=null)
/obj/item/stack/sheet/mineral/sandstone/Initialize(mapload, new_amount, merge = TRUE)
recipes = sandstone_recipes
pixel_x = rand(0,4)-4
pixel_y = rand(0,4)-4
@@ -8,7 +8,7 @@
turf_type = /turf/open/floor/light
var/state = 0
/obj/item/stack/tile/light/New(var/loc, var/amount=null)
/obj/item/stack/tile/light/Initialize(mapload, new_amount, merge = TRUE)
..()
if(prob(5))
state = 3 //broken
@@ -19,6 +19,8 @@
qdel(src)
/obj/item/weapon/grenade/flashbang/proc/bang(turf/T , mob/living/M)
if(M.stat == DEAD) //They're dead!
return
M.show_message("<span class='warning'>BANG</span>", 2)
playsound(loc, 'sound/weapons/flashbang.ogg', 100, 1)
var/distance = max(0,get_dist(get_turf(src),T))