Merge pull request #5416 from Citadel-Station-13/upstream-merge-35188
[MIRROR] Adds a SCP-294 ruin
This commit is contained in:
@@ -269,9 +269,15 @@
|
||||
name = "Whiteship Dock"
|
||||
description = "An abandoned but functional vessel parked in deep space, ripe for the taking."
|
||||
|
||||
/datum/map_template/ruin/space/scp_294
|
||||
id = "scp_294"
|
||||
suffix = "scp_294.dmm"
|
||||
name = "SCP-294 Containment"
|
||||
description = "An abandoned asteroid base that contains several EMP-proof turrets, and a valuable artifact. Should you get past the heavy laser turrets, a valuable treasure awaits."
|
||||
|
||||
/datum/map_template/ruin/space/cat_experiments
|
||||
id = "meow"
|
||||
suffix = "mrow_thats_right.dmm"
|
||||
name = "Feline-Human Combination Den"
|
||||
description = "With heated debates over the legality of the catperson and their status in the workforce, there's always a place for the blackmarket to slip in for some cash. Whether the results \
|
||||
are morally sound or not is another issue entirely."
|
||||
are morally sound or not is another issue entirely."
|
||||
@@ -462,4 +462,8 @@
|
||||
|
||||
/area/ruin/space/has_grav/listeningstation
|
||||
name = "Listening Post"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/ruin/space/has_grav/powered/scp_294
|
||||
name = "Abandoned SCP-294 Containment"
|
||||
icon_state = "yellow"
|
||||
@@ -592,6 +592,7 @@
|
||||
lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg'
|
||||
desc = "An energy blaster auto-turret."
|
||||
|
||||
|
||||
/obj/machinery/porta_turret/syndicate/setup()
|
||||
return
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
/obj/effect/spawner/trap
|
||||
name = "random trap"
|
||||
icon = 'icons/obj/hand_of_god_structures.dmi'
|
||||
icon_state = "trap_rand"
|
||||
|
||||
/obj/effect/spawner/trap/Initialize(mapload)
|
||||
..()
|
||||
var/new_type = pick(subtypesof(/obj/structure/trap) - typesof(/obj/structure/trap/ctf))
|
||||
new new_type(get_turf(src))
|
||||
return INITIALIZE_HINT_QDEL
|
||||
@@ -318,6 +318,8 @@
|
||||
|
||||
/turf/open/floor/plasteel/freezer
|
||||
icon_state = "freezerfloor"
|
||||
/turf/open/floor/plasteel/freezer/airless
|
||||
initial_gas_mix = "TEMP=2.7"
|
||||
|
||||
/turf/open/floor/plasteel/bar
|
||||
icon_state = "bar"
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
//////////////////////////////////////////
|
||||
// SCP 294 //
|
||||
// //
|
||||
// This is a child of a chemistry //
|
||||
// dispenser. Info of how it works at //
|
||||
// http://www.scp-wiki.net/scp-294 //
|
||||
// //
|
||||
//////////////////////////////////////////
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294
|
||||
name = "\improper strange coffee machine"
|
||||
desc = "It appears to be a standard coffee vending machine, the only noticeable difference being an entry touchpad with buttons corresponding to a Galactic Common QWERTY keyboard."
|
||||
icon = 'icons/obj/scp.dmi'
|
||||
icon_state = "294_bottom"
|
||||
amount = 10
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
|
||||
var/static/list/shortcuts = list(
|
||||
"meth" = "methamphetamine",
|
||||
"tricord" = "tricordrazine"
|
||||
)
|
||||
var/mutable_appearance/top_overlay
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294/Initialize()
|
||||
. = ..()
|
||||
GLOB.poi_list += src
|
||||
top_overlay = mutable_appearance(icon, "294_top", layer = ABOVE_MOB_LAYER)
|
||||
add_overlay(top_overlay)
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294/Destroy()
|
||||
. = ..()
|
||||
GLOB.poi_list -= src
|
||||
QDEL_NULL(top_overlay)
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294/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, "scp_294", name, 390, 315, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
switch(action)
|
||||
if("ejectBeaker")
|
||||
if(beaker)
|
||||
beaker.forceMove(drop_location())
|
||||
if(Adjacent(usr) && !issilicon(usr))
|
||||
usr.put_in_hands(beaker)
|
||||
beaker = null
|
||||
cut_overlays()
|
||||
. = 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, 10)
|
||||
if("makecup")
|
||||
if(beaker)
|
||||
return
|
||||
beaker = new /obj/item/reagent_containers/food/drinks/sillycup(src)
|
||||
visible_message("<span class='notice'>[src] dispenses a small, paper cup.</span>")
|
||||
|
||||
/obj/machinery/chem_dispenser/scp_294/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)
|
||||
return input
|
||||
else
|
||||
for(var/X in GLOB.chemical_reagents_list)
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[X]
|
||||
if(R.can_synth && input == replacetext(lowertext(R.name), " ", ""))
|
||||
return X
|
||||
Reference in New Issue
Block a user