mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-30 08:38:13 +01:00
Merge pull request #6023 from Mechoid/Precursotech_Baseline
Base features for Precursotech and Anomalotech Expansion
This commit is contained in:
@@ -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,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
|
||||
|
||||
@@ -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: "
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user