h. Updates NTOS, and axes p2p filetransfer!
This commit is contained in:
@@ -37,4 +37,4 @@
|
||||
icon_state = "cpu_super"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
power_usage = 75
|
||||
max_idle_programs = 2
|
||||
max_idle_programs = 2
|
||||
|
||||
@@ -32,28 +32,29 @@
|
||||
|
||||
|
||||
/obj/item/computer_hardware/attackby(obj/item/I, mob/living/user)
|
||||
// Multitool. Runs diagnostics
|
||||
if(istype(I, /obj/item/multitool))
|
||||
to_chat(user, "***** DIAGNOSTICS REPORT *****")
|
||||
diagnostics(user)
|
||||
to_chat(user, "******************************")
|
||||
return 1
|
||||
|
||||
// Cable coil. Works as repair method, but will probably require multiple applications and more cable.
|
||||
if(istype(I, /obj/item/stack/cable_coil))
|
||||
var/obj/item/stack/S = I
|
||||
if(obj_integrity == max_integrity)
|
||||
to_chat(user, "<span class='warning'>\The [src] doesn't seem to require repairs.</span>")
|
||||
return 1
|
||||
if(I.use_tool(src, user, 0, 1))
|
||||
if(S.use(1))
|
||||
to_chat(user, "<span class='notice'>You patch up \the [src] with a bit of \the [I].</span>")
|
||||
obj_integrity = min(obj_integrity + 10, max_integrity)
|
||||
return 1
|
||||
|
||||
if(try_insert(I, user))
|
||||
return 1
|
||||
return TRUE
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/computer_hardware/multitool_act(mob/living/user, obj/item/I)
|
||||
..()
|
||||
to_chat(user, "***** DIAGNOSTICS REPORT *****")
|
||||
diagnostics(user)
|
||||
to_chat(user, "******************************")
|
||||
return TRUE
|
||||
|
||||
// Called on multitool click, prints diagnostic information to the user.
|
||||
/obj/item/computer_hardware/proc/diagnostics(var/mob/user)
|
||||
to_chat(user, "Hardware Integrity Test... (Corruption: [damage]/[max_damage]) [damage > damage_failure ? "FAIL" : damage > damage_malfunction ? "WARN" : "PASS"]")
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
var/obj/item/aicard/stored_card = null
|
||||
var/locked = FALSE
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/handle_atom_del(atom/A)
|
||||
if(A == stored_card)
|
||||
try_eject(0, null, TRUE)
|
||||
. = ..()
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/examine(mob/user)
|
||||
. = ..()
|
||||
@@ -41,13 +45,6 @@
|
||||
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/try_eject(slot=0,mob/living/user = null,forced = 0)
|
||||
if (get_dist(src,user) > 1)
|
||||
if (iscarbon(user))
|
||||
var/mob/living/carbon/H = user
|
||||
if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H)))
|
||||
return FALSE
|
||||
else
|
||||
return FALSE
|
||||
if(!stored_card)
|
||||
to_chat(user, "<span class='warning'>There is no card in \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -57,19 +54,21 @@
|
||||
return FALSE
|
||||
|
||||
if(stored_card)
|
||||
stored_card.forceMove(get_turf(src))
|
||||
to_chat(user, "<span class='notice'>You remove [stored_card] from [src].</span>")
|
||||
locked = FALSE
|
||||
stored_card.verb_pickup()
|
||||
if(user)
|
||||
user.put_in_hands(stored_card)
|
||||
else
|
||||
stored_card.forceMove(drop_location())
|
||||
stored_card = null
|
||||
|
||||
to_chat(user, "<span class='notice'>You remove the card from \the [src].</span>")
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/computer_hardware/ai_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
try_eject(,user,1)
|
||||
return
|
||||
return
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
var/obj/item/stock_parts/cell/battery = null
|
||||
device_type = MC_CELL
|
||||
|
||||
/obj/item/computer_hardware/battery/get_cell()
|
||||
return battery
|
||||
|
||||
/obj/item/computer_hardware/battery/New(loc, battery_type = null)
|
||||
if(battery_type)
|
||||
battery = new battery_type(src)
|
||||
@@ -16,6 +19,11 @@
|
||||
. = ..()
|
||||
QDEL_NULL(battery)
|
||||
|
||||
/obj/item/computer_hardware/battery/handle_atom_del(atom/A)
|
||||
if(A == battery)
|
||||
try_eject(0, null, TRUE)
|
||||
. = ..()
|
||||
|
||||
/obj/item/computer_hardware/battery/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
@@ -45,7 +53,10 @@
|
||||
to_chat(user, "<span class='warning'>There is no power cell connected to \the [src].</span>")
|
||||
return FALSE
|
||||
else
|
||||
battery.forceMove(get_turf(src))
|
||||
if(user)
|
||||
user.put_in_hands(battery)
|
||||
else
|
||||
battery.forceMove(drop_location())
|
||||
to_chat(user, "<span class='notice'>You detach \the [battery] from \the [src].</span>")
|
||||
battery = null
|
||||
|
||||
|
||||
@@ -9,6 +9,13 @@
|
||||
var/obj/item/card/id/stored_card = null
|
||||
var/obj/item/card/id/stored_card2 = null
|
||||
|
||||
/obj/item/computer_hardware/card_slot/handle_atom_del(atom/A)
|
||||
if(A == stored_card)
|
||||
try_eject(1, null, TRUE)
|
||||
if(A == stored_card2)
|
||||
try_eject(2, null, TRUE)
|
||||
. = ..()
|
||||
|
||||
/obj/item/computer_hardware/card_slot/Destroy()
|
||||
try_eject()
|
||||
return ..()
|
||||
@@ -67,19 +74,15 @@
|
||||
else
|
||||
stored_card2 = I
|
||||
to_chat(user, "<span class='notice'>You insert \the [I] into \the [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.sec_hud_set_ID()
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
if (get_dist(src,user) > 1)
|
||||
if (iscarbon(user))
|
||||
var/mob/living/carbon/H = user
|
||||
if (!(H.dna && H.dna.check_mutation(TK) && tkMaxRangeCheck(src,H)))
|
||||
return FALSE
|
||||
else
|
||||
return FALSE
|
||||
if(!stored_card && !stored_card2)
|
||||
to_chat(user, "<span class='warning'>There are no cards in \the [src].</span>")
|
||||
return FALSE
|
||||
@@ -89,7 +92,7 @@
|
||||
if(user)
|
||||
user.put_in_hands(stored_card)
|
||||
else
|
||||
stored_card.forceMove(get_turf(src))
|
||||
stored_card.forceMove(drop_location())
|
||||
stored_card = null
|
||||
ejected++
|
||||
|
||||
@@ -97,7 +100,7 @@
|
||||
if(user)
|
||||
user.put_in_hands(stored_card2)
|
||||
else
|
||||
stored_card2.forceMove(get_turf(src))
|
||||
stored_card2.forceMove(drop_location())
|
||||
stored_card2 = null
|
||||
ejected++
|
||||
|
||||
@@ -109,16 +112,18 @@
|
||||
for(var/I in holder.idle_threads)
|
||||
var/datum/computer_file/program/P = I
|
||||
P.event_idremoved(1, slot)
|
||||
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.sec_hud_set_ID()
|
||||
to_chat(user, "<span class='notice'>You remove the card[ejected>1 ? "s" : ""] from \the [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0)
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/screwdriver))
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
to_chat(user, "<span class='notice'>You press down on the manual eject button with \the [I].</span>")
|
||||
try_eject(0,user)
|
||||
return
|
||||
|
||||
@@ -157,18 +157,30 @@
|
||||
max_capacity = 64
|
||||
icon_state = "ssd_mini"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
custom_price = PRICE_ABOVE_NORMAL
|
||||
custom_price = 150
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/small/syndicate // Syndicate variant - very slight better
|
||||
// Syndicate variant - very slight better
|
||||
/obj/item/computer_hardware/hard_drive/small/syndicate
|
||||
desc = "An efficient SSD for portable devices developed by a rival organisation."
|
||||
power_usage = 8
|
||||
max_capacity = 70
|
||||
var/datum/antagonist/traitor/traitor_data // Syndicate hard drive has the user's data baked directly into it on creation
|
||||
|
||||
/// For tablets given to nuke ops
|
||||
/obj/item/computer_hardware/hard_drive/small/nukeops
|
||||
power_usage = 8
|
||||
max_capacity = 70
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/small/nukeops/install_default_programs()
|
||||
store_file(new/datum/computer_file/program/computerconfig(src))
|
||||
store_file(new/datum/computer_file/program/ntnetdownload/syndicate(src)) // Syndicate version; automatic access to syndicate apps and no NT apps
|
||||
store_file(new/datum/computer_file/program/filemanager(src))
|
||||
store_file(new/datum/computer_file/program/radar/fission360(src)) //I am legitimately afraid if I don't do this, Ops players will think they just don't get a pinpointer anymore.
|
||||
|
||||
/obj/item/computer_hardware/hard_drive/micro
|
||||
name = "micro solid state drive"
|
||||
desc = "A highly efficient SSD chip for portable devices."
|
||||
power_usage = 2
|
||||
max_capacity = 32
|
||||
icon_state = "ssd_micro"
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
|
||||
/obj/item/computer_hardware/printer/diagnostics(mob/living/user)
|
||||
..()
|
||||
to_chat(user, "Paper level: [stored_paper]/[max_paper].")
|
||||
to_chat(user, "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>")
|
||||
|
||||
/obj/item/computer_hardware/printer/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>Paper level: [stored_paper]/[max_paper].</span>"
|
||||
|
||||
|
||||
/obj/item/computer_hardware/printer/proc/print_text(var/text_to_print, var/paper_title = "")
|
||||
/obj/item/computer_hardware/printer/proc/print_text(text_to_print, paper_title = "")
|
||||
if(!stored_paper)
|
||||
return FALSE
|
||||
if(!check_functionality())
|
||||
@@ -27,11 +27,12 @@
|
||||
|
||||
// Damaged printer causes the resulting paper to be somewhat harder to read.
|
||||
if(damage > damage_malfunction)
|
||||
P.setText(stars(text_to_print, 100-malfunction_probability))
|
||||
P.info = stars(text_to_print, 100-malfunction_probability)
|
||||
else
|
||||
P.setText(text_to_print)
|
||||
P.info = text_to_print
|
||||
if(paper_title)
|
||||
P.name = paper_title
|
||||
P.update_icon()
|
||||
stored_paper--
|
||||
P = null
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user