diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index 75c95d0b0c..67ee71ecd8 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -35,6 +35,7 @@
throwforce = 0
throw_speed = 4
throw_range = 20
+ var/tile_clean_amount = 5
/obj/item/weapon/soap/nanotrasen
desc = "A NanoTrasen-brand bar of soap. Smells of phoron."
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 1bf562320e..6da1b23deb 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -47,7 +47,10 @@
T.clean(src, user)
else if(istype(target,/obj/structure/sink))
to_chat(user, "You wet \the [src] in the sink.")
- wet()
+ if(tile_clean_amount)
+ wet(tile_clean_amount)
+ else
+ wet(5)
else
to_chat(user, "You clean \the [target.name].")
target.clean_blood()
diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm
index 7c6b2b507e..3b3767077a 100644
--- a/code/modules/hydroponics/seed_datums.dm
+++ b/code/modules/hydroponics/seed_datums.dm
@@ -547,6 +547,7 @@
name = "sunflowers"
seed_name = "sunflower"
display_name = "sunflowers"
+ mutants = list("solarflower")
/datum/seed/flower/sunflower/New()
..()
@@ -558,10 +559,27 @@
set_trait(TRAIT_WATER_CONSUMPTION, 6)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.15)
+/datum/seed/flower/sunflower/solarflower
+ name = "solarflower"
+ seed_name = "solarflower"
+ display_name = "solarflowers"
+ mutants = null
+
+/datum/seed/flower/sunflower/solarflower/New()
+ ..()
+ set_trait(TRAIT_PRODUCT_COLOUR,"#4466b3")
+ set_trait(TRAIT_BIOLUM,1)
+ set_trait(TRAIT_BIOLUM_COLOUR,"#4e74cc")
+ set_trait(TRAIT_POTENCY,25)
+ set_trait(TRAIT_MATURATION,10)
+ set_trait(TRAIT_YIELD,1)
+ set_trait(TRAIT_SPREAD,1)
+
/datum/seed/flower/lavender
name = "lavender"
seed_name = "lavender"
display_name = "lavender"
+ mutants = list("milkdew")
chems = list("nutriment" = list(1,20), "bicaridine" = list(1,10))
/datum/seed/flower/lavender/New()
@@ -576,6 +594,34 @@
set_trait(TRAIT_IDEAL_LIGHT, 7)
set_trait(TRAIT_NUTRIENT_CONSUMPTION, 0.05)
set_trait(TRAIT_WATER_CONSUMPTION, 0.5)
+
+/datum/seed/flower/lavender/milkdew
+ name = "milkdew"
+ seed_name = "milk dew"
+ display_name = "milk dew"
+ chems = list("nutriment" = list(1,10), "milk" = list(4,5))
+ mutants = list("sweetbreeze")
+
+/datum/seed/flower/lavender/milkdew/New()
+ ..()
+ set_trait(TRAIT_PRODUCT_COLOUR,"#DFDFDF")
+ set_trait(TRAIT_POTENCY,5)
+ set_trait(TRAIT_YIELD,3)
+
+/datum/seed/flower/lavender/sweetbreeze
+ name = "sweetbreeze"
+ seed_name = "sweet breeze"
+ display_name = "sweet breeze"
+ chems = list("nutriment" = list(1,10), "serazine" = list(1,10))
+ mutants = null
+
+/datum/seed/flower/lavender/sweetbreeze/New()
+ ..()
+ set_trait(TRAIT_PRODUCT_COLOUR,"#df9898")
+ set_trait(TRAIT_POTENCY,10)
+ set_trait(TRAIT_MATURATION,20)
+ set_trait(TRAIT_PRODUCTION,7)
+ set_trait(TRAIT_YIELD,3)
//Grapes/varieties
/datum/seed/grapes
@@ -699,6 +745,7 @@
name = "potato"
seed_name = "potato"
display_name = "potatoes"
+ mutants = list("voltato")
chems = list("nutriment" = list(1,10), "potatojuice" = list(10,10))
kitchen_tag = "potato"
@@ -713,6 +760,21 @@
set_trait(TRAIT_PRODUCT_COLOUR,"#D4CAB4")
set_trait(TRAIT_PLANT_ICON,"bush2")
set_trait(TRAIT_WATER_CONSUMPTION, 6)
+
+/datum/seed/potato/voltato
+ name = "voltato"
+ seed_name = "voltato"
+ display_name = "voltatos"
+ chems = list("nutriment" = list(1,10), "shockchem" = list(0,10))
+ mutants = null
+
+/datum/seed/potato/voltato/New()
+ ..()
+ set_trait(TRAIT_PRODUCT_COLOUR,"#E4EC2F")
+ set_trait(TRAIT_POTENCY,30)
+ set_trait(TRAIT_MATURATION,12)
+ set_trait(TRAIT_PRODUCTION,3)
+ set_trait(TRAIT_YIELD,3)
/datum/seed/onion
name = "onion"
diff --git a/code/modules/hydroponics/seed_packets.dm b/code/modules/hydroponics/seed_packets.dm
index 80654d408b..92242bc3e6 100644
--- a/code/modules/hydroponics/seed_packets.dm
+++ b/code/modules/hydroponics/seed_packets.dm
@@ -142,6 +142,9 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
/obj/item/seeds/potatoseed
seed_type = "potato"
+
+/obj/item/seeds/voltatoseed
+ seed_type = "voltato"
/obj/item/seeds/icepepperseed
seed_type = "icechili"
@@ -196,9 +199,18 @@ GLOBAL_LIST_BOILERPLATE(all_seed_packs, /obj/item/seeds)
/obj/item/seeds/sunflowerseed
seed_type = "sunflowers"
+
+/obj/item/seeds/solarflowerseed
+ seed_type = "solarflower"
/obj/item/seeds/lavenderseed
seed_type = "lavender"
+
+/obj/item/seeds/milkdewseed
+ seed_type = "milkdew"
+
+/obj/item/seeds/sweetbreezeseed
+ seed_type = "sweetbreeze"
/obj/item/seeds/brownmold
seed_type = "mold"
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
index 135ef2ff28..78c0b64ef2 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans_vr.dm
@@ -27,6 +27,9 @@
/mob/living/carbon/human/proc/shapeshifter_select_hair,
/mob/living/carbon/human/proc/shapeshifter_select_hair_colors,
/mob/living/carbon/human/proc/shapeshifter_select_gender,
+ /mob/living/carbon/human/proc/shapeshifter_select_wings, //VOREStation Add,
+ /mob/living/carbon/human/proc/shapeshifter_select_tail, //VOREStation Add,
+ /mob/living/carbon/human/proc/shapeshifter_select_ears, //VOREStation Add,
/mob/living/carbon/human/proc/regenerate,
/mob/living/proc/set_size,
/mob/living/carbon/human/proc/succubus_drain,
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
index 8ec8dd1d35..87ca33bc2f 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
@@ -145,9 +145,9 @@
pluralcheck = " [deathtimeminutes] minutes and"
var/deathtimeseconds = round((deathtime - deathtimeminutes * 600) / 10,1)
- if (deathtime < 6000)
+ if (deathtime < 3000)
usr << "You have been dead for[pluralcheck] [deathtimeseconds] seconds."
- usr << "You must wait 10 minutes to respawn as a drone!"
+ usr << "You must wait 5 minutes to respawn as a drone!"
return
var/list/all_fabricators = list()
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
index da88e8d667..106c1351c6 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_unify.dm
@@ -52,7 +52,7 @@
//TODO: Move Advanced soap here.
/obj/item/weapon/soap/drone
name = "Advanced Soap"
- var/tile_clean_amount = 100
+ tile_clean_amount = 100
/obj/item/weapon/soap/drone/New()
..()
diff --git a/code/modules/mob/living/simple_animal/animals/synx.dm b/code/modules/mob/living/simple_animal/animals/synx.dm
index 7cc67217f9..590aa2c4fe 100644
--- a/code/modules/mob/living/simple_animal/animals/synx.dm
+++ b/code/modules/mob/living/simple_animal/animals/synx.dm
@@ -9,6 +9,8 @@
icon_living = "synx_living"
icon_dead = "synx_dead"
+ speak_chance = 10 //MAy have forgotten to readd that.
+ //Synx speech code overrides normal speech code but is still a x in 200 chance of triggereing, as all mobs do.
//VAR$ SETUP
var/realname = null
var/poison_per_bite = 5
diff --git a/code/modules/mob/living/simple_animal/animals/tarrasque.dm b/code/modules/mob/living/simple_animal/animals/tarrasque.dm
index 712a3e05e6..51be94b90c 100644
--- a/code/modules/mob/living/simple_animal/animals/tarrasque.dm
+++ b/code/modules/mob/living/simple_animal/animals/tarrasque.dm
@@ -93,9 +93,9 @@
//MRX Variation
/mob/living/simple_animal/hostile/tarrasque/mrx
- icon = 'icons/mob/animal.dmi'
- name = "X"
- desc = "He's gonna give it to you."
+ icon = 'icons/mob/64x64.dmi'
+ name = "Entity X"
+ desc = "The call of the abyss manifested. Doors have proven inefective against it."
hasdrops = 0
health = 2000
maxHealth = 2000
@@ -104,19 +104,43 @@
melee_attack_maxDelay = 1
view_range = 420
size_multiplier = 1.5
- icon_living = "faithless" //possibly gonna give him a new sprite in the future
- icon_dead = "faithless_dead"
+ icon_state = "arachnid"
+ icon_living = "arachnid"
+ icon_dead = "arachnid_dead"
tt_desc = "Unknown Specimen"
- attacktext = list("whacks","punches","smashes")
+ attacktext = list("whacks","slashes","smashes")
+ melee_damage_lower = 0 //huh not so bad
+ melee_damage_upper = 50 //oh, oh no
+ armor = list(
+ "melee" = 99,
+ "bullet" = 99,
+ "laser" = 99,
+ "energy" = 99,
+ "bomb" = 99,
+ "bio" = 100,
+ "rad" = 100)
+
+/mob/living/simple_animal/hostile/tarrasque/mrx/Life()
+ ..()
+ if(resting)
+ resting = !resting
+ if (anchored)
+ set_light(l_range = 1.5, l_power = 2, l_color = COLOR_RED)
+ for(var/obj/machinery/door/airlock/door in range(3, src))
+ door.open(1)
+ door.lock(1)
//time for special MR X kick you in the shins and stands there code
/mob/living/simple_animal/hostile/tarrasque/mrx/DoPunch(var/atom/A)
. = ..()
if(.) // If we succeeded in hitting.
+ for(var/obj/machinery/light/light in range(5, src))
+ light.flicker(10)
if(isliving(A))
var/mob/living/L = A
- L.Weaken(10)
+ L.Weaken(5)
stop_automated_movement = 1
- spawn(20)
+ anchored = 1
+ spawn(100)
stop_automated_movement = 0
-
+ anchored = 0
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index 7c7529122e..4452cc840c 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -51,6 +51,24 @@
if(W.damage <= 0)
O.wounds -= W
+/datum/reagent/alizene
+ name = "Alizene"
+ id = "alizene"
+ description = "A derivative from bicaridine enhanced by serazine to more effectively mend flesh, but is ineffective against internal hemorrhage."
+ taste_description = "bittersweet"
+ taste_mult = 3
+ reagent_state = LIQUID
+ color = "#b37979"
+ overdose = REAGENTS_OVERDOSE
+ scannable = 1
+
+/datum/reagent/alizene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ var/chem_effective = 1
+ if(alien == IS_SLIME)
+ chem_effective = 0.75
+ if(alien != IS_DIONA)
+ M.heal_organ_damage(12 * removed * chem_effective, 0)
+
/datum/reagent/kelotane
name = "Kelotane"
id = "kelotane"
@@ -107,6 +125,22 @@
M.hallucination = max(0, M.hallucination - 9 * removed * chem_effective)
M.adjustToxLoss(-4 * removed * chem_effective)
+/datum/reagent/serazine
+ name = "Serazine"
+ id = "serazine"
+ description = "A sweet tasting flower extract, it has very mild anti toxic properties and can be used to make potent drugs."
+ taste_description = "sweet nectar"
+ reagent_state = LIQUID
+ color = "#df9898"
+ scannable = 1
+
+/datum/reagent/serazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
+ var/chem_effective = 1
+ if(alien != IS_DIONA)
+ M.drowsyness = max(0, M.drowsyness - 3 * removed * chem_effective)
+ M.hallucination = max(0, M.hallucination - 6 * removed * chem_effective)
+ M.adjustToxLoss(-2 * removed * chem_effective)
+
/datum/reagent/carthatoline
name = "Carthatoline"
id = "carthatoline"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 431916dedf..70c6bf3553 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -365,6 +365,13 @@
required_reagents = list("inaprovaline" = 1, "carbon" = 1)
inhibitors = list("sugar" = 1) // Messes up with inaprovaline
result_amount = 2
+
+/datum/chemical_reaction/alizine
+ name = "Alizine"
+ id = "alizine"
+ result = "alizine"
+ required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1)
+ result_amount = 3
/datum/chemical_reaction/myelamine
name = "Myelamine"
diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi
index 08c0c12323..bc0c68131a 100644
Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ