Merge remote-tracking branch 'upstream/master' into rebase-to-vg

This commit is contained in:
PJB3005
2017-02-08 14:30:23 +01:00
1023 changed files with 165667 additions and 57502 deletions
@@ -15,6 +15,11 @@ var/global/static/ntnrc_uid = 0
ntnet_global.chat_channels.Add(src)
..()
/datum/ntnet_conversation/Destroy()
if(ntnet_global)
ntnet_global.chat_channels.Remove(src)
return ..()
/datum/ntnet_conversation/proc/add_message(message, username)
message = "[worldtime2text()] [username]: [message]"
messages.Add(message)
@@ -62,4 +67,4 @@ var/global/static/ntnrc_uid = 0
return 0 // Not Authorised
add_status_message("[client.username] has changed channel title from [title] to [newtitle]")
title = newtitle
title = newtitle
@@ -118,7 +118,7 @@
D.target = null
D.error = "Connection to quantum relay severed"
..()
return ..()
/obj/item/weapon/circuitboard/machine/ntnet_relay
name = "NTNet Relay (Machine Board)"
@@ -126,4 +126,4 @@
origin_tech = "programming=3;bluespace=3;magnets=2"
req_components = list(
/obj/item/stack/cable_coil = 2,
/obj/item/weapon/stock_parts/subspace/filter = 1)
/obj/item/weapon/stock_parts/subspace/filter = 1)
@@ -17,13 +17,12 @@
if(!can_install_component(H, user))
return FALSE
if(user && !user.unEquip(H))
if(user && !user.transferItemToLoc(H, src))
return FALSE
all_components[H.device_type] = H
user << "<span class='notice'>You install \the [H] into \the [src].</span>"
H.forceMove(src)
H.holder = src
H.on_install(src, user)
@@ -141,6 +141,7 @@ var/list/global_modular_computers = list()
/obj/machinery/modular_computer/ex_act(severity)
if(cpu)
cpu.ex_act(severity)
..()
// EMPs are similar to explosions, but don't cause physical damage to the casing. Instead they screw up the components
/obj/machinery/modular_computer/emp_act(severity)
@@ -15,7 +15,7 @@
return 1
var/obj/item/weapon/computer_hardware/hard_drive/HDD = computer.all_components[MC_HDD]
var/obj/item/weapon/computer_hardware/hard_drive/RHDD = computer.all_components[MC_HDD]
var/obj/item/weapon/computer_hardware/hard_drive/RHDD = computer.all_components[MC_SDD]
var/obj/item/weapon/computer_hardware/printer/printer = computer.all_components[MC_PRINT]
switch(action)
@@ -24,7 +24,7 @@
open_file = params["name"]
if("PRG_newtextfile")
. = 1
var/newname = sanitize(input(usr, "Enter file name or leave blank to cancel:", "File rename"))
var/newname = stripped_input(usr, "Enter file name or leave blank to cancel:", "File rename", max_length=50)
if(!newname)
return 1
if(!HDD)
@@ -69,7 +69,7 @@
var/datum/computer_file/file = HDD.find_file_by_name(params["name"])
if(!file || !istype(file))
return 1
var/newname = sanitize(input(usr, "Enter new file name:", "File rename", file.filename))
var/newname = stripped_input(usr, "Enter new file name:", "File rename", file.filename, max_length=50)
if(file && newname)
file.filename = newname
if("PRG_edit")
@@ -84,7 +84,7 @@
if(F.do_not_edit && (alert("WARNING: This file is not compatible with editor. Editing it may result in permanently corrupted formatting or damaged data consistency. Edit anyway?", "Incompatible File", "No", "Yes") == "No"))
return 1
// 16384 is the limit for file length in characters. Currently, papers have value of 2048 so this is 8 times as long, since we can't edit parts of the file independently.
var/newtext = sanitize(html_decode(input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", F.stored_data) as message|null), 16384)
var/newtext = stripped_multiline_input(usr, "Editing file [open_file]. You may use most tags used in paper formatting:", "Text Editor", html_decode(F.stored_data), 16384, TRUE)
if(!newtext)
return
if(F)
@@ -110,7 +110,7 @@
if(!printer)
error = "Missing Hardware: Your computer does not have required hardware to complete this operation."
return 1
if(!printer.print_text(parse_tags(F.stored_data)))
if(!printer.print_text("<font face=\"[computer.emagged ? CRAYON_FONT : PRINTER_FONT]\">" + prepare_printjob(F.stored_data) + "</font>", open_file))
error = "Hardware error: Printer was unable to print the file. It may be out of paper."
return 1
if("PRG_copytousb")
@@ -132,11 +132,11 @@
var/datum/computer_file/C = F.clone(0)
HDD.store_file(C)
/datum/computer_file/program/filemanager/proc/parse_tags(t)
t = replacetext(t, "\[center\]", "<center>")
t = replacetext(t, "\[/center\]", "</center>")
t = replacetext(t, "\[br\]", "<BR>")
t = replacetext(t, "\n", "<BR>")
t = replacetext(t, "\[b\]", "<B>")
t = replacetext(t, "\[/b\]", "</B>")
t = replacetext(t, "\[i\]", "<I>")
@@ -167,9 +167,14 @@
t = replacetext(t, "\[tr\]", "</td><tr>")
t = replacetext(t, "\[td\]", "<td>")
t = replacetext(t, "\[cell\]", "<td>")
t = replacetext(t, "\[logo\]", "<img src = ntlogo.png>")
t = replacetext(t, "\[tab\]", "&nbsp;&nbsp;&nbsp;&nbsp;")
return t
/datum/computer_file/program/filemanager/proc/prepare_printjob(t) // Additional stuff to parse if we want to print it and make a happy Head of Personnel. Forms FTW.
t = replacetext(t, "\[field\]", "<span class=\"paper_field\"></span>")
t = replacetext(t, "\[sign\]", "<span class=\"paper_field\"></span>")
t = parse_tags(t)
return t
/datum/computer_file/program/filemanager/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state)
@@ -179,7 +184,7 @@
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
assets.send(user)
ui = new(user, src, ui_key, "file_manager", "NTOS File Manage", 575, 700, state = state)
ui = new(user, src, ui_key, "file_manager", "NTOS File Manager", 575, 700, state = state)
ui.open()
ui.set_autoupdate(state = 1)
@@ -227,4 +232,4 @@
)))
data["usbfiles"] = usbfiles
return data
return data
@@ -32,13 +32,10 @@
if(stored_card)
user << "<span class='warning'>You try to insert \the [I] into \the [src], but the slot is occupied.</span>"
return FALSE
if(user && !user.unEquip(I))
if(user && !user.transferItemToLoc(I, src))
return FALSE
stored_card = I
I.forceMove(src)
user << "<span class='notice'>You insert \the [I] into \the [src].</span>"
return TRUE
@@ -28,11 +28,10 @@
user << "<span class='warning'>This power cell is too large for \the [holder]!</span>"
return FALSE
if(user && !user.unEquip(I))
if(user && !user.transferItemToLoc(I, src))
return FALSE
battery = I
I.forceMove(src)
user << "<span class='notice'>You connect \the [I] to \the [src].</span>"
return TRUE
@@ -46,14 +46,16 @@
if(stored_card && stored_card2)
user << "<span class='warning'>You try to insert \the [I] into \the [src], but its slots are occupied.</span>"
return FALSE
if(user && !user.unEquip(I))
return FALSE
if(user)
if(!user.transferItemToLoc(I, src))
return FALSE
else
I.forceMove(src)
if(!stored_card)
stored_card = I
else
stored_card2 = I
I.forceMove(src)
user << "<span class='notice'>You insert \the [I] into \the [src].</span>"
return TRUE
@@ -101,4 +103,4 @@
/obj/item/weapon/computer_hardware/card_slot/examine(mob/user)
..()
if(stored_card || stored_card2)
user << "There appears to be something loaded in the card slots."
user << "There appears to be something loaded in the card slots."
@@ -34,19 +34,19 @@
if(paper_title)
P.name = paper_title
P.update_icon()
P.reload_fields()
stored_paper--
P = null
return TRUE
/obj/item/weapon/computer_hardware/printer/try_insert(obj/item/I, mob/living/user = null)
if(istype(I, /obj/item/weapon/paper))
if(user && !user.unEquip(I))
return FALSE
if(stored_paper >= max_paper)
user << "<span class='warning'>You try to add \the [I] into [src], but its paper bin is full!</span>"
return FALSE
if(user && !user.temporarilyRemoveItemFromInventory(I))
return FALSE
user << "<span class='notice'>You insert \the [I] into [src]'s paper recycler.</span>"
qdel(I)
stored_paper++