adds a chem for grubs

grubs use this chem to burn people
This commit is contained in:
Ketrai
2017-09-05 15:57:11 +02:00
committed by GitHub
parent a091d67d7e
commit 6dfbb1cda3
+113 -259
View File
@@ -1,286 +1,140 @@
///////////////////////////////////////////////////////////////////////////////////
/// Micro/Macro chemicals
/datum/chemical_reaction/sizeoxadone
name = "sizeoxadone"
id = "sizeoxadone"
result = "sizeoxadone"
required_reagents = list("clonexadone" = 1, "tramadol" = 3, "phoron" = 1)
catalysts = list("phoron" = 5)
result_amount = 5
////////////////////////////
/// NW's shrinking serum ///
////////////////////////////
/datum/chemical_reaction/macrocillin
/datum/reagent/macrocillin
name = "Macrocillin"
id = "macrocillin"
result = "macrocillin"
// POLARISTODO requires_heating = 1
required_reagents = list("sizeoxadone" = 20, "diethylamine" = 20)
result_amount = 1
description = "Glowing yellow liquid."
reagent_state = LIQUID
color = "#FFFF00" // rgb: 255, 255, 0
metabolism = 0.01
/datum/chemical_reaction/microcillin
/datum/reagent/macrocillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(M.size_multiplier < RESIZE_HUGE)
M.resize(M.size_multiplier+0.01)//Incrrease 1% per tick.
return
/datum/reagent/microcillin
name = "Microcillin"
id = "microcillin"
result = "microcillin"
// POLARISTODO requires_heating = 1
required_reagents = list("sizeoxadone" = 20, "sodiumchloride" = 20)
result_amount = 1
description = "Murky purple liquid."
reagent_state = LIQUID
color = "#800080"
metabolism = 0.01
/datum/chemical_reaction/normalcillin
/datum/reagent/microcillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(M.size_multiplier > RESIZE_TINY)
M.resize(M.size_multiplier-0.01) //Decrease 1% per tick.
return
/datum/reagent/normalcillin
name = "Normalcillin"
id = "normalcillin"
result = "normalcillin"
// POLARISTODO requires_heating = 1
required_reagents = list("sizeoxadone" = 20, "leporazine" = 20)
result_amount = 1
description = "Translucent cyan liquid."
reagent_state = LIQUID
color = "#00FFFF"
metabolism = 0.01 //One unit will be just enough to bring someone from 200% to 100%
/datum/chemical_reaction/dontcrossthebeams
name = "Don't Cross The Beams"
id = "dontcrossthebeams"
result = null
required_reagents = list("microcillin" = 1, "macrocillin" = 1)
/datum/reagent/normalcillin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(M.size_multiplier > RESIZE_NORMAL)
M.resize(M.size_multiplier-0.01) //Decrease by 1% size per tick.
else if(M.size_multiplier < RESIZE_NORMAL)
M.resize(M.size_multiplier+0.01) //Increase 1% per tick.
return
/datum/chemical_reaction/dontcrossthebeams/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
playsound(location, 'sound/weapons/gauss_shoot.ogg', 50, 1)
var/datum/effect/effect/system/grav_pull/s = new /datum/effect/effect/system/grav_pull
s.set_up(3, 3, location)
s.start()
holder.clear_reagents()
///////////////////////////////////////////////////////////////////////////////////
/// Vore Drugs
/datum/reagent/sizeoxadone
name = "Sizeoxadone"
id = "sizeoxadone"
description = "A volatile liquid used as a precursor to size-altering chemicals. Causes dizziness if taken unprocessed."
reagent_state = LIQUID
color = "#1E90FF"
overdose = REAGENTS_OVERDOSE
/datum/chemical_reaction/ickypak
/datum/reagent/sizeoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.make_dizzy(1)
if(!M.confused) M.confused = 1
M.confused = max(M.confused, 20)
return
////////////////////////// Anti-Noms Drugs //////////////////////////
/datum/reagent/ickypak
name = "Ickypak"
id = "ickypak"
result = "ickypak"
required_reagents = list("hyperzine" = 4, "fluorosurfactant" = 1)
result_amount = 5
description = "A foul-smelling green liquid, for inducing muscle contractions to expel accidentally ingested things."
reagent_state = LIQUID
color = "#0E900E"
overdose = REAGENTS_OVERDOSE
/datum/chemical_reaction/unsorbitol
/datum/reagent/ickypak/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.make_dizzy(1)
M.adjustHalLoss(2)
for(var/I in M.vore_organs)
var/datum/belly/B = M.vore_organs[I]
for(var/atom/movable/A in B.internal_contents)
if(isliving(A))
var/mob/living/P = A
if(P.absorbed)
continue
if(prob(5))
playsound(M, 'sound/effects/splat.ogg', 50, 1)
B.release_specific_contents(A)
return
/datum/reagent/unsorbitol
name = "Unsorbitol"
id = "unsorbitol"
result = "unsorbitol"
required_reagents = list("mutagen" = 3, "lipozine" = 2)
result_amount = 5
description = "A frothy pink liquid, for causing cellular-level hetrogenous structure separation."
reagent_state = LIQUID
color = "#EF77E5"
overdose = REAGENTS_OVERDOSE
///////////////////////////////////////////////////////////////////////////////////
/// Other Drugs
/datum/chemical_reaction/adranol
name = "Adranol"
id = "adranol"
result = "adranol"
required_reagents = list("milk" = 2, "hydrogen" = 1, "potassium" = 1)
result_amount = 3
/datum/reagent/unsorbitol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.make_dizzy(1)
M.adjustHalLoss(1)
if(!M.confused) M.confused = 1
M.confused = max(M.confused, 20)
M.hallucination += 15
///////////////////////////////
//SLIME CORES BELOW HERE///////
///////////////////////////////
for(var/I in M.vore_organs)
var/datum/belly/B = M.vore_organs[I]
if(B.digest_mode == DM_ABSORB) //Turn off absorbing on bellies
B.digest_mode = DM_HOLD
for(var/mob/living/P in B.internal_contents)
if(!P.absorbed)
continue
/datum/chemical_reaction/slime_food
name = "Slime Bork"
id = "m_tele2"
result = null
required_reagents = list("phoron" = 10, "slimejelly" = 10, "nutriment" = 10)
result_amount = 1
on_reaction(var/datum/reagents/holder)
else if(prob(1))
playsound(M, 'sound/vore/schlorp.ogg', 50, 1)
P.absorbed = 0
M.visible_message("<font color='green'><b>Something spills into [M]'s [lowertext(B.name)]!</b></font>")
return
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks // BORK BORK BORK
//Special toxins for solargrubs
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
/* Removed at some point, unsure what to replace with
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
*/
for(var/i = 1, i <= 4 + rand(1,2), i++)
var/chosen = pick(borks)
var/obj/B = new chosen
if(B)
B.loc = get_turf(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(B, pick(NORTH,SOUTH,EAST,WEST))
/datum/reagent/grubshock
name = "200 V" //in other words a painful shock
id = "shockchem"
description = "A liquid that quickly dissapates to deliver a painful shock."
reagent_state = LIQUID
color = "#E4EC2F"
metabolism = 2.50
var/power = 11
/datum/chemical_reaction/materials
name = "Slime materials"
id = "slimematerial"
result = null
required_reagents = list("phoron" = 20, "slimejelly" = 40, "aluminum" = 20) //Woah there! You have the possibility of making diamonds! 8 ground up slimes required for one of these, and you still have a 10% chance for it to fail.
result_amount = 1
on_reaction(var/datum/reagents/holder)
var/fail_chance = rand(1,1000)
if(fail_chance == 1) // 0.1% chance of exploding, so scientists don't exclusively abuse this to obtain materials.
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'>The solution begins to vibrate violently!</span>"), 1) // It was at this moment, the Xenobiologist knew... he fucked up.
sleep(30)
playsound(get_turf(holder.my_atom), 'sound/items/Welder2.ogg', 100, 1)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'>The reaction begins to rapidly sizzle and swell outwards!</span>"), 1)
sleep(20)
explosion(get_turf(holder.my_atom), 0 ,4, 8) //Enough to cause severe damage in the area, but not so much that it'll instantly gib the person.
empulse(get_turf(holder.my_atom), 3, 7) //Uh oh, it produced some uranium, too! EMP blast!
return
if(fail_chance < 101) // 10% chance of it not working at all.
playsound(get_turf(holder.my_atom), 'sound/items/Welder.ogg', 100, 1)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'>The slime core fizzles disappointingly.</span>"), 1)
return
var/blocked = list(/obj/item/stack/material, /obj/item/stack/material/cyborg, /obj/item/stack/material/cyborg/plastic, /obj/item/stack/material/cyborg/plasteel, /obj/item/stack/material/cyborg/glass/reinforced, /obj/item/stack/material/cyborg/wood, /obj/item/stack/material/animalhide/human, /obj/item/stack/material/animalhide/corgi, /obj/item/stack/material/animalhide/cat, /obj/item/stack/material/animalhide/monkey, /obj/item/stack/material/animalhide/lizard , /obj/item/stack/material/animalhide/xeno, /obj/item/stack/material/cyborg, /obj/item/stack/material/cyborg/glass/reinforced)
var/list/material = typesof(/obj/item/stack/material) - blocked
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
/* Removed at some point, unsure what to replace with
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
*/
var/spawn_amount = rand(1,50)
var/chosen = pick(material)
var/obj/item/stack/material/C = new chosen
C.amount = spawn_amount
C.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slimelight
name = "Slime Glow"
id = "m_glow"
result = null
required_reagents = list("phoron" = 5, "slimejelly" = 5, "water" = 10) //Takes 10 water so it doesn't mess with the frost oil.
result_amount = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'> The contents of the slime core harden and begin to emit a warm, bright light.</span>"), 1)
var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
F.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slimephoron
name = "Slime Phoron"
id = "m_plasma"
result = null
required_reagents = list("phoron" = 20, "uranium" = 20, "slimejelly" = 20)
result_amount = 1
on_reaction(var/datum/reagents/holder)
var/obj/item/stack/material/phoron/P = new /obj/item/stack/material/phoron
P.amount = 10
P.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slimefreeze
name = "Slime Freeze"
id = "m_freeze"
result = null
required_reagents = list("phoron" = 10, "coolant" = 10, "slimejelly" = 10)
result_amount = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'>The slime extract begins to vibrate violently!</span>"), 1)
sleep(50)
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/M in range (get_turf(holder.my_atom), 7))
M.bodytemperature -= 140
M << "<span class='notice'> You suddenly feel a chill!</span>"
/datum/chemical_reaction/slimefrost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("phoron" = 5, "slimejelly" = 5, "water" = 5, "coolant" = 5)
result_amount = 10
/datum/chemical_reaction/slimefire
name = "Slime fire"
id = "m_fire"
result = null
required_reagents = list("phoron" = 60, "slimejelly" = 30, "potassium" = 30)
result_amount = 1
on_reaction(var/datum/reagents/holder)
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='warning'>The slime extract begins to vibrate violently!</span>"), 1)
sleep(50)
var/turf/location = get_turf(holder.my_atom.loc)
for(var/turf/simulated/floor/target_tile in range(0,location))
target_tile.assume_gas("phoron", 25, 1400)
spawn (0) target_tile.hotspot_expose(700, 400)
/datum/chemical_reaction/slimeify
name = "Advanced Mutation Toxin"
id = "advmutationtoxin2"
result = "advmutationtoxin"
required_reagents = list("phoron" = 15, "slimejelly" = 15, "mutationtoxin" = 15) //In case a xenobiologist wants to become a fully fledged slime person.
result_amount = 1
/datum/chemical_reaction/slimeheal //A slime healing mixture. Why not.
name = "Slime Health"
id = "slimeheal"
result = "null"
required_reagents = list("phoron" = 10, "bicaridine" = 10, "kelotane" = 10, "inaprovaline" = 10, "slimejelly" = 10)
on_reaction(var/datum/reagents/holder, var/created_volume)
for (var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null))
C << "<span class='notice'>A wave of energy suddenly invigorates you.</span>"
C.adjustBruteLoss(-25)
C.adjustFireLoss(-25)
C.adjustToxLoss(-25)
C.adjustOxyLoss(-25)
C.adjustBrainLoss(-25)
C.adjustCloneLoss(-25)
C.updatehealth()
/datum/chemical_reaction/slimejelly
name = "Slime Jam"
id = "m_jam"
result = "slimejelly"
required_reagents = list("phoron" = 20, "sugar" = 50, "lithium" = 50) //In case a xenobiologist is impatient and is willing to drain their dispenser resources, along with plasma!
result_amount = 5
/datum/chemical_reaction/slimevore
name = "Slime Vore" // Hostile vore mobs only
id = "m_tele"
result = null
required_reagents = list("phoron" = 20, "nutriment" = 20, "sugar" = 20, "mutationtoxin" = 20) //Can't do slime jelly as it'll conflict with another, but mutation toxin will do.
result_amount = 1
on_reaction(var/datum/reagents/holder)
var/mob_path = /mob/living/simple_animal
var/blocked = list(
/mob/living/simple_animal/hostile/mimic,
/mob/living/simple_animal/hostile/alien/queen
)//exclusion list for things you don't want the reaction to create.
var/list/voremobs = typesof(mob_path) - mob_path - blocked // list of possible hostile mobs
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
/* Removed at some point, unsure what to replace with
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
*/
var/spawn_count = rand(1,3)
for(var/i = 1, i <= spawn_count, i++)
var/chosen = pick(voremobs)
var/mob/living/simple_animal/hostile/C = new chosen
C.faction = "slimesummon"
C.loc = get_turf(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
/datum/reagent/grubshock/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
M.take_organ_damage(0, removed * power * 0.2)