diff --git a/code/game/dna.dm b/code/game/dna.dm index 771c1d1409f..bd6c62ff170 100644 --- a/code/game/dna.dm +++ b/code/game/dna.dm @@ -789,7 +789,7 @@ A.loc = src.loc del(src) -/obj/machinery/scan_consolenew/ex_act(severity) +/obj/machinery/computer/scan_consolenew/ex_act(severity) switch(severity) if(1.0) @@ -804,12 +804,12 @@ else return -/obj/machinery/scan_consolenew/blob_act() +/obj/machinery/computer/scan_consolenew/blob_act() if(prob(75)) del(src) -/obj/machinery/scan_consolenew/power_change() +/obj/machinery/computer/scan_consolenew/power_change() if(stat & BROKEN) icon_state = "broken" else if(powered()) @@ -820,14 +820,14 @@ src.icon_state = "c_unpowered" stat |= NOPOWER -/obj/machinery/scan_consolenew/New() +/obj/machinery/computer/scan_consolenew/New() ..() spawn( 5 ) src.connected = locate(/obj/machinery/dna_scannernew, get_step(src, WEST)) return return -/obj/machinery/scan_consolenew/attackby(obj/item/W as obj, mob/user as mob) +/obj/machinery/computer/scan_consolenew/attackby(obj/item/W as obj, mob/user as mob) if ((istype(W, /obj/item/weapon/disk/data)) && (!src.diskette)) user.drop_item() W.loc = src @@ -835,7 +835,7 @@ user << "You insert [W]." src.updateUsrDialog() -/obj/machinery/scan_consolenew/process() //not really used right now +/obj/machinery/computer/scan_consolenew/process() //not really used right now processing_objects.Remove(src) //Lets not have it waste CPU if(stat & (NOPOWER|BROKEN)) return @@ -843,13 +843,13 @@ return return -/obj/machinery/scan_consolenew/attack_paw(user as mob) +/obj/machinery/computer/scan_consolenew/attack_paw(user as mob) return src.attack_hand(user) -/obj/machinery/scan_consolenew/attack_ai(user as mob) +/obj/machinery/computer/scan_consolenew/attack_ai(user as mob) return src.attack_hand(user) -/obj/machinery/scan_consolenew/attack_hand(user as mob) +/obj/machinery/computer/scan_consolenew/attack_hand(user as mob) if(..()) return var/dat @@ -907,7 +907,7 @@ onclose(user, "scannernew") return -/obj/machinery/scan_consolenew/Topic(href, href_list) +/obj/machinery/computer/scan_consolenew/Topic(href, href_list) if(..()) return if(!istype(usr.loc, /turf)) diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 14c0ceb7485..3cf2b4cc3d8 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -48,7 +48,7 @@ origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/scan_consolenew name = "Circuit board (DNA Machine)" - build_path = "/obj/machinery/scan_consolenew" + build_path = "/obj/machinery/computer/scan_consolenew" origin_tech = "programming=2;biotech=2" /obj/item/weapon/circuitboard/communications name = "Circuit board (Communications)" diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm new file mode 100644 index 00000000000..0bec1cc5b21 --- /dev/null +++ b/code/game/machinery/computer/cloning.dm @@ -0,0 +1,453 @@ +/obj/machinery/computer/scan_consolenew + name = "DNA Modifier Access Console" + desc = "Scand DNA." + icon = 'computer.dmi' + icon_state = "scanner" + density = 1 + var/uniblock = 1.0 + var/strucblock = 1.0 + var/subblock = 1.0 + var/status = null + var/radduration = 2.0 + var/radstrength = 1.0 + var/radacc = 1.0 + var/buffer1 = null + var/buffer2 = null + var/buffer3 = null + var/buffer1owner = null + var/buffer2owner = null + var/buffer3owner = null + var/buffer1label = null + var/buffer2label = null + var/buffer3label = null + var/buffer1type = null + var/buffer2type = null + var/buffer3type = null + var/buffer1iue = 0 + var/buffer2iue = 0 + var/buffer3iue = 0 + var/delete = 0 + var/injectorready = 1 + var/temphtml = null + var/obj/machinery/dna_scanner/connected = null + var/obj/item/weapon/disk/data/diskette = null + anchored = 1.0 + use_power = 1 + idle_power_usage = 10 + active_power_usage = 400 + +/obj/machinery/computer/scan_consolenew/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/screwdriver)) + playsound(src.loc, 'Screwdriver.ogg', 50, 1) + if(do_after(user, 20)) + if (src.stat & BROKEN) + user << "\blue The broken glass falls out." + var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) + new /obj/item/weapon/shard( src.loc ) + var/obj/item/weapon/circuitboard/scan_consolenew/M = new /obj/item/weapon/circuitboard/scan_consolenew( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 3 + A.icon_state = "3" + A.anchored = 1 + del(src) + else + user << "\blue You disconnect the monitor." + var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc ) + var/obj/item/weapon/circuitboard/scan_consolenew/M = new /obj/item/weapon/circuitboard/scan_consolenew( A ) + for (var/obj/C in src) + C.loc = src.loc + A.circuit = M + A.state = 4 + A.icon_state = "4" + A.anchored = 1 + del(src) + if (istype(I, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES + if (!src.diskette) + user.drop_item() + I.loc = src + src.diskette = I + user << "You insert [I]." + src.updateUsrDialog() + return + else + src.attack_hand(user) + return + +/obj/machinery/computer/cloning + name = "Cloning console" + icon = 'computer.dmi' + icon_state = "dna" + circuit = "/obj/item/weapon/circuitboard/cloning" + req_access = list(access_heads) //Only used for record deletion right now. + var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning. + var/obj/machinery/clonepod/pod1 = null //Linked cloning pod. + var/temp = "Initializing System..." + var/menu = 1 //Which menu screen to display + var/list/records = list() + var/datum/data/record/active_record = null + var/obj/item/weapon/disk/data/diskette = null //Mostly so the geneticist can steal everything. + +/obj/machinery/computer/cloning/New() + ..() + spawn(5) + updatemodules() + /*src.scanner = findscanner()//locate(/obj/machinery/dna_scannernew, get_step(src, WEST)) + src.pod1 = findcloner()//locate(/obj/machinery/clonepod, get_step(src, EAST)) + world << "SEARCHING FOR MACHEIN" + src.temp = "" + if (isnull(src.scanner)) + src.temp += " SCNR-ERROR" + if (isnull(src.pod1)) + src.temp += " POD1-ERROR" + else + src.pod1.connected = src + + if (src.temp == "") + src.temp = "System ready."*/ + return + return + +/obj/machinery/computer/cloning/proc/updatemodules() + //world << "UPDATING MODULES" + src.scanner = findscanner()//locate(/obj/machinery/dna_scannernew, get_step(src, WEST)) + src.pod1 = findcloner()//locate(/obj/machinery/clonepod, get_step(src, EAST)) + //world << "SEARCHING FOR MACHEIN" + //src.temp = "" + //if (isnull(src.scanner)) + // src.temp += " SCNR-ERROR" + if (!isnull(src.pod1)) + src.pod1.connected = src + // src.temp += " POD1-ERROR" + //else + + //if (src.temp == "") + // src.temp = "System ready." + +/obj/machinery/computer/cloning/proc/findscanner() + //..() + //world << "SEARCHING FOR SCANNER" + var/obj/machinery/dna_scannernew/scannerf = null + for(dir in list(NORTH,EAST,SOUTH,WEST)) + //world << "SEARCHING IN [dir]" + scannerf = locate(/obj/machinery/dna_scannernew, get_step(src, dir)) + if (!isnull(scannerf)) + //world << "FOUND" + break + return scannerf + +/obj/machinery/computer/cloning/proc/findcloner() + //..() + //world << "SEARCHING FOR POD" + var/obj/machinery/clonepod/podf = null + for(dir in list(NORTH,EAST,SOUTH,WEST)) + //world << "SEARCHING IN [dir]" + podf = locate(/obj/machinery/clonepod, get_step(src, dir)) + if (!isnull(podf)) + //world << "FOUND" + break + return podf + +/obj/machinery/computer/cloning/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/disk/data)) //INSERT SOME DISKETTES + if (!src.diskette) + user.drop_item() + W.loc = src + src.diskette = W + user << "You insert [W]." + src.updateUsrDialog() + return + else + ..() + return + +/obj/machinery/computer/cloning/attack_paw(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/cloning/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/computer/cloning/attack_hand(mob/user as mob) + user.machine = src + add_fingerprint(user) + + if(stat & (BROKEN|NOPOWER)) + return + + updatemodules() + + var/dat = "