[MIRROR] [READY] RND TECHWEBS + DEPARTMENTAL LATHES (#4014)

* [READY] RND TECHWEBS + DEPARTMENTAL LATHES

* resetting all the maps because we can worry about them later.

* Regexing

* I'm fucked

* Fixes

* .

* maps

* bleh

* ree

* fixes
This commit is contained in:
CitadelStationBot
2017-12-11 16:36:38 -08:00
committed by kevinz000
parent b5600cb91c
commit cc0b768c72
332 changed files with 4962 additions and 4331 deletions
+25 -25
View File
@@ -27,7 +27,7 @@
var/prod_coeff = 1
var/datum/design/being_built
var/datum/research/files
var/datum/techweb/stored_research
var/list/datum/design/matching_designs
var/selected_category
var/screen = 1
@@ -50,7 +50,7 @@
. = ..()
wires = new /datum/wires/autolathe(src)
files = new /datum/research/autolathe(src)
stored_research = new /datum/techweb/specialized/autounlocking/autolathe
matching_designs = list()
/obj/machinery/autolathe/Destroy()
@@ -85,7 +85,7 @@
/obj/machinery/autolathe/attackby(obj/item/O, mob/user, params)
if (busy)
to_chat(user, "<span class=\"alert\">The autolathe is busy. Please wait for completion of previous operation.</span>")
return 1
return TRUE
if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O))
updateUsrDialog()
@@ -97,16 +97,16 @@
if(panel_open)
if(istype(O, /obj/item/crowbar))
default_deconstruction_crowbar(O)
return 1
return TRUE
else if(is_wire_tool(O))
wires.interact(user)
return 1
return TRUE
if(user.a_intent == INTENT_HARM) //so we can hit the machine
return ..()
if(stat)
return 1
return TRUE
if(istype(O, /obj/item/disk/design_disk))
user.visible_message("[user] begins to load \the [O] in \the [src]...",
@@ -117,10 +117,9 @@
if(do_after(user, 14.4, target = src))
for(var/B in D.blueprints)
if(B)
files.AddDesign2Known(B)
stored_research.add_design(B)
busy = FALSE
return 1
return TRUE
return ..()
@@ -154,7 +153,7 @@
/////////////////
//href protection
being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design
being_built = stored_research.isDesignResearchedID(href_list["make"])
if(!being_built)
return
@@ -207,8 +206,8 @@
if(href_list["search"])
matching_designs.Cut()
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
for(var/v in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[v]
if(findtext(D.name,href_list["to_search"]))
matching_designs.Add(D)
updateUsrDialog()
@@ -261,8 +260,8 @@
dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>"
dat += materials_printout()
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
for(var/v in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[v]
if(!(selected_category in D.category))
continue
@@ -328,16 +327,16 @@
/obj/machinery/autolathe/proc/can_build(datum/design/D, amount = 1)
if(D.make_reagents.len)
return 0
return FALSE
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
GET_COMPONENT(materials, /datum/component/material_container)
if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount)))
return 0
return FALSE
if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount)))
return 0
return 1
return FALSE
return TRUE
/obj/machinery/autolathe/proc/get_design_cost(datum/design/D)
var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff)
@@ -362,25 +361,26 @@
/obj/machinery/autolathe/proc/shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
return 0
return FALSE
if(!prob(prb))
return 0
return FALSE
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
s.set_up(5, 1, src)
s.start()
if (electrocute_mob(user, get_area(src), src, 0.7, TRUE))
return 1
return TRUE
else
return 0
return FALSE
/obj/machinery/autolathe/proc/adjust_hacked(state)
hacked = state
for(var/datum/design/D in files.possible_designs)
for(var/id in SSresearch.techweb_designs)
var/datum/design/D = SSresearch.techweb_designs[id]
if((D.build_type & AUTOLATHE) && ("hacked" in D.category))
if(hacked)
files.AddDesign2Known(D)
stored_research.add_design(D)
else
files.known_designs -= D.id
stored_research.remove_design(D)
/obj/machinery/autolathe/hacked/Initialize()
. = ..()
@@ -405,7 +405,6 @@
powers -= 1 //To prevent just unlocking everything to get all powers to a syringe for max tech
else
I.remove_mutations.Add(HM)
I.origin_tech = "biotech=2;engineering=[max(1,min(6,powers))]" //With 6 powers available this tech level will be 1-6, also safety check if new powers get added
var/time_coeff
for(var/datum/mutation/human/HM in I.add_mutations)
if(!time_coeff)
+30 -4
View File
@@ -7,8 +7,8 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
icon_state = "tdoppler"
density = TRUE
anchored = TRUE
var/integrated = 0
var/max_dist = 100
var/integrated = FALSE
var/max_dist = 150
verb_say = "states coldly"
/obj/machinery/doppler_array/Initialize()
@@ -80,7 +80,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
"Epicenter at: grid ([epicenter.x],[epicenter.y]). Temporal displacement of tachyons: [took] seconds.", \
"Factual: Epicenter radius: [devastation_range]. Outer radius: [heavy_impact_range]. Shockwave radius: [light_impact_range].")
// If the bomb was capped, say it's theoretical size.
// If the bomb was capped, say its theoretical size.
if(devastation_range < orig_dev_range || heavy_impact_range < orig_heavy_range || light_impact_range < orig_light_range)
messages += "Theoretical: Epicenter radius: [orig_dev_range]. Outer radius: [orig_heavy_range]. Shockwave radius: [orig_light_range]."
@@ -107,6 +107,32 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
//Portable version, built into EOD equipment. It simply provides an explosion's three damage levels.
/obj/machinery/doppler_array/integrated
name = "integrated tachyon-doppler module"
integrated = 1
integrated = TRUE
max_dist = 21 //Should detect most explosions in hearing range.
use_power = NO_POWER_USE
/obj/machinery/doppler_array/research
name = "tachyon-dopplar research array"
desc = "A specialized tacyhon-dopplar bomb detection array that uses the results of the highest yield of explosions for research."
var/datum/techweb/linked_techweb
/obj/machinery/doppler_array/research/sense_explosion(turf/epicenter, dev, heavy, light, time, orig_dev, orig_heavy, orig_light) //probably needs a way to ignore admin explosives later on
. = ..()
if(!istype(linked_techweb))
say("Warning: No linked research system!")
return
var/point_gain = techweb_scale_bomb(orig_light - 20 - linked_techweb.max_bomb_value)
if(!point_gain)
return
linked_techweb.max_bomb_value = orig_light - 20
linked_techweb.research_points += point_gain
say("Gained [point_gain] points from explosion dataset.")
/obj/machinery/doppler_array/research/science
/obj/machinery/doppler_array/research/science/Initialize()
. = ..()
linked_techweb = SSresearch.science_tech
/proc/techweb_scale_bomb(lightradius)
return (lightradius ** 0.5) * 13000
-1
View File
@@ -164,7 +164,6 @@ The console is located at computer/gulag_teleporter.dm
/obj/item/circuitboard/machine/gulag_teleporter
name = "labor camp teleporter (Machine Board)"
build_path = /obj/machinery/gulag_teleporter
origin_tech = "programming=3;engineering=4;bluespace=4;materials=4"
req_components = list(
/obj/item/ore/bluespace_crystal = 2,
/obj/item/stock_parts/scanning_module,
-1
View File
@@ -242,7 +242,6 @@
icon_state = "blpad-remote"
w_class = WEIGHT_CLASS_SMALL
slot_flags = SLOT_BELT
origin_tech = "materials=3;magnets=2;bluespace=4;syndicate=3"
var/sending = TRUE
var/obj/machinery/launchpad/briefcase/pad
+7 -7
View File
@@ -22,7 +22,7 @@
var/busy = FALSE
var/prod_coeff = 1
var/datum/design/being_built
var/datum/research/files
var/datum/techweb/stored_research
var/selected_category
var/screen = 1
var/list/categories = list(
@@ -35,7 +35,7 @@
/obj/machinery/limbgrower/Initialize()
. = ..()
create_reagents(0)
files = new /datum/research/limbgrower(src)
stored_research = new /datum/techweb/specialized/autounlocking/limbgrower
/obj/machinery/limbgrower/interact(mob/user)
if(!is_operational())
@@ -95,7 +95,7 @@
/////////////////
//href protection
being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design
being_built = stored_research.isDesignResearchedID(href_list["make"]) //check if it's a valid design
if(!being_built)
return
@@ -180,8 +180,8 @@
dat += "<div class='statusDisplay'><h3>Browsing [selected_category]:</h3><br>"
dat += materials_printout()
for(var/v in files.known_designs)
var/datum/design/D = files.known_designs[v]
for(var/v in stored_research.researched_designs)
var/datum/design/D = stored_research.researched_designs[v]
if(!(selected_category in D.category))
continue
if(disabled || !can_build(D))
@@ -222,8 +222,8 @@
/obj/machinery/limbgrower/emag_act(mob/user)
if(emagged)
return
for(var/datum/design/D in files.possible_designs)
for(var/datum/design/D in SSresearch.techweb_designs)
if((D.build_type & LIMBGROWER) && ("special" in D.category))
files.AddDesign2Known(D)
stored_research.add_design(D)
to_chat(user, "<span class='warning'>A warning flashes onto the screen, stating that safety overrides have been deactivated!</span>")
emagged = TRUE
+1
View File
@@ -10,6 +10,7 @@
circuit = /obj/item/circuitboard/machine/recharger
var/obj/item/charging = null
var/recharge_coeff = 1
var/static/list/allowed_devices = typecacheof(list(
/obj/item/gun/energy,
/obj/item/melee/baton,
-3
View File
@@ -109,7 +109,6 @@
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
desc = "A label on it reads: <i>Warning: Activating this device will send a special beacon to your location</i>."
origin_tech = "bluespace=6;syndicate=5"
w_class = WEIGHT_CLASS_SMALL
var/droptype = /obj/machinery/power/singularity_beacon/syndicate
@@ -125,9 +124,7 @@
/obj/item/device/sbeacondrop/bomb
desc = "A label on it reads: <i>Warning: Activating this device will send a high-ordinance explosive to your location</i>."
droptype = /obj/machinery/syndicatebomb
origin_tech = "bluespace=5;syndicate=5"
/obj/item/device/sbeacondrop/powersink
desc = "A label on it reads: <i>Warning: Activating this device will send a power draining device to your location</i>."
droptype = /obj/item/device/powersink
origin_tech = "bluespace=4;syndicate=5"
-5
View File
@@ -274,7 +274,6 @@
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
origin_tech = "syndicate=5;combat=6"
resistance_flags = FLAMMABLE //Burnable (but the casing isn't)
var/adminlog = null
var/range_heavy = 3
@@ -308,7 +307,6 @@
/obj/item/bombcore/training
name = "dummy payload"
desc = "A Nanotrasen replica of a syndicate payload. Its not intended to explode but to announce that it WOULD have exploded, then rewire itself to allow for more training."
origin_tech = null
var/defusals = 0
var/attempts = 0
@@ -347,7 +345,6 @@
/obj/item/bombcore/badmin
name = "badmin payload"
desc = "If you're seeing this someone has either made a mistake or gotten dangerously savvy with var editing!"
origin_tech = null
/obj/item/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players
var/obj/machinery/syndicatebomb/B = loc
@@ -390,7 +387,6 @@
/obj/item/bombcore/chemical
name = "chemical payload"
desc = "An explosive payload designed to spread chemicals, dangerous or otherwise, across a large area. Properties of the core may vary with grenade casing type, and must be loaded before use."
origin_tech = "combat=4;materials=3"
icon_state = "chemcore"
var/list/beakers = list()
var/max_beakers = 1 // Read on about grenade casing properties below
@@ -522,7 +518,6 @@
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
origin_tech = "syndicate=3"
var/timer = 0
var/detonated = 0
var/existant = 0
+1
View File
@@ -79,6 +79,7 @@
last_slogan = world.time + rand(0, slogan_delay)
power_change()
/obj/machinery/vending/Destroy()
QDEL_NULL(wires)
QDEL_NULL(coin)