mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-26 06:29:23 +01:00
Merge remote-tracking branch 'tgstation/master' into upstream-6-2-2026
This commit is contained in:
@@ -98,6 +98,10 @@
|
||||
src.workspace = workspace
|
||||
src.source_photo_or_painting = source_photo_or_painting
|
||||
|
||||
/datum/computer_file/data/paint_project/Destroy(force)
|
||||
source_photo_or_painting = null
|
||||
return ..()
|
||||
|
||||
/datum/computer_file/data/paint_project/clone(rename)
|
||||
var/datum/computer_file/data/paint_project/temp = ..()
|
||||
temp.workspace = workspace.copy()
|
||||
|
||||
@@ -27,6 +27,10 @@
|
||||
src.image_name = image_name
|
||||
set_source(source_photo_or_painting)
|
||||
|
||||
/datum/computer_file/image/Destroy(force)
|
||||
source_photo_or_painting = null
|
||||
return ..()
|
||||
|
||||
/datum/computer_file/image/on_install(datum/computer_file/source, obj/item/modular_computer/computer_installing)
|
||||
. = ..()
|
||||
assign_path()
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
var/datum/bank_account/buyer = SSeconomy.get_dep_account(cargo_account)
|
||||
var/obj/item/card/id/id_card = computer.stored_id?.GetID()
|
||||
if(id_card?.registered_account)
|
||||
if(id_card?.registered_account?.account_job?.paycheck_department)
|
||||
buyer = SSeconomy.get_dep_account(id_card?.registered_account.account_job.paycheck_department)
|
||||
if((ACCESS_BUDGET in id_card.access))
|
||||
requestonly = FALSE
|
||||
|
||||
@@ -46,13 +46,13 @@
|
||||
return ..()
|
||||
|
||||
/datum/ntnet_conversation/proc/add_message(message, username)
|
||||
message = "[station_time_timestamp(format = "hh:mm")] [username]: [message]"
|
||||
message = "[round_timestamp(format = "hh:mm")] [username]: [message]"
|
||||
messages["[next_message_id]"] = message
|
||||
next_message_id++
|
||||
trim_message_list()
|
||||
|
||||
/datum/ntnet_conversation/proc/add_status_message(message)
|
||||
message = "[station_time_timestamp(format = "hh:mm")] -!- [message]"
|
||||
message = "[round_timestamp(format = "hh:mm")] -!- [message]"
|
||||
messages["[next_message_id]"] = message
|
||||
next_message_id++
|
||||
trim_message_list()
|
||||
|
||||
@@ -126,8 +126,8 @@
|
||||
if("PRG_savelog")
|
||||
if(!channel)
|
||||
return
|
||||
var/logname = stripped_input(params["log_name"])
|
||||
if(!logname)
|
||||
var/logname = trim(params["log_name"], MAX_MESSAGE_LEN)
|
||||
if(!length(logname) || !filter_filename_pda(logname))
|
||||
return
|
||||
var/datum/computer_file/data/text/logfile = new()
|
||||
// Now we will generate HTML-compliant file that can actually be viewed/printed.
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<br>
|
||||
[GLOB.manifest ? GLOB.manifest.get_html(0) : ""]
|
||||
"}
|
||||
if(!computer.print_text(contents, "crew manifest ([station_time_timestamp()])"))
|
||||
if(!computer.print_text(contents, "crew manifest ([round_timestamp()])"))
|
||||
to_chat(usr, span_notice("Printer is out of paper."))
|
||||
return
|
||||
else
|
||||
|
||||
@@ -119,8 +119,8 @@ GLOBAL_LIST_INIT(print_types, init_print_types())
|
||||
var/datum/computer_file/file = computer.find_file_by_name(params["name"])
|
||||
if(!file)
|
||||
return
|
||||
var/newname = reject_bad_name(params["new_name"], allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
|
||||
if(!newname || newname != params["new_name"])
|
||||
var/newname = trim(params["new_name"], MAX_MESSAGE_LEN)
|
||||
if(!length(newname) || !filter_filename_pda(newname))
|
||||
playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
|
||||
return
|
||||
file.filename = newname
|
||||
@@ -131,8 +131,8 @@ GLOBAL_LIST_INIT(print_types, init_print_types())
|
||||
var/datum/computer_file/file = computer.find_file_by_name(params["name"], computer.inserted_disk)
|
||||
if(!file)
|
||||
return
|
||||
var/newname = reject_bad_name(params["new_name"], allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
|
||||
if(!newname || newname != params["new_name"])
|
||||
var/newname = trim(params["new_name"], MAX_MESSAGE_LEN)
|
||||
if(!length(newname) || !filter_filename_pda(newname))
|
||||
playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
|
||||
return
|
||||
file.filename = newname
|
||||
|
||||
@@ -552,7 +552,7 @@
|
||||
return FALSE
|
||||
|
||||
// Log it in our logs
|
||||
var/datum/pda_message/message_datum = new(message, TRUE, station_time_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), photo_asset_key, everyone, subtle = subtle) // BUBBER EDIT CHANGE - SUBTLE MESSAGES - Original: var/datum/pda_message/message_datum = new(message, TRUE, station_time_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), photo_asset_key, everyone)
|
||||
var/datum/pda_message/message_datum = new(message, TRUE, round_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), photo_asset_key, everyone, subtle = subtle) // BUBBER EDIT CHANGE - SUBTLE MESSAGES - Original: var/datum/pda_message/message_datum = new(message, TRUE, round_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), photo_asset_key, everyone)
|
||||
for(var/datum/pda_chat/target_chat as anything in target_chats)
|
||||
target_chat.add_message(message_datum, show_in_recents = !everyone)
|
||||
target_chat.unread_messages = 0
|
||||
@@ -705,7 +705,7 @@
|
||||
|
||||
// don't create a new chat for rigged messages, make it a one off notif
|
||||
if(!is_rigged)
|
||||
var/datum/pda_message/message = new(signal.data["message"], FALSE, station_time_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), signal.data["photo"], signal.data["everyone"], signal.data["subtle"]) // BUBBER EDIT CHANGE - SUBTLE MESSAGES - Original: var/datum/pda_message/message = new(signal.data["message"], FALSE, station_time_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), signal.data["photo"], signal.data["everyone"])
|
||||
var/datum/pda_message/message = new(signal.data["message"], FALSE, round_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), signal.data["photo"], signal.data["everyone"], signal.data["subtle"]) // BUBBER EDIT CHANGE - SUBTLE MESSAGES - Original: var/datum/pda_message/message = new(signal.data["message"], FALSE, round_timestamp(PDA_MESSAGE_TIMESTAMP_FORMAT), signal.data["photo"], signal.data["everyone"])
|
||||
|
||||
chat = find_chat_by_recipient(is_fake_user ? fake_name : sender_ref, is_fake_user)
|
||||
if(!istype(chat))
|
||||
|
||||
@@ -175,11 +175,14 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
|
||||
return
|
||||
dialog = null
|
||||
var/uid = params["uid"]
|
||||
var/new_file_name = params["name"]
|
||||
var/new_file_name = trim(params["name"], MAX_MESSAGE_LEN)
|
||||
var/saving_to_disk = params["onDisk"]
|
||||
var/datum/computer_file/new_file_type = text2path(params["typepath"])
|
||||
var/extension = new_file_type::filetype
|
||||
var/datum/computer_file/existing_file
|
||||
if(!length(new_file_name))
|
||||
dialog = list("type" = "error", "message" = "No name specified.")
|
||||
return TRUE
|
||||
if(saving_to_disk)
|
||||
if(!computer.inserted_disk)
|
||||
dialog = list("type" = "error", "message" = "[new_file_name] - The disk has been removed.")
|
||||
@@ -208,6 +211,12 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
|
||||
else
|
||||
INVOKE_ASYNC(src, PROC_REF(write_to_file), user, existing_file)
|
||||
return TRUE
|
||||
if(is_ic_filtered_for_pdas(new_file_name) || is_soft_ic_filtered_for_pdas(new_file_name))
|
||||
dialog = list("type" = "error", "message" = "The entered file name violates company policy.")
|
||||
return TRUE
|
||||
if(!filter_illegal_filename_chars(new_file_name))
|
||||
dialog = list("type" = "error", "message" = "[new_file_name] - File names cannot include the following characters. \n \\ / : * ? \" < > |")
|
||||
return TRUE
|
||||
INVOKE_ASYNC(src, PROC_REF(save_file), user, new_file_name, new_file_type, saving_to_disk && computer.inserted_disk)
|
||||
return TRUE
|
||||
|
||||
@@ -283,7 +292,7 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
|
||||
|
||||
/datum/computer_file/program/nanopaint/proc/save_file(mob/user, name, file_type, obj/item/disk/computer/target_disk)
|
||||
var/datum/computer_file/file = new file_type()
|
||||
file.filename = reject_bad_name(name, allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
|
||||
file.filename = name
|
||||
var/file_stored
|
||||
if(target_disk)
|
||||
file_stored = target_disk.add_file(file)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
CRASH("[src] was able to track [target] through /datum/trackable, but was not on a visible turf to cameras.")
|
||||
for(var/obj/machinery/camera/cameras as anything in target_camerachunk.cameras["[target.z]"])
|
||||
// We need to find a particular camera that can see this turf
|
||||
if(length(cameras.can_see() & list(target_turf)))
|
||||
if(!(length(cameras.can_see() & list(target_turf))))
|
||||
continue
|
||||
var/new_camera = WEAKREF(cameras)
|
||||
if(camera_ref == new_camera)
|
||||
|
||||
Reference in New Issue
Block a user