Fixes1404 by changing how hydro trays can receive reagents. Pretty much any reagent container works now, except pills. Food *does* work, it's used as "compost". I might make pills work as compost as well, kinda like those solid Miracle Grow supplements.

Issue #1404 was just that plant-b-gone bottles weren't using their reagent contents on hydro trays.  Space cleaner spray was similarly not used or checked when cleaning microwaves, so I fixed that extension of the bug.

I haven't tested this as thoroughly as I usually test my commits, I'll update this when I'm confident it's all working.  I did run through most possibilities though.
This commit is contained in:
Rolan7
2013-09-19 04:51:42 -04:00
parent 578215e3a7
commit eeae6c80e7
2 changed files with 198 additions and 178 deletions
+30 -15
View File
@@ -75,24 +75,39 @@
else
user << "\red It's broken!"
return 1
else if(src.dirty==100) // The microwave is all dirty so can't be used!
if(istype(O, /obj/item/weapon/reagent_containers/spray/cleaner) || istype(O, /obj/item/weapon/soap/)) // If they're trying to clean it then let them
else if(istype(O, /obj/item/weapon/reagent_containers/spray/))
var/obj/item/weapon/reagent_containers/spray/clean_spray = O
if(clean_spray.reagents.has_reagent("cleaner",10))
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
user.visible_message( \
"\blue [user] starts to clean the microwave.", \
"\blue You start to clean the microwave." \
"\blue [user] has cleaned the microwave.", \
"\blue You have cleaned the microwave." \
)
if (do_after(user,20))
user.visible_message( \
"\blue [user] has cleaned the microwave.", \
"\blue You have cleaned the microwave." \
)
src.dirty = 0 // It's clean!
src.broken = 0 // just to be sure
src.icon_state = "mw"
src.flags = OPENCONTAINER
else //Otherwise bad luck!!
user << "\red It's dirty!"
src.dirty = 0 // It's clean!
src.broken = 0 // just to be sure
src.icon_state = "mw"
src.flags = OPENCONTAINER
else
user << "\red You need more space cleaner!"
return 1
else if(istype(O, /obj/item/weapon/soap/)) // If they're trying to clean it then let them
user.visible_message( \
"\blue [user] starts to clean the microwave.", \
"\blue You start to clean the microwave." \
)
if (do_after(user,20))
user.visible_message( \
"\blue [user] has cleaned the microwave.", \
"\blue You have cleaned the microwave." \
)
src.dirty = 0 // It's clean!
src.broken = 0 // just to be sure
src.icon_state = "mw"
src.flags = OPENCONTAINER
else if(src.dirty==100) // The microwave is all dirty so can't be used!
user << "\red It's dirty!"
return 1
else if(is_type_in_list(O,acceptable_items))
if (contents.len>=max_n_of_items)
user << "\red This [src] is full of ingredients, you cannot put more."
+168 -163
View File
@@ -314,161 +314,176 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
del(O)
update_icon()
else if(istype(O, /obj/item/weapon/reagent_containers/syringe)) // Syringe stuff
var/obj/item/weapon/reagent_containers/syringe/S = O
else if(istype(O, /obj/item/weapon/reagent_containers) ) // Syringe stuff (and other reagent containers now too)
var/obj/item/weapon/reagent_containers/reagent_source = O
if(planted)
if(S.mode == 1)
if(!S.reagents.total_volume)
user << "\red [S] is empty."
var/obj/item/weapon/reagent_containers/S = new /obj/item/weapon/reagent_containers()
if(!reagent_source.reagents.total_volume)
user << "\red [reagent_source] is empty."
return
if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/syr = reagent_source
if(syr.mode != 1)
user << "You can't get any extract out of this plant."
return
user << "\red You inject the [myseed.plantname] with a chemical solution."
//SOON
// There needs to be a good amount of mutagen to actually work
if(S.reagents.has_reagent("mutagen", 5))
switch(rand(100))
if(91 to 100) plantdies()
if(81 to 90) mutatespecie()
if(66 to 80) hardmutate()
if(41 to 65) mutate()
if(21 to 41) user << "The plants don't seem to react..."
if(11 to 20) mutateweed()
if(1 to 10) mutatepest()
else user << "Nothing happens..."
// Antitoxin binds shit pretty well. So the tox goes significantly down
if(S.reagents.has_reagent("anti_toxin", 1))
adjustToxic(-round(S.reagents.get_reagent_amount("anti_toxin")*2))
// NIGGA, YOU JUST WENT ON FULL RETARD.
if(S.reagents.has_reagent("toxin", 1))
adjustToxic(round(S.reagents.get_reagent_amount("toxin")*2))
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
if(S.reagents.has_reagent("milk", 1))
adjustNutri(round(S.reagents.get_reagent_amount("milk")*0.1))
adjustWater(round(S.reagents.get_reagent_amount("milk")*0.9))
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
if(S.reagents.has_reagent("beer", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("beer")*0.05))
adjustNutri(round(S.reagents.get_reagent_amount("beer")*0.25))
adjustWater(round(S.reagents.get_reagent_amount("beer")*0.7))
// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial
if(S.reagents.has_reagent("fluorine", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("fluorine")*2))
adjustToxic(round(S.reagents.get_reagent_amount("flourine")*2.5))
adjustWater(-round(S.reagents.get_reagent_amount("flourine")*0.5))
adjustWeeds(-rand(1,4))
// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial
if(S.reagents.has_reagent("chlorine", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("chlorine")*1))
adjustToxic(round(S.reagents.get_reagent_amount("chlorine")*1.5))
adjustWater(-round(S.reagents.get_reagent_amount("chlorine")*0.5))
adjustWeeds(-rand(1,3))
// White Phosphorous + water -> phosphoric acid. That's not a good thing really. Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
if(S.reagents.has_reagent("phosphorus", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("phosphorus")*0.75))
adjustNutri(round(S.reagents.get_reagent_amount("phosphorus")*0.1))
adjustWater(-round(S.reagents.get_reagent_amount("phosphorus")*0.5))
adjustWeeds(-rand(1,2))
// Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though...
if(S.reagents.has_reagent("sugar", 1))
adjustWeeds(rand(1,2))
adjustPests(rand(1,2))
adjustNutri(round(S.reagents.get_reagent_amount("sugar")*0.1))
// It is water!
if(S.reagents.has_reagent("water", 1))
adjustWater(round(S.reagents.get_reagent_amount("water")*1))
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
if(S.reagents.has_reagent("holywater", 1))
adjustWater(round(S.reagents.get_reagent_amount("holywater")*1))
adjustHealth(round(S.reagents.get_reagent_amount("holywater")*0.1))
// A variety of nutrients are dissolved in club soda, without sugar. These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
if(S.reagents.has_reagent("sodawater", 1))
adjustWater(round(S.reagents.get_reagent_amount("sodawater")*1))
adjustHealth(round(S.reagents.get_reagent_amount("sodawater")*0.1))
adjustNutri(round(S.reagents.get_reagent_amount("sodawater")*0.1))
// Man, you guys are retards
if(S.reagents.has_reagent("sacid", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("sacid")*1))
adjustToxic(round(S.reagents.get_reagent_amount("sacid")*1.5))
adjustWeeds(-rand(1,2))
// SERIOUSLY
if(S.reagents.has_reagent("pacid", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("pacid")*2))
adjustToxic(round(S.reagents.get_reagent_amount("pacid")*3))
adjustWeeds(-rand(1,4))
// Plant-B-Gone is just as bad
if(S.reagents.has_reagent("plantbgone", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("plantbgone")*2))
adjustToxic(-round(S.reagents.get_reagent_amount("plantbgone")*3))
adjustWeeds(-rand(4,8))
// Healing
if(S.reagents.has_reagent("cryoxadone", 1))
adjustHealth(round(S.reagents.get_reagent_amount("cryoxadone")*3))
adjustToxic(-round(S.reagents.get_reagent_amount("cryoxadone")*3))
// Ammonia is bad ass.
if(S.reagents.has_reagent("ammonia", 1))
adjustHealth(round(S.reagents.get_reagent_amount("ammonia")*0.5))
adjustNutri(round(S.reagents.get_reagent_amount("ammonia")*1))
// This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
if(S.reagents.has_reagent("diethylamine", 1))
adjustHealth(round(S.reagents.get_reagent_amount("diethylamine")*1))
adjustNutri(round(S.reagents.get_reagent_amount("diethylamine")*2))
adjustPests(-rand(1,2))
// Compost, effectively
if(S.reagents.has_reagent("nutriment", 1))
adjustHealth(round(S.reagents.get_reagent_amount("nutriment")*0.5))
adjustNutri(round(S.reagents.get_reagent_amount("nutriment")*1))
// Poor man's mutagen.
if(S.reagents.has_reagent("radium", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("radium")*1.5))
adjustToxic(round(S.reagents.get_reagent_amount("radium")*2))
if(S.reagents.has_reagent("radium", 10))
switch(rand(100))
if(91 to 100) plantdies()
if(81 to 90) mutatespecie()
if(66 to 80) hardmutate()
if(41 to 65) mutate()
if(21 to 41) user << "The plants don't seem to react..."
if(11 to 20) mutateweed()
if(1 to 10) mutatepest()
else user << "Nothing happens..."
// The best stuff there is. For testing/debugging.
if(S.reagents.has_reagent("adminordrazine", 1))
adjustWater(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustHealth(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustNutri(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustPests(-rand(1,5))
adjustWeeds(-rand(1,5))
if(S.reagents.has_reagent("adminordrazine", 5))
switch(rand(100))
if(66 to 100) mutatespecie()
if(33 to 65) mutateweed()
if(1 to 32) mutatepest()
else user << "Nothing happens..."
S.reagents.clear_reagents()
if(istype(reagent_source, /obj/item/weapon/reagent_containers/food/))
visible_message("\red [user] uses [reagent_source] as compost.")
del(S)
S = reagent_source
else
user << "You can't get any extract out of this plant."
if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe))
visible_message("\red [user] injects [myseed.plantname] with a chemical solution.")
else if(istype(reagent_source, /obj/item/weapon/reagent_containers/spray/))
visible_message("\red <B>[src] has been sprayed with [reagent_source] by [user].")
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
else if(reagent_source.amount_per_transfer_from_this) // Droppers, cans, beakers, what have you.
visible_message("\red <B>[user] uses [reagent_source] on the [src].")
reagent_source.reagents.trans_to(S,reagent_source.amount_per_transfer_from_this)
// There needs to be a good amount of mutagen to actually work
if(S.reagents.has_reagent("mutagen", 5))
switch(rand(100))
if(91 to 100) plantdies()
if(81 to 90) mutatespecie()
if(66 to 80) hardmutate()
if(41 to 65) mutate()
if(21 to 41) user << "The plants don't seem to react..."
if(11 to 20) mutateweed()
if(1 to 10) mutatepest()
else user << "Nothing happens..."
// Antitoxin binds shit pretty well. So the tox goes significantly down
if(S.reagents.has_reagent("anti_toxin", 1))
adjustToxic(-round(S.reagents.get_reagent_amount("anti_toxin")*2))
// NIGGA, YOU JUST WENT ON FULL RETARD.
if(S.reagents.has_reagent("toxin", 1))
adjustToxic(round(S.reagents.get_reagent_amount("toxin")*2))
// Milk is good for humans, but bad for plants. The sugars canot be used by plants, and the milk fat fucks up growth. Not shrooms though. I can't deal with this now...
if(S.reagents.has_reagent("milk", 1))
adjustNutri(round(S.reagents.get_reagent_amount("milk")*0.1))
adjustWater(round(S.reagents.get_reagent_amount("milk")*0.9))
// Beer is a chemical composition of alcohol and various other things. It's a shitty nutrient but hey, it's still one. Also alcohol is bad, mmmkay?
if(S.reagents.has_reagent("beer", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("beer")*0.05))
adjustNutri(round(S.reagents.get_reagent_amount("beer")*0.25))
adjustWater(round(S.reagents.get_reagent_amount("beer")*0.7))
// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial
if(S.reagents.has_reagent("fluorine", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("fluorine")*2))
adjustToxic(round(S.reagents.get_reagent_amount("flourine")*2.5))
adjustWater(-round(S.reagents.get_reagent_amount("flourine")*0.5))
adjustWeeds(-rand(1,4))
// You're an idiot for thinking that one of the most corrosive and deadly gasses would be beneficial
if(S.reagents.has_reagent("chlorine", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("chlorine")*1))
adjustToxic(round(S.reagents.get_reagent_amount("chlorine")*1.5))
adjustWater(-round(S.reagents.get_reagent_amount("chlorine")*0.5))
adjustWeeds(-rand(1,3))
// White Phosphorous + water -> phosphoric acid. That's not a good thing really. Phosphoric salts are beneficial though. And even if the plant suffers, in the long run the tray gets some nutrients. The benefit isn't worth that much.
if(S.reagents.has_reagent("phosphorus", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("phosphorus")*0.75))
adjustNutri(round(S.reagents.get_reagent_amount("phosphorus")*0.1))
adjustWater(-round(S.reagents.get_reagent_amount("phosphorus")*0.5))
adjustWeeds(-rand(1,2))
// Plants should not have sugar, they can't use it and it prevents them getting water/ nutients, it is good for mold though...
if(S.reagents.has_reagent("sugar", 1))
adjustWeeds(rand(1,2))
adjustPests(rand(1,2))
adjustNutri(round(S.reagents.get_reagent_amount("sugar")*0.1))
// It is water!
if(S.reagents.has_reagent("water", 1))
adjustWater(round(S.reagents.get_reagent_amount("water")*1))
// Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits~
if(S.reagents.has_reagent("holywater", 1))
adjustWater(round(S.reagents.get_reagent_amount("holywater")*1))
adjustHealth(round(S.reagents.get_reagent_amount("holywater")*0.1))
// A variety of nutrients are dissolved in club soda, without sugar. These nutrients include carbon, oxygen, hydrogen, phosphorous, potassium, sulfur and sodium, all of which are needed for healthy plant growth.
if(S.reagents.has_reagent("sodawater", 1))
adjustWater(round(S.reagents.get_reagent_amount("sodawater")*1))
adjustHealth(round(S.reagents.get_reagent_amount("sodawater")*0.1))
adjustNutri(round(S.reagents.get_reagent_amount("sodawater")*0.1))
// Man, you guys are retards
if(S.reagents.has_reagent("sacid", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("sacid")*1))
adjustToxic(round(S.reagents.get_reagent_amount("sacid")*1.5))
adjustWeeds(-rand(1,2))
// SERIOUSLY
if(S.reagents.has_reagent("pacid", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("pacid")*2))
adjustToxic(round(S.reagents.get_reagent_amount("pacid")*3))
adjustWeeds(-rand(1,4))
// Plant-B-Gone is just as bad
if(S.reagents.has_reagent("plantbgone", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("plantbgone")*2))
adjustToxic(-round(S.reagents.get_reagent_amount("plantbgone")*3))
adjustWeeds(-rand(4,8))
// Healing
if(S.reagents.has_reagent("cryoxadone", 1))
adjustHealth(round(S.reagents.get_reagent_amount("cryoxadone")*3))
adjustToxic(-round(S.reagents.get_reagent_amount("cryoxadone")*3))
// Ammonia is bad ass.
if(S.reagents.has_reagent("ammonia", 1))
adjustHealth(round(S.reagents.get_reagent_amount("ammonia")*0.5))
adjustNutri(round(S.reagents.get_reagent_amount("ammonia")*1))
// This is more bad ass, and pests get hurt by the corrosive nature of it, not the plant.
if(S.reagents.has_reagent("diethylamine", 1))
adjustHealth(round(S.reagents.get_reagent_amount("diethylamine")*1))
adjustNutri(round(S.reagents.get_reagent_amount("diethylamine")*2))
adjustPests(-rand(1,2))
// Compost, effectively
if(S.reagents.has_reagent("nutriment", 1))
adjustHealth(round(S.reagents.get_reagent_amount("nutriment")*0.5))
adjustNutri(round(S.reagents.get_reagent_amount("nutriment")*1))
// Poor man's mutagen.
if(S.reagents.has_reagent("radium", 1))
adjustHealth(-round(S.reagents.get_reagent_amount("radium")*1.5))
adjustToxic(round(S.reagents.get_reagent_amount("radium")*2))
if(S.reagents.has_reagent("radium", 10))
switch(rand(100))
if(91 to 100) plantdies()
if(81 to 90) mutatespecie()
if(66 to 80) hardmutate()
if(41 to 65) mutate()
if(21 to 41) user << "The plants don't seem to react..."
if(11 to 20) mutateweed()
if(1 to 10) mutatepest()
else user << "Nothing happens..."
// The best stuff there is. For testing/debugging.
if(S.reagents.has_reagent("adminordrazine", 1))
adjustWater(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustHealth(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustNutri(round(S.reagents.get_reagent_amount("adminordrazine")*1))
adjustPests(-rand(1,5))
adjustWeeds(-rand(1,5))
if(S.reagents.has_reagent("adminordrazine", 5))
switch(rand(100))
if(66 to 100) mutatespecie()
if(33 to 65) mutateweed()
if(1 to 32) mutatepest()
else user << "Nothing happens..."
S.reagents.clear_reagents()
del(S)
else
user << "There's nothing to apply the solution into."
update_icon()
@@ -517,17 +532,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
user << "-Water level: \blue [waterlevel]/100"
user << "-Nutrition level: \blue [nutrilevel]/10"
user << ""
else if(istype(O, /obj/item/weapon/reagent_containers/spray/plantbgone))
if(planted && myseed)
adjustHealth(-rand(5,20))
adjustPests(-2)
adjustWeeds(-3)
adjustToxic(4)//Oops
visible_message("\red <B>[src] has been sprayed with [O][(user ? " by [user]." : ".")]")
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
update_icon()
else if(istype(O, /obj/item/weapon/minihoe))
if(weedlevel > 0)
user.visible_message("\red [user] starts uprooting the weeds.", "\red You remove the weeds from [src].")