Merge pull request #5416 from Citadel-Station-13/upstream-merge-35188

[MIRROR] Adds a SCP-294 ruin
This commit is contained in:
CitadelStationBot
2018-02-11 07:38:37 -06:00
committed by GitHub
12 changed files with 1626 additions and 31 deletions
+7 -1
View File
@@ -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."
+4
View File
@@ -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