Merge pull request #2880 from Neerti/12/29/2016_circuit_autoresearch

Makes Circuits Make Their Own Research Designs
This commit is contained in:
Anewbe
2016-12-31 10:11:41 -05:00
committed by GitHub
16 changed files with 292 additions and 630 deletions

View File

@@ -1574,428 +1574,6 @@ CIRCUITS BELOW
materials = list(DEFAULT_WALL_MATERIAL = 40000)
build_path = /obj/item/device/electronic_assembly/large
/datum/design/circuit/integrated_circuit
req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
/datum/design/circuit/integrated_circuit/AssembleDesignName()
..()
name = "Custom circuitry ([item_name])"
/datum/design/circuit/integrated_circuit/AssembleDesignDesc()
if(!desc)
desc = "Allows for the construction of \a [name] custom circuit."
/datum/design/circuit/integrated_circuit/arithmetic/AssembleDesignName()
..()
name = "Custom circuitry \[Arithmetic\] ([item_name])"
/datum/design/circuit/integrated_circuit/arithmetic/addition
id = "cc-addition"
build_path = /obj/item/integrated_circuit/arithmetic/addition
sort_string = "WAAAA"
/datum/design/circuit/integrated_circuit/arithmetic/subtraction
id = "cc-subtraction"
build_path = /obj/item/integrated_circuit/arithmetic/subtraction
sort_string = "WAAAB"
/datum/design/circuit/integrated_circuit/arithmetic/multiplication
id = "cc-multiplication"
build_path = /obj/item/integrated_circuit/arithmetic/multiplication
sort_string = "WAAAC"
/datum/design/circuit/integrated_circuit/arithmetic/division
id = "cc-division"
build_path = /obj/item/integrated_circuit/arithmetic/division
sort_string = "WAAAD"
/datum/design/circuit/integrated_circuit/arithmetic/absolute
id = "cc-absolute"
build_path = /obj/item/integrated_circuit/arithmetic/absolute
sort_string = "WAAAE"
/datum/design/circuit/integrated_circuit/arithmetic/average
id = "cc-average"
build_path = /obj/item/integrated_circuit/arithmetic/average
sort_string = "WAAAF"
/datum/design/circuit/integrated_circuit/arithmetic/pi
id = "cc-pi"
build_path = /obj/item/integrated_circuit/arithmetic/pi
sort_string = "WAAAG"
/datum/design/circuit/integrated_circuit/arithmetic/random
id = "cc-random"
build_path = /obj/item/integrated_circuit/arithmetic/random
sort_string = "WAAAH"
/datum/design/circuit/integrated_circuit/arithmetic/round
id = "cc-round"
build_path = /obj/item/integrated_circuit/arithmetic/round
sort_string = "WAAAI"
/datum/design/circuit/integrated_circuit/arithmetic/exponent
id = "cc-exponent"
build_path = /obj/item/integrated_circuit/arithmetic/exponent
sort_string = "WAAAJ"
/datum/design/circuit/integrated_circuit/arithmetic/sign
id = "cc-sign"
build_path = /obj/item/integrated_circuit/arithmetic/sign
sort_string = "WAAAK"
/datum/design/circuit/integrated_circuit/converter/AssembleDesignName()
..()
name = "Custom circuitry \[Conversion\] ([item_name])"
/datum/design/circuit/integrated_circuit/converter/num2text
id = "cc-num2text"
build_path = /obj/item/integrated_circuit/converter/num2text
sort_string = "WAABA"
/datum/design/circuit/integrated_circuit/converter/text2num
id = "cc-text2num"
build_path = /obj/item/integrated_circuit/converter/text2num
sort_string = "WAABB"
/datum/design/circuit/integrated_circuit/converter/ref2text
id = "cc-ref2text"
build_path = /obj/item/integrated_circuit/converter/ref2text
sort_string = "WAABC"
/datum/design/circuit/integrated_circuit/converter/lowercase
id = "cc-lowercase"
build_path = /obj/item/integrated_circuit/converter/lowercase
sort_string = "WAABD"
/datum/design/circuit/integrated_circuit/converter/uppercase
id = "cc-uppercase"
build_path = /obj/item/integrated_circuit/converter/uppercase
sort_string = "WAABD"
/datum/design/circuit/integrated_circuit/converter/concatenatior
id = "cc-concatenatior"
build_path = /obj/item/integrated_circuit/converter/concatenatior
sort_string = "WAABC"
/datum/design/circuit/integrated_circuit/coordinate/AssembleDesignName()
..()
name = "Custom circuitry \[Coordinate\] ([item_name])"
/datum/design/circuit/integrated_circuit/coordinate/gps
id = "cc-gps"
build_path = /obj/item/integrated_circuit/gps
sort_string = "WAACA"
/datum/design/circuit/integrated_circuit/coordinate/abs_to_rel_coords
id = "cc-abs_to_rel_coords"
build_path = /obj/item/integrated_circuit/abs_to_rel_coords
sort_string = "WAACB"
/datum/design/circuit/integrated_circuit/transfer/AssembleDesignName()
..()
name = "Custom circuitry \[Transfer\] ([item_name])"
/datum/design/circuit/integrated_circuit/transfer/splitter
id = "cc-splitter"
build_path = /obj/item/integrated_circuit/transfer/splitter
sort_string = "WAADA"
/datum/design/circuit/integrated_circuit/transfer/splitter4
id = "cc-splitter4"
build_path = /obj/item/integrated_circuit/transfer/splitter/medium
sort_string = "WAADB"
/datum/design/circuit/integrated_circuit/transfer/splitter8
id = "cc-splitter8"
build_path = /obj/item/integrated_circuit/transfer/splitter/large
sort_string = "WAADC"
/datum/design/circuit/integrated_circuit/transfer/activator_splitter
id = "cc-activator_splitter"
build_path = /obj/item/integrated_circuit/transfer/activator_splitter
sort_string = "WAADD"
/datum/design/circuit/integrated_circuit/transfer/activator_splitter4
id = "cc-activator_splitter4"
build_path = /obj/item/integrated_circuit/transfer/activator_splitter/medium
sort_string = "WAADE"
/datum/design/circuit/integrated_circuit/transfer/activator_splitter8
id = "cc-activator_splitter8"
build_path = /obj/item/integrated_circuit/transfer/activator_splitter/large
sort_string = "WAADF"
/datum/design/circuit/integrated_circuit/input_output/AssembleDesignName()
..()
name = "Custom circuitry \[Input/Output\] ([item_name])"
/datum/design/circuit/integrated_circuit/input_output/button
id = "cc-button"
build_path = /obj/item/integrated_circuit/input/button
sort_string = "WAAEA"
/datum/design/circuit/integrated_circuit/input_output/numberpad
id = "cc-numberpad"
build_path = /obj/item/integrated_circuit/input/numberpad
sort_string = "WAAEB"
/datum/design/circuit/integrated_circuit/input_output/textpad
id = "cc-textpad"
build_path = /obj/item/integrated_circuit/input/textpad
sort_string = "WAAEC"
/datum/design/circuit/integrated_circuit/input_output/screen
id = "cc-screen"
build_path = /obj/item/integrated_circuit/output/screen
sort_string = "WAAED"
/datum/design/circuit/integrated_circuit/input_output/med_scanner
id = "cc-medscanner"
build_path = /obj/item/integrated_circuit/input/med_scanner
req_tech = list(TECH_MATERIAL = 2, TECH_MAGNETS = 2, TECH_BIOMED = 2)
sort_string = "WAAEE"
/datum/design/circuit/integrated_circuit/input_output/adv_med_scanner
id = "cc-advmedscanner"
build_path = /obj/item/integrated_circuit/input/adv_med_scanner
req_tech = list(TECH_MATERIAL = 2, TECH_MAGNETS = 3, TECH_BIOMED = 4)
sort_string = "WAAEF"
/datum/design/circuit/integrated_circuit/input_output/local_locator
id = "cc-locallocator"
build_path = /obj/item/integrated_circuit/input/local_locator
sort_string = "WAAEG"
/datum/design/circuit/integrated_circuit/input_output/adjacent_locator
id = "cc-adjacentlocator"
build_path = /obj/item/integrated_circuit/input/adjacent_locator
sort_string = "WAAEH"
/datum/design/circuit/integrated_circuit/input_output/signaler
id = "cc-signaler"
build_path = /obj/item/integrated_circuit/input/signaler
sort_string = "WAAEJ"
/datum/design/circuit/integrated_circuit/input_output/light
id = "cc-light"
build_path = /obj/item/integrated_circuit/output/light
sort_string = "WAAEH"
/datum/design/circuit/integrated_circuit/input_output/adv_light
id = "cc-adv_light"
build_path = /obj/item/integrated_circuit/output/light/advanced
sort_string = "WAAEI"
/datum/design/circuit/integrated_circuit/input_output/beeper
id = "cc-sound_beeper"
build_path = /obj/item/integrated_circuit/output/sound/beeper
sort_string = "WAAEJ"
/datum/design/circuit/integrated_circuit/input_output/beepsky_sound
id = "cc-sound_beepsky"
build_path = /obj/item/integrated_circuit/output/sound/beepsky
sort_string = "WAAEK"
req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_ILLEGAL = 1)
/datum/design/circuit/integrated_circuit/input_output/EPv2
id = "cc-epv2"
build_path = /obj/item/integrated_circuit/input/EPv2
sort_string = "WAAEL"
req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNETS = 2, TECH_BLUESPACE = 2)
/datum/design/circuit/integrated_circuit/logic/AssembleDesignName()
..()
name = "Custom circuitry \[Logic\] ([item_name])"
/datum/design/circuit/integrated_circuit/logic/binary/equals
id = "cc-equals"
build_path = /obj/item/integrated_circuit/logic/binary/equals
sort_string = "WAAFA"
/datum/design/circuit/integrated_circuit/logic/unary/not
id = "cc-not"
build_path = /obj/item/integrated_circuit/logic/unary/not
sort_string = "WAAFB"
/datum/design/circuit/integrated_circuit/logic/binary/and
id = "cc-and"
build_path = /obj/item/integrated_circuit/logic/binary/and
sort_string = "WAAFC"
/datum/design/circuit/integrated_circuit/logic/binary/or
id = "cc-or"
build_path = /obj/item/integrated_circuit/logic/binary/or
sort_string = "WAAFD"
/datum/design/circuit/integrated_circuit/logic/binary/less_than
id = "cc-less_than"
build_path = /obj/item/integrated_circuit/logic/binary/less_than
sort_string = "WAAFE"
/datum/design/circuit/integrated_circuit/logic/binary/less_than_or_equal
id = "cc-less_than_or_equal"
build_path = /obj/item/integrated_circuit/logic/binary/less_than_or_equal
sort_string = "WAAFF"
/datum/design/circuit/integrated_circuit/logic/binary/greater_than
id = "cc-greater_than"
build_path = /obj/item/integrated_circuit/logic/binary/greater_than
sort_string = "WAAFG"
/datum/design/circuit/integrated_circuit/logic/binary/greater_than_or_equal
id = "cc-greater_than_or_equal"
build_path = /obj/item/integrated_circuit/logic/binary/greater_than_or_equal
sort_string = "WAAFH"
/datum/design/circuit/integrated_circuit/manipulation/AssembleDesignName()
..()
name = "Custom circuitry \[Manipulation\] ([item_name])"
/datum/design/circuit/integrated_circuit/manipulation/weapon_firing
name = "weapon firing mechanism"
id = "cc-weapon_firing"
build_path = /obj/item/integrated_circuit/manipulation/weapon_firing
sort_string = "WAAGA"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_COMBAT = 4)
/datum/design/circuit/integrated_circuit/manipulation/smoke
name = "smoke generator"
id = "cc-smoke"
build_path = /obj/item/integrated_circuit/manipulation/smoke
sort_string = "WAAGB"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3, TECH_BIO = 4)
/datum/design/circuit/integrated_circuit/manipulation/locomotion
name = "locomotion"
id = "cc-locomotion"
build_path = /obj/item/integrated_circuit/manipulation/locomotion
sort_string = "WAAGB"
req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 3)
/datum/design/circuit/integrated_circuit/manipulation/injector
name = "injector"
id = "cc-injector"
build_path = /obj/item/integrated_circuit/manipulation/injector
sort_string = "WAAGC"
req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 3)
/datum/design/circuit/integrated_circuit/manipulation/reagent_pump
name = "reagent pump"
id = "cc-reagent_pump"
build_path = /obj/item/integrated_circuit/manipulation/reagent_pump
sort_string = "WAAGD"
req_tech = list(TECH_ENGINEERING = 1, TECH_DATA = 1, TECH_BIO = 2)
/datum/design/circuit/integrated_circuit/manipulation/reagent_storage
name = "reagent storage"
id = "cc-reagent_storage"
build_path = /obj/item/integrated_circuit/manipulation/reagent_storage
sort_string = "WAAGE"
req_tech = list(TECH_ENGINEERING = 1, TECH_DATA = 1, TECH_BIO = 1)
/datum/design/circuit/integrated_circuit/manipulation/reagent_storage_cryo
name = "cryo reagent storage"
id = "cc-reagent_storage_cryo"
build_path = /obj/item/integrated_circuit/manipulation/reagent_storage/cryo
sort_string = "WAAGF"
req_tech = list(TECH_MATERIALS = 3, TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_BIO = 2)
/datum/design/circuit/integrated_circuit/memory/AssembleDesignName()
..()
name = "Custom circuitry \[Memory\] ([item_name])"
/datum/design/circuit/integrated_circuit/memory
id = "cc-memory"
build_path = /obj/item/integrated_circuit/memory
sort_string = "WAAHA"
/datum/design/circuit/integrated_circuit/memory/medium
id = "cc-memory4"
build_path = /obj/item/integrated_circuit/memory/medium
sort_string = "WAAHB"
/datum/design/circuit/integrated_circuit/memory/large
id = "cc-memory8"
build_path = /obj/item/integrated_circuit/memory/large
sort_string = "WAAHC"
/datum/design/circuit/integrated_circuit/memory/huge
id = "cc-memory16"
build_path = /obj/item/integrated_circuit/memory/huge
sort_string = "WAAHD"
/datum/design/circuit/integrated_circuit/memory/constant
id = "cc-constant"
build_path = /obj/item/integrated_circuit/memory/constant
sort_string = "WAAHH"
/datum/design/circuit/integrated_circuit/time/AssembleDesignName()
..()
name = "Custom circuitry \[Time\] ([item_name])"
/datum/design/circuit/integrated_circuit/time/delay
id = "cc-delay"
build_path = /obj/item/integrated_circuit/time/delay
sort_string = "WAAIA"
/datum/design/circuit/integrated_circuit/time/delay/five_sec
id = "cc-five_sec_delay"
build_path = /obj/item/integrated_circuit/time/delay/five_sec
sort_string = "WAAIB"
/datum/design/circuit/integrated_circuit/time/delay/one_sec
id = "cc-one_sec_delay"
build_path = /obj/item/integrated_circuit/time/delay/one_sec
sort_string = "WAAIC"
/datum/design/circuit/integrated_circuit/time/delay/half_sec
id = "cc-half_sec_delay"
build_path = /obj/item/integrated_circuit/time/delay/half_sec
sort_string = "WAAID"
/datum/design/circuit/integrated_circuit/time/delay/tenth_sec
id = "cc-tenth_sec_delay"
build_path = /obj/item/integrated_circuit/time/delay/tenth_sec
sort_string = "WAAIF"
/datum/design/circuit/integrated_circuit/time/delay/custom
id = "cc-custom_delay"
build_path = /obj/item/integrated_circuit/time/delay/custom
sort_string = "WAAIG"
/datum/design/circuit/integrated_circuit/time/ticker
id = "cc-ticker"
build_path = /obj/item/integrated_circuit/time/ticker
sort_string = "WAAIH"
/datum/design/circuit/integrated_circuit/time/ticker/slow
id = "cc-ticker_slow"
build_path = /obj/item/integrated_circuit/time/ticker/slow
sort_string = "WAAII"
/datum/design/circuit/integrated_circuit/time/ticker/fast
id = "cc-ticker_fast"
build_path = /obj/item/integrated_circuit/time/ticker/fast
sort_string = "WAAIJ"
req_tech = list(TECH_ENGINEERING = 4, TECH_DATA = 4)
/datum/design/circuit/integrated_circuit/time/clock
id = "cc-clock"
build_path = /obj/item/integrated_circuit/time/clock
sort_string = "WAAIK"
/* Uncomment if someone makes these buildable
/datum/design/circuit/general_alert
name = "general alert console"

View File

@@ -54,6 +54,7 @@ research holder datum.
known_tech += new T(src)
for(var/D in typesof(/datum/design) - /datum/design)
possible_designs += new D(src)
generate_integrated_circuit_designs()
RefreshResearch()
/datum/research/techonly
@@ -129,6 +130,20 @@ research holder datum.
if(initial(check_tech.id) == ID)
return initial(check_tech.name)
/datum/research/proc/generate_integrated_circuit_designs()
spawn(2 SECONDS) // So the list has time to initialize.
for(var/obj/item/integrated_circuit/IC in all_integrated_circuits)
if(IC.spawn_flags & IC_SPAWN_RESEARCH)
var/datum/design/D = new /datum/design/circuit(src)
D.name = "Custom circuitry \[[IC.category_text]\] ([IC.name])"
D.id = "ic-[lowertext(IC.name)]"
if(IC.origin_tech && IC.origin_tech.len)
D.req_tech = IC.origin_tech.Copy()
else
D.req_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2)
D.build_path = IC.type
possible_designs += D
/***************************************************************
** Technology Datums **
** Includes all the various technoliges and what they make. **