diff --git a/baystation12.dme b/baystation12.dme index ef839733bc..eb2d25d40c 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1251,6 +1251,13 @@ #include "code\modules\surgery\ribcage.dm" #include "code\modules\surgery\robolimbs.dm" #include "code\modules\surgery\surgery.dm" +#include "code\modules\virus2\analyser.dm" +#include "code\modules\virus2\antibodies.dm" +#include "code\modules\virus2\base.dm" +#include "code\modules\virus2\curer.dm" +#include "code\modules\virus2\diseasesplicer.dm" +#include "code\modules\virus2\dishincubator.dm" +#include "code\modules\virus2\isolator.dm" #include "code\WorkInProgress\autopsy.dm" #include "code\WorkInProgress\buildmode.dm" #include "code\WorkInProgress\explosion_particles.dm" @@ -1306,13 +1313,6 @@ #include "code\WorkInProgress\SkyMarshal\officer_stuff.dm" #include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" #include "code\WorkInProgress\Susan\susan_desert_turfs.dm" -#include "code\WorkInProgress\virus2\analyser.dm" -#include "code\WorkInProgress\virus2\antibodies.dm" -#include "code\WorkInProgress\virus2\base.dm" -#include "code\WorkInProgress\virus2\curer.dm" -#include "code\WorkInProgress\virus2\diseasesplicer.dm" -#include "code\WorkInProgress\virus2\dishincubator.dm" -#include "code\WorkInProgress\virus2\isolator.dm" #include "code\ZAS\Airflow.dm" #include "code\ZAS\Connection.dm" #include "code\ZAS\Debug.dm" diff --git a/code/modules/virus2/analyser.dm b/code/modules/virus2/analyser.dm index 3604d7955f..82d1b633b8 100644 --- a/code/modules/virus2/analyser.dm +++ b/code/modules/virus2/analyser.dm @@ -14,19 +14,14 @@ if(istype(I,/obj/item/weapon/virusdish)) var/mob/living/carbon/c = user if(!dish) - dish = I c.drop_item() I.loc = src for(var/mob/M in viewers(src)) if(M == user) continue M.show_message("\blue [user.name] inserts the [dish.name] in the [src.name]", 3) - - else user << "There is already a dish inserted" - - //else return @@ -34,8 +29,6 @@ if(stat & (NOPOWER|BROKEN)) return use_power(500) - //src.updateDialog() - if(scanning) scanning -= 1 @@ -46,10 +39,8 @@ r += "
Progress Speed : [dish.virus2.stageprob * 10]" for(var/datum/disease2/effectholder/E in dish.virus2.effects) r += "
Effect:[E.effect.name]. Strength : [E.multiplier * 8]. Verosity : [E.chance * 15]. Type : [5-E.stage]." - // display the antigens - var/code = "" - for(var/V in ANTIGENS) if(text2num(V) & dish.virus2.antigen) code += ANTIGENS[V] - r += "
Antigen pattern: [code]" + + r += "
Antigen pattern: [antigens2string(dish.virus2.antigen)]" var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src.loc) P.info = r @@ -59,8 +50,8 @@ dish = null icon_state = "analyser" - for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src] \blue The [src.name] prints a sheet of paper", 3) + M.state("\The [src.name] prints a sheet of paper") + else if(dish && !scanning && !pause) if(dish.virus2 && dish.growth > 50) dish.growth -= 10 @@ -71,8 +62,6 @@ spawn(25) dish.loc = src.loc dish = null - for(var/mob/M in viewers(src)) - M.show_message("\icon[src] \blue The [src.name] buzzes", 2) + M.state("\The [src.name] buzzes") pause = 0 - return \ No newline at end of file diff --git a/code/modules/virus2/antibodies.dm b/code/modules/virus2/antibodies.dm index b8810e322d..9d4c63ae2c 100644 --- a/code/modules/virus2/antibodies.dm +++ b/code/modules/virus2/antibodies.dm @@ -1,23 +1,5 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 -// pure concentrated antibodies -datum/reagent/antibodies - data = new/list("antibodies"=0) - name = "Antibodies" - id = "antibodies" - reagent_state = LIQUID - color = "#0050F0" - - reaction_mob(var/mob/M, var/method=TOUCH, var/volume) - if(istype(M,/mob/living/carbon)) - if(src.data && method == INGEST) - if(M:virus2) if(src.data["antibodies"] & M:virus2.antigen) - M:virus2.dead = 1 - // if the virus is killed this way it immunizes - // M:antibodies |= M:virus2.antigen - M:antibodies |= src.data["antibodies"] - return - // reserving some numbers for later special antigens var/global/const/ANTIGEN_A = 1 var/global/const/ANTIGEN_B = 2 @@ -33,26 +15,38 @@ var/global/const/ANTIGEN_N = 1024 var/global/const/ANTIGEN_P = 2048 var/global/const/ANTIGEN_O = 4096 -var/global/list/ANTIGENS = list("[ANTIGEN_A]" = "A", "[ANTIGEN_B]" = "B", "[ANTIGEN_RH]" = "RH", "[ANTIGEN_Q]" = "Q", - "[ANTIGEN_U]" = "U", "[ANTIGEN_V]" = "V", "[ANTIGEN_Z]" = "Z", "[ANTIGEN_M]" = "M", - "[ANTIGEN_N]" = "N", "[ANTIGEN_P]" = "P", "[ANTIGEN_O]" = "O") +var/global/list/ANTIGENS = list( +"[ANTIGEN_A]" = "A", +"[ANTIGEN_B]" = "B", +"[ANTIGEN_RH]" = "RH", +"[ANTIGEN_Q]" = "Q", +"[ANTIGEN_U]" = "U", +"[ANTIGEN_V]" = "V", +"[ANTIGEN_Z]" = "Z", +"[ANTIGEN_M]" = "M", +"[ANTIGEN_N]" = "N", +"[ANTIGEN_P]" = "P", +"[ANTIGEN_O]" = "O" +) +// pure concentrated antibodies +datum/reagent/antibodies + data = list("antibodies"=0) + name = "Antibodies" + id = "antibodies" + reagent_state = LIQUID + color = "#0050F0" + reaction_mob(var/mob/M, var/method=TOUCH, var/volume) + if(istype(M,/mob/living/carbon)) + if(src.data && method == INGEST) + if(M:virus2) if(src.data["antibodies"] & M:virus2.antigen) + M:virus2.dead = 1 + M:antibodies |= src.data["antibodies"] + return -/obj/item/device/antibody_scanner - name = "Antibody Scanner" - desc = "Used to scan living beings for antibodies in their blood." - icon_state = "health" - w_class = 2.0 - item_state = "electronic" - flags = FPRINT | TABLEPASS | CONDUCT | USEDELAY - - -/obj/item/device/antibody_scanner/attack(mob/living/carbon/human/M as mob, mob/user as mob) - if(! istype(M, /mob/living/carbon) || !M:antibodies) - user << "Unable to detect antibodies.." - else - // iterate over the list of antigens and see what matches - var/code = "" - for(var/V in ANTIGENS) if(text2num(V) & M.antibodies) code += ANTIGENS[V] - user << text("\blue [src] The antibody scanner displays a cryptic set of data: [code]") +// iterate over the list of antigens and see what matches +/proc/antigens2string(var/antigens) + var/code = "" + for(var/V in ANTIGENS) if(text2num(V) & antigens) code += ANTIGENS[V] + return code \ No newline at end of file diff --git a/code/modules/virus2/cureimplanter.dm b/code/modules/virus2/cureimplanter.dm deleted file mode 100644 index 80354e5765..0000000000 --- a/code/modules/virus2/cureimplanter.dm +++ /dev/null @@ -1,43 +0,0 @@ -/obj/item/weapon/cureimplanter - name = "Hypospray injector" - icon = 'items.dmi' - icon_state = "implanter1" - var/datum/disease2/resistance/resistance = null - var/works = 0 - var/datum/disease2/disease/virus2 = null - item_state = "syringe_0" - throw_speed = 1 - throw_range = 5 - w_class = 2.0 - - -/obj/item/weapon/cureimplanter/attack(mob/target as mob, mob/user as mob) - if(ismob(target)) - for(var/mob/O in viewers(world.view, user)) - if (target != user) - O.show_message(text("\red [] is trying to inject [] with [src.name]!", user, target), 1) - else - O.show_message("\red [user] is trying to inject themselves with [src.name]!", 1) - if(!do_mob(user, target,60)) return - - - for(var/mob/O in viewers(world.view, user)) - if (target != user) - O.show_message(text("\red [] injects [] with [src.name]!", user, target), 1) - else - O.show_message("\red [user] injects themself with [src.name]!", 1) - - - var/mob/living/carbon/M = target - - if(works == 0) - M.resistances2 += resistance - //M.immunevirus2 += M.virus2.getcopy() - if(M.virus2) - M.virus2.cure_added(resistance) - else if(works == 1) - M.adjustToxLoss(60) - else if(works == 2) - M.gib() - else if(works == 3) - infect_virus2(M,virus2,1) \ No newline at end of file diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm index 4a7e56c1a1..65b030ba82 100644 --- a/code/modules/virus2/curer.dm +++ b/code/modules/virus2/curer.dm @@ -9,31 +9,7 @@ /obj/machinery/computer/curer/attackby(var/obj/I as obj, var/mob/user as mob) if(istype(I, /obj/item/weapon/screwdriver)) - playsound(src.loc, 'sound/items/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/curer/M = new /obj/item/weapon/circuitboard/curer( 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/curer/M = new /obj/item/weapon/circuitboard/curer( 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) + return ..(I,user) if(istype(I,/obj/item/weapon/reagent_containers)) var/mob/living/carbon/C = user if(!container) @@ -55,7 +31,6 @@ state("The [src.name] Buzzes", "blue") return - //else src.attack_hand(user) return @@ -102,7 +77,6 @@ if(stat & (NOPOWER|BROKEN)) return use_power(500) - //src.updateDialog() if(curing) curing -= 1 @@ -114,16 +88,15 @@ /obj/machinery/computer/curer/Topic(href, href_list) if(..()) return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.machine = src + usr.machine = src - if (href_list["antibody"]) - curing = 10 - else if(href_list["eject"]) - container.loc = src.loc - container = null + if (href_list["antibody"]) + curing = 10 + else if(href_list["eject"]) + container.loc = src.loc + container = null - src.add_fingerprint(usr) + src.add_fingerprint(usr) src.updateUsrDialog() return @@ -137,11 +110,4 @@ data["antibodies"] = B.data["antibodies"] product.reagents.add_reagent("antibodies",30,data) - state("The [src.name] Buzzes", "blue") -/* -/obj/machinery/computer/curer/proc/createvirus(var/datum/disease2/disease/virus2) - var/obj/item/weapon/cureimplanter/implanter = new /obj/item/weapon/cureimplanter(src.loc) - implanter.name = "Viral implanter (MAJOR BIOHAZARD)" - implanter.works = 3 - state("The [src.name] Buzzes", "blue") -*/ \ No newline at end of file + state("\The [src.name] buzzes", "blue") diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm index 5a558546e4..0165e8ee63 100644 --- a/code/modules/virus2/diseasesplicer.dm +++ b/code/modules/virus2/diseasesplicer.dm @@ -13,31 +13,7 @@ /obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/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/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( 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/diseasesplicer/M = new /obj/item/weapon/circuitboard/diseasesplicer( 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) + return ..(I,user) if(istype(I,/obj/item/weapon/virusdish)) var/mob/living/carbon/c = user if(!dish) @@ -49,8 +25,6 @@ user << "You upload the contents of the disk into the buffer" memorybank = I:effect - - //else src.attack_hand(user) return @@ -117,7 +91,6 @@ if(stat & (NOPOWER|BROKEN)) return use_power(500) - //src.updateDialog() if(scanning) scanning -= 1 @@ -143,44 +116,29 @@ /obj/machinery/computer/diseasesplicer/Topic(href, href_list) if(..()) return - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.machine = src - if (href_list["grab"]) - memorybank = locate(href_list["grab"]) - analysed = dish.analysed - del(dish) - dish = null - scanning = 10 + if (href_list["grab"]) + memorybank = locate(href_list["grab"]) + analysed = dish.analysed + del(dish) + dish = null + scanning = 10 - else if(href_list["eject"]) - dish.loc = src.loc - dish = null + else if(href_list["eject"]) + dish.loc = src.loc + dish = null - else if(href_list["splice"]) - if(dish) - for(var/datum/disease2/effectholder/e in dish.virus2.effects) - if(e.stage == memorybank.stage) - e.effect = memorybank.effect - splicing = 10 - dish.virus2.spreadtype = "Blood" + else if(href_list["splice"]) + if(dish) + for(var/datum/disease2/effectholder/e in dish.virus2.effects) + if(e.stage == memorybank.stage) + e.effect = memorybank.effect + splicing = 10 + dish.virus2.spreadtype = "Blood" - else if(href_list["disk"]) - burning = 10 + else if(href_list["disk"]) + burning = 10 - src.add_fingerprint(usr) + src.add_fingerprint(usr) src.updateUsrDialog() return - -/obj/item/weapon/diseasedisk - name = "Blank GNA disk" - icon = 'cloning.dmi' - icon_state = "datadisk0" - var/datum/disease2/effectholder/effect = null - var/stage = 1 - -/obj/item/weapon/diseasedisk/premade/New() - name = "Blank GNA disk (stage: [5-stage])" - effect = new /datum/disease2/effectholder - effect.effect = new /datum/disease2/effect/invisible - effect.stage = stage diff --git a/code/modules/virus2/dishincubator.dm b/code/modules/virus2/dishincubator.dm index f2aefe07ea..e777c63552 100644 --- a/code/modules/virus2/dishincubator.dm +++ b/code/modules/virus2/dishincubator.dm @@ -14,156 +14,132 @@ var/foodsupply = 0 var/toxins = 0 - ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - if (prob(50)) - del(src) - return - blob_act() - if (prob(25)) - del(src) +/obj/machinery/disease2/incubator/attackby(var/obj/B as obj, var/mob/user as mob) + if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe)) - meteorhit() - del(src) - return + if(src.beaker) + if(istype(beaker,/obj/item/weapon/reagent_containers/syringe)) + user << "A syringe is already loaded into the machine." + else + user << "A beaker is already loaded into the machine." + return - attackby(var/obj/B as obj, var/mob/user as mob) - if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B,/obj/item/weapon/reagent_containers/syringe)) - - if(src.beaker) - if(istype(beaker,/obj/item/weapon/reagent_containers/syringe)) - user << "A syringe is already loaded into the machine." - else - user << "A beaker is already loaded into the machine." + src.beaker = B + user.drop_item() + B.loc = src + if(istype(B,/obj/item/weapon/reagent_containers/syringe)) + user << "You add the syringe to the machine!" + src.updateUsrDialog() + else + user << "You add the beaker to the machine!" + src.updateUsrDialog() + else + if(istype(B,/obj/item/weapon/virusdish)) + if(src.dish) + user << "A dish is already loaded into the machine." return - src.beaker = B + src.dish = B user.drop_item() B.loc = src - if(istype(B,/obj/item/weapon/reagent_containers/syringe)) - user << "You add the syringe to the machine!" - src.updateUsrDialog() - else - user << "You add the beaker to the machine!" - src.updateUsrDialog() - else if(istype(B,/obj/item/weapon/virusdish)) - if(src.dish) - user << "A dish is already loaded into the machine." - return + user << "You add the dish to the machine!" + src.updateUsrDialog() - src.dish = B - user.drop_item() - B.loc = src - if(istype(B,/obj/item/weapon/virusdish)) - user << "You add the dish to the machine!" - src.updateUsrDialog() +/obj/machinery/disease2/incubator/Topic(href, href_list) + if(..()) return - Topic(href, href_list) - if(stat & BROKEN) return - if(usr.stat || usr.restrained()) return - if(!in_range(src, usr)) return - if (href_list["ejectchem"]) - if(beaker) - beaker.loc = src.loc - beaker = null - if(!dish) - return - usr.machine = src - if (href_list["power"]) - on = !on - if(on) - icon_state = "incubator_on" - else - icon_state = "incubator" - if (href_list["ejectdish"]) - if(dish) - dish.loc = src.loc - dish = null - if (href_list["rad"]) - radiation += 10 - if (href_list["flush"]) - radiation = 0 - toxins = 0 - foodsupply = 0 - - - src.add_fingerprint(usr) - src.updateUsrDialog() - - attack_hand(mob/user as mob) - if(stat & BROKEN) - return - user.machine = src - var/dat = "" - if(!dish) - dat = "Please insert dish into the incubator.
" - var/string = "Off" - if(on) - string = "On" - dat += "Power status : [string]" - dat += "
" - dat += "Food supply : [foodsupply]" - dat += "
" - dat += "Radiation Levels : [radiation] RADS : Radiate" - dat += "
" - dat += "Toxins : [toxins]" - dat += "

" + if (href_list["ejectchem"]) if(beaker) - dat += "Eject chemicals : Eject" - dat += "
" - if(dish) - dat += "Eject Virus dish : Eject" - dat += "
" - dat += "

" - dat += "Flush system
" - dat += "Close
" - user << browse("Pathogenic incubatorincubator menu:

[dat]", "window=incubator;size=575x400") - onclose(user, "incubator") + beaker.loc = src.loc + beaker = null + if(!dish) return + usr.machine = src + if (href_list["power"]) + on = !on + if(on) + icon_state = "incubator_on" + else + icon_state = "incubator" + if (href_list["ejectdish"]) + if(dish) + dish.loc = src.loc + dish = null + if (href_list["rad"]) + radiation += 10 + if (href_list["flush"]) + radiation = 0 + toxins = 0 + foodsupply = 0 + src.add_fingerprint(usr) + src.updateUsrDialog() +/obj/machinery/disease2/incubator/attack_hand(mob/user as mob) + if(stat & BROKEN) + return + user.machine = src + var/dat = "" + if(!dish) + dat = "Please insert dish into the incubator.
" + var/string = "Off" + if(on) + string = "On" + dat += "Power status : [string]" + dat += "
" + dat += "Food supply : [foodsupply]" + dat += "
" + dat += "Radiation Levels : [radiation] RADS : Radiate" + dat += "
" + dat += "Toxins : [toxins]" + dat += "

" + if(beaker) + dat += "Eject chemicals : Eject" + dat += "
" + if(dish) + dat += "Eject Virus dish : Eject" + dat += "
" + dat += "

" + dat += "Flush system
" + dat += "Close
" + user << browse("Pathogenic incubatorincubator menu:

[dat]", "window=incubator;size=575x400") + onclose(user, "incubator") + return - - process() - - if(dish && on && dish.virus2) - use_power(50,EQUIP) - if(!powered(EQUIP)) - on = 0 - icon_state = "incubator" - if(foodsupply) - foodsupply -= 1 - dish.growth += 3 - if(dish.growth >= 100) - state("The [src.name] pings", "blue") - if(radiation) - if(radiation > 50 & prob(5)) - dish.virus2.majormutate() - if(dish.info) - dish.info = "OUTDATED : [dish.info]" - dish.analysed = 0 - state("The [src.name] beeps", "blue") - - else if(prob(5)) - dish.virus2.minormutate() - radiation -= 1 - if(toxins && prob(5)) - dish.virus2.infectionchance -= 1 - if(toxins > 50) - dish.virus2 = null - else if(!dish) +/obj/machinery/disease2/incubator/process() + if(dish && on && dish.virus2) + use_power(50,EQUIP) + if(!powered(EQUIP)) on = 0 icon_state = "incubator" + if(foodsupply) + foodsupply -= 1 + dish.growth += 3 + if(dish.growth >= 100) + state("The [src.name] pings", "blue") + if(radiation) + if(radiation > 50 & prob(5)) + dish.virus2.majormutate() + if(dish.info) + dish.info = "OUTDATED : [dish.info]" + dish.analysed = 0 + state("The [src.name] beeps", "blue") + else if(prob(5)) + dish.virus2.minormutate() + radiation -= 1 + if(toxins && prob(5)) + dish.virus2.infectionchance -= 1 + if(toxins > 50) + dish.virus2 = null + else if(!dish) + on = 0 + icon_state = "incubator" - if(beaker) - if(!beaker.reagents.remove_reagent("virusfood",5)) - foodsupply += 10 - if(!beaker.reagents.remove_reagent("toxin",1)) - toxins += 1 \ No newline at end of file + if(beaker) + if(!beaker.reagents.remove_reagent("virusfood",5)) + foodsupply += 10 + if(!beaker.reagents.remove_reagent("toxin",1)) + toxins += 1 \ No newline at end of file diff --git a/code/modules/virus2/isolator.dm b/code/modules/virus2/isolator.dm index d337959fd6..acd92c395c 100644 --- a/code/modules/virus2/isolator.dm +++ b/code/modules/virus2/isolator.dm @@ -8,154 +8,86 @@ var/isolating = 0 var/beaker = null - ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) - if (prob(50)) - del(src) - return - - blob_act() - if (prob(25)) - del(src) - - meteorhit() - del(src) +/obj/machinery/disease2/isolator/attackby(var/W as obj, var/mob/user) + if(!istype(W,/obj/item/weapon/reagent_containers/syringe)) return - attackby(var/obj/item/weapon/reagent_containers/glass/B as obj, var/mob/user as mob) - if(!istype(B,/obj/item/weapon/reagent_containers/syringe)) - return + var/obj/item/weapon/reagent_containers/syringe/B = W - if(src.beaker) - user << "A syringe is already loaded into the machine." - return + if(src.beaker) + user << "A syringe is already loaded into the machine." + return - src.beaker = B - user.drop_item() - B.loc = src - if(istype(B,/obj/item/weapon/reagent_containers/syringe)) - user << "You add the syringe to the machine!" - src.updateUsrDialog() - icon_state = "isolator_in" + src.beaker = B + user.drop_item() + B.loc = src + if(istype(B,/obj/item/weapon/reagent_containers/syringe)) + user << "You add the syringe to the machine!" + src.updateUsrDialog() + icon_state = "isolator_in" - Topic(href, href_list) - if(stat & BROKEN) return - if(usr.stat || usr.restrained()) return - if(!in_range(src, usr)) return +/obj/machinery/disease2/isolator/Topic(href, href_list) + if(..()) return - usr.machine = src - if(!beaker) return + usr.machine = src + if(!beaker) return + var/datum/reagents/R = beaker:reagents + + if (href_list["isolate"]) + var/datum/reagent/blood/Blood + for(var/datum/reagent/blood/B in R.reagent_list) + if(B) + Blood = B + break + + if(Blood.data["virus2"]) + virus2 = Blood.data["virus2"] + isolating = 40 + icon_state = "isolator_processing" + src.updateUsrDialog() + return + + else if (href_list["main"]) + attack_hand(usr) + return + else if (href_list["eject"]) + beaker:loc = src.loc + beaker = null + icon_state = "isolator" + src.updateUsrDialog() + return + +/obj/machinery/disease2/isolator/attack_hand(mob/user as mob) + if(stat & BROKEN) + return + user.machine = src + var/dat = "" + if(!beaker) + dat = "Please insert sample into the isolator.
" + dat += "Close" + else if(isolating) + dat = "Isolating" + else var/datum/reagents/R = beaker:reagents - - if (href_list["isolate"]) - var/datum/reagent/blood/Blood - for(var/datum/reagent/blood/B in R.reagent_list) - if(B) - Blood = B - break - - if(Blood.data["virus2"]) - virus2 = Blood.data["virus2"] - isolating = 40 - icon_state = "isolator_processing" - src.updateUsrDialog() - return - - else if (href_list["main"]) - attack_hand(usr) - return - else if (href_list["eject"]) - beaker:loc = src.loc - beaker = null - icon_state = "isolator" - src.updateUsrDialog() - return - - attack_hand(mob/user as mob) - if(stat & BROKEN) - return - user.machine = src - var/dat = "" - if(!beaker) - dat = "Please insert sample into the isolator.
" - dat += "Close" - else if(isolating) - dat = "Isolating" + dat += "Eject

" + if(!R.total_volume) + dat += "[beaker] is empty." else - var/datum/reagents/R = beaker:reagents - dat += "Eject

" - if(!R.total_volume) - dat += "[beaker] is empty." - else - dat += "Contained reagents:
" - for(var/datum/reagent/blood/G in R.reagent_list) - if(G.data["virus2"]) - dat += " [G.name]: Isolate" - else - dat += " No pathogen" - user << browse("Pathogenic IsolatorIsolator menu:

[dat]", "window=isolator;size=575x400") - onclose(user, "isolator") - return + dat += "Contained reagents:
" + for(var/datum/reagent/blood/G in R.reagent_list) + if(G.data["virus2"]) + dat += " [G.name]: Isolate" + else + dat += " No pathogen" + user << browse("Pathogenic IsolatorIsolator menu:

[dat]", "window=isolator;size=575x400") + onclose(user, "isolator") + return - - - - process() - if(isolating > 0) - isolating -= 1 - if(isolating == 0) - var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc) - d.virus2 = virus2.getcopy() - virus2 = null - icon_state = "isolator_in" - - - - -/obj/item/weapon/virusdish - name = "Virus containment/growth dish" - icon = 'items.dmi' - icon_state = "implantcase-b" - var/datum/disease2/disease/virus2 = null - var/growth = 0 - var/info = 0 - var/analysed = 0 - - reagents = list() - -/obj/item/weapon/virusdish/random - name = "Virus Sample" - -/obj/item/weapon/virusdish/random/New() - ..() - // add a random virus to this dish - src.virus2 = new /datum/disease2/disease - src.virus2.makerandom() - growth = rand(5, 50) - -/obj/item/weapon/virusdish/attackby(var/obj/item/weapon/W as obj,var/mob/living/carbon/user as mob) - if(istype(W,/obj/item/weapon/hand_labeler) || istype(W,/obj/item/weapon/reagent_containers/syringe)) - return - ..() - if(prob(50)) - user << "The dish shatters" - if(virus2.infectionchance > 0) - for(var/mob/living/carbon/target in view(null, src)) if(!target.virus2) - if(airborne_can_reach(src.loc, target.loc)) - if(target.get_infection_chance()) - infect_virus2(target,src.virus2) - del src - -/obj/item/weapon/virusdish/examine() - usr << "This is a virus containment dish" - if(src.info) - usr << "It has the following information about its contents" - usr << src.info - -/obj/machinery/proc/state(var/msg) - for(var/mob/O in hearers(src, null)) - O.show_message("\icon[src] \blue [msg]", 2) +/obj/machinery/disease2/isolator/process() + if(isolating > 0) + isolating -= 1 + if(isolating == 0) + var/obj/item/weapon/virusdish/d = new /obj/item/weapon/virusdish(src.loc) + d.virus2 = virus2.getcopy() + virus2 = null + icon_state = "isolator_in" diff --git a/code/modules/virus2/monkeydispensor.dm b/code/modules/virus2/monkeydispensor.dm deleted file mode 100644 index aee24b0d4a..0000000000 --- a/code/modules/virus2/monkeydispensor.dm +++ /dev/null @@ -1,30 +0,0 @@ -/obj/machinery/disease2/monkeycloner - name = "Monkey dispensor" - icon = 'cloning.dmi' - icon_state = "pod_0" - density = 1 - anchored = 1 - - var/cloning = 0 - -/obj/machinery/disease2/monkeycloner/attack_hand() - if(!cloning) - cloning = 150 - - icon_state = "pod_g" - -/obj/machinery/disease2/monkeycloner/process() - if(stat & (NOPOWER|BROKEN)) - return - use_power(500) - //src.updateDialog() - - if(cloning) - cloning -= 1 - if(!cloning) - new /mob/living/carbon/monkey(src.loc) - icon_state = "pod_0" - - - - return \ No newline at end of file