mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-22 04:28:33 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into attackcall
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user