Merge pull request #6023 from Mechoid/Precursotech_Baseline

Base features for Precursotech and Anomalotech Expansion
This commit is contained in:
Neerti
2019-04-13 22:44:21 -04:00
committed by GitHub
43 changed files with 1138 additions and 104 deletions
+4 -2
View File
@@ -16,7 +16,9 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
var/mat_efficiency = 1
var/speed = 1
materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0)
materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, MAT_PLASTEEL = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, MAT_LEAD = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0, MAT_DURASTEEL = 0, MAT_VERDANTIUM = 0, MAT_MORPHIUM = 0, MAT_METALHYDROGEN = 0, MAT_SUPERMATTER = 0)
hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER)
use_power = 1
idle_power_usage = 30
@@ -68,7 +70,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
mat_efficiency = 1 - (T - 1) / 4
mat_efficiency = max(1 - (T - 1) / 4, 0.2)
speed = T
/obj/machinery/r_n_d/circuit_imprinter/update_icon()
@@ -0,0 +1,25 @@
/*
* Contains Precursor and Anomalous designs for the Protolathe.
*/
/datum/design/item/precursor/AssembleDesignName()
..()
name = "Alien prototype ([item_name])"
/datum/design/item/precursor/AssembleDesignDesc()
if(!desc)
if(build_path)
var/obj/item/I = build_path
desc = initial(I.desc)
..()
/datum/design/item/anomaly/AssembleDesignName()
..()
name = "Anomalous prototype ([item_name])"
/datum/design/item/anomaly/AssembleDesignDesc()
if(!desc)
if(build_path)
var/obj/item/I = build_path
desc = initial(I.desc)
..()
@@ -34,6 +34,20 @@
build_path = /obj/item/weapon/stock_parts/capacitor/super
sort_string = "CAAAC"
/datum/design/item/stock_part/hyper_capacitor
id = "hyper_capacitor"
req_tech = list(TECH_POWER = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 1, TECH_ARCANE = 1)
materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_GLASS = 100, MAT_VERDANTIUM = 30, MAT_DURASTEEL = 25)
build_path = /obj/item/weapon/stock_parts/capacitor/hyper
sort_string = "CAAAD"
/datum/design/item/stock_part/omni_capacitor
id = "omni_capacitor"
req_tech = list(TECH_POWER = 7, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1)
materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_DIAMOND = 1000, MAT_GLASS = 1000, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/capacitor/omni
sort_string = "CAAAE"
/datum/design/item/stock_part/micro_mani
id = "micro_mani"
req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1)
@@ -55,6 +69,20 @@
build_path = /obj/item/weapon/stock_parts/manipulator/pico
sort_string = "CAABC"
/datum/design/item/stock_part/hyper_mani
id = "hyper_mani"
req_tech = list(TECH_MATERIAL = 6, TECH_DATA = 3, TECH_ARCANE = 2)
materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 50)
build_path = /obj/item/weapon/stock_parts/manipulator/hyper
sort_string = "CAABD"
/datum/design/item/stock_part/omni_mani
id = "omni_mani"
req_tech = list(TECH_MATERIAL = 7, TECH_DATA = 4, TECH_PRECURSOR = 2)
materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_PLASTEEL = 500, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/manipulator/omni
sort_string = "CAABE"
/datum/design/item/stock_part/basic_matter_bin
id = "basic_matter_bin"
req_tech = list(TECH_MATERIAL = 1)
@@ -76,6 +104,20 @@
build_path = /obj/item/weapon/stock_parts/matter_bin/super
sort_string = "CAACC"
/datum/design/item/stock_part/hyper_matter_bin
id = "hyper_matter_bin"
req_tech = list(TECH_MATERIAL = 6, TECH_ARCANE = 2)
materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_VERDANTIUM = 60, MAT_DURASTEEL = 75)
build_path = /obj/item/weapon/stock_parts/matter_bin/hyper
sort_string = "CAACD"
/datum/design/item/stock_part/omni_matter_bin
id = "omni_matter_bin"
req_tech = list(TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_PLASTEEL = 100, MAT_MORPHIUM = 100, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/matter_bin/omni
sort_string = "CAACE"
/datum/design/item/stock_part/basic_micro_laser
id = "basic_micro_laser"
req_tech = list(TECH_MAGNET = 1)
@@ -97,6 +139,20 @@
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
sort_string = "CAADC"
/datum/design/item/stock_part/hyper_micro_laser
id = "hyper_micro_laser"
req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 6, TECH_ARCANE = 2)
materials = list(DEFAULT_WALL_MATERIAL = 200, MAT_GLASS = 20, MAT_URANIUM = 30, MAT_VERDANTIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/micro_laser/hyper
sort_string = "CAADD"
/datum/design/item/stock_part/omni_micro_laser
id = "omni_micro_laser"
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 7, TECH_PRECURSOR = 2)
materials = list(DEFAULT_WALL_MATERIAL = 2000, MAT_GLASS = 500, MAT_URANIUM = 2000, MAT_MORPHIUM = 50, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/micro_laser/omni
sort_string = "CAADE"
/datum/design/item/stock_part/basic_sensor
id = "basic_sensor"
req_tech = list(TECH_MAGNET = 1)
@@ -118,6 +174,20 @@
build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
sort_string = "CAAEC"
/datum/design/item/stock_part/hyper_sensor
id = "hyper_sensor"
req_tech = list(TECH_MAGNET = 6, TECH_MATERIAL = 4, TECH_ARCANE = 1)
materials = list(DEFAULT_WALL_MATERIAL = 50, MAT_GLASS = 20, MAT_SILVER = 50, MAT_VERDANTIUM = 40, MAT_DURASTEEL = 50)
build_path = /obj/item/weapon/stock_parts/scanning_module/hyper
sort_string = "CAAED"
/datum/design/item/stock_part/omni_sensor
id = "omni_sensor"
req_tech = list(TECH_MAGNET = 7, TECH_MATERIAL = 5, TECH_PRECURSOR = 1)
materials = list(DEFAULT_WALL_MATERIAL = 1000, MAT_PLASTEEL = 500, MAT_GLASS = 750, MAT_SILVER = 500, MAT_MORPHIUM = 60, MAT_DURASTEEL = 100)
build_path = /obj/item/weapon/stock_parts/scanning_module/omni
sort_string = "CAAEE"
/datum/design/item/stock_part/subspace_ansible
id = "s-ansible"
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2)
+15 -24
View File
@@ -15,7 +15,9 @@
var/mat_efficiency = 1
var/speed = 1
materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0)
materials = list(DEFAULT_WALL_MATERIAL = 0, "glass" = 0, MAT_PLASTEEL = 0, "plastic" = 0, "gold" = 0, "silver" = 0, "osmium" = 0, MAT_LEAD = 0, "phoron" = 0, "uranium" = 0, "diamond" = 0, MAT_DURASTEEL = 0, MAT_VERDANTIUM = 0, MAT_MORPHIUM = 0, MAT_METALHYDROGEN = 0, MAT_SUPERMATTER = 0)
hidden_materials = list(MAT_PLASTEEL, MAT_DURASTEEL, MAT_VERDANTIUM, MAT_MORPHIUM, MAT_METALHYDROGEN, MAT_SUPERMATTER)
/obj/machinery/r_n_d/protolathe/Initialize()
. = ..()
@@ -71,7 +73,7 @@
T = 0
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
T += M.rating
mat_efficiency = 1 - (T - 2) / 8
mat_efficiency = max(1 - (T - 2) / 8, 0.2)
speed = T / 2
/obj/machinery/r_n_d/protolathe/dismantle()
@@ -207,28 +209,17 @@
/obj/machinery/r_n_d/protolathe/proc/eject_materials(var/material, var/amount) // 0 amount = 0 means ejecting a full stack; -1 means eject everything
var/recursive = amount == -1 ? 1 : 0
material = lowertext(material)
var/mattype
switch(material)
if(DEFAULT_WALL_MATERIAL)
mattype = /obj/item/stack/material/steel
if("glass")
mattype = /obj/item/stack/material/glass
if("plastic")
mattype = /obj/item/stack/material/plastic
if("gold")
mattype = /obj/item/stack/material/gold
if("silver")
mattype = /obj/item/stack/material/silver
if("osmium")
mattype = /obj/item/stack/material/osmium
if("diamond")
mattype = /obj/item/stack/material/diamond
if("phoron")
mattype = /obj/item/stack/material/phoron
if("uranium")
mattype = /obj/item/stack/material/uranium
else
return
var/obj/item/stack/material/mattype
var/material/MAT = get_material_by_name(material)
if(!MAT)
return
mattype = MAT.stack_type
if(!mattype)
return
var/obj/item/stack/material/S = new mattype(loc)
if(amount <= 0)
amount = S.max_amount
+14
View File
@@ -660,6 +660,13 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "<UL>"
for(var/M in linked_lathe.materials)
var/amount = linked_lathe.materials[M]
var/hidden_mat = FALSE
for(var/HM in linked_lathe.hidden_materials)
if(M == HM && amount == 0)
hidden_mat = TRUE
break
if(hidden_mat)
continue
dat += "<LI><B>[capitalize(M)]</B>: [amount] cm<sup>3</sup>"
if(amount >= SHEET_MATERIAL_AMOUNT)
dat += " || Eject "
@@ -745,6 +752,13 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "<UL>"
for(var/M in linked_imprinter.materials)
var/amount = linked_imprinter.materials[M]
var/hidden_mat = FALSE
for(var/HM in linked_imprinter.hidden_materials)
if(M == HM && amount == 0)
hidden_mat = TRUE
break
if(hidden_mat)
continue
dat += "<LI><B>[capitalize(M)]</B>: [amount] cm<sup>3</sup>"
if(amount >= SHEET_MATERIAL_AMOUNT)
dat += " || Eject: "
+9 -39
View File
@@ -11,53 +11,23 @@
var/busy = 0
var/obj/machinery/computer/rdconsole/linked_console
var/list/materials = list()
var/list/materials = list() // Materials this machine can accept.
var/list/hidden_materials = list() // Materials this machine will not display, unless it contains them. Must be in the materials list as well.
/obj/machinery/r_n_d/attack_hand(mob/user as mob)
return
/obj/machinery/r_n_d/proc/getMaterialType(var/name)
switch(name)
if(DEFAULT_WALL_MATERIAL)
return /obj/item/stack/material/steel
if("glass")
return /obj/item/stack/material/glass
if("plastic")
return /obj/item/stack/material/plastic
if("gold")
return /obj/item/stack/material/gold
if("silver")
return /obj/item/stack/material/silver
if("osmium")
return /obj/item/stack/material/osmium
if("phoron")
return /obj/item/stack/material/phoron
if("uranium")
return /obj/item/stack/material/uranium
if("diamond")
return /obj/item/stack/material/diamond
var/material/M = get_material_by_name(name)
if(M && M.stack_type)
return M.stack_type
return null
/obj/machinery/r_n_d/proc/getMaterialName(var/type)
switch(type)
if(/obj/item/stack/material/steel)
return DEFAULT_WALL_MATERIAL
if(/obj/item/stack/material/glass)
return "glass"
if(/obj/item/stack/material/plastic)
return "plastic"
if(/obj/item/stack/material/gold)
return "gold"
if(/obj/item/stack/material/silver)
return "silver"
if(/obj/item/stack/material/osmium)
return "osmium"
if(/obj/item/stack/material/phoron)
return "phoron"
if(/obj/item/stack/material/uranium)
return "uranium"
if(/obj/item/stack/material/diamond)
return "diamond"
if(istype(type, /obj/item/stack/material))
var/obj/item/stack/material/M = type
return M.material.name
return null
/obj/machinery/r_n_d/proc/eject(var/material, var/amount)
if(!(material in materials))
+8 -2
View File
@@ -208,11 +208,17 @@ research holder datum.
level = 0
/datum/tech/arcane
name = "Arcane Research"
desc = "Research into the occult and arcane field for use in practical science"
name = "Anomalous Research"
desc = "Study of phenomena that disobey the fundamental laws of this universe."
id = TECH_ARCANE
level = 0
/datum/tech/precursor
name = "Precursor Research"
desc = "The applied study of Precursor Technology, for modern applications."
id = TECH_PRECURSOR
level = 0
/obj/item/weapon/disk/tech_disk
name = "technology disk"
desc = "A disk for storing technology data for further research."