mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 12:35:33 +01:00
[MIRROR] Removes network cards and printers from tablets [MDB IGNORE] (#16451)
* Removes network cards and printers from tablets * merge tablet_presets * printer.dm should have been deleted, missed change * update contractor tablet Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> Co-authored-by: tastyfish <crazychris32@gmail.com>
This commit is contained in:
@@ -63,8 +63,7 @@
|
||||
executed = TRUE
|
||||
target.dos_sources.Add(src)
|
||||
if(SSnetworks.station_network.intrusion_detection_enabled)
|
||||
var/obj/item/computer_hardware/network_card/network_card = computer.all_components[MC_NET]
|
||||
SSnetworks.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [network_card.get_network_tag()]")
|
||||
SSnetworks.add_log("IDS WARNING - Excess traffic flood targeting relay [target.uid] detected from device: [computer.name]")
|
||||
SSnetworks.station_network.intrusion_detection_alarm = TRUE
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
if(computer)
|
||||
if(istype(computer, /obj/item/modular_computer/tablet/integrated)) //If this is a borg's integrated tablet
|
||||
var/obj/item/modular_computer/tablet/integrated/modularInterface = computer
|
||||
to_chat(modularInterface.borgo,span_userdanger("SYSTEM PURGE DETECTED/"))
|
||||
addtimer(CALLBACK(modularInterface.borgo, /mob/living/silicon/robot/.proc/death), 2 SECONDS, TIMER_UNIQUE)
|
||||
to_chat(modularInterface.silicon_owner,span_userdanger("SYSTEM PURGE DETECTED/"))
|
||||
addtimer(CALLBACK(modularInterface.silicon_owner, /mob/living/silicon/robot/.proc/death), 2 SECONDS, TIMER_UNIQUE)
|
||||
return
|
||||
|
||||
computer.visible_message(span_notice("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard."))
|
||||
|
||||
@@ -98,12 +98,8 @@
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
|
||||
usr.played_game()
|
||||
|
||||
|
||||
var/gamerSkillLevel = 0
|
||||
var/gamerSkill = 0
|
||||
if(usr?.mind)
|
||||
@@ -153,10 +149,7 @@
|
||||
enemy_check()
|
||||
return TRUE
|
||||
if("Dispense_Tickets")
|
||||
if(!printer)
|
||||
to_chat(usr, span_notice("Hardware error: A printer is required to redeem tickets."))
|
||||
return
|
||||
if(printer.stored_paper <= 0)
|
||||
if(computer.stored_paper <= 0)
|
||||
to_chat(usr, span_notice("Hardware error: Printer is out of paper."))
|
||||
return
|
||||
else
|
||||
@@ -165,7 +158,7 @@
|
||||
new /obj/item/stack/arcadeticket((get_turf(computer)), 1)
|
||||
to_chat(usr, span_notice("[computer] dispenses a ticket!"))
|
||||
ticket_count -= 1
|
||||
printer.stored_paper -= 1
|
||||
computer.stored_paper -= 1
|
||||
else
|
||||
to_chat(usr, span_notice("You don't have any stored tickets!"))
|
||||
return TRUE
|
||||
|
||||
@@ -80,11 +80,9 @@
|
||||
|
||||
var/obj/item/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/computer_hardware/card_slot/card_slot2
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
card_slot = computer.all_components[MC_CARD]
|
||||
card_slot2 = computer.all_components[MC_CARD2]
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
if(!card_slot || !card_slot2)
|
||||
return
|
||||
|
||||
@@ -109,7 +107,7 @@
|
||||
return TRUE
|
||||
// Print a report.
|
||||
if("PRG_print")
|
||||
if(!computer || !printer)
|
||||
if(!computer)
|
||||
return TRUE
|
||||
if(!authenticated_card)
|
||||
return TRUE
|
||||
@@ -126,7 +124,7 @@
|
||||
if(A in known_access_rights)
|
||||
contents += " [SSid_access.get_access_desc(A)]"
|
||||
|
||||
if(!printer.print_text(contents,"access report - [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"]"))
|
||||
if(!computer.print_text(contents, "access report - [target_id_card.registered_name ? target_id_card.registered_name : "Unregistered"]"))
|
||||
to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper."))
|
||||
return TRUE
|
||||
else
|
||||
@@ -308,18 +306,14 @@
|
||||
|
||||
var/obj/item/computer_hardware/card_slot/card_slot
|
||||
var/obj/item/computer_hardware/card_slot/card_slot2
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
|
||||
if(computer)
|
||||
card_slot = computer.all_components[MC_CARD]
|
||||
card_slot2 = computer.all_components[MC_CARD2]
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
data["have_auth_card"] = !!(card_slot)
|
||||
data["have_id_slot"] = !!(card_slot2)
|
||||
data["have_printer"] = !!(printer)
|
||||
else
|
||||
data["have_id_slot"] = FALSE
|
||||
data["have_printer"] = FALSE
|
||||
|
||||
if(!card_slot2)
|
||||
return data //We're just gonna error out on the js side at this point anyway
|
||||
|
||||
@@ -20,11 +20,9 @@
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/printer/printer = computer.all_components[MC_PRINT]
|
||||
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : null
|
||||
data["has_id_slot"] = !!card_slot
|
||||
data["has_printer"] = !!printer
|
||||
data["paperamt"] = printer ? "[printer.stored_paper] / [printer.max_paper]" : null
|
||||
data["paperamt"] = "[computer.stored_paper] / [computer.max_paper]"
|
||||
data["card_owner"] = card_slot?.stored_card ? id_card.registered_name : "No Card Inserted."
|
||||
data["current_user"] = payments_acc ? payments_acc.account_holder : null
|
||||
data["barcode_split"] = cut_multiplier * 100
|
||||
@@ -39,9 +37,8 @@
|
||||
|
||||
// Get components
|
||||
var/obj/item/computer_hardware/card_slot/card_slot = computer.all_components[MC_CARD]
|
||||
var/obj/item/computer_hardware/printer/printer = computer.all_components[MC_PRINT]
|
||||
var/obj/item/card/id/id_card = card_slot ? card_slot.stored_card : null
|
||||
if(!card_slot || !printer) //We need both to successfully use this app.
|
||||
if(!card_slot) //We need both to successfully use this app.
|
||||
return
|
||||
|
||||
switch(action)
|
||||
@@ -62,10 +59,7 @@
|
||||
var/potential_cut = input("How much would you like to pay out to the registered card?","Percentage Profit ([round(cut_min*100)]% - [round(cut_max*100)]%)") as num|null
|
||||
cut_multiplier = potential_cut ? clamp(round(potential_cut/100, cut_min), cut_min, cut_max) : initial(cut_multiplier)
|
||||
if("print")
|
||||
if(!printer)
|
||||
to_chat(usr, span_notice("Hardware error: A printer is required to print barcodes."))
|
||||
return
|
||||
if(printer.stored_paper <= 0)
|
||||
if(computer.stored_paper <= 0)
|
||||
to_chat(usr, span_notice("Hardware error: Printer is out of paper."))
|
||||
return
|
||||
if(!payments_acc)
|
||||
@@ -74,5 +68,5 @@
|
||||
var/obj/item/barcode/barcode = new /obj/item/barcode(get_turf(ui_host()))
|
||||
barcode.payments_acc = payments_acc
|
||||
barcode.cut_multiplier = cut_multiplier
|
||||
printer.stored_paper--
|
||||
computer.stored_paper--
|
||||
to_chat(usr, span_notice("The computer prints out a barcode."))
|
||||
|
||||
@@ -12,21 +12,8 @@
|
||||
detomatix_resistance = DETOMATIX_RESIST_MAJOR
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_static_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["manifest"] = GLOB.data_core.get_manifest()
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_data(mob/user)
|
||||
var/list/data = get_header_data()
|
||||
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
|
||||
if(computer)
|
||||
data["have_printer"] = !!printer
|
||||
else
|
||||
data["have_printer"] = FALSE
|
||||
data["manifest"] = GLOB.data_core.get_manifest()
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/crew_manifest/ui_act(action, params, datum/tgui/ui)
|
||||
@@ -34,18 +21,14 @@
|
||||
if(.)
|
||||
return
|
||||
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
|
||||
switch(action)
|
||||
if("PRG_print")
|
||||
if(computer && printer) //This option should never be called if there is no printer
|
||||
if(computer) //This option should never be called if there is no printer
|
||||
var/contents = {"<h4>Crew Manifest</h4>
|
||||
<br>
|
||||
[GLOB.data_core ? GLOB.data_core.get_manifest_html(0) : ""]
|
||||
"}
|
||||
if(!printer.print_text(contents,text("crew manifest ([])", station_time_timestamp())))
|
||||
if(!computer.print_text(contents,text("crew manifest ([])", station_time_timestamp())))
|
||||
to_chat(usr, span_notice("Hardware error: Printer was unable to print the file. It may be out of paper."))
|
||||
return
|
||||
else
|
||||
|
||||
@@ -49,6 +49,14 @@
|
||||
/// Whether this app can send messages to all.
|
||||
var/spam_mode = FALSE
|
||||
|
||||
/datum/computer_file/program/messenger/try_insert(obj/item/attacking_item, mob/living/user)
|
||||
if(!istype(attacking_item, /obj/item/photo))
|
||||
return FALSE
|
||||
var/obj/item/photo/pic = attacking_item
|
||||
computer.saved_image = pic.picture
|
||||
ProcessPhoto()
|
||||
return TRUE
|
||||
|
||||
/datum/computer_file/program/messenger/proc/ScrubMessengerList()
|
||||
var/list/dictionary = list()
|
||||
|
||||
|
||||
@@ -67,17 +67,10 @@
|
||||
matching_paintings = SSpersistent_paintings.painting_ui_data(filter = search_mode, search_text = search_string)
|
||||
|
||||
/datum/computer_file/program/portrait_printer/proc/print_painting(selected_painting)
|
||||
//printer check!
|
||||
var/obj/item/computer_hardware/printer/printer
|
||||
if(computer)
|
||||
printer = computer.all_components[MC_PRINT]
|
||||
if(!printer)
|
||||
to_chat(usr, span_notice("Hardware error: A printer is required to print a canvas."))
|
||||
return
|
||||
if(printer.stored_paper < CANVAS_PAPER_COST)
|
||||
if(computer.stored_paper < CANVAS_PAPER_COST)
|
||||
to_chat(usr, span_notice("Printing error: Your printer needs at least [CANVAS_PAPER_COST] paper to print a canvas."))
|
||||
return
|
||||
printer.stored_paper -= CANVAS_PAPER_COST
|
||||
computer.stored_paper -= CANVAS_PAPER_COST
|
||||
|
||||
//canvas printing!
|
||||
var/datum/painting/chosen_portrait = locate(selected_painting) in SSpersistent_paintings.paintings
|
||||
|
||||
@@ -34,41 +34,41 @@
|
||||
//Implied, since we can't run on non tablets
|
||||
var/obj/item/modular_computer/tablet/integrated/tablet = computer
|
||||
|
||||
var/mob/living/silicon/robot/borgo = tablet.borgo
|
||||
var/mob/living/silicon/robot/cyborg = tablet.silicon_owner
|
||||
|
||||
data["name"] = borgo.name
|
||||
data["designation"] = borgo.model //Borgo model type
|
||||
data["masterAI"] = borgo.connected_ai //Master AI
|
||||
data["name"] = cyborg.name
|
||||
data["designation"] = cyborg.model
|
||||
data["masterAI"] = cyborg.connected_ai //Master AI
|
||||
|
||||
var/charge = 0
|
||||
var/maxcharge = 1
|
||||
if(borgo.cell)
|
||||
charge = borgo.cell.charge
|
||||
maxcharge = borgo.cell.maxcharge
|
||||
if(cyborg.cell)
|
||||
charge = cyborg.cell.charge
|
||||
maxcharge = cyborg.cell.maxcharge
|
||||
data["charge"] = charge //Current cell charge
|
||||
data["maxcharge"] = maxcharge //Cell max charge
|
||||
data["integrity"] = ((borgo.health + 100) / 2) //Borgo health, as percentage
|
||||
data["lampIntensity"] = borgo.lamp_intensity //Borgo lamp power setting
|
||||
data["sensors"] = "[borgo.sensors_on?"ACTIVE":"DISABLED"]"
|
||||
data["printerPictures"] = borgo.connected_ai? borgo.connected_ai.aicamera.stored.len : borgo.aicamera.stored.len //Number of pictures taken, synced to AI if available
|
||||
data["printerToner"] = borgo.toner //amount of toner
|
||||
data["printerTonerMax"] = borgo.tonermax //It's a variable, might as well use it
|
||||
data["thrustersInstalled"] = borgo.ionpulse //If we have a thruster uprade
|
||||
data["thrustersStatus"] = "[borgo.ionpulse_on?"ACTIVE":"DISABLED"]" //Feedback for thruster status
|
||||
data["selfDestructAble"] = (borgo.emagged || istype(borgo, /mob/living/silicon/robot/model/syndicate/))
|
||||
data["integrity"] = ((cyborg.health + 100) / 2) //health, as percentage
|
||||
data["lampIntensity"] = cyborg.lamp_intensity //lamp power setting
|
||||
data["sensors"] = "[cyborg.sensors_on?"ACTIVE":"DISABLED"]"
|
||||
data["printerPictures"] = cyborg.connected_ai? cyborg.connected_ai.aicamera.stored.len : cyborg.aicamera.stored.len //Number of pictures taken, synced to AI if available
|
||||
data["printerToner"] = cyborg.toner //amount of toner
|
||||
data["printerTonerMax"] = cyborg.tonermax //It's a variable, might as well use it
|
||||
data["thrustersInstalled"] = cyborg.ionpulse //If we have a thruster uprade
|
||||
data["thrustersStatus"] = "[cyborg.ionpulse_on?"ACTIVE":"DISABLED"]" //Feedback for thruster status
|
||||
data["selfDestructAble"] = (cyborg.emagged || istype(cyborg, /mob/living/silicon/robot/model/syndicate))
|
||||
|
||||
//Cover, TRUE for locked
|
||||
data["cover"] = "[borgo.locked? "LOCKED":"UNLOCKED"]"
|
||||
data["cover"] = "[cyborg.locked? "LOCKED":"UNLOCKED"]"
|
||||
//Ability to move. FAULT if lockdown wire is cut, DISABLED if borg locked, ENABLED otherwise
|
||||
data["locomotion"] = "[borgo.wires.is_cut(WIRE_LOCKDOWN)?"FAULT":"[borgo.lockcharge?"DISABLED":"ENABLED"]"]"
|
||||
data["locomotion"] = "[cyborg.wires.is_cut(WIRE_LOCKDOWN)?"FAULT":"[cyborg.lockcharge?"DISABLED":"ENABLED"]"]"
|
||||
//Model wire. FAULT if cut, NOMINAL otherwise
|
||||
data["wireModule"] = "[borgo.wires.is_cut(WIRE_RESET_MODEL)?"FAULT":"NOMINAL"]"
|
||||
data["wireModule"] = "[cyborg.wires.is_cut(WIRE_RESET_MODEL)?"FAULT":"NOMINAL"]"
|
||||
//DEBUG -- Camera(net) wire. FAULT if cut (or no cameranet camera), DISABLED if pulse-disabled, NOMINAL otherwise
|
||||
data["wireCamera"] = "[!borgo.builtInCamera || borgo.wires.is_cut(WIRE_CAMERA)?"FAULT":"[borgo.builtInCamera.can_use()?"NOMINAL":"DISABLED"]"]"
|
||||
data["wireCamera"] = "[!cyborg.builtInCamera || cyborg.wires.is_cut(WIRE_CAMERA)?"FAULT":"[cyborg.builtInCamera.can_use()?"NOMINAL":"DISABLED"]"]"
|
||||
//AI wire. FAULT if wire is cut, CONNECTED if connected to AI, READY otherwise
|
||||
data["wireAI"] = "[borgo.wires.is_cut(WIRE_AI)?"FAULT":"[borgo.connected_ai?"CONNECTED":"READY"]"]"
|
||||
data["wireAI"] = "[cyborg.wires.is_cut(WIRE_AI)?"FAULT":"[cyborg.connected_ai?"CONNECTED":"READY"]"]"
|
||||
//Law sync wire. FAULT if cut, NOMINAL otherwise
|
||||
data["wireLaw"] = "[borgo.wires.is_cut(WIRE_LAWSYNC)?"FAULT":"NOMINAL"]"
|
||||
data["wireLaw"] = "[cyborg.wires.is_cut(WIRE_LAWSYNC)?"FAULT":"NOMINAL"]"
|
||||
|
||||
return data
|
||||
|
||||
@@ -76,13 +76,13 @@
|
||||
var/list/data = list()
|
||||
if(!iscyborg(user))
|
||||
return data
|
||||
var/mob/living/silicon/robot/borgo = user
|
||||
var/mob/living/silicon/robot/cyborg = user
|
||||
//Implied
|
||||
var/obj/item/modular_computer/tablet/integrated/tablet = computer
|
||||
|
||||
data["Laws"] = borgo.laws.get_law_list(TRUE, TRUE, FALSE)
|
||||
data["Laws"] = cyborg.laws.get_law_list(TRUE, TRUE, FALSE)
|
||||
data["borgLog"] = tablet.borglog
|
||||
data["borgUpgrades"] = borgo.upgrades
|
||||
data["borgUpgrades"] = cyborg.upgrades
|
||||
return data
|
||||
|
||||
/datum/computer_file/program/robotact/ui_act(action, params)
|
||||
@@ -91,56 +91,56 @@
|
||||
return
|
||||
//Implied type, memes
|
||||
var/obj/item/modular_computer/tablet/integrated/tablet = computer
|
||||
var/mob/living/silicon/robot/borgo = tablet.borgo
|
||||
var/mob/living/silicon/robot/cyborg = tablet.silicon_owner
|
||||
|
||||
switch(action)
|
||||
if("coverunlock")
|
||||
if(borgo.locked)
|
||||
borgo.locked = FALSE
|
||||
borgo.update_icons()
|
||||
if(borgo.emagged)
|
||||
borgo.logevent("ChÃ¥vÃis cover lock has been [borgo.locked ? "engaged" : "released"]") //"The cover interface glitches out for a split second"
|
||||
if(cyborg.locked)
|
||||
cyborg.locked = FALSE
|
||||
cyborg.update_icons()
|
||||
if(cyborg.emagged)
|
||||
cyborg.logevent("ChÃ¥vÃis cover lock has been [cyborg.locked ? "engaged" : "released"]") //"The cover interface glitches out for a split second"
|
||||
else
|
||||
borgo.logevent("Chassis cover lock has been [borgo.locked ? "engaged" : "released"]")
|
||||
cyborg.logevent("Chassis cover lock has been [cyborg.locked ? "engaged" : "released"]")
|
||||
|
||||
if("lawchannel")
|
||||
borgo.set_autosay()
|
||||
cyborg.set_autosay()
|
||||
|
||||
if("lawstate")
|
||||
borgo.checklaws()
|
||||
cyborg.checklaws()
|
||||
|
||||
if("alertPower")
|
||||
if(borgo.stat == CONSCIOUS)
|
||||
if(!borgo.cell || !borgo.cell.charge)
|
||||
borgo.visible_message(span_notice("The power warning light on [span_name("[borgo]")] flashes urgently."), \
|
||||
if(cyborg.stat == CONSCIOUS)
|
||||
if(!cyborg.cell || !cyborg.cell.charge)
|
||||
cyborg.visible_message(span_notice("The power warning light on [span_name("[cyborg]")] flashes urgently."), \
|
||||
"You announce you are operating in low power mode.")
|
||||
playsound(borgo, 'sound/machines/buzz-two.ogg', 50, FALSE)
|
||||
playsound(cyborg, 'sound/machines/buzz-two.ogg', 50, FALSE)
|
||||
|
||||
if("toggleSensors")
|
||||
borgo.toggle_sensors()
|
||||
cyborg.toggle_sensors()
|
||||
|
||||
if("viewImage")
|
||||
if(borgo.connected_ai)
|
||||
borgo.connected_ai.aicamera?.viewpictures(usr)
|
||||
if(cyborg.connected_ai)
|
||||
cyborg.connected_ai.aicamera?.viewpictures(usr)
|
||||
else
|
||||
borgo.aicamera?.viewpictures(usr)
|
||||
cyborg.aicamera?.viewpictures(usr)
|
||||
|
||||
if("printImage")
|
||||
var/obj/item/camera/siliconcam/robot_camera/borgcam = borgo.aicamera
|
||||
var/obj/item/camera/siliconcam/robot_camera/borgcam = cyborg.aicamera
|
||||
borgcam?.borgprint(usr)
|
||||
|
||||
if("toggleThrusters")
|
||||
borgo.toggle_ionpulse()
|
||||
cyborg.toggle_ionpulse()
|
||||
|
||||
if("lampIntensity")
|
||||
borgo.lamp_intensity = params["ref"]
|
||||
borgo.toggle_headlamp(FALSE, TRUE)
|
||||
cyborg.lamp_intensity = params["ref"]
|
||||
cyborg.toggle_headlamp(FALSE, TRUE)
|
||||
|
||||
if("selfDestruct")
|
||||
if(borgo.stat || borgo.lockcharge) //No detonation while stunned or locked down
|
||||
if(cyborg.stat || cyborg.lockcharge) //No detonation while stunned or locked down
|
||||
return
|
||||
if(borgo.emagged || istype(borgo, /mob/living/silicon/robot/model/syndicate/)) //This option shouldn't even be showing otherwise
|
||||
borgo.self_destruct(borgo)
|
||||
if(cyborg.emagged || istype(cyborg, /mob/living/silicon/robot/model/syndicate)) //This option shouldn't even be showing otherwise
|
||||
cyborg.self_destruct(cyborg)
|
||||
|
||||
/**
|
||||
* Forces a full update of the UI, if currently open.
|
||||
@@ -152,6 +152,6 @@
|
||||
if(!istype(computer, /obj/item/modular_computer/tablet/integrated))
|
||||
return
|
||||
var/obj/item/modular_computer/tablet/integrated/tablet = computer
|
||||
var/datum/tgui/active_ui = SStgui.get_open_ui(tablet.borgo, src)
|
||||
var/datum/tgui/active_ui = SStgui.get_open_ui(tablet.silicon_owner, src)
|
||||
if(active_ui)
|
||||
active_ui.send_full_update()
|
||||
|
||||
Reference in New Issue
Block a user