diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index f2e5b10fddbbb..ff0cae97c75a3 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -134,7 +134,8 @@ var/global/list/admin_verbs_fun = list(
/client/proc/cmd_admin_simulate_distant_explosion,
/datum/admins/proc/ai_hologram_set,
/client/proc/bombard_zlevel,
- /client/proc/rename_shuttle
+ /client/proc/rename_shuttle,
+ /client/proc/give_disease2 // [/SIERRA-ADD] - CLIENT_VERBS
)
var/global/list/admin_verbs_spawn = list(
diff --git a/code/modules/mob/skills/skill.dm b/code/modules/mob/skills/skill.dm
index 8ed4c35cc6b7b..807d8a18aba6f 100644
--- a/code/modules/mob/skills/skill.dm
+++ b/code/modules/mob/skills/skill.dm
@@ -343,6 +343,6 @@ GLOBAL_LIST_EMPTY(skills)
desc = "Virology requires a specialist to have not only a deep knowledge of viruses, but also the ability to work with them, similar to how a chemist works with chemicals. This means not only understanding chemical reactions and their effects, but also knowing how these reactions will affect the human body. Thus, a virologist must have not only knowledge of virology, but also medical skills. An analogy can be drawn with a medical chemist, who must have experience working with chemicals and understand what effect they will have in order to use them safely in medicine."
levels = list( "Unskilled" = "You know that virologist work with viruses; you know that they can be very dangerous. You probably know basic defence against viruses..",
"Trained" = "You can engeener viruses. You have some training in safety and you won't infect yourself while work... probably. You can almost safely use the virologist equipment.")
- prerequisites = list(SKILL_CHEMISTRY = SKILL_TRAINED)
+ prerequisites = list(SKILL_CHEMISTRY = SKILL_BASIC)
default_max = SKILL_BASIC
- difficulty = SKILL_AVERAGE
+ difficulty = SKILL_EXPERIENCED
diff --git a/maps/sierra/sierra_unit_testing.dm b/maps/sierra/sierra_unit_testing.dm
index 16c21059e9c3f..747ed5141f126 100644
--- a/maps/sierra/sierra_unit_testing.dm
+++ b/maps/sierra/sierra_unit_testing.dm
@@ -106,11 +106,11 @@
name = "ZAS: Supply Shuttle (CentComm)"
area_path = /area/supply/dock
-/*
+
/datum/unit_test/zas_area_test/virology
name = "ZAS: Virology"
area_path = /area/medical/virology
-*/
+
/datum/unit_test/zas_area_test/xenobio
name = "ZAS: Xenobiology"
diff --git a/maps/sierra/z1-z5_sierra.dmm b/maps/sierra/z1-z5_sierra.dmm
index 363e6f50fd439..e1153a66d8080 100644
--- a/maps/sierra/z1-z5_sierra.dmm
+++ b/maps/sierra/z1-z5_sierra.dmm
@@ -1619,35 +1619,6 @@
/obj/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled/techfloor/grid,
/area/maintenance/firstdeck/centralstarboard)
-"amo" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/structure/cable/green{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/floor_decal/borderfloor{
- dir = 4
- },
-/obj/floor_decal/industrial/danger{
- dir = 4
- },
-/obj/floor_decal/borderfloor/corner{
- dir = 8
- },
-/obj/floor_decal/corner/lime/bordercorner{
- dir = 8
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/seconddeck/center)
"ams" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
@@ -4048,8 +4019,24 @@
/turf/simulated/floor/tiled/white/monotile,
/area/medical/sleeper)
"aCR" = (
-/turf/simulated/wall/r_wall/hull,
-/area/medical/virology)
+/obj/machinery/button/blast_door{
+ id_tag = "vir_blast_window";
+ name = "Virology windows";
+ pixel_y = -24
+ },
+/obj/floor_decal/borderfloorblack{
+ dir = 1
+ },
+/obj/floor_decal/corner/green/border{
+ dir = 1
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/white,
+/area/medical/virology/lab)
"aCX" = (
/obj/machinery/flasher{
pixel_x = 32;
@@ -5330,18 +5317,29 @@
/turf/simulated/wall/ocp_wall,
/area/maintenance/incinerator)
"aNR" = (
-/obj/floor_decal/corner/green/diagonal,
-/obj/structure/table/glass,
/obj/structure/cable/green{
d1 = 1;
d2 = 4;
icon_state = "1-4"
},
-/obj/machinery/light/spot{
- dir = 8
+/obj/floor_decal/borderfloorblack{
+ dir = 1
+ },
+/obj/floor_decal/corner/green/border{
+ dir = 1
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"aNW" = (
/obj/machinery/portable_atmospherics/hydroponics,
/obj/machinery/atmospherics/portables_connector{
@@ -16552,10 +16550,6 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/crew_quarters/sleep/bunk)
"cxR" = (
-/obj/structure/disposalpipe/segment{
- dir = 1;
- icon_state = "pipe-c"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 1
},
@@ -20084,6 +20078,11 @@
/obj/floor_decal/corner/green/border{
dir = 1
},
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"cXt" = (
@@ -23232,17 +23231,8 @@
/turf/simulated/floor/plating,
/area/hallway/primary/seconddeck/center)
"duu" = (
-/obj/structure/disposalpipe/segment{
- dir = 8;
- icon_state = "pipe-c"
- },
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
/obj/structure/cable/green{
d1 = 2;
d2 = 8;
@@ -25677,21 +25667,11 @@
/turf/simulated/floor/wood/walnut,
/area/crew_quarters/lounge)
"dLm" = (
-/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment,
/obj/floor_decal/corner/green/mono,
-/obj/floor_decal/industrial/hatch/yellow,
-/obj/machinery/door/airlock/glass/virology,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/item/taperoll/engineering/applied,
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/turf/simulated/floor/tiled/white/monotile,
-/area/medical/virology)
+/obj/floor_decal/industrial/outline/yellow,
+/obj/machinery/computer/centrifuge,
+/turf/simulated/floor/tiled/white,
+/area/medical/virology/lab)
"dLu" = (
/obj/structure/ladder,
/obj/structure/lattice,
@@ -25809,9 +25789,6 @@
dir = 8;
pixel_x = -24
},
-/obj/machinery/computer/diseasesplicer{
- dir = 4
- },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"dMC" = (
@@ -26708,14 +26685,15 @@
/turf/simulated/floor/wood/mahogany,
/area/crew_quarters/sleep/bunk)
"dSS" = (
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
+/obj/structure/disposalpipe/segment{
+ dir = 1;
+ icon_state = "pipe-c"
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"dSU" = (
@@ -35236,22 +35214,14 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/maintenance/waterstore)
"ffc" = (
-/obj/floor_decal/borderfloorblack{
- dir = 4
- },
-/obj/floor_decal/corner/green/border{
- dir = 4
- },
-/obj/floor_decal/borderfloorblack/corner2{
- dir = 5
+/obj/machinery/disposal,
+/obj/floor_decal/corner/green{
+ dir = 6
},
+/obj/floor_decal/industrial/hatch/yellow,
/obj/structure/disposalpipe/trunk{
dir = 8
},
-/obj/machinery/disposal,
-/obj/floor_decal/corner/green/bordercorner2{
- dir = 5
- },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"ffd" = (
@@ -42585,6 +42555,15 @@
/obj/floor_decal/corner/green/bordercorner2{
dir = 8
},
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "west bump";
+ pixel_x = -24
+ },
+/obj/structure/cable/green{
+ d2 = 4;
+ icon_state = "0-4"
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology)
"gjE" = (
@@ -44431,8 +44410,11 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/floor_decal/borderfloor{
- dir = 8
+/obj/floor_decal/corner/green/bordercorner{
+ dir = 1
+ },
+/obj/floor_decal/borderfloor/corner{
+ dir = 1
},
/obj/floor_decal/corner/green/bordercorner{
dir = 1
@@ -44870,7 +44852,7 @@
id_tag = "vir_blast_window"
},
/turf/simulated/floor/plating,
-/area/medical/virology)
+/area/medical/virology/lab)
"gDw" = (
/obj/structure/table/rack,
/obj/machinery/power/apc/super/critical{
@@ -46853,6 +46835,11 @@
d2 = 4;
icon_state = "2-4"
},
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology)
"gRR" = (
@@ -47043,25 +47030,22 @@
/turf/simulated/floor/tiled/white/monotile,
/area/maintenance/fourthdeck/aft)
"gTc" = (
-/obj/floor_decal/corner/green/diagonal,
/obj/structure/bed/chair/office/light{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
+/obj/floor_decal/borderfloorblack{
+ dir = 1
},
-/obj/structure/cable/green{
- d1 = 2;
- d2 = 4;
- icon_state = "2-4"
+/obj/floor_decal/corner/green/border{
+ dir = 1
},
/obj/structure/cable/green{
- d1 = 2;
+ d1 = 4;
d2 = 8;
- icon_state = "2-8"
+ icon_state = "4-8"
},
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"gTl" = (
/turf/simulated/wall/r_wall/hull,
/area/maintenance/abandoned_hydroponics)
@@ -53934,22 +53918,11 @@
/turf/simulated/floor/tiled,
/area/assembly/office)
"hVT" = (
-/obj/floor_decal/corner/green/diagonal,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
- },
-/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
+/obj/floor_decal/borderfloorblack,
+/obj/floor_decal/corner/green/border,
+/obj/machinery/light/spot,
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"hWb" = (
/obj/floor_decal/chapel{
dir = 1
@@ -59667,26 +59640,6 @@
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/bluespace)
-"iOx" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/floor_decal/borderfloor{
- dir = 4
- },
-/obj/floor_decal/industrial/danger{
- dir = 4
- },
-/obj/floor_decal/borderfloor/corner{
- dir = 1
- },
-/obj/floor_decal/corner/green/bordercorner{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/hallway/primary/seconddeck/center)
"iOy" = (
/obj/structure/table/standard,
/obj/item/book/manual/ripley_build_and_repair,
@@ -60600,10 +60553,6 @@
/turf/simulated/floor/tiled/techfloor,
/area/security/sierra/armory/lobby)
"iUN" = (
-/obj/floor_decal/corner/green/diagonal,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
/obj/structure/hygiene/sink{
dir = 4;
pixel_x = 11
@@ -60613,8 +60562,14 @@
d2 = 8;
icon_state = "1-8"
},
+/obj/floor_decal/borderfloorblack{
+ dir = 5
+ },
+/obj/floor_decal/corner/green/border{
+ dir = 5
+ },
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"iUO" = (
/obj/machinery/status_display{
pixel_y = 32
@@ -65782,12 +65737,8 @@
d2 = 8;
icon_state = "4-8"
},
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/multi_tile/maintenance{
- dir = 8;
- autoset_access = 0
- },
-/obj/floor_decal/industrial/hatch/yellow,
+/obj/floor_decal/borderfloor,
+/obj/floor_decal/corner/green/border,
/turf/simulated/floor/tiled,
/area/hallway/primary/seconddeck/center)
"jMp" = (
@@ -79420,6 +79371,7 @@
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
+/obj/structure/closet/crate/secure/biohazard,
/turf/simulated/floor/tiled/white,
/area/medical/virology)
"lIc" = (
@@ -82743,9 +82695,6 @@
d2 = 4;
icon_state = "2-4"
},
-/obj/floor_decal/borderfloor{
- dir = 8
- },
/obj/floor_decal/corner/green/bordercorner,
/obj/floor_decal/corner/green/bordercorner{
dir = 8
@@ -83925,13 +83874,6 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/plating,
/area/storage/eva)
-"msF" = (
-/obj/wallframe_spawn/reinforced/hull,
-/obj/machinery/door/blast/regular{
- id_tag = "vir_blast_window"
- },
-/turf/simulated/floor/plating,
-/area/medical/virology)
"msI" = (
/obj/floor_decal/industrial/hatch/yellow,
/obj/machinery/self_destruct,
@@ -90545,13 +90487,6 @@
/turf/simulated/floor/plating,
/area/maintenance/seconddeck/foreport)
"nrb" = (
-/obj/floor_decal/corner/green/diagonal,
-/obj/structure/table/glass,
-/obj/machinery/microwave{
- pixel_x = -3;
- pixel_y = 6
- },
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
/obj/item/device/radio/intercom{
dir = 8;
pixel_x = 24
@@ -90561,8 +90496,10 @@
d2 = 2;
icon_state = "1-2"
},
+/obj/floor_decal/corner/green/mono,
+/obj/structure/table/glass,
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"nrg" = (
/obj/structure/lattice,
/obj/floor_decal/corner/red/border{
@@ -92901,9 +92838,6 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/hallway/primary/seconddeck/aft)
"nJm" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -94481,6 +94415,11 @@
d2 = 4;
icon_state = "2-4"
},
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"nYD" = (
@@ -107740,9 +107679,6 @@
/turf/simulated/floor/tiled/steel_grid,
/area/hallway/primary/thirddeck/fore)
"pSP" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -113333,7 +113269,8 @@
dir = 8;
pixel_x = 24
},
-/obj/machinery/computer/centrifuge,
+/obj/structure/table/glass,
+/obj/item/device/scanner/antibody_scanner,
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"qLh" = (
@@ -116404,20 +116341,18 @@
/turf/simulated/floor/tiled/monotile,
/area/rnd/misc_lab)
"rgQ" = (
-/obj/floor_decal/corner/green/diagonal,
-/obj/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 8
- },
-/obj/structure/sign/warning/deathsposal{
- pixel_x = 32
- },
/obj/machinery/alarm{
dir = 8;
pixel_x = 24
},
+/obj/floor_decal/borderfloorblack{
+ dir = 6
+ },
+/obj/floor_decal/corner/green/border{
+ dir = 6
+ },
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"rgS" = (
/obj/structure/railing/mapped{
dir = 1
@@ -116869,16 +116804,6 @@
},
/turf/simulated/floor/airless,
/area/solar/port)
-"rjG" = (
-/obj/structure/cable{
- d1 = 4;
- d2 = 8;
- icon_state = "4-8"
- },
-/obj/machinery/door/firedoor,
-/obj/floor_decal/industrial/hatch/yellow,
-/turf/simulated/floor/tiled,
-/area/hallway/primary/seconddeck/center)
"rjN" = (
/obj/floor_decal/industrial/warning/corner{
dir = 4
@@ -117743,22 +117668,17 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/maintenance/thirddeck/port)
"rsf" = (
-/obj/floor_decal/corner/green/diagonal,
/obj/structure/table/glass,
/obj/structure/cable/green{
d2 = 2;
icon_state = "0-2"
},
-/obj/machinery/power/apc{
- dir = 8;
- name = "west bump";
- pixel_x = -24
- },
/obj/item/diseasedisk,
/obj/item/diseasedisk,
/obj/item/diseasedisk,
+/obj/floor_decal/corner/green/mono,
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"rsi" = (
/obj/floor_decal/spline/fancy/wood{
dir = 1
@@ -123703,20 +123623,22 @@
/turf/simulated/floor/tiled,
/area/hallway/primary/seconddeck/fore)
"skh" = (
-/obj/floor_decal/corner/green/diagonal,
/obj/structure/table/glass,
/obj/item/modular_computer/laptop/preset/records{
dir = 4
},
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
/obj/machinery/camera/network/medbay{
c_tag = "Virology - Entrance";
dir = 4
},
+/obj/floor_decal/borderfloorblack{
+ dir = 10
+ },
+/obj/floor_decal/corner/green/border{
+ dir = 10
+ },
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"skl" = (
/obj/structure/catwalk,
/turf/simulated/floor/plating,
@@ -127144,7 +127066,9 @@
dir = 8
},
/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/structure/table/glass,
+/obj/machinery/computer/diseasesplicer{
+ dir = 4
+ },
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
"sIr" = (
@@ -127155,16 +127079,15 @@
/area/thruster/d1starboard)
"sIs" = (
/obj/floor_decal/borderfloorblack{
- dir = 5
+ dir = 1
},
/obj/floor_decal/corner/green/border{
- dir = 5
+ dir = 1
},
-/obj/machinery/button/blast_door{
- id_tag = "vir_blast_window";
- name = "Virology windows";
- dir = 8;
- pixel_x = 24
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
},
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
@@ -128671,9 +128594,6 @@
/area/maintenance/seconddeck/forestarboard)
"sSp" = (
/obj/machinery/door/firedoor,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
/obj/floor_decal/corner/green/mono,
/obj/floor_decal/industrial/hatch/yellow,
/obj/machinery/door/airlock/glass/virology,
@@ -136266,7 +136186,6 @@
},
/obj/structure/table/glass,
/obj/item/device/scanner/health,
-/obj/item/device/scanner/antibody_scanner,
/obj/item/storage/fancy/vials,
/turf/simulated/floor/tiled/white,
/area/medical/virology/lab)
@@ -142024,15 +141943,13 @@
/turf/simulated/floor/tiled/white,
/area/medical/infirmreception)
"uUh" = (
-/obj/floor_decal/corner/green/diagonal,
/obj/structure/table/glass,
/obj/structure/noticeboard{
pixel_y = 32
},
-/obj/machinery/recharger,
-/obj/item/device/scanner/antibody_scanner,
+/obj/floor_decal/corner/green/mono,
/turf/simulated/floor/tiled/white,
-/area/medical/virology)
+/area/medical/virology/lab)
"uUl" = (
/obj/floor_decal/borderfloorblack{
dir = 8
@@ -153390,6 +153307,10 @@
/area/crew_quarters/galley/freezer)
"wDQ" = (
/obj/structure/disposalpipe/trunk,
+/obj/structure/disposaloutlet{
+ dir = 8;
+ name = "cargo outlet"
+ },
/obj/structure/sign/warning/mail_delivery{
pixel_y = 24
},
@@ -153399,9 +153320,6 @@
dir = 4;
pixel_x = 24
},
-/obj/machinery/disposal/deliveryChute{
- dir = 8
- },
/turf/simulated/floor/tiled/dark/monotile,
/area/quartermaster/office/post)
"wDS" = (
@@ -160499,23 +160417,17 @@
},
/area/engineering/engine_room)
"xIZ" = (
-/obj/structure/disposalpipe/segment,
/obj/floor_decal/steeldecal/steel_decals4{
dir = 4
},
/obj/floor_decal/steeldecal/steel_decals4{
dir = 9
},
-/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 4
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
},
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
/turf/simulated/floor/tiled/white,
/area/medical/virology)
@@ -161701,6 +161613,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
+/obj/structure/closet/crate/secure/biohazard,
/turf/simulated/floor/tiled/techfloor/grid,
/area/medical/virology/atmos)
"xRB" = (
@@ -225289,8 +225202,8 @@ rtT
rtT
rtT
rtT
-idA
-tXe
+rtT
+rtT
egk
opM
kJW
@@ -264281,17 +264194,17 @@ idA
tXe
xxf
utn
-utn
-utn
+iqR
+iqR
qWx
qWx
-utn
+iqR
qWx
qWx
-utn
-utn
-utn
-utn
+iqR
+iqR
+iqR
+iqR
dBU
dBU
dBU
@@ -264483,11 +264396,11 @@ idA
tXe
mKZ
utn
-utn
+iqR
nlx
bFk
oie
-utn
+iqR
jHG
jRK
kkL
@@ -264685,7 +264598,7 @@ rtT
ibG
eME
utn
-utn
+iqR
huY
xAG
eGe
@@ -264887,11 +264800,11 @@ aTh
tXe
hLJ
utn
-utn
-utn
+iqR
+iqR
atf
atf
-utn
+iqR
qMl
kvF
ejr
@@ -265093,7 +265006,7 @@ kCD
ukG
bFk
oie
-utn
+iqR
vCG
gvQ
oFf
@@ -265492,12 +265405,12 @@ rtT
tXe
jDS
utn
-utn
-utn
-utn
+iqR
+iqR
+iqR
atf
atf
-utn
+iqR
vWF
oaO
oFf
@@ -266318,8 +266231,8 @@ xFc
ano
kDh
dBU
-iOx
-amo
+eIl
+jMh
egj
dFc
dFc
@@ -266501,15 +266414,15 @@ rtT
idA
tXe
hLJ
+utn
+iqR
+dLm
aCR
-aCR
-mHT
-mHT
-mHT
-mHT
+iqR
+iqR
hBO
sSp
-hBO
+mHT
mHT
mHT
mHT
@@ -266520,7 +266433,7 @@ dBU
dBU
dBU
dBU
-rjG
+eIl
jMh
fhm
lNl
@@ -266704,11 +266617,11 @@ idA
tXe
hLJ
uaW
-msF
+kCD
rsf
aNR
skh
-hBO
+iqR
lHV
pSP
gjj
@@ -266905,12 +266818,12 @@ rtT
idA
tXe
fdX
-aCR
-aCR
+utn
+iqR
uUh
gTc
hVT
-dLm
+iqR
xIZ
duu
gRO
@@ -267112,7 +267025,7 @@ gDr
nrb
iUN
rgQ
-hBO
+iqR
pbh
mtQ
qeH
@@ -267310,7 +267223,7 @@ idA
tXe
xxf
fNW
-fNW
+ttc
ttc
ttc
ttc
diff --git a/mods/virusology/code/admin.dm b/mods/virusology/code/admin.dm
index 81eabebb1904a..e83b8b3a38e15 100644
--- a/mods/virusology/code/admin.dm
+++ b/mods/virusology/code/admin.dm
@@ -113,7 +113,10 @@
RELEASE
"}
+ show_browser(usr, H, "window=admin2;size=540x600")
+
/datum/virus2_editor/Topic(href, href_list)
+ ..()
switch(href_list["what"])
if("effect")
var/stage = text2num(href_list["stage"])
@@ -161,7 +164,7 @@
if("antigen")
if(href_list["toggle"])
var/T = href_list["toggle"]
- if(length(T) != 1) return
+ if(length(T) != 2) return
if(T in antigens)
antigens -= T
else
@@ -214,8 +217,8 @@
/client/proc/give_disease2(mob/T as mob in SSmobs.mob_list) // -- Giacom
+ set name = "Gives Disease"
set category = "Fun"
- set name = "Give Disease"
set desc = "Gives a Disease to a mob."
var/datum/disease2/disease/D = new /datum/disease2/disease()
diff --git a/mods/virusology/code/antibodies.dm b/mods/virusology/code/antibodies.dm
index e48de876d8209..07e49685d5360 100644
--- a/mods/virusology/code/antibodies.dm
+++ b/mods/virusology/code/antibodies.dm
@@ -1,7 +1,32 @@
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33
var/global/list/ALL_ANTIGENS = list(
- "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
+ "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9",
+ "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9",
+ "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9",
+ "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "D8", "D9",
+ "E0", "E1", "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9",
+ "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9",
+ "G0", "G1", "G2", "G3", "G4", "G5", "G6", "G7", "G8", "G9",
+ "H0", "H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8", "H9",
+ "I0", "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9",
+ "J0", "J1", "J2", "J3", "J4", "J5", "J6", "J7", "J8", "J9",
+ "K0", "K1", "K2", "K3", "K4", "K5", "K6", "K7", "K8", "K9",
+ "L0", "L1", "L2", "L3", "L4", "L5", "L6", "L7", "L8", "L9",
+ "M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7", "M8", "M9",
+ "N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9",
+ "O0", "O1", "O2", "O3", "O4", "O5", "O6", "O7", "O8", "O9",
+ "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9",
+ "Q0", "Q1", "Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8", "Q9",
+ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", "R8", "R9",
+ "S0", "S1", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9",
+ "T0", "T1", "T2", "T3", "T4", "T5", "T6", "T7", "T8", "T9",
+ "U0", "U1", "U2", "U3", "U4", "U5", "U6", "U7", "U8", "U9",
+ "V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9",
+ "W0", "W1", "W2", "W3", "W4", "W5", "W6", "W7", "W8", "W9",
+ "X0", "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9",
+ "Y0", "Y1", "Y2", "Y3", "Y4", "Y5", "Y6", "Y7", "Y8", "Y9",
+ "Z0", "Z1", "Z2", "Z3", "Z4", "Z5", "Z6", "Z7", "Z8", "Z9"
)
/hook/startup/proc/randomise_antigens_order()
diff --git a/mods/virusology/code/antibodyanalyser.dm b/mods/virusology/code/antibodyanalyser.dm
index 90cd903e96836..a4e41fe405524 100644
--- a/mods/virusology/code/antibodyanalyser.dm
+++ b/mods/virusology/code/antibodyanalyser.dm
@@ -48,6 +48,8 @@
known_antibodies |= unknown_antibodies //Add the new antibodies to list
else
src.state("\The [src] buzzes, \"Failed to identify any new antibodies.\"")
+ if(!LAZYLEN(given_antibodies)) //return if no antibodies
+ return 0
container.dropInto(loc)
container = null
diff --git a/mods/virusology/code/curer.dm b/mods/virusology/code/curer.dm
index 522d77564e47a..6d09d0afc51c4 100644
--- a/mods/virusology/code/curer.dm
+++ b/mods/virusology/code/curer.dm
@@ -1,3 +1,4 @@
+// НЕРАБОЧИЙ АППАРАТ, ДЕЛАТЬ ЕГО СЕЙЧАС НЕ БУДУ, кто захочет, делайте
/obj/machinery/computer/curer
name = "cure research machine"
icon = 'icons/obj/machines/computer.dmi'
@@ -9,14 +10,28 @@
var/obj/item/reagent_containers/container = null
-/obj/machinery/computer/curer/use_tool(obj/item/I, mob/living/user, list/click_params)
- . = ..()
+/obj/machinery/computer/curer/use_tool(obj/I as obj, mob/user as mob)
if(istype(I,/obj/item/reagent_containers))
if(!container)
if(!user.unEquip(I, src))
return
container = I
return
+ if(istype(I,/obj/item/virusdish))
+ if(virusing)
+ to_chat(user, "The pathogen materializer is still recharging..")
+ return
+ var/obj/item/reagent_containers/glass/beaker/product = new(src.loc)
+
+ var/list/data = list("donor" = null, "blood_DNA" = null, "blood_type" = null, "trace_chem" = null, "virus2" = list(), "antibodies" = list())
+ data["virus2"] |= I:virus2
+ product.reagents.add_reagent(/datum/reagent/blood,30,data)
+
+ virusing = 1
+
+
+ state("The [src.name] Buzzes", "blue")
+ return
..()
return
@@ -29,11 +44,15 @@
var/dat
if(curing)
dat = "Antibody production in progress"
+ else if(virusing)
+ dat = "Virus production in progress"
else if(container)
- // check to see if we have the required reagents
- if(container.reagents.get_reagent_amount(/datum/reagent/blood) >= 5 && container.reagents.get_reagent_amount(/datum/reagent/radium) >= 15 && container.reagents.get_reagent_amount(/datum/reagent/spaceacillin) >= 10)
+ // see if there's any blood in the container
+ var/datum/reagent/blood/B = locate(/datum/reagent/blood) in container.reagents.reagent_list
+ if(B)
dat = "Blood sample inserted."
+ dat += "
Antibodies: [antigens2string(B.data["antibodies"])]"
dat += "
Begin antibody production"
else
dat += "
Please check container contents."
@@ -41,7 +60,7 @@
else
dat = "Please insert a container."
- show_browser(user, "[dat]", "window=computer;size=400x500")
+ show_browser(user, dat, "window=computer")
onclose(user, "computer")
return
@@ -69,22 +88,12 @@
attack_hand(user)
/obj/machinery/computer/curer/proc/createcure(obj/item/reagent_containers/container)
- var/obj/item/reagent_containers/C = container
- var/antibodies
- C.dropInto(loc)
- var/mob/living/carbon/M = new /mob/living/carbon
+ var/obj/item/reagent_containers/glass/beaker/product = new(src.loc)
+
var/datum/reagent/blood/B = locate() in container.reagents.reagent_list
- var/data
- if(B.data && B.data["virus2"])
- var/list/vlist = B.data["virus2"]
- if(LAZYLEN(vlist))
- for(var/ID in vlist)
- var/datum/disease2/disease/V = vlist[ID]
- data = V.getcopy()
-
- for(var/ID in data)
- var/datum/disease2/disease/V = data[ID]
- antibodies |= V.antigen
- C.reagents.clear_reagents()
- C.reagents.add_reagent(/datum/reagent/antibodies, 10, antibodies)
- qdel(M)
+
+ var/list/data = list()
+ data["antibodies"] = B.data["antibodies"]
+ product.reagents.add_reagent(/datum/reagent/antibodies,30,data)
+
+ state("\The [src.name] buzzes", "blue")
diff --git a/mods/virusology/code/dishincubator.dm b/mods/virusology/code/dishincubator.dm
index 48c5a4aa46da2..bcf548f318afa 100644
--- a/mods/virusology/code/dishincubator.dm
+++ b/mods/virusology/code/dishincubator.dm
@@ -95,7 +95,7 @@
var/threshold_mod = 0
- if(foodsupply)
+ if(foodsupply > 0)
if(dish.growth + 3 >= 100 && dish.growth < 100)
ping("\The [src] pings, \"Sufficient viral growth density achieved.\"")
@@ -103,7 +103,7 @@
dish.growth += 3
SSnano.update_uis(src)
- if(radiation)
+ if(radiation > 0)
threshold_mod++
if(radiation > 50 & prob(5))
dish.virus2.majormutate()
@@ -119,7 +119,7 @@
if(toxins && prob(5))
dish.virus2.infectionchance -= 1
SSnano.update_uis(src)
- if(toxins > 50)
+ if(toxins > 70)
dish.growth = 0
dish.virus2 = null
SSnano.update_uis(src)
diff --git a/mods/virusology/code/effect.dm b/mods/virusology/code/effect.dm
index 461d6584e6f32..f2e5208419ad8 100644
--- a/mods/virusology/code/effect.dm
+++ b/mods/virusology/code/effect.dm
@@ -23,7 +23,7 @@
var/chance //probality to fire every tick
var/chance_max = 50
var/multiplier = 1 //effect magnitude multiplier
- var/multiplier_max = 1
+ var/multiplier_max = 5
var/stage = 4 //minimal stage
var/badness = VIRUS_MILD //Used in random generation to limit how bad result should come out.
var/data = null //For semi-procedural effects; this should be generated in generate() if used
@@ -70,6 +70,31 @@
name = "Waiting Syndrome"
stage = 1
+/datum/disease2/effect/gibbingtons
+ name = "Gibbingtons Syndrome"
+ stage = 4
+ badness = VIRUS_EXOTIC
+
+/datum/disease2/effect/gibbingtons/activate(mob/living/carbon/human/mob, multiplier)
+ mob.adjustBruteLoss(10*multiplier)
+ var/obj/item/organ/external/O = pick(mob.organs)
+ if(prob(25))
+ to_chat(mob, "Your [O.name] feels as if it might burst!")
+ if(prob(10))
+ if(O)
+ O.droplimb(0,DROPLIMB_BLUNT)
+
+
+/datum/disease2/effect/radian
+ name = "Radian's Syndrome"
+ stage = 4
+ multiplier_max = 3
+ badness = VIRUS_COMMON
+
+/datum/disease2/effect/radian/activate(mob/living/carbon/human/mob,multiplier)
+ mob.apply_damage(2*multiplier, DAMAGE_RADIATION, armor_pen = 100)
+
+
/datum/disease2/effect/killertoxins
name = "Toxification Syndrome"
stage = 4
@@ -146,6 +171,18 @@
for (var/obj/item/organ/external/E in mob.organs)
E.min_broken_damage = initial(E.min_broken_damage)
+/datum/disease2/effect/spiderfication
+ name = "Hatching Syndrome"
+ stage = 4
+ badness = VIRUS_ENGINEERED
+ chance_max = 30
+ delay = 60 SECONDS
+
+/datum/disease2/effect/spiderfication/activate(mob/living/carbon/human/mob, multiplier)
+ var/obj/spider/spiderling/S = new /obj/spider/spiderling(get_turf(mob))
+ mob.emote("cough")
+ to_chat(mob, "You cough up the [S]!")
+
////////////////////////STAGE 3/////////////////////////////////
/datum/disease2/effect/toxins
@@ -277,6 +314,17 @@
if (prob(30))
mob.jitteriness = min(mob.jitteriness + 10, 500)
+/datum/disease2/effect/hair
+ name = "Hair Loss"
+ stage = 2
+ badness = VIRUS_COMMON
+
+/datum/disease2/effect/hair/activate(mob/living/carbon/human/mob, multiplier)
+ if(mob.species.name == SPECIES_HUMAN && !(mob.head_hair_style == "Bald") && !(mob.head_hair_style == "Balding Hair"))
+ to_chat(mob, "Your hair starts to fall out in clumps...")
+ mob.head_hair_style = "Balding Hair"
+ mob.update_hair()
+
////////////////////////STAGE 1/////////////////////////////////
/datum/disease2/effect/sneeze
@@ -339,3 +387,10 @@
delay = 25 SECONDS
/datum/disease2/effect/stomach/activate(mob/living/carbon/human/mob, multiplier)
to_chat(mob, "Your stomach feels heavy.")
+
+/datum/disease2/effect/stealth
+ name = "Silent Death Syndrome"
+ stage = 1
+ badness = VIRUS_EXOTIC
+ chance_max = 0
+ allow_multiple = 1
diff --git a/mods/virusology/code/general.dm b/mods/virusology/code/general.dm
index 18d2b5f4dd779..f3a798b420598 100644
--- a/mods/virusology/code/general.dm
+++ b/mods/virusology/code/general.dm
@@ -7,6 +7,19 @@
/datum/species/machine
virus_immune = 1
+/datum/species/vox
+ virus_immune = 1
+
+/datum/species/starlight
+ virus_immune = 1
+
+/datum/species/alium
+ virus_immune = 1
+
+/datum/species/mantid
+ virus_immune = 1
+
+
/datum/species/shapeshifter/promethean
virus_immune = 1
diff --git a/mods/virusology/code/helpers.dm b/mods/virusology/code/helpers.dm
index fd670b03c9374..74bc3efbf3293 100644
--- a/mods/virusology/code/helpers.dm
+++ b/mods/virusology/code/helpers.dm
@@ -94,7 +94,7 @@
return
if ("[disease.uniqueID]" in M.virus2)
return
- if(LAZYLEN(M.virus2) >= 3) // cap the number of viruses a mob can have to 3
+ if(LAZYLEN(M.virus2) >= 2) // cap the number of viruses a mob can have to 2
return
// if one of the antibodies in the mob's body matches one of the disease's antigens, don't infect
var/list/antibodies_in_common = M.antibodies & disease.antigen
@@ -116,8 +116,6 @@
var/mob_infection_prob = infection_chance(M, disease.spreadtype) * M.immunity_weakness()
if(forced || (prob(disease.infectionchance) && prob(mob_infection_prob)))
var/datum/disease2/disease/D = disease.getcopy()
- if(rand(1, 50) == 1)
- D.minormutate()
// log_debug("Adding virus")
M.virus2["[D.uniqueID]"] = D
SET_BIT(M.hud_updateflag, STATUS_HUD)
diff --git a/mods/virusology/code/items_devices.dm b/mods/virusology/code/items_devices.dm
index 0383a57b050d7..b572283f57b9a 100644
--- a/mods/virusology/code/items_devices.dm
+++ b/mods/virusology/code/items_devices.dm
@@ -3,7 +3,7 @@
/obj/item/device/scanner/antibody_scanner
name = "antibody scanner"
desc = "Scans living beings for antibodies in their blood."
- icon = 'icons/obj/tools/health_analyzer.dmi'
+ icon = 'mods/virusology/icons/virology.dmi'
icon_state = "health"
item_state = "analyzer"
w_class = ITEM_SIZE_SMALL
@@ -59,7 +59,7 @@
/obj/item/virusdish/use_tool(obj/item/W, mob/living/user, list/click_params)
. = ..()
- if(istype(W, /obj/item/hand_labeler) || istype(W, /obj/item/reagent_containers/syringe))
+ if(istype(W, /obj/item/hand_labeler) || istype(W, /obj/item/reagent_containers))
return
..()
if(prob(50))
@@ -88,7 +88,7 @@
/obj/item/ruinedvirusdish/use_tool(obj/item/W, mob/living/user, list/click_params)
. = ..()
- if(istype(W,/obj/item/hand_labeler) || istype(W,/obj/item/reagent_containers/syringe))
+ if(istype(W,/obj/item/hand_labeler) || istype(W,/obj/item/reagent_containers))
return ..()
if(prob(50))
diff --git a/mods/virusology/code/lar_maria.dm b/mods/virusology/code/lar_maria.dm
index f9d081f6c5b97..ec7fa057d4c63 100644
--- a/mods/virusology/code/lar_maria.dm
+++ b/mods/virusology/code/lar_maria.dm
@@ -46,6 +46,16 @@
to_chat(mob, "You feel uncontrollable rage filling you! You want to hurt and destroy!")
if (mob.reagents.get_reagent_amount(/datum/reagent/hyperzine) < 10)
mob.reagents.add_reagent(/datum/reagent/hyperzine, 4)
+ var/list/mobs_to_beat = list()
+ for(var/mob/living/L in range(1))
+ if (L == mob)
+ continue
+ mobs_to_beat += L
+ if (LAZYLEN(mobs_to_beat) < 1)//nobody to beat
+ return
+ var/mob/living/Target = pick(mobs_to_beat)
+ mob.a_intent = I_HURT
+ mob.attack_hand(Target)
if(prob(50) && mob.check_has_mouth())//go crazy and bite someone
var/list/mouth_status = mob.can_eat_status()
if (mouth_status[1] == 1)//if no mouth HUMAN_EATING_NBP_MOUTH
@@ -55,13 +65,13 @@
to_chat(mob, "You angrily chew \the [mouth_status[2]] covering your mouth!")
return
var/list/mobs_to_bite = list()
- for (var/mob/living/carbon/human/L in range(1))
+ for (var/mob/living/carbon/L in range(1))
if (L == mob)
continue
mobs_to_bite += L
if (LAZYLEN(mobs_to_bite) < 1)//nobody to bite
return
- var/mob/living/carbon/human/Target = pick(mobs_to_bite)
+ var/mob/living/Target = pick(mobs_to_bite)
mob.visible_message("[mob] violently bites [Target]!")
Target.adjustBruteLoss(5)
if (prob(50))
diff --git a/mods/virusology/code/pre_made_viruses.dm b/mods/virusology/code/pre_made_viruses.dm
index 3a38498e293d6..0ce45ba7c9d95 100644
--- a/mods/virusology/code/pre_made_viruses.dm
+++ b/mods/virusology/code/pre_made_viruses.dm
@@ -50,6 +50,12 @@
E3.chance = 2
effects += E3
E3.multiplier = rand(1,E3.multiplier_max)
+ var/datum/disease2/effect/spiderfication/E4 = new()
+ E4.stage = 4
+ E4.chance = 2
+ effects += E4
+ E4.multiplier = rand(1,E4.multiplier_max)
+
/mob/living/simple_animal/hostile/giant_spider
@@ -100,11 +106,16 @@
E1.multiplier = rand(1,E1.multiplier_max)
var/datum/disease2/effect/hungry/E2 = new()
E2.stage = 2
- E1.chance = 2
+ E2.chance = 2
effects += E2
E2.multiplier = rand(1,E2.multiplier_max)
var/datum/disease2/effect/mutation/E3 = new()
E3.stage = 3
- E1.chance = 2
+ E3.chance = 2
effects += E3
E3.multiplier = rand(1,E3.multiplier_max)
+ var/datum/disease2/effect/gibbingtons/E4 = new()
+ E4.stage = 4
+ E4.chance = 2
+ effects += E4
+ E4.multiplier = rand(1,E4.multiplier_max)
diff --git a/mods/virusology/icons/virology.dmi b/mods/virusology/icons/virology.dmi
index 93369d83f42a5..5a2abb2120850 100644
Binary files a/mods/virusology/icons/virology.dmi and b/mods/virusology/icons/virology.dmi differ