Goon Chemistry Commit 3: Pyrotechnics and other changes

This commit is contained in:
iamgoofball
2015-01-11 08:49:09 -08:00
parent 221385f884
commit 91e5ec9b4e
11 changed files with 272 additions and 99 deletions
@@ -87,11 +87,6 @@
else
user << "<span class='notice'>You need a tighter grip.</span>"
if(istype(I,/obj/item/weapon/reagent_containers/glass/beaker))
user << "It looks like a botanist dumped some compost in [src] during a previous shift. You scoop it up with [I]."
reagents.add_reagent("compost", 15)
return
if(cistern)
if(I.w_class > 3)
user << "<span class='notice'>[I] does not fit.</span>"
@@ -133,10 +128,6 @@
GM.adjustBruteLoss(8)
else
user << "<span class='notice'>You need a tighter grip.</span>"
if(istype(I,/obj/item/weapon/reagent_containers/glass/beaker))
user << "You scoop up the contained reagents with [I]."
reagents.add_reagent("sewage", 15)
return
/obj/machinery/shower
@@ -21,33 +21,9 @@ datum/reagent/nicotine/on_mob_life(var/mob/living/M as mob)
if(volume > 35)
M << "You feel like you smoked too much."
M.adjustToxLoss(1*REM)
..()
return
datum/reagent/jenkem
name = "Jenkem"
id = "jenkem"
description = "A legal chemical compound used as a drug."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
datum/reagent/jenkem/on_mob_life(var/mob/living/carbon/M as mob)
if(!M) M = holder.my_atom
var/high_message = pick("You wonder why the hell you just ingested that.", "You realize you are high as fuck.", "You feel the color blue.", "You ponder the meaning of red.", "You think deeply on the color green.", "You taste a horrible mixture, and you want to throw up, but you hold it back.")
if(prob(30))
M << high_message
if(prob(25))
M.adjustToxLoss(1*REM)
M.dizziness += 1
return
/datum/chemical_reaction/jenkem
name = "Jenkem"
id = "jenkem"
result = "jenkem"
required_reagents = list("sewage" = 1, "compost" = 1)
result_amount = 2
mix_message = "The mixture ferments into a filthy morass."
datum/reagent/crank
name = "Crank"
id = "crank"
@@ -67,6 +43,7 @@ datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
M.adjustBrainLoss(rand(1,10)*REM)
M.adjustToxLoss(rand(1,10)*REM)
M.adjustBruteLoss(rand(1,10)*REM)
..()
return
/datum/chemical_reaction/crank
@@ -109,6 +86,7 @@ datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
overdosed = 1
if(overdosed)
cycle_count++
..()
return
/datum/chemical_reaction/krokodil
@@ -10,7 +10,7 @@ datum/reagent/silver_sulfadiazine
description = "100% chance per cycle of healing 2 points of BURN damage."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 2
metabolization_rate = 2
datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
@@ -19,7 +19,7 @@ datum/reagent/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/meth
M.emote("scream")
if(method == INGEST)
M.adjustToxLoss(0.5*volume)
M << "You probably shouldn't of eaten that. Maybe you should of splashed it on, or used a patch?"
M << "You probably shouldn't of eaten that. Maybe you should of splashed it on?"
..()
return
@@ -29,7 +29,7 @@ datum/reagent/styptic_powder
description = "100% chance per cycle of healing 2 points of BRUTE damage."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 2
metabolization_rate = 2
datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(method == TOUCH)
@@ -38,7 +38,7 @@ datum/reagent/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TO
M.emote("scream")
if(method == INGEST)
M.adjustToxLoss(0.5*volume)
M << "You probably shouldn't of eaten that. Maybe you should of splashed it on, or used a patch?"
M << "You probably shouldn't of eaten that. Maybe you should of splashed it on?"
..()
return
@@ -80,40 +80,13 @@ datum/reagent/charcoal
description = "Heals 2 TOX damage per cycle."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overrides_metab = 1
new_metabolize_rate = 0.5
datum/reagent/charcoal/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(-2*REM)
..()
return
datum/reagent/calomel
name = "Calomel"
id = "calomel"
description = "Increases all depletion rates by 5. +5 TOX damage while health > 20."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overrides_metab = 1
new_metabolize_rate = 5
metabolize_rate = 2
datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.getTotalLoss() < 80)
M.adjustToxLoss(5*REM)
..()
return
/datum/chemical_reaction/calomel
name = "Calomel"
id = "calomel"
result = "calomel"
required_reagents = list("mercury" = 1, "chlorine" = 1)
result_amount = 2
mix_message = "Stinging vapors rise from the solution."
required_temp = 380
/datum/chemical_reaction/charcoal
name = "Charcoal"
id = "charcoal"
@@ -158,7 +131,7 @@ datum/reagent/omnizine
description = "Heals one each of OXY, TOX, BRUTE and BURN per cycle."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/omnizine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -199,8 +172,6 @@ datum/reagent/pen_acid
description = "80% chance of removing 1 RAD. Radiation is cumulative and causes tox+burn."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overrides_metab = 1
new_metabolize_rate = 4
datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -249,7 +220,7 @@ datum/reagent/salbutamol
description = "Heals 6 OXY damage, reduces LOSEBREATH by 4."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -272,7 +243,7 @@ datum/reagent/perfluorodecalin
description = "Heals 25 OXY damage, but you can't talk. 33% chance of healing 1 BRUTE and 1 BURN."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
if(!M) M = holder.my_atom
@@ -299,7 +270,7 @@ datum/reagent/ephedrine
description = "Stun reduction per cycle, increases run speed slightly, minor stamina regeneration buff, stabilizes crit."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
metabolize_rate = 0.3
metabolization_rate = 0.3
datum/reagent/ephedrine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -327,8 +298,6 @@ datum/reagent/diphenhydramine
description = "Stun reduction per cycle, increases run speed slightly, minor stamina regeneration buff, stabilizes crit."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
overrides_metab = 1
new_metabolize_rate = 3
datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness -= 1
+4 -11
View File
@@ -11,17 +11,10 @@ datum/reagent/oil
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
datum/reagent/compost
name = "Compost"
id = "compost"
description = "A slippery solution."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
datum/reagent/sewage
name = "Sewage"
id = "sewage"
description = "A slippery solution."
datum/reagent/stable_plasma
name = "Stable Plasma"
id = "stable_plasma"
description = "Non-flammable plasma locked into a liquid form that cannot ignite or become gaseous/solid."
reagent_state = LIQUID
color = "#C8A5DC" // rgb: 200, 165, 220
@@ -0,0 +1,213 @@
#define SOLID 1
#define LIQUID 2
#define GAS 3
#define REM REAGENTS_EFFECT_MULTIPLIER
/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."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
/datum/reagent/clf3/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
..()
return
/datum/chemical_reaction/clf3
name = "Chlorine Trifluoride"
id = "clf3"
result = "clf3"
required_reagents = list("chlorine" = 1, "fluorine" = 3)
result_amount = 4
required_temp = 424
/datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
if(istype(T))
T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, created_volume)
return
/datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume)
if(istype(T, /turf/simulated/floor/))
var/turf/simulated/floor/F = T
if(prob(66))
F.make_plating()
if(prob(11))
F.ChangeTurf(/turf/space)
return
/datum/reagent/clf3/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
if(method == TOUCH)
M.adjust_fire_stacks(20)
return
/datum/reagent/sorium
name = "Sorium"
id = "sorium"
description = "Sends everything flying from the detonation point."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
/datum/chemical_reaction/sorium
name = "Sorium"
id = "sorium"
result = "sorium"
required_reagents = list("mercury" = 1, "oxygen" = 1, "nitrogen" = 1, "carbon" = 1)
result_amount = 4
required_temp = 474
/datum/reagent/sorium/reaction_turf(var/turf/simulated/T, var/volume)
if(istype(T, /turf/simulated/floor/))
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_away(X,T)
step_away(X,T)
step_away(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_away(H,T)
step_away(H,T)
step_away(H,T)
return
/datum/reagent/sorium/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
if(method == TOUCH)
var/turf/simulated/T = get_turf(M)
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_away(X,T)
step_away(X,T)
step_away(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/S = H.shoes
if(S.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_away(H,T)
step_away(H,T)
step_away(H,T)
return
/datum/chemical_reaction/sorium/on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_away(X,T)
step_away(X,T)
step_away(X,T)
step_away(X,T)
step_away(X,T)
step_away(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_away(H,T)
step_away(H,T)
step_away(H,T)
step_away(H,T)
step_away(H,T)
step_away(H,T)
return
/datum/reagent/liquid_dark_matter
name = "Liquid Dark Matter"
id = "liquid_dark_matter"
description = "Sucks everything into the detonation point."
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
/datum/chemical_reaction/liquid_dark_matter
name = "Liquid Dark Matter"
id = "liquid_dark_matter"
result = "liquid_dark_matter"
required_reagents = list("stable_plasma" = 1, "radium" = 1, "carbon" = 1)
result_amount = 3
required_temp = 474
/datum/reagent/liquid_dark_matter/reaction_turf(var/turf/simulated/T, var/volume)
if(istype(T, /turf/simulated/floor/))
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
return
/datum/reagent/liquid_dark_matter/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
if(method == TOUCH)
var/turf/simulated/T = get_turf(M)
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/S = H.shoes
if(S.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
return
/datum/chemical_reaction/liquid_dark_matter/on_reaction(var/datum/reagents/holder, var/created_volume)
var/turf/simulated/T = get_turf(holder.my_atom)
for(var/atom/X in orange(5,T))
if(istype(X, /atom/movable))
if((X) &&(!X:anchored) && (!istype(X,/mob/living/carbon/human)))
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
step_towards(X,T)
else if(istype(X,/mob/living/carbon/human))
var/mob/living/carbon/human/H = X
if(istype(H.shoes,/obj/item/clothing/shoes/magboots))
var/obj/item/clothing/shoes/magboots/M = H.shoes
if(M.magpulse)
continue
H.apply_effect(1, WEAKEN, 0)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
step_towards(H,T)
return
@@ -5,4 +5,30 @@
THE REQUESTED DON'T PORT LIST: IF YOU PORT THESE THE GOONS WILL MURDER US IN OUR SLEEP SO PLEASE DON'T KTHX - Iamgoofball
Any of the Secret Chems
Goon in-joke chems (Eg. Cat Drugs, Hairgrownium)
Liquid Electricity
Rajajajah
/datum/reagent/blankgoonchembase
name = "blank goonchem base"
id = "blankgoonchembase"
description = "A blank chem"
reagent_state = LIQUID
color = "#60A584" // rgb: 96, 165, 132
/datum/reagent/blankgoonchembase/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
..()
return
/datum/chemical_reaction/blankgoonchembase
name = "blank goonchem base"
id = "blankgoonchembase"
result = "blankgoonchembase"
required_reagents = list("diphenhydramine" = 1, "morphine" = 1, "cleaner" = 1)
result_amount = 3
mix_message = "The mixture dries into a pale blue powder."
required_temp = 420
*/
@@ -10,7 +10,7 @@ datum/reagent/polonium
description = "A toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
metabolize_rate = 0.1
metabolization_rate = 0.1
datum/reagent/polonium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -25,7 +25,7 @@ datum/reagent/histamine
description = "A toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/histamine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -78,7 +78,7 @@ datum/reagent/venom
description = "A toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/venom/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss((0.1*volume)*REM)
@@ -96,7 +96,7 @@ datum/reagent/neurotoxin2
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
var/cycle_count = 0
metabolize_rate = 1
metabolization_rate = 1
datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob)
cycle_count++
@@ -123,7 +123,7 @@ datum/reagent/cyanide
description = "A highly toxic chemical."
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
metabolize_rate = 0.1
metabolization_rate = 0.1
datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
@@ -145,12 +145,12 @@ datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
required_temp = 380
/datum/reagent/questionmark // food poisoning
name = "????"
name = "Bad Food"
id = "????"
description = "????"
reagent_state = LIQUID
color = "#CF3600" // rgb: 207, 54, 0
metabolize_rate = 0.2
metabolization_rate = 0.2
datum/reagent/questionmark/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
+7 -7
View File
@@ -11,15 +11,15 @@
icon_state = "dispenser"
use_power = 1
idle_power_usage = 40
var/energy = 50
var/max_energy = 50
var/energy = 100
var/max_energy = 100
var/amount = 30
var/beaker = null
var/recharged = 0
var/recharge_delay = 15 //Time it game ticks between recharges
var/recharge_delay = 5 //Time it game ticks between recharges
var/list/dispensable_reagents = list("hydrogen","lithium","carbon","nitrogen","oxygen","fluorine",
"sodium","aluminium","silicon","phosphorus","sulfur","chlorine","potassium","iron",
"copper","mercury","radium","water","ethanol","sugar","sacid","fuel","silver","iodine","bromine","fluorine")
"copper","mercury","radium","water","ethanol","sugar","sacid","fuel","silver","iodine","bromine","fluorine","stable_plasma")
/obj/machinery/chem_dispenser/proc/recharge()
if(stat & (BROKEN|NOPOWER)) return
@@ -1267,8 +1267,8 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
if(!beaker)
user << "Please insert a beaker."
return
var/temperature = input("Please input desired temperature between 1 and 1000.", name, set_temp) as num
if(temperature > 1000 || temperature < 1)
var/temperature = input("Please input desired temperature between 1 and 3000.", name, set_temp) as num
if(temperature > 3000 || temperature < 1)
user << "Invalid temperature."
return
user << "Adjusting chemical temperature..."
@@ -1279,4 +1279,4 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
B.loc = get_turf(src)
beaker = null
icon_state = "mixer0b"
B.reagents.handle_reactions()
B.reagents.handle_reactions()
@@ -23,6 +23,7 @@ datum/reagent
//var/list/viruses = list()
var/color = "#000000" // rgb: 0, 0, 0 (does not support alpha channels - yet!)
var/metabolization_rate = REAGENTS_METABOLISM
var/overrides_metab = 0
datum/reagent/proc/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) //By default we have a chance to transfer some
if(!istype(M, /mob/living))
@@ -15,6 +15,7 @@
var/list/can_be_placed_into = list(
/obj/machinery/chem_master/,
/obj/machinery/chem_dispenser/,
/obj/machinery/chem_heater/,
/obj/machinery/reagentgrinder,
/obj/structure/table,
/obj/structure/closet,
+1
View File
@@ -1255,6 +1255,7 @@
#include "code\modules\reagents\Chemistry-Goon-420BlazeIt.dm"
#include "code\modules\reagents\Chemistry-Goon-Medicine.dm"
#include "code\modules\reagents\Chemistry-Goon-Other.dm"
#include "code\modules\reagents\Chemistry-Goon-Pyrotechnics.dm"
#include "code\modules\reagents\Chemistry-Goon-Readme.dm"
#include "code\modules\reagents\Chemistry-Goon-Toxins.dm"
#include "code\modules\reagents\Chemistry-Holder.dm"