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("