mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-16 18:45:22 +01:00
Adds AI Integrity restorer to program datums, various modular computer improvements (#21546)
* Ports AI restorer to modular computars * mostly done. working on qdel improvments * undoes testing flag * undoes gc stuff * Fixes id card module name * memes
This commit is contained in:
@@ -92,12 +92,12 @@
|
||||
|
||||
// Called when component is removed from PC.
|
||||
/obj/item/weapon/computer_hardware/proc/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
try_eject()
|
||||
try_eject(forced = 1)
|
||||
|
||||
// Called when someone tries to insert something in it - paper in printer, card in card reader, etc.
|
||||
/obj/item/weapon/computer_hardware/proc/try_insert(obj/item/I, mob/living/user = null)
|
||||
return FALSE
|
||||
|
||||
// Called when someone tries to eject something from it - card from card reader, etc.
|
||||
/obj/item/weapon/computer_hardware/proc/try_eject(slot=0, mob/living/user = null)
|
||||
/obj/item/weapon/computer_hardware/proc/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
return FALSE
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
/obj/item/weapon/computer_hardware/ai_slot
|
||||
name = "intelliCard interface slot"
|
||||
desc = "A module allowing this computer to interface with most common intelliCard modules. Necessary for some programs to run properly."
|
||||
power_usage = 100 //W
|
||||
icon_state = "card_mini"
|
||||
w_class = 2
|
||||
origin_tech = "programming=2"
|
||||
device_type = MC_AI
|
||||
|
||||
var/obj/item/device/aicard/stored_card = null
|
||||
var/locked = FALSE
|
||||
|
||||
|
||||
obj/item/weapon/computer_hardware/ai_slot/examine(mob/user)
|
||||
..()
|
||||
if(stored_card)
|
||||
user << "There appears to be an intelliCard loaded."
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/on_install(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
M.add_verb(device_type)
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/on_remove(obj/item/device/modular_computer/M, mob/living/user = null)
|
||||
M.remove_verb(device_type)
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/try_insert(obj/item/I, mob/living/user = null)
|
||||
if(!holder)
|
||||
return FALSE
|
||||
|
||||
if(!istype(I, /obj/item/device/aicard))
|
||||
return FALSE
|
||||
|
||||
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))
|
||||
return FALSE
|
||||
|
||||
|
||||
stored_card = I
|
||||
|
||||
I.forceMove(src)
|
||||
user << "<span class='notice'>You insert \the [I] into \the [src].</span>"
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/try_eject(forced = 0,mob/living/user = null)
|
||||
if(!stored_card)
|
||||
user << "<span class='warning'>There is no card in \the [src].</span>"
|
||||
return FALSE
|
||||
|
||||
if(locked && !forced)
|
||||
user << "<span class='warning'>Safeties prevent you from removing the card while reconstruction is in progress...</span>"
|
||||
return FALSE
|
||||
|
||||
if(stored_card)
|
||||
stored_card.forceMove(get_turf(src))
|
||||
locked = FALSE
|
||||
stored_card.verb_pickup()
|
||||
stored_card = null
|
||||
|
||||
user << "<span class='notice'>You remove the card from \the [src].</span>"
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/computer_hardware/ai_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You press down on the manual eject button with \the [I].</span>"
|
||||
try_eject(,user,1)
|
||||
return
|
||||
@@ -38,7 +38,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/battery/try_eject(slot=0, mob/living/user = null)
|
||||
/obj/item/weapon/computer_hardware/battery/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
if(!battery)
|
||||
user << "<span class='warning'>There is no power cell connected to \the [src].</span>"
|
||||
return FALSE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/weapon/computer_hardware/card_slot
|
||||
name = "\improper ID authentication module"
|
||||
name = "identification card authentication module" // \improper breaks the find_hardware_by_name proc
|
||||
desc = "A module allowing this computer to read or write data on ID cards. Necessary for some programs to run properly."
|
||||
power_usage = 10 //W
|
||||
icon_state = "card_mini"
|
||||
@@ -59,7 +59,7 @@
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null)
|
||||
/obj/item/weapon/computer_hardware/card_slot/try_eject(slot=0, mob/living/user = null, forced = 0)
|
||||
if(!stored_card && !stored_card2)
|
||||
user << "<span class='warning'>There are no cards in \the [src].</span>"
|
||||
return FALSE
|
||||
@@ -89,3 +89,16 @@
|
||||
user << "<span class='notice'>You remove the card[ejected>1 ? "s" : ""] from \the [src].</span>"
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/obj/item/weapon/computer_hardware/card_slot/attackby(obj/item/I, mob/living/user)
|
||||
if(..())
|
||||
return
|
||||
if(istype(I, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='notice'>You press down on the manual eject button with \the [I].</span>"
|
||||
try_eject(0,user)
|
||||
return
|
||||
|
||||
/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."
|
||||
Reference in New Issue
Block a user