Merge branch 'master' into upstream-merge-37476
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
This commit is contained in:
@@ -433,7 +433,8 @@ obj/machinery/chem_dispenser/proc/work_animation()
|
||||
"orangejuice",
|
||||
"limejuice",
|
||||
"tomatojuice",
|
||||
"lemonjuice"
|
||||
"lemonjuice",
|
||||
"menthol"
|
||||
)
|
||||
emagged_reagents = list(
|
||||
"thirteenloko",
|
||||
@@ -465,7 +466,8 @@ obj/machinery/chem_dispenser/proc/work_animation()
|
||||
"hcider",
|
||||
"creme_de_menthe",
|
||||
"creme_de_cacao",
|
||||
"triple_sec"
|
||||
"triple_sec",
|
||||
"sake"
|
||||
)
|
||||
emagged_reagents = list(
|
||||
"ethanol",
|
||||
@@ -499,3 +501,17 @@ obj/machinery/chem_dispenser/proc/work_animation()
|
||||
"ammonia",
|
||||
"ash",
|
||||
"diethylamine")
|
||||
|
||||
/obj/machinery/chem_dispenser/fullupgrade //fully upgraded stock parts
|
||||
|
||||
/obj/machinery/chem_dispenser/fullupgrade/Initialize()
|
||||
. = ..()
|
||||
component_parts = list()
|
||||
component_parts += new /obj/item/circuitboard/machine/chem_dispenser(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
|
||||
component_parts += new /obj/item/stock_parts/matter_bin/bluespace(null)
|
||||
component_parts += new /obj/item/stock_parts/capacitor/quadratic(null)
|
||||
component_parts += new /obj/item/stock_parts/manipulator/femto(null)
|
||||
component_parts += new /obj/item/stack/sheet/glass(null)
|
||||
component_parts += new /obj/item/stock_parts/cell/bluespace(null)
|
||||
RefreshParts()
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer //formerly SCP-294 made by mrty, but now only for testing purposes
|
||||
name = "\improper debug chemical synthesizer"
|
||||
desc = "If you see this, yell at adminbus."
|
||||
icon = 'icons/obj/chemical.dmi'
|
||||
icon_state = "dispenser"
|
||||
amount = 10
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
|
||||
working_state = null
|
||||
nopower_state = null
|
||||
flags_1 = NODECONSTRUCT_1
|
||||
var/static/list/shortcuts = list(
|
||||
"meth" = "methamphetamine",
|
||||
"tricord" = "tricordrazine"
|
||||
)
|
||||
var/mutable_appearance/top_overlay
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/Initialize()
|
||||
. = ..()
|
||||
GLOB.poi_list += src
|
||||
top_overlay = mutable_appearance(icon, "disp_beaker", layer = ABOVE_ALL_MOB_LAYER)
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/update_icon()
|
||||
cut_overlays()
|
||||
add_overlay(top_overlay)
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/Destroy()
|
||||
. = ..()
|
||||
GLOB.poi_list -= src
|
||||
QDEL_NULL(top_overlay)
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/display_beaker()
|
||||
return
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "chem_synthesizer", name, 390, 315, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
update_icon()
|
||||
switch(action)
|
||||
if("ejectBeaker")
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
if(Adjacent(usr) && !issilicon(usr))
|
||||
usr.put_in_hands(beaker)
|
||||
beaker = null
|
||||
. = TRUE
|
||||
if("input")
|
||||
var/input_reagent = replacetext(lowertext(input("Enter the name of any liquid", "Input") as text), " ", "") //95% of the time, the reagent id is a lowercase/no spaces version of the name
|
||||
if(shortcuts[input_reagent])
|
||||
input_reagent = shortcuts[input_reagent]
|
||||
else
|
||||
input_reagent = find_reagent(input_reagent)
|
||||
if(!input_reagent || !GLOB.chemical_reagents_list[input_reagent])
|
||||
say("OUT OF RANGE")
|
||||
return
|
||||
else
|
||||
if(!beaker)
|
||||
return
|
||||
else if(!beaker.reagents && !QDELETED(beaker))
|
||||
beaker.create_reagents(beaker.volume)
|
||||
beaker.reagents.add_reagent(input_reagent, amount)
|
||||
if("makecup")
|
||||
if(beaker)
|
||||
return
|
||||
beaker = new /obj/item/reagent_containers/glass/beaker/bluespace(src)
|
||||
visible_message("<span class='notice'>[src] dispenses a bluespace beaker.</span>")
|
||||
|
||||
/obj/machinery/chem_dispenser/chem_synthesizer/proc/find_reagent(input)
|
||||
. = FALSE
|
||||
if(GLOB.chemical_reagents_list[input]) //prefer IDs!
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[input]
|
||||
if(R.can_synth_debug)
|
||||
return input
|
||||
else
|
||||
for(var/X in GLOB.chemical_reagents_list)
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[X]
|
||||
if(R.can_synth_debug && input == replacetext(lowertext(R.name), " ", ""))
|
||||
return X
|
||||
@@ -20,7 +20,8 @@
|
||||
var/current_cycle = 0
|
||||
var/volume = 0
|
||||
var/color = "#000000" // rgb: 0, 0, 0
|
||||
var/can_synth = TRUE
|
||||
var/can_synth = TRUE // can this reagent be synthesized? (for example: odysseus syringe gun)
|
||||
var/can_synth_debug = TRUE // can this reagent be synthesized by the debug chem synthesizer?
|
||||
var/metabolization_rate = REAGENTS_METABOLISM //how fast the reagent is metabolized by the mob
|
||||
var/overrides_metab = 0
|
||||
var/overdose_threshold = 0
|
||||
|
||||
@@ -1546,4 +1546,70 @@ All effects don't start immediately, but rather get worse over time; the rate is
|
||||
glass_desc = "It'll either knock the drunkenness out of you or knock you out cold. Both, probably."
|
||||
|
||||
/datum/reagent/consumable/ethanol/crevice_spike/on_mob_add(mob/living/L) //damage only applies when drink first enters system and won't again until drink metabolizes out
|
||||
L.adjustBruteLoss(3 * min(5,volume)) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
|
||||
L.adjustBruteLoss(3 * min(5,volume)) //minimum 3 brute damage on ingestion to limit non-drink means of injury - a full 5 unit gulp of the drink trucks you for the full 15
|
||||
|
||||
/datum/reagent/consumable/ethanol/sake
|
||||
name = "Sake"
|
||||
id = "sake"
|
||||
description = "A sweet rice wine of questionable legality and extreme potency."
|
||||
color = "#DDDDDD"
|
||||
boozepwr = 70
|
||||
taste_description = "sweet rice wine"
|
||||
glass_icon_state = "sakecup"
|
||||
glass_name = "cup of sake"
|
||||
glass_desc = "A traditional cup of sake."
|
||||
|
||||
/datum/reagent/consumable/ethanol/alexander
|
||||
name = "Alexander"
|
||||
id = "alexander"
|
||||
description = "A creamy, indulgent delight that is stronger than it seems."
|
||||
color = "#F5E9D3"
|
||||
boozepwr = 80
|
||||
taste_description = "bitter, creamy cacao"
|
||||
glass_icon_state = "alexander"
|
||||
glass_name = "Alexander"
|
||||
glass_desc = "A creamy, indulgent delight that is stronger than it seems."
|
||||
|
||||
/datum/reagent/consumable/ethanol/sidecar
|
||||
name = "Sidecar"
|
||||
id = "sidecar"
|
||||
description = "The one ride you’ll gladly give up the wheel for."
|
||||
color = "#FFC55B"
|
||||
boozepwr = 80
|
||||
taste_description = "delicious freedom"
|
||||
glass_icon_state = "sidecar"
|
||||
glass_name = "Sidecar"
|
||||
glass_desc = "The one ride you’ll gladly give up the wheel for."
|
||||
|
||||
/datum/reagent/consumable/ethanol/between_the_sheets
|
||||
name = "Between the Sheets"
|
||||
id = "between_the_sheets"
|
||||
description = "A provocatively named classic."
|
||||
color = "#F4C35A"
|
||||
boozepwr = 80
|
||||
taste_description = "seduction"
|
||||
glass_icon_state = "between_the_sheets"
|
||||
glass_name = "Between the Sheets"
|
||||
glass_desc = "A provocatively named classic."
|
||||
|
||||
/datum/reagent/consumable/ethanol/kamikaze
|
||||
name = "Kamikaze"
|
||||
id = "kamikaze"
|
||||
description = "Divinely windy."
|
||||
color = "#EEF191"
|
||||
boozepwr = 60
|
||||
taste_description = "divine windiness"
|
||||
glass_icon_state = "kamikaze"
|
||||
glass_name = "Kamikaze"
|
||||
glass_desc = "Divinely windy."
|
||||
|
||||
/datum/reagent/consumable/ethanol/mojito
|
||||
name = "Mojito"
|
||||
id = "mojito"
|
||||
description = "A drink that looks as refreshing as it tastes."
|
||||
color = "#DFFAD9"
|
||||
boozepwr = 30
|
||||
taste_description = "refreshing mint"
|
||||
glass_icon_state = "mojito"
|
||||
glass_name = "Mojito"
|
||||
glass_desc = "A drink that looks as refreshing as it tastes."
|
||||
|
||||
@@ -721,3 +721,13 @@
|
||||
description = "Milk for cool kids."
|
||||
color = "#7D4E29"
|
||||
taste_description = "chocolate milk"
|
||||
|
||||
/datum/reagent/consumable/menthol
|
||||
name = "Menthol"
|
||||
id = "menthol"
|
||||
description = "Tastes naturally minty, and imparts a very mild numbing sensation."
|
||||
color = "#80AF9C"
|
||||
taste_description = "mint"
|
||||
glass_icon_state = "glass_green"
|
||||
glass_name = "glass of menthol"
|
||||
glass_desc = "Tastes naturally minty, and imparts a very mild numbing sensation."
|
||||
|
||||
@@ -57,15 +57,6 @@
|
||||
..()
|
||||
. = 1
|
||||
|
||||
/datum/reagent/drug/menthol
|
||||
name = "Menthol"
|
||||
id = "menthol"
|
||||
description = "Tastes naturally minty, and imparts a very mild numbing sensation."
|
||||
taste_description = "mint"
|
||||
reagent_state = LIQUID
|
||||
color = "#80AF9C"
|
||||
trippy = FALSE
|
||||
|
||||
/datum/reagent/drug/crank
|
||||
name = "Crank"
|
||||
id = "crank"
|
||||
|
||||
@@ -171,8 +171,7 @@
|
||||
|
||||
else if(istype(O, /obj/item/stack/sheet/hairlesshide))
|
||||
var/obj/item/stack/sheet/hairlesshide/HH = O
|
||||
var/obj/item/stack/sheet/wetleather/WL = new(get_turf(HH))
|
||||
WL.amount = HH.amount
|
||||
new /obj/item/stack/sheet/wetleather(get_turf(HH), HH.amount)
|
||||
qdel(HH)
|
||||
|
||||
/*
|
||||
|
||||
@@ -728,7 +728,7 @@
|
||||
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/M)
|
||||
if(M.hud_used)
|
||||
if(current_cycle >= 20 && current_cycle%20 == 0)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/rotation = min(round(current_cycle/20), 89) // By this point the player is probably puking and quitting anyway
|
||||
for(var/whole_screen in screens)
|
||||
animate(whole_screen, transform = matrix(rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING, loop = -1)
|
||||
@@ -737,7 +737,7 @@
|
||||
|
||||
/datum/reagent/toxin/rotatium/on_mob_delete(mob/living/M)
|
||||
if(M && M.hud_used)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
for(var/whole_screen in screens)
|
||||
animate(whole_screen, transform = matrix(), time = 5, easing = QUAD_EASING)
|
||||
..()
|
||||
@@ -755,7 +755,7 @@
|
||||
/datum/reagent/toxin/skewium/on_mob_life(mob/living/M)
|
||||
if(M.hud_used)
|
||||
if(current_cycle >= 5 && current_cycle % 3 == 0)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/matrix/skew = matrix()
|
||||
var/intensity = 8
|
||||
skew.set_skew(rand(-intensity,intensity), rand(-intensity,intensity))
|
||||
@@ -772,7 +772,7 @@
|
||||
|
||||
/datum/reagent/toxin/skewium/on_mob_delete(mob/living/M)
|
||||
if(M && M.hud_used)
|
||||
var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"])
|
||||
for(var/whole_screen in screens)
|
||||
animate(whole_screen, transform = matrix(), time = 5, easing = QUAD_EASING)
|
||||
..()
|
||||
|
||||
Reference in New Issue
Block a user