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