diff --git a/.travis.yml b/.travis.yml
index 1ee02d4bbee..e25b3495f45 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -18,8 +18,8 @@ addons:
env:
global:
- - BYOND_MAJOR="511"
- - BYOND_MINOR="1385"
+ - BYOND_MAJOR="512"
+ - BYOND_MINOR="1454"
- BYOND_MACRO_COUNT=4
matrix:
- DM_MAPFILE="cyberiad"
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 766203f5330..a2ea8d3a23a 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -220,6 +220,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
cost = 5
job = list("Chief Medical Officer", "Medical Doctor", "Geneticist", "Psychiatrist", "Chemist", "Paramedic", "Coroner", "Virologist")
+//Virology
+
+/datum/uplink_item/jobspecific/viral_injector
+ name = "Viral Injector"
+ desc = "A modified hypospray disguised as a functional pipette. The pipette can infect victims with viruses upon injection."
+ reference = "VI"
+ item = /obj/item/reagent_containers/dropper/precision/viral_injector
+ cost = 3
+ job = list("Virologist")
+
/datum/uplink_item/jobspecific/cat_grenade
name = "Feral Cat Delivery Grenade"
desc = "The feral cat delivery grenade contains 8 dehydrated feral cats in a similar manner to dehydrated monkeys, which, upon detonation, will be rehydrated by a small reservoir of water contained within the grenade. These cats will then attack anything in sight."
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 2d395da0dd0..3cabbac3e75 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -361,7 +361,7 @@
dat+= "
Suit storage unit: Maintenance panel"
dat+= "Maintenance panel controls
"
dat+= "The panel is ridden with controls, button and meters, labeled in strange signs and symbols that
you cannot understand. Probably the manufactoring world's language.
Among other things, a few controls catch your eye.
"
- dat+= text("A small dial with a arrow embroidered on it. It's pointing towards a gauge that reads [].
Turn towards []
",(uv_super ? "15nm" : "185nm"),(uv_super ? "185nm" : "15nm") )
+ dat+= text("A small dial with an arrow embroidered on it. It's pointing towards a gauge that reads [].
Turn towards []
",(uv_super ? "15nm" : "185nm"),(uv_super ? "185nm" : "15nm") )
dat+= text("A thick old-style button, with 2 grimy LED lights next to it. The [] LED is on.
Press button",(safeties ? "GREEN" : "RED"))
dat+= "
Close panel"
else if(uv) //The thing is running its cauterisation cycle. You have to wait.
diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm
index 6ca2c4a1260..ebe2ac18324 100644
--- a/code/modules/reagents/chemistry/reagents/medicine.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine.dm
@@ -551,10 +551,10 @@
update_flags |= M.AdjustEyeBlurry(-1, FALSE)
update_flags |= M.AdjustEarDamage(-1, FALSE)
if(prob(50))
- update_flags |= M.CureNearsighted(FALSE)
+ update_flags |= M.CureNearsighted()
if(prob(30))
- update_flags |= M.CureBlind(FALSE)
- update_flags |= M.SetEyeBlind(0, FALSE)
+ update_flags |= M.CureBlind()
+ update_flags |= M.SetEyeBlind(0)
if(M.ear_damage <= 25)
if(prob(30))
M.SetEarDeaf(0)
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 6198313bf88..19fb197c077 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -108,4 +108,37 @@
icon_state = "pipette"
amount_per_transfer_from_this = 1
possible_transfer_amounts = list(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1)
- volume = 1
\ No newline at end of file
+ volume = 1
+
+//Syndicate item. Virus transmitting mini hypospray
+/obj/item/reagent_containers/dropper/precision/viral_injector
+
+/obj/item/reagent_containers/dropper/precision/viral_injector/attack(mob/living/M, mob/living/user, def_zone)
+ if(M.can_inject(user, 1))
+ to_chat(user, "You stab [M] with the [src].")
+ if(reagents.total_volume && M.reagents)
+ var/list/injected = list()
+ for(var/datum/reagent/R in reagents.reagent_list)
+ injected += R.name
+ var/datum/reagent/blood/B = R
+
+ if(istype(B) && B.data["viruses"])
+ var/virList = list()
+ for(var/dis in B.data["viruses"])
+ var/datum/disease/D = dis
+ var/virusData = D.name
+ var/english_symptoms = list()
+ var/datum/disease/advance/A = D
+ if(A)
+ for(var/datum/symptom/S in A.symptoms)
+ english_symptoms += S.name
+ virusData += " ([english_list(english_symptoms)])"
+ virList += virusData
+ var/str = english_list(virList)
+ add_attack_logs(user, M, "Infected with [str].")
+
+ reagents.reaction(M, INGEST, reagents.total_volume)
+ reagents.trans_to(M, 1)
+
+ var/contained = english_list(injected)
+ add_attack_logs(user, M, "Injected with [src] containing ([contained])")
diff --git a/html/changelogs/AutoChangeLog-pr-9887.yml b/html/changelogs/AutoChangeLog-pr-9887.yml
new file mode 100644
index 00000000000..de24ade3bfc
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9887.yml
@@ -0,0 +1,4 @@
+author: "Farie82"
+delete-after: True
+changes:
+ - rscadd: "Added the Viral Injector. A virologist specific traitor item that acts like a sleepy pen but can transfer viruses. It's disguised as a functional pipette."
diff --git a/html/changelogs/AutoChangeLog-pr-9923.yml b/html/changelogs/AutoChangeLog-pr-9923.yml
new file mode 100644
index 00000000000..e1454a356bd
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9923.yml
@@ -0,0 +1,4 @@
+author: "tigercat2000"
+delete-after: True
+changes:
+ - rscadd: "We're going 512 boisssssssssssssss"
diff --git a/html/changelogs/AutoChangeLog-pr-9930.yml b/html/changelogs/AutoChangeLog-pr-9930.yml
new file mode 100644
index 00000000000..59d74f4a395
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9930.yml
@@ -0,0 +1,4 @@
+author: "Purpose"
+delete-after: True
+changes:
+ - spellcheck: "Fixes grammatical error in the suit storage unit"
diff --git a/html/changelogs/AutoChangeLog-pr-9931.yml b/html/changelogs/AutoChangeLog-pr-9931.yml
new file mode 100644
index 00000000000..9fcd5b314c0
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9931.yml
@@ -0,0 +1,4 @@
+author: "Farie82"
+delete-after: True
+changes:
+ - bugfix: "Oculine now updates the blindness status correctly"
diff --git a/html/changelogs/AutoChangeLog-pr-9932.yml b/html/changelogs/AutoChangeLog-pr-9932.yml
new file mode 100644
index 00000000000..00cf01edcd9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9932.yml
@@ -0,0 +1,4 @@
+author: "Shazbot194"
+delete-after: True
+changes:
+ - bugfix: "all north facing in hand icons for flags."
diff --git a/icons/mob/inhands/flags_lefthand.dmi b/icons/mob/inhands/flags_lefthand.dmi
index c619b351106..e04ef0f52e8 100644
Binary files a/icons/mob/inhands/flags_lefthand.dmi and b/icons/mob/inhands/flags_lefthand.dmi differ
diff --git a/icons/mob/inhands/flags_righthand.dmi b/icons/mob/inhands/flags_righthand.dmi
index 84b4e2e8067..4c1619e487c 100644
Binary files a/icons/mob/inhands/flags_righthand.dmi and b/icons/mob/inhands/flags_righthand.dmi differ