Merge branch 'master' of https://github.com/PolarisSS13/Polaris into attackcall

This commit is contained in:
Yoshax
2016-05-29 00:56:57 +01:00
50 changed files with 2642 additions and 642 deletions
@@ -383,6 +383,10 @@
if(type == CHEM_TOUCH)
var/datum/reagents/R = C.touching
return trans_to_holder(R, amount, multiplier, copy)
else if(isxeno(target))
var/mob/living/simple_animal/xeno/X = target
var/datum/reagents/R = X.reagents
return trans_to_holder(R, amount, multiplier, copy)
else
var/datum/reagents/R = new /datum/reagents(amount)
. = trans_to_holder(R, amount, multiplier, copy)
@@ -474,42 +474,46 @@
color = "#13BC5E"
/datum/reagent/slimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.species.name != "Promethean")
M << "<span class='danger'>Your flesh rapidly mutates!</span>"
H.set_species("Promethean")
H.shapeshifter_set_colour("#05FF9B")
H.verbs -= /mob/living/carbon/human/proc/shapeshifter_select_colour
if(M.isSynthetic())
return
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
return
if(M.dna)
if(prob(removed * 0.1))
randmuti(M)
if(prob(98))
randmutb(M)
else
randmutg(M)
domutcheck(M, null)
M.UpdateAppearance()
M.apply_effect(16 * removed, IRRADIATE, 0)
/datum/reagent/aslimetoxin
name = "Advanced Mutation Toxin"
id = "amutationtoxin"
description = "An advanced corruptive toxin produced by slimes."
name = "Docility Toxin"
id = "docilitytoxin"
description = "A corruptive toxin produced by slimes."
reagent_state = LIQUID
color = "#13BC5E"
color = "#FF69B4"
/datum/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) // TODO: check if there's similar code anywhere else
if(M.transforming)
if(M.isSynthetic())
return
M << "<span class='danger'>Your flesh rapidly mutates!</span>"
M.transforming = 1
M.canmove = 0
M.icon = null
M.overlays.Cut()
M.invisibility = 101
for(var/obj/item/W in M)
if(istype(W, /obj/item/weapon/implant)) //TODO: Carn. give implants a dropped() or something
qdel(W)
continue
W.layer = initial(W.layer)
W.loc = M.loc
W.dropped(M)
var/mob/living/carbon/slime/new_mob = new /mob/living/carbon/slime(M.loc)
new_mob.a_intent = "hurt"
new_mob.universal_speak = 1
if(M.mind)
M.mind.transfer_to(new_mob)
else
new_mob.key = M.key
qdel(M)
var/mob/living/carbon/human/H = M
if(istype(H) && (H.species.flags & NO_SCAN))
return
if(M.dna)
if(prob(removed * 0.1))
randmuti(M)
if(prob(98))
randmutb(M)
else
randmutg(M)
domutcheck(M, null)
M.UpdateAppearance()
M.apply_effect(6 * removed, IRRADIATE, 0)
+11 -319
View File
@@ -998,333 +998,25 @@
/datum/chemical_reaction/slime
var/required = null
//Slimed monkeys
/datum/chemical_reaction/slime/can_happen(var/datum/reagents/holder)
if(holder.my_atom && istype(holder.my_atom, required))
var/obj/item/slime_extract/T = holder.my_atom
if(T.Uses > 0)
return ..()
return ..()
return 0
/datum/chemical_reaction/slime/on_reaction(var/datum/reagents/holder)
var/obj/item/slime_extract/T = holder.my_atom
T.Uses--
if(T.Uses <= 0)
T.visible_message("\icon[T]<span class='notice'>\The [T]'s power is consumed in the reaction.</span>")
T.name = "used slime extract"
T.desc = "This extract has been used up."
//Grey
/datum/chemical_reaction/slime/spawn
name = "Slime Spawn"
id = "m_spawn"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/grey
/datum/chemical_reaction/slime/spawn/on_reaction(var/datum/reagents/holder)
holder.my_atom.visible_message("<span class='warning'>Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!</span>")
var/mob/living/carbon/slime/S = new /mob/living/carbon/slime
S.loc = get_turf(holder.my_atom)
..()
/datum/chemical_reaction/slime/monkey
name = "Slime Monkey"
id = "m_monkey"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required = /obj/item/slime_extract/grey
/datum/chemical_reaction/slime/monkey/on_reaction(var/datum/reagents/holder)
for(var/i = 1, i <= 3, i++)
var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube
M.loc = get_turf(holder.my_atom)
..()
//Green
/datum/chemical_reaction/slime/mutate
name = "Mutation Toxin"
id = "mutationtoxin"
result = "mutationtoxin"
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/green
//Metal
/datum/chemical_reaction/slime/metal
name = "Slime Metal"
id = "m_metal"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/metal
/datum/chemical_reaction/slime/metal/on_reaction(var/datum/reagents/holder)
var/obj/item/stack/material/steel/M = new /obj/item/stack/material/steel
M.amount = 15
M.loc = get_turf(holder.my_atom)
var/obj/item/stack/material/plasteel/P = new /obj/item/stack/material/plasteel
P.amount = 5
P.loc = get_turf(holder.my_atom)
..()
//Gold - removed
/datum/chemical_reaction/slime/crit
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/gold
mix_message = "The slime core fizzles disappointingly."
//Silver
/datum/chemical_reaction/slime/bork
name = "Slime Bork"
id = "m_tele2"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/silver
/datum/chemical_reaction/slime/bork/on_reaction(var/datum/reagents/holder)
var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
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))
..()
//Blue
/datum/chemical_reaction/slime/frost
name = "Slime Frost Oil"
id = "m_frostoil"
result = "frostoil"
required_reagents = list("phoron" = 1)
result_amount = 10
required = /obj/item/slime_extract/blue
//Dark Blue
/datum/chemical_reaction/slime/freeze
name = "Slime Freeze"
id = "m_freeze"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/darkblue
mix_message = "The slime extract begins to vibrate violently!"
/datum/chemical_reaction/slime/freeze/on_reaction(var/datum/reagents/holder)
..()
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='warning'>You feel a chill!</span>"
//Orange
/datum/chemical_reaction/slime/casp
name = "Slime Capsaicin Oil"
id = "m_capsaicinoil"
result = "capsaicin"
required_reagents = list("blood" = 1)
result_amount = 10
required = /obj/item/slime_extract/orange
/datum/chemical_reaction/slime/fire
name = "Slime fire"
id = "m_fire"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/orange
mix_message = "The slime extract begins to vibrate violently!"
/datum/chemical_reaction/slime/fire/on_reaction(var/datum/reagents/holder)
..()
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)
//Yellow
/datum/chemical_reaction/slime/overload
name = "Slime EMP"
id = "m_emp"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required = /obj/item/slime_extract/yellow
/datum/chemical_reaction/slime/overload/on_reaction(var/datum/reagents/holder, var/created_volume)
..()
empulse(get_turf(holder.my_atom), 3, 7)
/datum/chemical_reaction/slime/cell
name = "Slime Powercell"
id = "m_cell"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/yellow
/datum/chemical_reaction/slime/cell/on_reaction(var/datum/reagents/holder, var/created_volume)
var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime
P.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slime/glow
name = "Slime Glow"
id = "m_glow"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required = /obj/item/slime_extract/yellow
mix_message = "The contents of the slime core harden and begin to emit a warm, bright light."
/datum/chemical_reaction/slime/glow/on_reaction(var/datum/reagents/holder, var/created_volume)
..()
var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime
F.loc = get_turf(holder.my_atom)
//Purple
/datum/chemical_reaction/slime/psteroid
name = "Slime Steroid"
id = "m_steroid"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/purple
/datum/chemical_reaction/slime/psteroid/on_reaction(var/datum/reagents/holder, var/created_volume)
..()
var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid
P.loc = get_turf(holder.my_atom)
/datum/chemical_reaction/slime/jam
name = "Slime Jam"
id = "m_jam"
result = "slimejelly"
required_reagents = list("sugar" = 1)
result_amount = 10
required = /obj/item/slime_extract/purple
//Dark Purple
/datum/chemical_reaction/slime/plasma
name = "Slime Plasma"
id = "m_plasma"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/darkpurple
/datum/chemical_reaction/slime/plasma/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)
//Red
/datum/chemical_reaction/slime/glycerol
name = "Slime Glycerol"
id = "m_glycerol"
result = "glycerol"
required_reagents = list("phoron" = 1)
result_amount = 8
required = /obj/item/slime_extract/red
/datum/chemical_reaction/slime/bloodlust
name = "Bloodlust"
id = "m_bloodlust"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required = /obj/item/slime_extract/red
/datum/chemical_reaction/slime/bloodlust/on_reaction(var/datum/reagents/holder)
..()
for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null))
slime.rabid = 1
slime.visible_message("<span class='warning'>The [slime] is driven into a frenzy!</span>")
//Pink
/datum/chemical_reaction/slime/ppotion
name = "Slime Potion"
id = "m_potion"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/pink
/datum/chemical_reaction/slime/ppotion/on_reaction(var/datum/reagents/holder)
..()
var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion
P.loc = get_turf(holder.my_atom)
//Black
/datum/chemical_reaction/slime/mutate2
name = "Advanced Mutation Toxin"
id = "mutationtoxin2"
result = "amutationtoxin"
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/black
//Oil
/datum/chemical_reaction/slime/explosion
name = "Slime Explosion"
id = "m_explosion"
result = null
required_reagents = list("phoron" = 1)
result_amount = 1
required = /obj/item/slime_extract/oil
mix_message = "The slime extract begins to vibrate violently!"
/datum/chemical_reaction/slime/explosion/on_reaction(var/datum/reagents/holder)
..()
sleep(50)
explosion(get_turf(holder.my_atom), 1, 3, 6)
//Light Pink
/datum/chemical_reaction/slime/potion2
name = "Slime Potion 2"
id = "m_potion2"
result = null
result_amount = 1
required = /obj/item/slime_extract/lightpink
required_reagents = list("phoron" = 1)
/datum/chemical_reaction/slime/potion2/on_reaction(var/datum/reagents/holder)
..()
var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2
P.loc = get_turf(holder.my_atom)
//Adamantine
/datum/chemical_reaction/slime/golem
name = "Slime Golem"
id = "m_golem"
name = "Prometheans"
id = "m_promethean"
result = null
required_reagents = list("phoron" = 1)
required_reagents = list("mutationtoxin" = 1)
result_amount = 1
required = /obj/item/slime_extract/adamantine
required = /obj/item/weapon/reagent_containers/food/snacks/monkeycube
/datum/chemical_reaction/slime/golem/on_reaction(var/datum/reagents/holder)
..()
var/obj/effect/golemrune/Z = new /obj/effect/golemrune
Z.loc = get_turf(holder.my_atom)
Z.announce_to_ghosts()
var/location = get_turf(holder.my_atom)
new /obj/item/slime_cube(location)
qdel(holder.my_atom)
/* Food */
/datum/chemical_reaction/tofu