Merge remote-tracking branch 'upstream/master' into universal-damage

# Conflicts:
#	code/modules/clothing/suits/labcoat.dm
#	code/modules/clothing/under/miscellaneous.dm
#	code/modules/mob/living/carbon/human/species/golem.dm
#	code/modules/mob/living/simple_animal/bot/ed209bot.dm
This commit is contained in:
Fox McCloud
2019-09-21 12:40:07 -04:00
280 changed files with 2015 additions and 77150 deletions
+11 -22
View File
@@ -20,22 +20,11 @@
/datum/chemical_reaction/proc/on_reaction(datum/reagents/holder, created_volume)
return
var/list/chemical_mob_spawn_meancritters = list() // list of possible hostile mobs
var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs
/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_faction = "chemicalsummon")
/datum/chemical_reaction/proc/chemical_mob_spawn(datum/reagents/holder, amount_to_spawn, reaction_name, mob_class = HOSTILE_SPAWN, mob_faction = "chemicalsummon", random = TRUE)
if(holder && holder.my_atom)
if(chemical_mob_spawn_meancritters.len <= 0 || chemical_mob_spawn_nicecritters.len <= 0)
for(var/T in typesof(/mob/living/simple_animal))
var/mob/living/simple_animal/SA = T
switch(initial(SA.gold_core_spawnable))
if(CHEM_MOB_SPAWN_HOSTILE)
chemical_mob_spawn_meancritters += T
if(CHEM_MOB_SPAWN_FRIENDLY)
chemical_mob_spawn_nicecritters += T
var/atom/A = holder.my_atom
var/turf/T = get_turf(A)
var/area/my_area = get_area(T)
var/message = "A [reaction_name] reaction has occured in [my_area.name]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</A>)"
var/message = "A [reaction_name] reaction has occurred in [ADMIN_VERBOSEJMP(T)]"
message += " ([ADMIN_VV(A,"VV")])"
var/mob/M = get(A, /mob)
@@ -45,23 +34,23 @@ var/list/chemical_mob_spawn_nicecritters = list() // and possible friendly mobs
message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]"
message_admins(message, 0, 1)
log_game("[reaction_name] chemical mob spawn reaction occuring at [AREACOORD(T)] carried by [key_name(M)] with last fingerprint [A.fingerprintslast? A.fingerprintslast : "N/A"]")
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/C in viewers(get_turf(holder.my_atom), null))
C.flash_eyes()
for(var/i = 1, i <= amount_to_spawn, i++)
var/chosen
if(reaction_name == "Friendly Gold Slime")
chosen = pick(chemical_mob_spawn_nicecritters)
for(var/i in 1 to amount_to_spawn)
var/mob/living/simple_animal/S
if(random)
S = create_random_mob(get_turf(holder.my_atom), mob_class)
else
chosen = pick(chemical_mob_spawn_meancritters)
var/mob/living/simple_animal/C = new chosen
C.faction |= mob_faction
C.forceMove(get_turf(holder.my_atom))
S = new mob_class(get_turf(holder.my_atom))//Spawn our specific mob_class
S.faction |= mob_faction
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))
step(S, pick(NORTH,SOUTH,EAST,WEST))
/proc/goonchem_vortex(turf/T, setting_type, volume)
if(setting_type)
@@ -194,11 +194,19 @@
id = "life"
result = null
required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "blood" = 1)
result_amount = 3
result_amount = 1
min_temp = T0C + 100
/datum/chemical_reaction/life/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, 1, "Life")
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (hostile)") //defaults to HOSTILE_SPAWN
/datum/chemical_reaction/life/friendly
name = "Life (Friendly)"
id = "life_friendly"
required_reagents = list("strange_reagent" = 1, "synthflesh" = 1, "sugar" = 1)
/datum/chemical_reaction/life/friendly/on_reaction(datum/reagents/holder, created_volume)
chemical_mob_spawn(holder, rand(1, round(created_volume, 1)), "Life (friendly)", FRIENDLY_SPAWN)
/datum/chemical_reaction/mannitol
name = "Mannitol"
@@ -87,53 +87,41 @@
new /obj/item/stack/sheet/glass (location, 15)
//Gold
/datum/chemical_reaction/slimecrit
/datum/chemical_reaction/slimemobspawn
name = "Slime Crit"
id = "m_tele"
result = null
required_reagents = list("plasma_dust" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
required_other = TRUE
/datum/chemical_reaction/slimecrit/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
/datum/chemical_reaction/slimemobspawn/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used", "[type]")
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently !</span>")
spawn(50)
chemical_mob_spawn(holder, 5, "Gold Slime")
summon_mobs(holder, T)
/datum/chemical_reaction/slimecritlesser
/datum/chemical_reaction/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
/datum/chemical_reaction/slimemobspawn/lesser
name = "Slime Crit Lesser"
id = "m_tele3"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
/datum/chemical_reaction/slimecritlesser/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently !</span>")
spawn(50)
chemical_mob_spawn(holder, 3, "Lesser Gold Slime", "neutral")
/datum/chemical_reaction/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate violently!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slimecritfriendly
/datum/chemical_reaction/slimemobspawn/friendly
name = "Slime Crit Friendly"
id = "m_tele5"
result = null
required_reagents = list("water" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
/datum/chemical_reaction/slimecritfriendly/on_reaction(datum/reagents/holder)
feedback_add_details("slime_cores_used","[type]")
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='danger'>The slime extract begins to vibrate adorably !</span>")
spawn(50)
chemical_mob_spawn(holder, 1, "Friendly Gold Slime", "neutral")
/datum/chemical_reaction/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("<span class='danger'>The slime extract begins to vibrate adorably!</span>")
addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
//Silver
/datum/chemical_reaction/slimebork
@@ -327,4 +327,19 @@
desc = "A syringe recovered from a dread place. It probably isn't wise to use."
amount_per_transfer_from_this = 1
volume = 1
list_reagents = list("gluttonytoxin" = 1)
list_reagents = list("gluttonytoxin" = 1)
/obj/item/reagent_containers/syringe/capulettium_plus
name = "capulettium plus syringe"
desc = "For silencing targets. Allows for fake deaths."
list_reagents = list("capulettium_plus" = 15)
/obj/item/reagent_containers/syringe/sarin
name = "sarin syringe"
desc = "A deadly neurotoxin, for killing."
list_reagents = list("sarin" = 15)
/obj/item/reagent_containers/syringe/pancuronium
name = "pancuronium syringe"
desc = "A powerful paralyzing poison."
list_reagents = list("pancuronium" = 15)