From dbb04f4dbbd68969a7cbe9c9f264c8b07ad76ead Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 25 Mar 2015 03:50:54 -0400 Subject: [PATCH] [Goonchem] Few Additional Chemicals --- code/game/machinery/hydroponics.dm | 6 +- code/game/objects/items/random_items.dm | 2 +- .../items/weapons/grenades/chem_grenade.dm | 4 +- .../objects/items/weapons/storage/fancy.dm | 2 +- code/modules/events/tgevents/vent_clog.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 4 + code/modules/mob/mob.dm | 12 +- code/modules/reagents/Chemistry-Reagents.dm | 58 +-------- code/modules/reagents/Chemistry-Recipes.dm | 11 +- code/modules/reagents/newchem/pyro.dm | 13 ++ code/modules/reagents/newchem/toxins.dm | 112 +++++++++++++++++- .../reagents/reagent_containers/spray.dm | 4 +- 12 files changed, 151 insertions(+), 79 deletions(-) diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index 077072f938a..e3aa2ae9624 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -51,7 +51,7 @@ "chlorine" = 1.5, "sacid" = 1.5, "pacid" = 3, - "plantbgone" = 3, + "atrazine" = 3, "cryoxadone" = -3, "radium" = 2 ) @@ -76,7 +76,7 @@ "sugar" = 2, "sacid" = -2, "pacid" = -4, - "plantbgone" = -8, + "atrazine" = -8, "adminordrazine" = -5 ) var/global/list/pestkiller_reagents = list( @@ -105,7 +105,7 @@ "sodawater" = list( 0.1, 0, 0 ), "sacid" = list( -1, 0, 0 ), "pacid" = list( -2, 0, 0 ), - "plantbgone" = list( -2, 0, 0.2 ), + "atrazine" = list( -2, 0, 0.2 ), "cryoxadone" = list( 3, 0, 0 ), "ammonia" = list( 0.5, 0, 0 ), "diethylamine" = list( 1, 0, 0 ), diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm index 4ed64721966..f1444bd0882 100644 --- a/code/game/objects/items/random_items.dm +++ b/code/game/objects/items/random_items.dm @@ -61,7 +61,7 @@ // identify_probability = 0 New() ..() - var/global/list/chems_only = list("slimejelly","blood","water","lube","anti_toxin","toxin","cyanide","stoxin","inaprovaline","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","pacid","glycerol","radium","ryetalyn","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","plantbgone","plasma","leporazine","cryptobiolin","lexorin","kelotane","dermaline","dexalin","dexalinp","tricordrazine","synaptizine","impedrezene","hyronalin","arithrazine","alkysine","imidazoline","bicaridine","hyperzine","cryoxadone","clonexadone","spaceacillin","carpotoxin","zombiepowder","mindbreaker","fluorosurfactant","foaming_agent","ethanol","ammonia","diethylamine","ethylredoxrazine","chloralhydrate","lipozine","condensedcapsaicin","frostoil","amatoxin","psilocybin","enzyme","nothing","doctorsdelight","antifreeze","neurotoxin") + var/global/list/chems_only = list("slimejelly","blood","water","lube","anti_toxin","toxin","cyanide","stoxin","inaprovaline","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","pacid","glycerol","radium","ryetalyn","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","leporazine","cryptobiolin","lexorin","kelotane","dermaline","dexalin","dexalinp","tricordrazine","synaptizine","impedrezene","hyronalin","arithrazine","alkysine","imidazoline","bicaridine","hyperzine","cryoxadone","clonexadone","spaceacillin","carpotoxin","zombiepowder","mindbreaker","fluorosurfactant","foaming_agent","ethanol","ammonia","diethylamine","ethylredoxrazine","chloralhydrate","lipozine","condensedcapsaicin","frostoil","amatoxin","psilocybin","enzyme","nothing","doctorsdelight","antifreeze","neurotoxin") var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine") var/datum/reagent/R = pick(chems_only + rare_chems) diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 48a826abc96..2a941470364 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -429,11 +429,11 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("plantbgone", 30) + B1.reagents.add_reagent("atrazine", 30) B1.reagents.add_reagent("potassium", 20) B2.reagents.add_reagent("phosphorus", 20) B2.reagents.add_reagent("sugar", 20) - B2.reagents.add_reagent("plantbgone", 10) + B2.reagents.add_reagent("atrazine", 10) beakers += B1 beakers += B2 diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm index 41f998e5d6f..60704cb581e 100644 --- a/code/game/objects/items/weapons/storage/fancy.dm +++ b/code/game/objects/items/weapons/storage/fancy.dm @@ -269,7 +269,7 @@ for(var/i = 1 to storage_slots) reagents.add_reagent("lipozine",4) reagents.add_reagent("ammonia",2) - reagents.add_reagent("plantbgone",1) + reagents.add_reagent("atrazine",1) reagents.add_reagent("toxin",1.5) /* diff --git a/code/modules/events/tgevents/vent_clog.dm b/code/modules/events/tgevents/vent_clog.dm index 061450a197d..db8cbe2694c 100755 --- a/code/modules/events/tgevents/vent_clog.dm +++ b/code/modules/events/tgevents/vent_clog.dm @@ -21,7 +21,7 @@ var/obj/vent = pick_n_take(vents) var/list/gunk = list("water","carbon","flour","radium","toxin","cleaner","nutriment","condensedcapsaicin","psilocybin","lube", - "plantbgone","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid", + "atrazine","banana","anti_toxin","space_drugs","hyperzine","holywater","ethanol","hot_coco","pacid", "blood","stoxin","fluorine","ryetalyn","mutagen","oxycodone","fuel","cryptobiolin", "impedrezene","mindbreaker","nanites","lipozine","frostoil","doctorsdelight","beepskysmash", "tricordrazine", "amatoxin", "adminordrazine", "neurotoxin", "zombiepowder", "synaptizine") diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index f5f37f895e2..bd0c6694da7 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -330,6 +330,10 @@ message = "[src] waves." m_type = 1 + if ("quiver") + message = "[src] quivers." + m_type = 1 + if ("gasp") if(miming) message = "[src] appears to be gasping!" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 49fd84c3b7a..ed6d6e3385c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -82,7 +82,7 @@ /atom/proc/visible_message(var/message, var/blind_message) for(var/mob/M in viewers(src)) M.show_message( message, 1, blind_message, 2) - + // Show a message to all mobs in earshot of this one // This would be for audible actions by the src mob // message is the message output to anyone who can hear. @@ -98,7 +98,7 @@ if(self_message && M==src) msg = self_message M.show_message( msg, 2, deaf_message, 1) - + // Show a message to all mobs in earshot of this atom // Use for objects performing audible actions // message is the message output to anyone who can hear. @@ -1439,3 +1439,11 @@ mob/proc/yank_out_object() if(G.can_reenter_corpse || even_if_they_cant_reenter) return G break + + +/mob/proc/fakevomit() //for aesthetic vomits that need to be instant and do not stun. -Fox + src.visible_message("[src] pukes all over \himself!","You puke all over yourself!") + playsound(loc, 'sound/effects/splat.ogg', 50, 1) + var/turf/location = loc + if (istype(location, /turf/simulated)) + location.add_vomit_floor(src, 1) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 03411d7b75a..346e617a6b6 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1314,62 +1314,6 @@ datum ..() return - plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - description = "A harmful toxic mixture to kill plantlife. Do not ingest!" - reagent_state = LIQUID - color = "#49002E" // rgb: 73, 0, 46 - - on_mob_life(var/mob/living/M as mob) - if(!M) M = holder.my_atom - M.adjustToxLoss(1) - ..() - return - - // Clear off wallrot fungi - reaction_turf(var/turf/T, var/volume) - if(istype(T, /turf/simulated/wall)) - var/turf/simulated/wall/W = T - if(W.rotting) - W.rotting = 0 - for(var/obj/effect/E in W) if(E.name == "Wallrot") del E - - for(var/mob/O in viewers(W, null)) - O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) - - reaction_obj(var/obj/O, var/volume) - if(istype(O,/obj/structure/alien/weeds/)) - var/obj/structure/alien/weeds/alien_weeds = O - alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast - alien_weeds.healthcheck() - else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it - del(O) - else if(istype(O,/obj/effect/plantsegment)) - if(prob(50)) del(O) //Kills kudzu too. - // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics - - reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) - src = null - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.wear_mask) // If not wearing a mask - C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(H.dna) - if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage - H.adjustToxLoss(50) - ..() - return - if(ismonkey(M)) - var/mob/living/carbon/monkey/MO = M - if(MO.dna) - if(MO.dna.mutantrace == "plant") //plantmen monkeys (diona) take EVEN MORE damage - MO.adjustToxLoss(100) - ..() - return - plasma name = "Plasma" id = "plasma" @@ -1947,7 +1891,7 @@ datum on_mob_life(var/mob/living/M) if(!M) M = holder.my_atom - if (holder.has_reagent("plantbgone",45)) + if (holder.has_reagent("atrazine",45)) holder.del_reagent("spore") if (prob(1)) M << "\red Your mouth tastes funny." diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index f6d41a6cbae..fe5240c4073 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -347,8 +347,8 @@ datum name = "Sodium Chloride" id = "sodiumchloride" result = "sodiumchloride" - required_reagents = list("sodium" = 1, "chlorine" = 1) - result_amount = 2 + required_reagents = list("sodium" = 1, "chlorine" = 1, "water" = 1) + result_amount = 3 flash_powder name = "Flash powder" @@ -595,13 +595,6 @@ datum required_reagents = list("ammonia" = 1, "water" = 1) result_amount = 2 - plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - result = "plantbgone" - required_reagents = list("chlorine" = 1, "hydrogen" = 1, "nitrogen" = 1) - result_amount = 3 - ///////Changeling Blood Test///////////// changeling_test name = "Changeling blood test" diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index fa3cc08a176..0f0bddbb42f 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -503,3 +503,16 @@ datum/reagent/pyrosium/on_tick() holder.handle_reactions() ..() return + +/datum/chemical_reaction/azide + name = "azide" + id = "azide" + result = null + required_reagents = list("chlorine" = 1, "oxygen" = 1, "nitrogen" = 1, "ammonia" = 1, "sodium" = 1, "silver" = 1) + result_amount = 1 + mix_message = "The substance violently detonates!" + +/datum/chemical_reaction/azide/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + explosion(location,0,1,3) + return \ No newline at end of file diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index c485f283835..82a8552ab2d 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -450,4 +450,114 @@ datum/reagent/curare/on_mob_life(var/mob/living/M as mob) M.adjustToxLoss(1) M.adjustOxyLoss(1) ..() - return \ No newline at end of file + return + +datum/reagent/sarin + name = "Sarin" + id = "sarin" + description = "An extremely deadly neurotoxin." + reagent_state = LIQUID + color = "#C7C7C7" + metabolization_rate = 0.1 + +/datum/chemical_reaction/sarin + name = "sarin" + id = "sarin" + result = "sarin" + required_reagents = list("chlorine" = 1, "fluorine" = 1, "hydrogen" = 1, "oxygen" = 1, "phosphorus" = 1, "fuel" = 1, "acetone" = 1, "atrazine" = 1) + result_amount = 3 + mix_message = "The mixture yields a colorless, odorless liquid." + required_temp = 373 + +datum/reagent/sarin/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustFireLoss(1) + M.adjustToxLoss(1) + if(prob(20)) + M.emote(pick("twitch","scream", "drool", "quiver")) + if(prob(5)) + M.confused = max(M.confused, 3) + if(prob(15)) + M.fakevomit() + if(prob(2)) + M.visible_message("[M] starts having a seizure!", "You have a seizure!") + M.Paralyse(5) + M.Jitter(1000) + if(current_cycle >= 5) + M.Jitter(50) + if(current_cycle >= 20) + if(prob(5)) + M.emote("collapse") + switch(current_cycle) + if(0 to 60) + M.adjustBrainLoss(1) + if(61 to INFINITY) + M.adjustBrainLoss(2) + M.Paralyse(5) + M.losebreath += 5 + ..() + return + +datum/reagent/atrazine + name = "Atrazine" + id = "atrazine" + description = "A herbicidal compound used for destroying unwanted plants." + reagent_state = LIQUID + color = "#17002D" + +datum/reagent/atrazine/on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + M.adjustToxLoss(2) + ..() + return + + // Clear off wallrot fungi +datum/reagent/atrazine/reaction_turf(var/turf/T, var/volume) + if(istype(T, /turf/simulated/wall)) + var/turf/simulated/wall/W = T + if(W.rotting) + W.rotting = 0 + for(var/obj/effect/E in W) if(E.name == "Wallrot") del E + + for(var/mob/O in viewers(W, null)) + O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1) + +datum/reagent/atrazine/reaction_obj(var/obj/O, var/volume) + if(istype(O,/obj/structure/alien/weeds/)) + var/obj/structure/alien/weeds/alien_weeds = O + alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast + alien_weeds.healthcheck() + else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it + del(O) + else if(istype(O,/obj/effect/plantsegment)) + if(prob(50)) del(O) //Kills kudzu too. + // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics + +datum/reagent/atrazine/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) + src = null + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.wear_mask) // If not wearing a mask + C.adjustToxLoss(2) // 4 toxic damage per application, doubled for some reason + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.dna) + if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage + H.adjustToxLoss(50) + ..() + return + if(ismonkey(M)) + var/mob/living/carbon/monkey/MO = M + if(MO.dna) + if(MO.dna.mutantrace == "plant") //plantmen monkeys (diona) take EVEN MORE damage + MO.adjustToxLoss(100) + ..() + return + +/datum/chemical_reaction/atrazine + name = "atrazine" + id = "atrazine" + result = "atrazine" + required_reagents = list("chlorine" = 1, "hydrogen" = 1, "nitrogen" = 1) + result_amount = 3 + mix_message = "The mixture gives off a harsh odor" \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 17bbf565dfd..59ec5175f1a 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -47,7 +47,7 @@ playsound(src.loc, 'sound/effects/spray2.ogg', 50, 1, -6) user.changeNext_move(CLICK_CD_RANGE*2) - + if(reagents.has_reagent("sacid")) message_admins("[key_name_admin(user)] fired sulphuric acid from \a [src].") log_game("[key_name(user)] fired sulphuric acid from \a [src].") @@ -226,7 +226,7 @@ /obj/item/weapon/reagent_containers/spray/plantbgone/New() ..() - reagents.add_reagent("plantbgone", 100) + reagents.add_reagent("atrazine", 100) /obj/item/weapon/reagent_containers/spray/plantbgone/afterattack(atom/A as mob|obj, mob/user as mob, proximity)