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