{"action":"created","comment":{"url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/comments/45785041","id":45785041,"diff_hunk":"@@ -0,0 +1,195 @@\n+#define DEFAULT_SEED \"glowshroom\"\n+#define CREEPER_GROWTH_DISTANCE 4\n+\n+/obj/effect/plantsegment\n+\tname = \"space vines\"\n+\tdesc = \"An extremely expansionistic species of vine.\"\n+\ticon = 'icons/effects/spacevines.dmi'\n+\ticon_state = \"Light1\"\n+\tanchored = 1\n+\topacity = 0\n+\tdensity = 0\n+\tlayer = 5\n+\tpass_flags = PASSTABLE | PASSGRILLE\n+\t//flags = PROXMOVE\n+\t//mouse_opacity = 2\n+\n+\tvar/health = 10\n+\tvar/max_health = 100\n+\tvar/list/neighbors = list()\n+\tvar/turf/epicenter\n+\tvar/datum/seed/seed\n+\tvar/sampled = 0\n+\tvar/spread_chance\n+\tvar/spread_distance\n+\tvar/mature_time\n+\tvar/last_tick = 0\n+\tvar/harvest = 0\n+\tvar/age = 0\n+\tvar/limited_growth = 0\n+\tvar/plant_damage_noun = \"Thorns\"\n+\n+/obj/effect/plantsegment/creeper\n+\tlimited_growth = 1\n+/obj/effect/plantsegment/single\n+\tspread_chance = 0\n+\n+/obj/effect/plantsegment/Destroy()\n+\tif(plant_controller)\n+\t\tplant_controller.remove_plant(src)\n+\tfor(var/obj/effect/plantsegment/neighbor in range(1,src))\n+\t\tplant_controller.add_plant(neighbor)\n+\t..()\n+\n+/obj/effect/plantsegment/New(var/newloc, var/datum/seed/newseed, var/turf/newepicenter, var/start_fully_mature = 0)\n+\t..()\n+\n+\tif(!newepicenter)\n+\t\tepicenter = get_turf(src)\n+\telse\n+\t\tepicenter = newepicenter\n+\n+\tif(!plant_controller)\n+\t\tsleep(250) // ugly hack, should mean roundstart plants are fine.\n+\tif(!plant_controller)\n+\t\tworld << \"<span class='danger'>Plant controller does not exist and [src] requires it. Aborting.</span>\" //This probably shouldn't be a world <<\n+\t\tqdel(src)\n+\t\treturn\n+\n+\tif(!istype(newseed))\n+\t\tnewseed = plant_controller.seeds[DEFAULT_SEED]\n+\tseed = newseed\n+\tif(!seed)\n+\t\tqdel(src)\n+\t\treturn\n+\n+\tname = \"[seed.seed_name] vines\"\n+\tmax_health = round(seed.endurance/2)\n+\tif(seed.spread == 1)\n+\t\tlimited_growth = 1\n+\tmature_time = Ceiling(seed.maturation/2)\n+\tspread_chance = round(40 + triangular_seq(seed.potency*2, 30)) // Diminishing returns formula, see maths.dm\n+\tspread_distance = limited_growth ? (CREEPER_GROWTH_DISTANCE) : round(spread_chance*0.2)\n+\tupdate_icon()\n+\n+\tif(start_fully_mature)\n+\t\thealth = max_health\n+\t\tmature_time = 0\n+\n+\tspawn(1) // Plants will sometimes be spawned in the turf adjacent to the one they need to end up in, for the sake of correct dir/etc being set.\n+\t\tplant_controller.add_plant(src)\n+\t\t// Some plants eat through plating.\n+\t\tif(seed.chems && !isnull(seed.chems[\"pacid\"]))\n+\t\t\tvar/turf/T = get_turf(src)\n+\t\t\tT.ex_act(prob(80) ? 3 : 2)\n+\n+/obj/effect/plantsegment/examine(mob/user)\n+\t..()\n+\tif(!seed) return\n+\tvar/traits = \"\"\n+\tif(seed.stinging) traits += \"<span class='alert'>It's covered in tiny stingers.</span> \"\n+\tif(seed.thorny) traits += \"<span class='alert'>It's covered in sharp thorns.</span> \"\n+\tif(seed.ligneous) traits += \"It's a tough and hard vine that can't be easily cut. \"\n+\tif(seed.carnivorous == 2) traits += \"It's quivering viciously. \"\n+\tif(seed.hematophage) traits += \"It's roots are blood red... \"\n+\tif(traits) user << traits\n+\n+/obj/effect/plantsegment/update_icon()\n+\tvar/arbitrary_measurement_of_how_lush_I_am_right_now // a post-mortem dedication to Comic\n+\tif(harvest)\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now = 3\n+\telse if (age > mature_time)\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now = 2\n+\telse\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now = 1\n+\n+\tvar/at_fringe = get_dist(src,epicenter)\n+\tif(at_fringe >= round(spread_distance*0.9))\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now--\n+\tif(at_fringe >= round(spread_distance*0.7))\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now--\n+\tif(health < max_health)\n+\t\tarbitrary_measurement_of_how_lush_I_am_right_now -= round(-(health - max_health)/(max_health/3))\n+\n+\tarbitrary_measurement_of_how_lush_I_am_right_now = max(1, arbitrary_measurement_of_how_lush_I_am_right_now)\n+\n+\tswitch(arbitrary_measurement_of_how_lush_I_am_right_now)\n+\t\tif(1)\n+\t\t\ticon_state = \"Light[rand(1,3)]\"\n+\t\t\tsrc.opacity = 0\n+\t\tif(2)\n+\t\t\ticon_state = \"Med[rand(1,3)]\"\n+\t\t\tsrc.opacity = 0\n+\t\tif(3)\n+\t\t\ticon_state = \"Hvy[rand(1,3)]\"\n+\t\t\tif(!limited_growth) src.opacity = 1\n+\n+\t// Apply colour and light from seed datum.\n+\tif(seed.biolum && seed.biolum_colour)\n+\t\tset_light(1+round(seed.potency/20), l_color = seed.biolum_colour)\n+\t\treturn\n+\telse\n+\t\tset_light(0)\n+\n+/obj/effect/plantsegment/attackby(var/obj/item/weapon/W, var/mob/user)\n+\n+\tif(user.a_intent == I_HELP && (istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/scalpel)))\n+\t\tif(sampled)\n+\t\t\tuser << \"<span class='warning'>\\The [src] has already been sampled recently.</span>\"\n+\t\t\treturn\n+\t\tif(!is_mature())\n+\t\t\tuser << \"<span class='warning'>\\The [src] is not mature enough to yield a sample yet.</span>\"\n+\t\t\treturn\n+\t\tif(!seed)\n+\t\t\tuser << \"<span class='warning'>There is nothing to take a sample from.</span>\"\n+\t\t\treturn\n+\t\tif(sampled)\n+\t\t\tuser << \"<span class='danger'>You cannot take another sample from \\the [src].</span>\"\n+\t\t\treturn\n+\t\tif(prob(70))\n+\t\t\tsampled = 1\n+\t\tseed.spawn_seed_packet(get_turf(user))\n+\t\thealth -= (rand(3,5)*5)\n+\t\tsampled = 1\n+\t\tplant_controller.add_plant(src)\n+\telse\n+\t\t..()\n+\t\ttake_damage(W)\n+\n+/obj/effect/plantsegment/proc/take_damage(var/obj/item/weapon/W)\n+\tif(!W.force) return 0\n+\tvar/dmg = W.force\n+\tif(W.is_hot() || (W.is_sharp() && !seed.ligneous))\n+\t\tdmg = dmg*4\n+\thealth -= dmg\n+\tcheck_health()\n+\tupdate_icon()\n+\n+/obj/effect/plantsegment/ex_act(severity)\n+\tswitch(severity)\n+\t\tif(1.0)\n+\t\t\tdie_off()\n+\t\t\treturn\n+\t\tif(2.0)\n+\t\t\tif (prob(50))\n+\t\t\t\tdie_off()\n+\t\t\t\treturn\n+\t\tif(3.0)\n+\t\t\tif (prob(5))\n+\t\t\t\tdie_off()\n+\t\t\t\treturn\n+\t\telse\n+\treturn","path":"code/modules/hydroponics/spreading/spreading.dm","position":182,"original_position":182,"commit_id":"6e1cf4fd3cb1df61f3c2d0382dae5f6d20f64f49","original_commit_id":"6e1cf4fd3cb1df61f3c2d0382dae5f6d20f64f49","user":{"login":"PJB3005","id":8107459,"avatar_url":"https://avatars.githubusercontent.com/u/8107459?v=3","gravatar_id":"","url":"https://api.github.com/users/PJB3005","html_url":"https://github.com/PJB3005","followers_url":"https://api.github.com/users/PJB3005/followers","following_url":"https://api.github.com/users/PJB3005/following{/other_user}","gists_url":"https://api.github.com/users/PJB3005/gists{/gist_id}","starred_url":"https://api.github.com/users/PJB3005/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PJB3005/subscriptions","organizations_url":"https://api.github.com/users/PJB3005/orgs","repos_url":"https://api.github.com/users/PJB3005/repos","events_url":"https://api.github.com/users/PJB3005/events{/privacy}","received_events_url":"https://api.github.com/users/PJB3005/received_events","type":"User","site_admin":false},"body":"You know what I have to say about this.","created_at":"2015-11-24T19:48:29Z","updated_at":"2015-11-24T19:48:29Z","html_url":"https://github.com/d3athrow/vgstation13/pull/6734#discussion_r45785041","pull_request_url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734","_links":{"self":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/comments/45785041"},"html":{"href":"https://github.com/d3athrow/vgstation13/pull/6734#discussion_r45785041"},"pull_request":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734"}}},"pull_request":{"url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734","id":51590900,"html_url":"https://github.com/d3athrow/vgstation13/pull/6734","diff_url":"https://github.com/d3athrow/vgstation13/pull/6734.diff","patch_url":"https://github.com/d3athrow/vgstation13/pull/6734.patch","issue_url":"https://api.github.com/repos/d3athrow/vgstation13/issues/6734","number":6734,"state":"open","locked":false,"title":"[WIP] botany3","user":{"login":"9600bauds","id":6526157,"avatar_url":"https://avatars.githubusercontent.com/u/6526157?v=3","gravatar_id":"","url":"https://api.github.com/users/9600bauds","html_url":"https://github.com/9600bauds","followers_url":"https://api.github.com/users/9600bauds/followers","following_url":"https://api.github.com/users/9600bauds/following{/other_user}","gists_url":"https://api.github.com/users/9600bauds/gists{/gist_id}","starred_url":"https://api.github.com/users/9600bauds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/9600bauds/subscriptions","organizations_url":"https://api.github.com/users/9600bauds/orgs","repos_url":"https://api.github.com/users/9600bauds/repos","events_url":"https://api.github.com/users/9600bauds/events{/privacy}","received_events_url":"https://api.github.com/users/9600bauds/received_events","type":"User","site_admin":false},"body":"Botany3, Return of Botany1\r\nLike eight months late\r\n\r\n### Overhaul to the Mutation System\r\n - Mutations will no longer give random stat penalties: All stat changes are now strictly positive. The tedium of mutating has been replaced with other milder challenges, in an effort to hopefully create a much better game experience.\r\n - The amount of mutagen that you use per dose AND your plant's stats now have a huge impact on the resulting mutation:\r\n  - Mutations are now sub-divided into categories, roughly: bad, good, weird, and dangerous. Which category of mutation you'll get depends on the mutagen dosage: If you only use small amounts at a time, you'll mostly only get good things, but if you use more than 10u at a time, you can get potentially dangerous effects!\r\n  - However, once you've improved your plant enough, you may start to experience diminishing returns on your good mutations: if you want to get your plant over 50-75ish potency, you'll find that 10 mutagen is no longer doing the trick, and you may want to use more. This way, mutations turn from this boring and tedious \"just roll the dice over and over\" into what I hope will be a more fun approach: \"how fast and how much you can improve your plant depends on how much risk you want to face\"\r\n  - For stat-increasing positive mutations, the amount of stat increase will depend on how much mutagen you use. For example, using 10u mutagen will give you twice as much potency increase than using 5u.\r\n  - Because of all the above, mutations are 100% guaranteed when adding mutagen (as opposed to the current system where even getting a mutation at all is a diceroll), just that small doses will give weak effects.\r\n - Some reagents can now be used to mutate your plant to alter a few specific stats. See \"Changes to Hydroponics in General\" below.\r\n - Baby plants (<60ish seconds of life) react differently to mutagen: 30% chance to mutate species if capable of doing so, otherwise, get a guaranteed bad mutation. **Adult plants will no longer randomly mutate species.**\r\n  - Why To This Change: Discourages you from just plant-b-gone and replanting if you get an undesired mutation, since you won't be able to mutate for a little while if you do that (or encourages you to frankenstein the undesirable mutation out through xenobotany!). Allows you to stat-mutate your vanilla grown plants without them constantly mutating species. Makes logical sense since the plant magically becomes a baby plant again when it mutates into a new species (¿?¿?)\r\n - Added a few new mutations, some of them shamelessly copied from @Zuhayr's https://github.com/Baystation12/Baystation12/pull/8038:\r\n  - Thorny: Plant **and fruit** both become covered in sharp thorns. Plants can't be harvested without gloves, fruits can't be picked up without gloves. Gives the plant some force when used as a weapon, but nothing really worthwhile. Acts like a glass shard when stepped on without shoes.\r\n  - Stinging: Plant **and fruit** both gain a cover of chemical stingers. When the plant/fruit comes in contact with unprotected skin (touched without gloves, stepped on without shoes, used to attack someone on an unprotected area, **NOT** when thrown), it will inject reagents into the body.\r\n  - Juicy/Slippery: At strength 1, splatters like a tomato when thrown. At strength 2, causes you to slip when walked over.\r\n  - Ligneous: Can't be harvested without using a sharp instrument. Has Kudzu uses.\r\n  - Hematophage: Plant can only gain nutriment from blood.\r\n  - Bluespacetomato's teleport on hit can now rarely be attained through random mutations, for any plant.\r\n  - You can examine fruits to see if they have some of these traits, such as stinging or slippery.\r\n  - Fixed/added the \"change room temperature\" mutation, which, apparently, had never worked or done anything at all, for as long as I know (it likely never did anything, ever).\r\n  - Some effects that could previously only be gotten through exotic seeds, such as plants with non-matching icons (apple tree growing bananas), exotic chemicals, and exuding gas.\r\n - Plants that gain bioluminescence through mutations will now have a completely random color.\r\n - Highly carnivorous plants now do fun things with mice.\r\n\r\n### Changes to Hydroponics in General\r\n - Changes to the way plants react to some reagents:\r\n  - Robust Harvest no longer improves your effective yield, that function is now covered by the Floral Somatoray. (I considered this use to be very cheesy and a bit shallow since it was trivial to get the chemical and had no downsides, it was also allowing people to get infinite Diona seeds without ordering exotic seeds crates.) Instead: Robust Harvest will gradually improve your plant's potency (up to a soft cap), with the downsides of increasing pests+weeds (it's making your weeds more robust too!) and rarely decreasing your plant's yield (a downside that can't easily be rid of, since it's FREE POTENCY)\r\n  - Left 4 Zed makes your plant more susceptible to future doses of mutagen, making it so that you require less mutagen for the same results.\r\n  - Diethylamine used to be practically useless before, now it will also speed up your plant's growth (both to maturity and make it fruit faster), gradually increase it's lifespan and endurance, and also remove weeds.\r\n  - Clonexadone (not cryox) now greatly heals your plant. However, it will also cause your plant to rapidly age backwards! Too much clonexadone, and your plant will revert into a seed packet. I admit, I had a lot of fun with this one.\r\n - Plant Analyzers can now print plant reports on paper. Shamelessly stolen from https://github.com/Baystation12/Baystation12/pull/8038. Using a Plant Analyzer on yourself will also show you the last plant scan on memory.\r\n - Floral Somatorays are now a lot less shit.\r\n  - Renamed \"increase yield\" mode to \"improve harvest\", so people stop thinking it increases the yield stat. Changed yield_mod (the thing \"improve harvest\" actually affects) to multiply effective yield rather than add to it. You will now get a message when trying to increase yield_mod past the cap. Effectively: Fire a few \"improve harvest\" Somatoray shots to your plant until you get a \"it's lush\" message, and it's next harvest will be doubled in size.\r\n  - Somatoray's \"induce mutations\" mode now works consistently, rather than than fucking 10% of the time. When mutating your plant with the \"induce mutations\" mode, you have a chance to get an additional mutation that permanently increases yield. You can change how strong your mutation will be, emulating the usage of from 1 to 15 mutagen. Can be emagged or soldered to go up to 25 mutagen.\r\n - You can how use any object in harm intent to attack plants in trays, this is so you don't need plant-b-gone to kill a spreading plant in a tray. Plant-b-gone is still faster, though.\r\n - Upgrades to hydroponics trays:\r\n  - Trays will now change name depending on what's growing on them.\r\n  - You can now set a label for your tray, like using a handheld labeler.\r\n  - You will now be warned when your plant is dying from old age, rather than using the same message of dying from other causes.\r\n  - The tray's warning light will also tell you if your plant is suffering from improper lighting, improper gas environment, improper room pressure, or improper temperature.\r\n - Improper conditions (all of those above *plus* lack of water/nutriment) will now slightly slow down your plant's growth, since the health penalty is rather shittily implemented and a slap on the wrist. Take care of your plants!\r\n - Toxicity now works: This mechanic was incredibly half-assed and half-dummied out in the code, I believe at first the value that stores it was supposed to go from 1-100 and was later capped to 1-10. As a result it basically didn't fucking work. This won't really mean much in terms of gameplay, just that some obviously harmful chemicals like polyacid (which should never be in the tray anyways) will require you to dilute the tray with water or they'll keep damaging the plant.\r\n  - TL;DR: *If you dump fucking chlorine in your tray for whatever god-forsaken reason give it water or anti-toxin you asshat* otherwise this really doesn't matter much\r\n - Pests now have a worthwhile chance to appear, previously the rate at which they increased was EXTREMELY slow. I bet a lot of you people have never seen the pest spray sprite before, and I don't blame you.\r\n - Bees now won't increase your plant's age when making it grow faster.\r\n  - Bees will now also slow down your plant's aging as long as it's ripe for harvest, effectively making it last longer.\r\n - Ported https://github.com/Baystation12/Baystation12/pull/11420: Some roundstart plants will now have slight variations in their ideal lighting, ideal heat, and light/heat tolerance. This makes it less tedious for the wrong reasons to find genes through xenobotany without mandating exotic seeds, as well as add a little harmless flavor.\r\n - Plants that don't require water or nutriment will now not *consume* water or nutriment, as opposed to: still consume it, still show nutriment and water warnings, just not take damage from lack thereof.\r\n - Blood Tomatoes now have a lot more blood in them, though they have slightly less yield.\r\n - Kudzu plant now produces more anti-toxin, on the premise that, come on, it's goddamn Kudzu and it's goddamn anti-tox.\r\n - Farmbots will now still fertilize and de-weed empty trays by default. Can be changed in their control panel.\r\n - Tweaks to Exotic Seeds:\r\n  - Will now have more reasonable amounts of nutriment, though still more than common plants.\r\n  - Toned their nutrient consumption a little, as it was usually extremely high compared to common plants.\r\n  - Variance in ideal temperature will now always be tame enough to only require adjusting the room's thermostat. The intended way to handle exotic temperature requirements was to bring a canister of gas to said temperature and use a closed system of atmos port connectors to feed the plant, which MAY or may not have worked in Bay where there's an actual research botanist title with an *actual research botanist office that has port connectors and access to freezers and heaters and whatnot.* However, this is as far from reality as it gets in our server, where a botanist has none of those things at their disposal. The only things you can feasibly do are give the plant a new environment gene or set the thermostat, and I don't want to force the former.\r\n  - Will no longer have atrociously high production times.\r\n  - Now have more varied lifetime spans, rather than having only ONE harvest cycle plus change.\r\n  - Can have all of the new mutations.\r\n  - Can have Potassium as exotic chemical once again. Can now have Leporazine. Can also have Neurotoxin, beacuse you already have cyanide, because you already have chloral, because you already have zombiepowder, and because I'm a huge fucker.\r\n - ~~Honey heals~~--deity beat me to it\r\n - ~~Bees cause your plant to~~--deity beat me to it\r\n - ~~Bees are good for~~--deity and I had pretty much exactly the same ideas for beekeeping, it's uncanny\r\n\r\n### Changes to Kudzu\r\n - Improved Kudzu visuals, it now does a little thing when spreading and will twitch somewhat when growing or hurt. (this is actually a bug but it looks nice so now it's a feature)\r\n - Changes how spreading plants work when planted:\r\n  - Will no longer just make the seed disappear and create new vines on the spot, leaving behind an empty tray. Instead, you can now cultivate spreading plants just as normal, and they will only kudzu-ify when mature and when the hydroponics tray has less than 80% water and nutrient. This means that you can \"tame\" spreading plants by keeping them well fed!\r\n  - As well, this change makes it so that you can't just run around the station dragging a tray and plant 500 vines everywhere (of which I am guilty as antag).\r\n - Kudzu now has a limited growth radius from the tile where it originated, previously it was supposed to have this but it was broken. The radius is based on the plant's potency.\r\n - Space vines now have a proper health variable. Vines will properly be damaged when attacked, will lose health in improper environments, and will regen health slowly. You can now attack Space vines with any item, with sharp and hot items being ideal (previously only a short list of TERRIBLY hardcoded shit would work)\r\n - Re-added improper environments: Kudzu will now stop spreading and slowly die when subjected to freezing/searing temperatures, or extremely high pressure. Yes, you can kill it with fire.\r\n  - However... Kudzu can still grow at 0KPA and does not need light. Otherwise, killing kudzu would be extremely easy, just vent the room or turn off the lights.\r\n - Scythes now apply a 1s cooldown when used, same cooldown as attacking something with a weapon. This is because scythes were honestly, horrendously obscene if you just clickspammed. However, scythes are now work 100% of the time rather than 80%.\r\n - Added a Heavy-Duty Pneumatic Scythe to Robotics. Can be attached to Ripleys, guaranteed to work on any type of kudzu from within the impervious shell of a giant robot.\r\n - Plant-b-Gone now affects kudzu on a 3x3 square centered around itself, however, the kudzu's toxins resistance now affects the damage that it will take. If a certain strand of kudzu was mutated or engineered to be toxin-resistant, Plant-b-Gone will quickly prove ineffective.\r\n  - Polyacid in a spray bottle now insta-melts Kudzu like Plant-b-Gone used to, no matter the strand. This really isn't as good as it sounds.\r\n - Kudzu will act differently if it has some mutations:\r\n  - Heavily Carnivorous (strength 2) kudzu will occasionally grab you from one tile away, unless you're wearing magboots! You can still break free before anything bad happens, provided you have something sharp in hand.\r\n  - Thorny Kudzu will cause brute damage *per exposed limb* if you walk through it unprotected. I admit, this will mince you alive if you try to walk through it naked, but then again, you should never be inside kudzu anyways.\r\n  - Stinging Kudzu will sting you on touch as well, transferring reagents to your bloodstream.\r\n  - Hematophage Kudzu sucks your blood when you're tangled up. ...It's really extremely tame compared to all the other things kudzu can do to you while tangled up.\r\n  - Ligneous Kudzu is resistant to sharp things! Don't expect to cut it down with a hatchet.\r\n - Goats will still munch on all strands of kudzu just the same.\r\n - Kudzu that is not at full health will not apply special effects, such as stinging, thorny, grab you from far away, etc.\r\n - Fixed the \"creeping packet\" mutation (Spreading strength 1), it will create limited growth Kudzu that can't grow more than 4 tiles in every direction and won't grab you. You're still valid for releasing it.\r\n - Kudzu that has polyacid as part of it's chems melts away the station's plating as it grows! This really isn't as good as it sounds, because firelocks will come down and stop it's spread.\r\n - The speed at which Kudzu will spread depends on it's stats, namely, Maturation and Potency.\r\n - If you don't have anything to cut down the kudzu with, now you can break free of it's grab by using the Resist verb. Previously you could only break free by using your empty hand on the vines, which was terribly unintuitive.\r\n - Spreading Kudzu vines now fruit more often and use different sprites when harvestable.\r\n\r\n### Other\r\n - spellchecking  :^)\r\n - Hydroponics vending machines now start with 2 droppers, for precise mutagen/fertilizer dosage. I sincerely doubt this will be a balance issue given that the same machine dispenses syringes.\r\n - [Eat shit buddy] (http://i.imgur.com/8EhiBi3.png)\r\n - Condensed Capsaicin (pepperspray) no longer requires fucking Plasma, now requires capsaicin and ethanol.\r\n - The All-in-One grinder now produces more ketchup and soymilk per each tomato and soybeans, respectively. I felt that the return on these two was extremely low, considering it'd take you dozens of tomatoes to half-fill a single ketchup bottle.\r\n - IV Drips now give their increased transfer speed to any container that has only blood inside it, rather than have it only work with specifically IV bags. In my mind this was supposed to go with blood tomatoes but I kinda slipped it inside this non-atomic PR like a PDA in bread \r\n\r\n### Technicalities\r\n - Someone is gonna yell at me over this\r\n - Fertilizers are no longer childs of \"toxin\", meaning they are no longer extremely long-acting, individually stackable poisons. I believe the only reason people didn't abuse this is because noone even realized it existed, it's so fucking dumb.\r\n - Fixed weedkiller reagents CAUSING weeds.\r\n - Fixed being able to generate infinite metal by... screwdivering open and then... crowbarring soil. I mean, damn.\r\n - Generalized a lot of shit that could really use some generalizing\r\n  - Made a Slip() proc, to prevent shitcode and copypasting\r\n  - Some checks now use proper procs, such as check_body_part_coverage\r\n - Crudely copied chemistry-reagents.dm to make a new system for processing reagents in plant trays, since no matter how shit the system I made is, it can't be worse than the array spaghetti we had before.\r\n - Unfucked the light readings on trays and light checks for plants, which were seriously fucked for reasons NOBODY could explain\r\n - Makes polyacid use qdel (I can't fathom how it wasn't using it before)\r\n - Horribly, horribly butchered and cannibalized the seed controller from https://github.com/Baystation12/Baystation12/pull/8038. Hopefully should make kudzu process smoother.\r\n\r\n### To Do / Known Issues\r\n- [x] Get yelled at for whatever dumb shit I fucked up\r\n- [ ] Write non-exhaustive changelog 4theplayers\r\n- [ ] Fix the confrictu\r\n- [x] Write this\r\n- [ ] Remove world << debug messages, after testing some more\r\n- [ ] Tray built-in label interaction is very, very slightly buggy when used in conjunction with a handheld labeler - but who will even notice? If you can set labels directly, you won't be using the labeler on top of it anyways\r\n- [ ] Plant display names are inconsistent on whether they're singular or plural, which causes a whole load of autism-triggering messages.\r\n- [ ] Make it possible to extract and transfer the new traits using xenobotany\r\n- [ ] Update the seed extractor to work with the new mutations, add a \"special notes\" tab to display special traits of the seed.\r\n- [ ] Plant analyzer generating like three fucking different messages when scanning something, why?\r\n- [ ] Refactor deathnettles\r\n\r\n### Maybe\r\nThings that I was planning on at one point, we'll see if these are actually good ideas or not before I work on them.\r\n - High potency bananas leave behind high potency banana peels, which slip harder.\r\n - Non-seed mutations: I was planning to make it so that dumping tons of mutagen on an empty tray that has a high weed level may spontaneously cause kudzuing or immediately create mutant weeds. Another idea was that using mutagen on a plant with a high pest rating could spawn spiderlings (with some code to ensure that they can never grow up into a nurse and thus cause a spiderpocalypse) or tiny worms or w/e\r\n - Sound-sensitive mutation: Plant stops growing for 30 seconds whenever it hears anyone say anything. Immediately dies whenever it hears the words \"Woody got wood\".\r\n - Mandrake mutation: Plant SCREAMS when harvested or low on health. Fruits SCREAM when eaten, thrown, or destroyed. Add a SCREAMing cooldown on the seed datum itself, so the whole species of plant can only scream once every so (no polyaciding a stack of 50 screaming fruits to make them all scream at once). Hmm, I wonder if this worked on kudzu?...\r\n - Mutation that causes plant to periodically fire neurotoxin to the nearest human, mutation that causes plant to create soporific smoke. Probably not, considering how awful smoke is.\r\n - Maybe re-implement amanitin in some way, since it's a really cool poison.\r\n\r\n### NEEDS FEEDBACK, NOT FINAL\r\n - The speed at which Kudzu now grows.\r\n - The effect that new mutations have on trying to fight back against Kudzu invasions.\r\n - All of the mutation chances. Do they allow you to improve your plant too fast? Are dangerous mutations too common/not common enough? Etc.\r\n\r\n~Performing of the Autoclose~\r\nRealization of #3678\r\nFixes #6504\r\nFixes #4795\r\nFixes #5334\r\nFixes #6733\r\nDoes not... really do #6095, I'm afraid of doing that.","created_at":"2015-11-23T22:36:09Z","updated_at":"2015-11-24T19:48:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734/commits","review_comments_url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734/comments","review_comment_url":"https://api.github.com/repos/d3athrow/vgstation13/pulls/comments{/number}","comments_url":"https://api.github.com/repos/d3athrow/vgstation13/issues/6734/comments","statuses_url":"https://api.github.com/repos/d3athrow/vgstation13/statuses/6e1cf4fd3cb1df61f3c2d0382dae5f6d20f64f49","head":{"label":"9600bauds:babeyouknowabouttheautumnwhentheleavesarefallingdownohandalltheprettyflowersslowlywithertotheground","ref":"babeyouknowabouttheautumnwhentheleavesarefallingdownohandalltheprettyflowersslowlywithertotheground","sha":"6e1cf4fd3cb1df61f3c2d0382dae5f6d20f64f49","user":{"login":"9600bauds","id":6526157,"avatar_url":"https://avatars.githubusercontent.com/u/6526157?v=3","gravatar_id":"","url":"https://api.github.com/users/9600bauds","html_url":"https://github.com/9600bauds","followers_url":"https://api.github.com/users/9600bauds/followers","following_url":"https://api.github.com/users/9600bauds/following{/other_user}","gists_url":"https://api.github.com/users/9600bauds/gists{/gist_id}","starred_url":"https://api.github.com/users/9600bauds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/9600bauds/subscriptions","organizations_url":"https://api.github.com/users/9600bauds/orgs","repos_url":"https://api.github.com/users/9600bauds/repos","events_url":"https://api.github.com/users/9600bauds/events{/privacy}","received_events_url":"https://api.github.com/users/9600bauds/received_events","type":"User","site_admin":false},"repo":{"id":30905092,"name":"vgstation13","full_name":"9600bauds/vgstation13","owner":{"login":"9600bauds","id":6526157,"avatar_url":"https://avatars.githubusercontent.com/u/6526157?v=3","gravatar_id":"","url":"https://api.github.com/users/9600bauds","html_url":"https://github.com/9600bauds","followers_url":"https://api.github.com/users/9600bauds/followers","following_url":"https://api.github.com/users/9600bauds/following{/other_user}","gists_url":"https://api.github.com/users/9600bauds/gists{/gist_id}","starred_url":"https://api.github.com/users/9600bauds/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/9600bauds/subscriptions","organizations_url":"https://api.github.com/users/9600bauds/orgs","repos_url":"https://api.github.com/users/9600bauds/repos","events_url":"https://api.github.com/users/9600bauds/events{/privacy}","received_events_url":"https://api.github.com/users/9600bauds/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/9600bauds/vgstation13","description":"This is the vgstation's fork of baystation12's code.","fork":true,"url":"https://api.github.com/repos/9600bauds/vgstation13","forks_url":"https://api.github.com/repos/9600bauds/vgstation13/forks","keys_url":"https://api.github.com/repos/9600bauds/vgstation13/keys{/key_id}","collaborators_url":"https://api.github.com/repos/9600bauds/vgstation13/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/9600bauds/vgstation13/teams","hooks_url":"https://api.github.com/repos/9600bauds/vgstation13/hooks","issue_events_url":"https://api.github.com/repos/9600bauds/vgstation13/issues/events{/number}","events_url":"https://api.github.com/repos/9600bauds/vgstation13/events","assignees_url":"https://api.github.com/repos/9600bauds/vgstation13/assignees{/user}","branches_url":"https://api.github.com/repos/9600bauds/vgstation13/branches{/branch}","tags_url":"https://api.github.com/repos/9600bauds/vgstation13/tags","blobs_url":"https://api.github.com/repos/9600bauds/vgstation13/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/9600bauds/vgstation13/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/9600bauds/vgstation13/git/refs{/sha}","trees_url":"https://api.github.com/repos/9600bauds/vgstation13/git/trees{/sha}","statuses_url":"https://api.github.com/repos/9600bauds/vgstation13/statuses/{sha}","languages_url":"https://api.github.com/repos/9600bauds/vgstation13/languages","stargazers_url":"https://api.github.com/repos/9600bauds/vgstation13/stargazers","contributors_url":"https://api.github.com/repos/9600bauds/vgstation13/contributors","subscribers_url":"https://api.github.com/repos/9600bauds/vgstation13/subscribers","subscription_url":"https://api.github.com/repos/9600bauds/vgstation13/subscription","commits_url":"https://api.github.com/repos/9600bauds/vgstation13/commits{/sha}","git_commits_url":"https://api.github.com/repos/9600bauds/vgstation13/git/commits{/sha}","comments_url":"https://api.github.com/repos/9600bauds/vgstation13/comments{/number}","issue_comment_url":"https://api.github.com/repos/9600bauds/vgstation13/issues/comments{/number}","contents_url":"https://api.github.com/repos/9600bauds/vgstation13/contents/{+path}","compare_url":"https://api.github.com/repos/9600bauds/vgstation13/compare/{base}...{head}","merges_url":"https://api.github.com/repos/9600bauds/vgstation13/merges","archive_url":"https://api.github.com/repos/9600bauds/vgstation13/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/9600bauds/vgstation13/downloads","issues_url":"https://api.github.com/repos/9600bauds/vgstation13/issues{/number}","pulls_url":"https://api.github.com/repos/9600bauds/vgstation13/pulls{/number}","milestones_url":"https://api.github.com/repos/9600bauds/vgstation13/milestones{/number}","notifications_url":"https://api.github.com/repos/9600bauds/vgstation13/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/9600bauds/vgstation13/labels{/name}","releases_url":"https://api.github.com/repos/9600bauds/vgstation13/releases{/id}","created_at":"2015-02-17T06:15:00Z","updated_at":"2015-02-17T06:15:11Z","pushed_at":"2015-11-23T22:33:45Z","git_url":"git://github.com/9600bauds/vgstation13.git","ssh_url":"git@github.com:9600bauds/vgstation13.git","clone_url":"https://github.com/9600bauds/vgstation13.git","svn_url":"https://github.com/9600bauds/vgstation13","homepage":"","size":880962,"stargazers_count":0,"watchers_count":0,"language":"DM","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"Bleeding-Edge"}},"base":{"label":"d3athrow:Bleeding-Edge","ref":"Bleeding-Edge","sha":"443acf6575241b1e1f3f0b79f0149787bfb79941","user":{"login":"d3athrow","id":706947,"avatar_url":"https://avatars.githubusercontent.com/u/706947?v=3","gravatar_id":"","url":"https://api.github.com/users/d3athrow","html_url":"https://github.com/d3athrow","followers_url":"https://api.github.com/users/d3athrow/followers","following_url":"https://api.github.com/users/d3athrow/following{/other_user}","gists_url":"https://api.github.com/users/d3athrow/gists{/gist_id}","starred_url":"https://api.github.com/users/d3athrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d3athrow/subscriptions","organizations_url":"https://api.github.com/users/d3athrow/orgs","repos_url":"https://api.github.com/users/d3athrow/repos","events_url":"https://api.github.com/users/d3athrow/events{/privacy}","received_events_url":"https://api.github.com/users/d3athrow/received_events","type":"User","site_admin":false},"repo":{"id":10441188,"name":"vgstation13","full_name":"d3athrow/vgstation13","owner":{"login":"d3athrow","id":706947,"avatar_url":"https://avatars.githubusercontent.com/u/706947?v=3","gravatar_id":"","url":"https://api.github.com/users/d3athrow","html_url":"https://github.com/d3athrow","followers_url":"https://api.github.com/users/d3athrow/followers","following_url":"https://api.github.com/users/d3athrow/following{/other_user}","gists_url":"https://api.github.com/users/d3athrow/gists{/gist_id}","starred_url":"https://api.github.com/users/d3athrow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d3athrow/subscriptions","organizations_url":"https://api.github.com/users/d3athrow/orgs","repos_url":"https://api.github.com/users/d3athrow/repos","events_url":"https://api.github.com/users/d3athrow/events{/privacy}","received_events_url":"https://api.github.com/users/d3athrow/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/d3athrow/vgstation13","description":"Butts","fork":true,"url":"https://api.github.com/repos/d3athrow/vgstation13","forks_url":"https://api.github.com/repos/d3athrow/vgstation13/forks","keys_url":"https://api.github.com/repos/d3athrow/vgstation13/keys{/key_id}","collaborators_url":"https://api.github.com/repos/d3athrow/vgstation13/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/d3athrow/vgstation13/teams","hooks_url":"https://api.github.com/repos/d3athrow/vgstation13/hooks","issue_events_url":"https://api.github.com/repos/d3athrow/vgstation13/issues/events{/number}","events_url":"https://api.github.com/repos/d3athrow/vgstation13/events","assignees_url":"https://api.github.com/repos/d3athrow/vgstation13/assignees{/user}","branches_url":"https://api.github.com/repos/d3athrow/vgstation13/branches{/branch}","tags_url":"https://api.github.com/repos/d3athrow/vgstation13/tags","blobs_url":"https://api.github.com/repos/d3athrow/vgstation13/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/d3athrow/vgstation13/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/d3athrow/vgstation13/git/refs{/sha}","trees_url":"https://api.github.com/repos/d3athrow/vgstation13/git/trees{/sha}","statuses_url":"https://api.github.com/repos/d3athrow/vgstation13/statuses/{sha}","languages_url":"https://api.github.com/repos/d3athrow/vgstation13/languages","stargazers_url":"https://api.github.com/repos/d3athrow/vgstation13/stargazers","contributors_url":"https://api.github.com/repos/d3athrow/vgstation13/contributors","subscribers_url":"https://api.github.com/repos/d3athrow/vgstation13/subscribers","subscription_url":"https://api.github.com/repos/d3athrow/vgstation13/subscription","commits_url":"https://api.github.com/repos/d3athrow/vgstation13/commits{/sha}","git_commits_url":"https://api.github.com/repos/d3athrow/vgstation13/git/commits{/sha}","comments_url":"https://api.github.com/repos/d3athrow/vgstation13/comments{/number}","issue_comment_url":"https://api.github.com/repos/d3athrow/vgstation13/issues/comments{/number}","contents_url":"https://api.github.com/repos/d3athrow/vgstation13/contents/{+path}","compare_url":"https://api.github.com/repos/d3athrow/vgstation13/compare/{base}...{head}","merges_url":"https://api.github.com/repos/d3athrow/vgstation13/merges","archive_url":"https://api.github.com/repos/d3athrow/vgstation13/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/d3athrow/vgstation13/downloads","issues_url":"https://api.github.com/repos/d3athrow/vgstation13/issues{/number}","pulls_url":"https://api.github.com/repos/d3athrow/vgstation13/pulls{/number}","milestones_url":"https://api.github.com/repos/d3athrow/vgstation13/milestones{/number}","notifications_url":"https://api.github.com/repos/d3athrow/vgstation13/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/d3athrow/vgstation13/labels{/name}","releases_url":"https://api.github.com/repos/d3athrow/vgstation13/releases{/id}","created_at":"2013-06-02T19:39:54Z","updated_at":"2015-11-17T23:09:42Z","pushed_at":"2015-11-24T05:05:17Z","git_url":"git://github.com/d3athrow/vgstation13.git","ssh_url":"git@github.com:d3athrow/vgstation13.git","clone_url":"https://github.com/d3athrow/vgstation13.git","svn_url":"https://github.com/d3athrow/vgstation13","homepage":"","size":1042388,"stargazers_count":72,"watchers_count":72,"language":"DM","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":198,"mirror_url":null,"open_issues_count":696,"forks":198,"open_issues":696,"watchers":72,"default_branch":"Bleeding-Edge"}},"_links":{"self":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734"},"html":{"href":"https://github.com/d3athrow/vgstation13/pull/6734"},"issue":{"href":"https://api.github.com/repos/d3athrow/vgstation13/issues/6734"},"comments":{"href":"https://api.github.com/repos/d3athrow/vgstation13/issues/6734/comments"},"review_comments":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734/comments"},"review_comment":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/d3athrow/vgstation13/pulls/6734/commits"},"statuses":{"href":"https://api.github.com/repos/d3athrow/vgstation13/statuses/6e1cf4fd3cb1df61f3c2d0382dae5f6d20f64f49"}}}}