Merge pull request #718 from Fox-McCloud/For-Tweaks

[Goonchem] Few Recipes Tweaks+Firefighting Foam
This commit is contained in:
ZomgPonies
2015-04-03 17:09:42 -04:00
8 changed files with 101 additions and 40 deletions
@@ -16,13 +16,6 @@
icon_state = "ash"
anchored = 1
/obj/effect/decal/cleanable/greenglow
New()
..()
spawn(1200)// 2 minutes
qdel(src)
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
@@ -45,6 +38,16 @@
icon = 'icons/effects/effects.dmi'
icon_state = "flour"
/obj/effect/decal/cleanable/flour/foam
name = "Fire fighting foam"
desc = "It's foam."
color = "#EBEBEB"
New()
..()
spawn(150)// 15 seconds
qdel(src)
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
@@ -56,6 +59,11 @@
icon = 'icons/effects/effects.dmi'
icon_state = "greenglow"
New()
..()
spawn(1200)// 2 minutes
qdel(src)
/obj/effect/decal/cleanable/cobweb
name = "cobweb"
desc = "Somebody should remove that."
+2 -2
View File
@@ -11,7 +11,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
icon = 'icons/effects/effects.dmi'
mouse_opacity = 0
unacidable = 1//So effect are not targeted by alien acid.
/datum/effect/effect/proc/fadeOut(var/atom/A, var/frames = 16)
if(A.alpha == 0) //Handle already transparent case
return
@@ -426,7 +426,7 @@ steam.start() -- spawns the effect
/obj/effect/effect/chem_smoke/Move()
..()
for(var/atom/A in view(2, src))
if(reagents.has_reagent("radium")||reagents.has_reagent("uranium")||reagents.has_reagent("carbon")||reagents.has_reagent("thermite"))//Prevents unholy radium spam by reducing the number of 'greenglows' down to something reasonable -Sieve
if(reagents.has_reagent("radium")||reagents.has_reagent("uranium")||reagents.has_reagent("carbon")||reagents.has_reagent("thermite")||reagents.has_reagent("synthflesh")||reagents.has_reagent("firefighting_foam")||reagents.has_reagent("honey"))//Prevents unholy radium spam by reducing the number of 'greenglows' down to something reasonable -Sieve
if(prob(5))
reagents.reaction(A)
else
+1 -1
View File
@@ -61,7 +61,7 @@
// identify_probability = 0
New()
..()
var/global/list/chems_only = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","cryptobiolin","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","clonexadone","spaceacillin","carpotoxin","mindbreaker","fluorosurfactant","foaming_agent","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin")
var/global/list/chems_only = list("slimejelly","blood","water","lube","charcoal","toxin","cyanide","morphine","epinephrine","space_drugs","serotrotium","oxygen","copper","nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine","fluorine","sodium","phosphorus","lithium","sugar","sacid","facid","glycerol","radium","mutadone","thermite","mutagen","virusfood","iron","gold","silver","uranium","aluminum","silicon","fuel","cleaner","atrazine","plasma","teporone","cryptobiolin","lexorin","silver_sulfadiazine","salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol","potass_iodide","pen_acid","mannitol","oculine","styptic_powder","methamphetamine","cryoxadone","clonexadone","spaceacillin","carpotoxin","mindbreaker","fluorosurfactant","fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium","lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin","enzyme","nothing","salglu_solution","antifreeze","neurotoxin")
var/global/list/rare_chems = list("minttoxin","nanites","xenomicrobes","adminordrazine")
var/datum/reagent/R = pick(chems_only + rare_chems)
@@ -390,8 +390,8 @@
var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src)
B1.reagents.add_reagent("aluminum", 30)
B2.reagents.add_reagent("foaming_agent", 10)
B2.reagents.add_reagent("facid", 10)
B2.reagents.add_reagent("fluorosurfactant", 10)
B2.reagents.add_reagent("sacid", 10)
beakers += B1
beakers += B2
@@ -173,8 +173,8 @@
New()
..()
reagents.add_reagent("aluminum", 15)
reagents.add_reagent("foaming_agent", 5)
reagents.add_reagent("facid", 5)
reagents.add_reagent("fluorosurfactant", 5)
reagents.add_reagent("sacid", 5)
//This one is for future syringe guns update
/obj/item/projectile/bullet/dart/syringe
+5 -12
View File
@@ -288,7 +288,7 @@ datum
id = "lube"
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
reagent_state = LIQUID
color = "#009CA8" // rgb: 0, 156, 168
color = "#1BB1AB"
reaction_turf(var/turf/simulated/T, var/volume)
if (!istype(T)) return
@@ -994,7 +994,7 @@ datum
fuel
name = "Welding fuel"
id = "fuel"
description = "Required for welders. Flamable."
description = "A highly flammable blend of basic hydrocarbons, mostly Acetylene. Useful for both welding and organic chemistry, and can be fortified into a heavier oil."
reagent_state = LIQUID
color = "#060606"
@@ -1144,7 +1144,7 @@ datum
id = "lexorin"
description = "Lexorin temporarily stops respiration. Causes tissue damage."
reagent_state = LIQUID
color = "#32127A" // rgb: 50, 18, 122
color = "#52685D"
metabolization_rate = 0.2
on_mob_life(var/mob/living/M as mob)
@@ -1280,7 +1280,7 @@ datum
id = "clonexadone"
description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' clones that get ejected early when used in conjunction with a cryo tube."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
color = "#0000C8" // rgb: 200, 165, 220
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -1423,7 +1423,7 @@ datum
return
//foam precursor
//foam
fluorosurfactant
name = "Fluorosurfactant"
@@ -1435,13 +1435,6 @@ datum
// metal foaming agent
// this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually
foaming_agent
name = "Foaming agent"
id = "foaming_agent"
description = "A agent that yields metallic foam when mixed with light metal and a strong acid."
reagent_state = SOLID
color = "#664B63" // rgb: 102, 75, 99
ammonia
name = "Ammonia"
id = "ammonia"
+5 -12
View File
@@ -102,7 +102,8 @@ datum
id = "lube"
result = "lube"
required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1)
result_amount = 4
result_amount = 3
mix_message = "The substance turns a striking cyan and becomes oily."
mitocholide
name = "mitocholide"
@@ -273,6 +274,7 @@ datum
result = "fluorosurfactant"
required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1)
result_amount = 5
mix_message = "A head of foam results from the mixture's constant fizzing."
foam
@@ -308,7 +310,7 @@ datum
name = "Metal Foam"
id = "metalfoam"
result = null
required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "facid" = 1)
required_reagents = list("aluminum" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -328,7 +330,7 @@ datum
name = "Iron Foam"
id = "ironlfoam"
result = null
required_reagents = list("iron" = 3, "foaming_agent" = 1, "facid" = 1)
required_reagents = list("iron" = 3, "fluorosurfactant" = 1, "sacid" = 1)
result_amount = 5
on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -344,15 +346,6 @@ datum
s.start()
return
foaming_agent
name = "Foaming Agent"
id = "foaming_agent"
result = "foaming_agent"
required_reagents = list("lithium" = 1, "hydrogen" = 1)
result_amount = 1
// Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game!
ammonia
name = "Ammonia"
+69 -2
View File
@@ -22,7 +22,7 @@
/datum/reagent/clf3
name = "Chlorine Trifluoride"
id = "clf3"
description = "Makes a temporary 3x3 fireball when it comes into existence, so be careful when mixing. ClF3 applied to a surface burns things that wouldn't otherwise burn, sometimes through the very floors of the station and exposing it to the vacuum of space."
description = "An extremely volatile substance, handle with the utmost care."
reagent_state = LIQUID
color = "#FF0000"
metabolization_rate = 4
@@ -511,4 +511,71 @@ datum/reagent/pyrosium/on_tick()
/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
return
datum/reagent/firefighting_foam
name = "Firefighting foam"
id = "firefighting_foam"
description = "Carbon Tetrachloride is a foam used for fire suppression."
reagent_state = LIQUID
color = "#A0A090"
var/cooling_temperature = 3 // more effective than water
/datum/chemical_reaction/firefighting_foam
name = "firefighting_foam"
id = "firefighting_foam"
result = "firefighting_foam"
required_reagents = list("carbon" = 1, "chlorine" = 1, "sulfur" = 1)
result_amount = 3
mix_message = "The mixture bubbles gently."
datum/reagent/firefighting_foam/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
// Put out fire
if(method == TOUCH)
M.adjust_fire_stacks(-(volume / 5)) // more effective than water
if(M.fire_stacks <= 0)
M.ExtinguishMob()
return
datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume)
if (!istype(T)) return
var/CT = cooling_temperature
src = null
if(!istype(T, /turf/space))
new /obj/effect/decal/cleanable/flour/foam(T) //foam mess; clears up quickly.
var/hotspot = (locate(/obj/fire) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-(CT*1000),lowertemp.temperature / CT) ,0)
lowertemp.react()
T.assume_air(lowertemp)
qdel(hotspot)
return
datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
src = null
var/turf/T = get_turf(O)
var/hotspot = (locate(/obj/fire) in T)
if(hotspot && !istype(T, /turf/space))
var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() )
lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0)
lowertemp.react()
T.assume_air(lowertemp)
del(hotspot)
return
/datum/chemical_reaction/clf3_firefighting
name = "clf3_firefighting"
id = "clf3_firefighting"
result = null
required_reagents = list("firefighting_foam" = 1, "clf3" = 1)
result_amount = 1
mix_message = "The substance violently detonates!"
/datum/chemical_reaction/clf3_firefighting/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
explosion(location,0,0,3)
return