mirror of
https://github.com/Sandstorm-Station/Sandstorm-Station-13.git
synced 2026-08-23 05:08:54 +01:00
Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13
This commit is contained in:
@@ -5,10 +5,6 @@
|
||||
"ab" = (
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"ac" = (
|
||||
/obj/effect/mob_spawn/human/engineer/rig,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"ad" = (
|
||||
/obj/machinery/power/floodlight,
|
||||
/obj/structure/cable{
|
||||
@@ -176,10 +172,9 @@
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"aI" = (
|
||||
/obj/item/pda/engineering{
|
||||
note = "To-do: Check on singularity status. Get a pint at eat. Nag the research manager for RCDs."
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"aJ" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
@@ -346,20 +341,10 @@
|
||||
/obj/effect/decal/cleanable/blood/splatter,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"be" = (
|
||||
/obj/item/card/id{
|
||||
access = list(200,204,11,12,10);
|
||||
assignment = "Senior Station Engineer";
|
||||
desc = "A card used to provide ID and determine access across the station. There's blood dripping from the corner. Ew.";
|
||||
name = "George 'Plastic' Miller's ID Card (Senior Station Engineer)";
|
||||
registered_name = "George 'Plastic' Miller"
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bf" = (
|
||||
/obj/effect/gibspawner/generic,
|
||||
/obj/effect/decal/cleanable/blood,
|
||||
/obj/effect/decal/cleanable/blood/gibs/core,
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bg" = (
|
||||
@@ -544,10 +529,6 @@
|
||||
/obj/item/shard/plasma,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bz" = (
|
||||
/obj/item/clothing/suit/space/hardsuit/engine,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"bA" = (
|
||||
/obj/item/flashlight/flare,
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
@@ -1013,13 +994,6 @@
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cU" = (
|
||||
/obj/effect/mob_spawn/human/engineer/rig,
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/open/floor/plating/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cV" = (
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line,
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
@@ -1032,12 +1006,7 @@
|
||||
},
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cX" = (
|
||||
/obj/machinery/rnd/production/circuit_imprinter,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"cY" = (
|
||||
/obj/machinery/rnd/production/protolathe/department/engineering,
|
||||
/obj/machinery/light/small/broken,
|
||||
/turf/open/floor/plating/snowed/smoothed/icemoon,
|
||||
/area/icemoon/surface/outdoors)
|
||||
@@ -1437,9 +1406,9 @@ aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aI
|
||||
aa
|
||||
be
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
@@ -1452,7 +1421,7 @@ ak
|
||||
aa
|
||||
"}
|
||||
(9,1,1) = {"
|
||||
ac
|
||||
ab
|
||||
ab
|
||||
al
|
||||
ap
|
||||
@@ -1461,7 +1430,7 @@ aa
|
||||
aa
|
||||
aa
|
||||
bf
|
||||
bz
|
||||
aa
|
||||
aa
|
||||
aa
|
||||
af
|
||||
@@ -1507,7 +1476,7 @@ bA
|
||||
aa
|
||||
aa
|
||||
af
|
||||
cA
|
||||
aI
|
||||
DM
|
||||
dc
|
||||
al
|
||||
@@ -1529,7 +1498,7 @@ aa
|
||||
ab
|
||||
ab
|
||||
cF
|
||||
cU
|
||||
gA
|
||||
al
|
||||
al
|
||||
aO
|
||||
@@ -1698,7 +1667,7 @@ cf
|
||||
cr
|
||||
cB
|
||||
cI
|
||||
cX
|
||||
ab
|
||||
aB
|
||||
aa
|
||||
aa
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
|
||||
"a" = (
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/turf/closed/indestructible/riveted/uranium,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"b" = (
|
||||
/turf/closed/mineral/random/snow/no_caves,
|
||||
@@ -12,7 +12,17 @@
|
||||
/obj/item/paper/crumpled{
|
||||
info = "When one falls into this hot spring, they shall forever be turned into..."
|
||||
},
|
||||
/turf/open/floor/plating/asteroid/snow/icemoon,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"I" = (
|
||||
/turf/closed/indestructible/fakeglass,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"L" = (
|
||||
/obj/structure/fluff/beach_umbrella,
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"U" = (
|
||||
/turf/open/floor/plating/beach/sand,
|
||||
/area/icemoon/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
@@ -34,7 +44,7 @@ b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
b
|
||||
@@ -45,11 +55,11 @@ b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
b
|
||||
@@ -57,65 +67,65 @@ b
|
||||
(4,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(5,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(6,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
I
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
I
|
||||
b
|
||||
"}
|
||||
(7,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
U
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
(8,1,1) = {"
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
L
|
||||
c
|
||||
c
|
||||
c
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
"}
|
||||
@@ -123,11 +133,11 @@ b
|
||||
b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
d
|
||||
a
|
||||
a
|
||||
U
|
||||
U
|
||||
a
|
||||
b
|
||||
b
|
||||
@@ -138,7 +148,7 @@ b
|
||||
b
|
||||
a
|
||||
a
|
||||
a
|
||||
I
|
||||
a
|
||||
a
|
||||
b
|
||||
|
||||
@@ -20,12 +20,6 @@
|
||||
},
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/icemoon/surface/outdoors)
|
||||
"f" = (
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph,
|
||||
/obj/structure/falsewall/abductor,
|
||||
/obj/structure/fans/tiny,
|
||||
/turf/open/floor/mineral/diamond,
|
||||
/area/icemoon/surface/outdoors)
|
||||
|
||||
(1,1,1) = {"
|
||||
a
|
||||
@@ -101,7 +95,7 @@ d
|
||||
e
|
||||
d
|
||||
c
|
||||
f
|
||||
b
|
||||
a
|
||||
a
|
||||
"}
|
||||
|
||||
@@ -298,6 +298,8 @@ GLOBAL_LIST_INIT(atmos_adjacent_savings, list(0,0))
|
||||
|
||||
#define ARCHIVE_TEMPERATURE(gas) gas.temperature_archived = gas.temperature
|
||||
|
||||
#define ARCHIVE(gas) gas.temperature_archived = gas.temperature; gas.gas_archive = gas.gases.Copy();
|
||||
|
||||
GLOBAL_LIST_INIT(pipe_paint_colors, list(
|
||||
"amethyst" = rgb(130,43,255), //supplymain
|
||||
"blue" = rgb(0,0,255),
|
||||
|
||||
@@ -5,12 +5,16 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
id_arg_index = 3
|
||||
var/flavor_name = "Flavor Text"
|
||||
var/list/texts_by_atom = list()
|
||||
var/addendum = "This can also be used for OOC notes and preferences!"
|
||||
var/addendum = ""
|
||||
var/always_show = FALSE
|
||||
var/max_len = MAX_FLAVOR_LEN
|
||||
var/can_edit = TRUE
|
||||
/// For preference/DNA saving/loading. Null to prevent. Prefs are only loaded from obviously if it exists in preferences.features.
|
||||
var/save_key
|
||||
/// Do not attempt to render a preview on examine. If this is on, it will display as \[flavor_name\]
|
||||
var/examine_no_preview = FALSE
|
||||
|
||||
/datum/element/flavor_text/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE)
|
||||
/datum/element/flavor_text/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key, _examine_no_preview = FALSE)
|
||||
. = ..()
|
||||
|
||||
if(. == ELEMENT_INCOMPATIBLE || !isatom(target)) //no reason why this shouldn't work on atoms too.
|
||||
@@ -25,6 +29,8 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
addendum = _addendum
|
||||
always_show = _always_show
|
||||
can_edit = _edit
|
||||
save_key = _save_key
|
||||
examine_no_preview = _examine_no_preview
|
||||
|
||||
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/show_flavor)
|
||||
|
||||
@@ -33,9 +39,12 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
LAZYOR(GLOB.mobs_with_editable_flavor_text[M], src)
|
||||
M.verbs |= /mob/proc/manage_flavor_tests
|
||||
|
||||
if(save_key && ishuman(target))
|
||||
RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
|
||||
|
||||
/datum/element/flavor_text/Detach(atom/A)
|
||||
. = ..()
|
||||
UnregisterSignal(A, COMSIG_PARENT_EXAMINE)
|
||||
UnregisterSignal(A, list(COMSIG_PARENT_EXAMINE, COMSIG_HUMAN_PREFS_COPIED_TO))
|
||||
texts_by_atom -= A
|
||||
if(can_edit && ismob(A))
|
||||
var/mob/M = A
|
||||
@@ -58,6 +67,9 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
var/text = texts_by_atom[target]
|
||||
if(!text)
|
||||
return
|
||||
if(examine_no_preview)
|
||||
examine_list += "<span class='notice'><a href='?src=[REF(src)];show_flavor=[REF(target)]'>\[[flavor_name]\]</a></span>"
|
||||
return
|
||||
var/msg = replacetext(text, "\n", " ")
|
||||
if(length_char(msg) <= 40)
|
||||
examine_list += "<span class='notice'>[msg]</span>"
|
||||
@@ -112,13 +124,17 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/element/flavor_text/proc/update_prefs_flavor_text(mob/living/carbon/human/H, datum/preferences/P, icon_updates = TRUE, roundstart_checks = TRUE)
|
||||
if(P.features.Find(save_key))
|
||||
texts_by_atom[H] = P.features[save_key]
|
||||
|
||||
//subtypes with additional hooks for DNA and preferences.
|
||||
/datum/element/flavor_text/carbon
|
||||
//list of antagonists etcetera that should have nothing to do with people's snowflakes.
|
||||
var/static/list/i_dont_even_know_who_you_are = typecacheof(list(/datum/antagonist/abductor, /datum/antagonist/ert,
|
||||
/datum/antagonist/nukeop, /datum/antagonist/wizard))
|
||||
|
||||
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE)
|
||||
/datum/element/flavor_text/carbon/Attach(datum/target, text = "", _name = "Flavor Text", _addendum, _max_len = MAX_FLAVOR_LEN, _always_show = FALSE, _edit = TRUE, _save_key = "flavor_text", _examine_no_preview = FALSE)
|
||||
if(!iscarbon(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
. = ..()
|
||||
@@ -127,7 +143,6 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
RegisterSignal(target, COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, .proc/update_dna_flavor_text)
|
||||
RegisterSignal(target, COMSIG_MOB_ANTAG_ON_GAIN, .proc/on_antag_gain)
|
||||
if(ishuman(target))
|
||||
RegisterSignal(target, COMSIG_HUMAN_PREFS_COPIED_TO, .proc/update_prefs_flavor_text)
|
||||
RegisterSignal(target, COMSIG_HUMAN_HARDSET_DNA, .proc/update_dna_flavor_text)
|
||||
RegisterSignal(target, COMSIG_HUMAN_ON_RANDOMIZE, .proc/unset_flavor)
|
||||
|
||||
@@ -136,15 +151,12 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
UnregisterSignal(C, list(COMSIG_CARBON_IDENTITY_TRANSFERRED_TO, COMSIG_MOB_ANTAG_ON_GAIN, COMSIG_HUMAN_PREFS_COPIED_TO, COMSIG_HUMAN_HARDSET_DNA, COMSIG_HUMAN_ON_RANDOMIZE))
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/update_dna_flavor_text(mob/living/carbon/C)
|
||||
texts_by_atom[C] = C.dna.features["flavor_text"]
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/update_prefs_flavor_text(mob/living/carbon/human/H, datum/preferences/P, icon_updates = TRUE, roundstart_checks = TRUE)
|
||||
texts_by_atom[H] = P.features["flavor_text"]
|
||||
texts_by_atom[C] = C.dna.features[save_key]
|
||||
|
||||
/datum/element/flavor_text/carbon/set_flavor(mob/living/carbon/user)
|
||||
. = ..()
|
||||
if(. && user.dna)
|
||||
user.dna.features["flavor_text"] = texts_by_atom[user]
|
||||
user.dna.features[save_key] = texts_by_atom[user]
|
||||
|
||||
/datum/element/flavor_text/carbon/proc/unset_flavor(mob/living/carbon/user)
|
||||
texts_by_atom[user] = ""
|
||||
@@ -153,4 +165,4 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
|
||||
if(is_type_in_typecache(antag, i_dont_even_know_who_you_are))
|
||||
texts_by_atom[user] = ""
|
||||
if(user.dna)
|
||||
user.dna.features["flavor_text"] = ""
|
||||
user.dna.features[save_key] = ""
|
||||
|
||||
@@ -72,7 +72,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
|
||||
|
||||
/datum/material/uranium/on_applied(atom/source, amount, material_flags)
|
||||
. = ..()
|
||||
source.AddComponent(/datum/component/radioactive, amount / 20, source, 0) //half-life of 0 because we keep on going.
|
||||
source.AddComponent(/datum/component/radioactive, amount / 60, source, 0) //half-life of 0 because we keep on going.
|
||||
|
||||
/datum/material/uranium/on_removed(atom/source, material_flags)
|
||||
. = ..()
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
if(log)
|
||||
message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
if(heavy_range >= 1)
|
||||
new /obj/effect/temp_visual/emp/pulse(epicenter)
|
||||
@@ -29,4 +29,4 @@
|
||||
T.emp_act(EMP_LIGHT)
|
||||
else if(distance <= light_range)
|
||||
T.emp_act(EMP_LIGHT)
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -176,3 +176,4 @@ GLOBAL_LIST_INIT(ore_probability, list(/obj/item/stack/ore/uranium = 50,
|
||||
new /obj/item/book/granter/spell/sacredflame(loc)
|
||||
if(28)
|
||||
new /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom(loc)
|
||||
qdel(src)
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
pod_moving = 0
|
||||
if(!QDELETED(pod))
|
||||
var/datum/gas_mixture/floor_mixture = loc.return_air()
|
||||
ARCHIVE_TEMPERATURE(floor_mixture)
|
||||
ARCHIVE_TEMPERATURE(pod.air_contents)
|
||||
ARCHIVE(floor_mixture)
|
||||
ARCHIVE(pod.air_contents)
|
||||
pod.air_contents.share(floor_mixture, 1) //mix the pod's gas mixture with the tile it's on
|
||||
air_update_turf()
|
||||
|
||||
|
||||
@@ -203,8 +203,7 @@
|
||||
mob_spawn_list = list(/mob/living/simple_animal/hostile/asteroid/wolf = 50, /obj/structure/spawner/ice_moon = 3, \
|
||||
/mob/living/simple_animal/hostile/asteroid/polarbear = 30, /obj/structure/spawner/ice_moon/polarbear = 3, \
|
||||
/mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow = 50, /mob/living/simple_animal/hostile/asteroid/goldgrub = 10)
|
||||
|
||||
flora_spawn_list = list(/obj/structure/flora/tree/pine = 2, /obj/structure/flora/grass/both = 12)
|
||||
flora_spawn_list = list(/obj/structure/flora/tree/pine = 2, /obj/structure/flora/grass/both = 12, /obj/structure/flora/rock/icy = 6, /obj/structure/flora/rock/pile/icy = 6)
|
||||
data_having_type = /turf/open/floor/plating/asteroid/airless/cave/snow/has_data
|
||||
turf_type = /turf/open/floor/plating/asteroid/snow/icemoon
|
||||
choose_turf_type = list(/turf/open/floor/plating/asteroid/snow/icemoon = 19, /turf/open/floor/plating/ice/icemoon = 1)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
if(!target || !R)
|
||||
return
|
||||
var/turfing = isturf(target)
|
||||
G.generate_fluid()
|
||||
G.generate_fluid(R)
|
||||
if(spill && R.total_volume >= 5)
|
||||
R.reaction(turfing ? target : target.loc, TOUCH, 1, 0)
|
||||
if(!turfing)
|
||||
|
||||
@@ -159,10 +159,10 @@
|
||||
if(fluid_id && CHECK_BITFIELD(genital_flags, GENITAL_FUID_PRODUCTION))
|
||||
time_since_last_orgasm++
|
||||
|
||||
/obj/item/organ/genital/proc/generate_fluid()
|
||||
/obj/item/organ/genital/proc/generate_fluid(datum/reagents/R)
|
||||
var/amount = clamp(fluid_rate * time_since_last_orgasm * fluid_mult,0,fluid_max_volume)
|
||||
reagents.clear_reagents()
|
||||
reagents.add_reagent(fluid_id,amount)
|
||||
R.clear_reagents()
|
||||
R.add_reagent(fluid_id,amount)
|
||||
return TRUE
|
||||
|
||||
/obj/item/organ/genital/proc/update_link()
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
temperature_archived = temperature
|
||||
|
||||
/turf/open/archive()
|
||||
ARCHIVE_TEMPERATURE(air)
|
||||
ARCHIVE(air)
|
||||
archived_cycle = SSair.times_fired
|
||||
temperature_archived = temperature
|
||||
|
||||
@@ -215,7 +215,7 @@
|
||||
if (planet_atmos) //share our air with the "atmosphere" "above" the turf
|
||||
var/datum/gas_mixture/G = new
|
||||
G.copy_from_turf(src)
|
||||
ARCHIVE_TEMPERATURE(G)
|
||||
ARCHIVE(G)
|
||||
if(our_air.compare(G))
|
||||
if(!our_excited_group)
|
||||
var/datum/excited_group/EG = new
|
||||
|
||||
@@ -17,6 +17,7 @@ GLOBAL_LIST_INIT(meta_gas_ids, meta_gas_id_list())
|
||||
GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
/datum/gas_mixture
|
||||
var/list/gases = list()
|
||||
var/list/gas_archive = list()
|
||||
var/temperature = 0 //kelvins
|
||||
var/tmp/temperature_archived = 0
|
||||
var/volume = CELL_VOLUME //liters
|
||||
@@ -31,13 +32,25 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
|
||||
//PV = nRT
|
||||
|
||||
/datum/gas_mixture/proc/heat_capacity() //joules per kelvin
|
||||
/datum/gas_mixture/proc/heat_capacity()
|
||||
|
||||
/datum/gas_mixture/proc/archived_heat_capacity()
|
||||
|
||||
/datum/gas_mixture/heat_capacity() //joules per kelvin
|
||||
var/list/cached_gases = gases
|
||||
var/list/cached_gasheats = GLOB.meta_gas_specific_heats
|
||||
. = 0
|
||||
for(var/id in cached_gases)
|
||||
. += cached_gases[id] * cached_gasheats[id]
|
||||
|
||||
/datum/gas_mixture/archived_heat_capacity()
|
||||
// lots of copypasta but heat_capacity is the single proc called the most in a regular round, bar none, so performance loss adds up
|
||||
var/list/cached_gases = gas_archive
|
||||
var/list/cached_gasheats = GLOB.meta_gas_specific_heats
|
||||
. = 0
|
||||
for(var/id in cached_gases)
|
||||
. += cached_gases[id] * cached_gasheats[id]
|
||||
|
||||
/datum/gas_mixture/turf/heat_capacity() // Same as above except vacuums return HEAT_CAPACITY_VACUUM
|
||||
var/list/cached_gases = gases
|
||||
var/list/cached_gasheats = GLOB.meta_gas_specific_heats
|
||||
@@ -46,6 +59,14 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
if(!.)
|
||||
. += HEAT_CAPACITY_VACUUM //we want vacuums in turfs to have the same heat capacity as space
|
||||
|
||||
/datum/gas_mixture/turf/archived_heat_capacity() // Same as above except vacuums return HEAT_CAPACITY_VACUUM
|
||||
var/list/cached_gases = gas_archive
|
||||
var/list/cached_gasheats = GLOB.meta_gas_specific_heats
|
||||
for(var/id in cached_gases)
|
||||
. += cached_gases[id] * cached_gasheats[id]
|
||||
if(!.)
|
||||
. += HEAT_CAPACITY_VACUUM //we want vacuums in turfs to have the same heat capacity as space
|
||||
|
||||
/datum/gas_mixture/proc/total_moles()
|
||||
var/cached_gases = gases
|
||||
TOTAL_MOLES(cached_gases, .)
|
||||
@@ -67,6 +88,10 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
/datum/gas_mixture/proc/thermal_energy() //joules
|
||||
return THERMAL_ENERGY(src) //see code/__DEFINES/atmospherics.dm; use the define in performance critical areas
|
||||
|
||||
/datum/gas_mixture/proc/archive()
|
||||
//Update archived versions of variables
|
||||
//Returns: 1 in all cases
|
||||
|
||||
/datum/gas_mixture/proc/merge(datum/gas_mixture/giver)
|
||||
//Merges all air from giver into self. Deletes giver.
|
||||
//Returns: 1 if we are mutable, 0 otherwise
|
||||
@@ -111,6 +136,10 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
//Performs various reactions such as combustion or fusion (LOL)
|
||||
//Returns: 1 if any reaction took place; 0 otherwise
|
||||
|
||||
/datum/gas_mixture/archive()
|
||||
temperature_archived = temperature
|
||||
gas_archive = gases.Copy()
|
||||
return 1
|
||||
|
||||
/datum/gas_mixture/merge(datum/gas_mixture/giver)
|
||||
if(!giver)
|
||||
@@ -245,7 +274,7 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
//GAS TRANSFER
|
||||
for(var/id in cached_gases | sharer_gases) // transfer gases
|
||||
|
||||
delta = QUANTIZE(cached_gases[id] - sharer_gases[id])/(atmos_adjacent_turfs+1) //the amount of gas that gets moved between the mixtures
|
||||
delta = QUANTIZE(gas_archive[id] - sharer.gas_archive[id])/(atmos_adjacent_turfs+1) //the amount of gas that gets moved between the mixtures
|
||||
|
||||
if(delta && abs_temperature_delta > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
||||
gas_heat_capacity = delta * cached_gasheats[id]
|
||||
@@ -293,8 +322,8 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list())
|
||||
sharer_temperature = sharer.temperature_archived
|
||||
var/temperature_delta = temperature_archived - sharer_temperature
|
||||
if(abs(temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)
|
||||
var/self_heat_capacity = heat_capacity()
|
||||
sharer_heat_capacity = sharer_heat_capacity || sharer.heat_capacity()
|
||||
var/self_heat_capacity = archived_heat_capacity()
|
||||
sharer_heat_capacity = sharer_heat_capacity || sharer.archived_heat_capacity()
|
||||
|
||||
if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY))
|
||||
var/heat = conduction_coefficient*temperature_delta* \
|
||||
|
||||
@@ -10,24 +10,13 @@
|
||||
group = "Science"
|
||||
crate_type = /obj/structure/closet/crate/science
|
||||
|
||||
/* For later
|
||||
/datum/supply_pack/science/monkey
|
||||
/datum/supply_pack/science/ape //Ape out!
|
||||
name = "Ape Cube Crate"
|
||||
desc = "Pss what a new test subject with supper strangth, speed, and love for bananas all at the same time? Say no more... Contains a single ape cube. Dont add water!"
|
||||
contraband = TRUE
|
||||
cost = 2500
|
||||
contains = list (/obj/item/reagent_containers/food/snacks/monkeycube/ape)
|
||||
contains = list (/obj/item/reagent_containers/food/snacks/cube/ape)
|
||||
crate_name = "ape cube crate"
|
||||
*/
|
||||
|
||||
/datum/supply_pack/science/aliens
|
||||
name = "Advanced Alien Alloy Crate Crate"
|
||||
desc = "Hello brothers from the stars!!! Our fellow brethren have made contact at long last and gave us gifts man! They really did build the prymi- Connection Error- Bro we’ll send you a sheet of advanced alien alloy."
|
||||
cost = 15000
|
||||
DropPodOnly = TRUE
|
||||
contraband = TRUE
|
||||
contains = list(/obj/item/stack/sheet/mineral/abductor)
|
||||
crate_name = "alien bro alloy crate"
|
||||
|
||||
/datum/supply_pack/science/beakers
|
||||
name = "Chemistry Beakers Crate"
|
||||
|
||||
@@ -153,6 +153,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
"ipc_screen" = "Sunburst",
|
||||
"ipc_antenna" = "None",
|
||||
"flavor_text" = "",
|
||||
"ooc_notes" = "",
|
||||
"meat_type" = "Mammalian",
|
||||
"body_model" = MALE,
|
||||
"body_size" = RESIZE_DEFAULT_SIZE
|
||||
@@ -348,6 +349,16 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "[features["flavor_text"]]"
|
||||
else
|
||||
dat += "[TextPreview(features["flavor_text"])]...<BR>"
|
||||
dat += "<h2>OOC notes</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=ooc_notes;task=input'><b>Set OOC notes</b></a><br>"
|
||||
var/ooc_notes_len = length(features["ooc_notes"])
|
||||
if(ooc_notes_len <= 40)
|
||||
if(!ooc_notes_len)
|
||||
dat += "\[...\]"
|
||||
else
|
||||
dat += "[features["ooc_notes"]]"
|
||||
else
|
||||
dat += "[TextPreview(features["ooc_notes"])]...<BR>"
|
||||
dat += "<h2>Body</h2>"
|
||||
dat += "<b>Gender:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=gender;task=input'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]</a><BR>"
|
||||
if(gender != NEUTER && pref_species.sexes)
|
||||
@@ -1510,6 +1521,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(!isnull(msg))
|
||||
features["flavor_text"] = html_decode(msg)
|
||||
|
||||
if("ooc_notes")
|
||||
var/msg = stripped_multiline_input(usr, "Set always-visible OOC notes related to content preferences. THIS IS NOT FOR CHARACTE DESCRIPTIONS!!", "OOC notes", features["ooc_notes"], MAX_FLAVOR_LEN, TRUE)
|
||||
if(!isnull(msg))
|
||||
features["ooc_notes"] = html_decode(msg)
|
||||
|
||||
if("hair")
|
||||
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference","#"+hair_color) as color|null
|
||||
if(new_hair)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||
// where you would want the updater procs below to run
|
||||
#define SAVEFILE_VERSION_MAX 30
|
||||
#define SAVEFILE_VERSION_MAX 31
|
||||
|
||||
/*
|
||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||
@@ -535,6 +535,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
else //We have no old flavortext, default to new
|
||||
S["feature_flavor_text"] >> features["flavor_text"]
|
||||
|
||||
S["feature_ooc_notes"] >> features["ooc_notes"]
|
||||
|
||||
S["vore_flags"] >> vore_flags
|
||||
S["vore_taste"] >> vore_taste
|
||||
S["belly_prefs"] >> belly_prefs
|
||||
@@ -643,6 +645,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
|
||||
features["flavor_text"] = copytext(features["flavor_text"], 1, MAX_FLAVOR_LEN)
|
||||
features["ooc_notes"] = copytext(features["ooc_notes"], 1, MAX_FLAVOR_LEN)
|
||||
|
||||
joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole))
|
||||
//Validate job prefs
|
||||
@@ -746,6 +749,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
WRITE_FILE(S["feature_has_womb"], features["has_womb"])
|
||||
|
||||
WRITE_FILE(S["feature_ooc_notes"], features["ooc_notes"])
|
||||
|
||||
//Custom names
|
||||
for(var/custom_name_id in GLOB.preferences_custom_names)
|
||||
var/savefile_slot_name = custom_name_id + "_name" //TODO remove this
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
|
||||
//LightToggle
|
||||
|
||||
/obj/item/clothing/head/helment/ComponentInitialize()
|
||||
/obj/item/clothing/head/helmet/ComponentInitialize()
|
||||
. = ..()
|
||||
AddElement(/datum/element/update_icon_updates_onmob)
|
||||
|
||||
|
||||
@@ -180,6 +180,10 @@
|
||||
name = "mining boots"
|
||||
desc = "Steel-toed mining boots for mining in hazardous environments. Very good at keeping toes uncrushed."
|
||||
icon_state = "explorer"
|
||||
cold_protection = FEET|LEGS
|
||||
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
|
||||
heat_protection = FEET|LEGS
|
||||
max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/clothing/shoes/cult
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
/obj/item/clothing/head/helmet/space/hardsuit/dropped(mob/user)
|
||||
..()
|
||||
if(suit)
|
||||
if(suit && !ismob(loc)) //equipped() will handle mob cases, so it doesn't disengage twice.
|
||||
suit.RemoveHelmet()
|
||||
soundloop.stop(user)
|
||||
|
||||
|
||||
@@ -395,6 +395,12 @@
|
||||
tastes = list("milk" = 1, "beef" = 1)
|
||||
dried_being = /mob/living/simple_animal/cow
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cube/ape
|
||||
name = "ape cube"
|
||||
desc = "Don't add water."
|
||||
tastes = list("the jungle" = 1, "bananas" = 1, "jimmies" = 1)
|
||||
dried_being = /mob/living/simple_animal/hostile/gorilla
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/cube/egg
|
||||
//Well eggs normally are able to hatch into small birds, this one does not.
|
||||
//Also in order to have a normal egg hatch you need a hen to lay the egg that is able to hatch, meaning this one is for on-demand hen needs.
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
body_parts_covered = HEAD
|
||||
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
||||
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
||||
cold_protection = HEAD
|
||||
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
||||
heat_protection = HEAD
|
||||
armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
|
||||
@@ -133,6 +133,7 @@
|
||||
/datum/sprite_accessory/antenna
|
||||
icon = 'modular_citadel/icons/mob/ipc_antennas.dmi'
|
||||
color_src = MUTCOLORS2
|
||||
relevant_layers = list(BODY_ADJ_LAYER)
|
||||
recommended_species = list("ipc")
|
||||
|
||||
/datum/sprite_accessory/antenna/none
|
||||
|
||||
@@ -38,8 +38,9 @@
|
||||
. = ..()
|
||||
if(!CONFIG_GET(flag/disable_human_mood))
|
||||
AddComponent(/datum/component/mood)
|
||||
AddElement(/datum/element/flavor_text/carbon)
|
||||
AddElement(/datum/element/flavor_text/carbon, _name = "Flavor Text", _save_key = "flavor_text")
|
||||
AddElement(/datum/element/flavor_text, "", "Temporary Flavor Text", "This should be used only for things pertaining to the current round!")
|
||||
AddElement(/datum/element/flavor_text, _name = "OOC Notes", _addendum = "Put information on ERP/vore/lewd-related preferences here. THIS SHOULD NOT CONTAIN REGULAR FLAVORTEXT!!", _always_show = TRUE, _save_key = "ooc_notes", _examine_no_preview = TRUE)
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
QDEL_NULL(physiology)
|
||||
|
||||
@@ -82,3 +82,11 @@
|
||||
materials = list(/datum/material/iron = 100, /datum/material/glass = 100)
|
||||
build_path = /obj/item/assembly/control/electrochromatic
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
/datum/design/electrochromatic_kit
|
||||
name = "Electrochromatic Upgrade Kit"
|
||||
id = "electrochromatic_kit"
|
||||
build_type = AUTOLATHE
|
||||
materials = list(/datum/material/iron = 2010, /datum/material/glass = 5)
|
||||
build_path = /obj/item/electronics/electrochromatic_kit
|
||||
category = list("initial", "Electronics")
|
||||
|
||||
@@ -91,4 +91,17 @@
|
||||
actual_costs[i] -= L[i]
|
||||
return actual_costs
|
||||
else
|
||||
return research_costs
|
||||
return research_costs
|
||||
|
||||
//Base Nodes, everything starts from here.
|
||||
|
||||
/datum/techweb_node/base
|
||||
id = "base"
|
||||
starting_node = TRUE
|
||||
display_name = "Basic Research Technology"
|
||||
description = "NT default research technologies."
|
||||
// Default research tech, prevents bricking
|
||||
design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "desttagger", "handlabel", "packagewrap",
|
||||
"destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab",
|
||||
"space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_shellclip", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_islug", "sec_dart", "sec_38", "sec_38lethal",
|
||||
"rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass")
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,36 @@
|
||||
|
||||
////////////////////////Alien technology////////////////////////
|
||||
/datum/techweb_node/alientech //AYYYYYYYYLMAOO tech
|
||||
id = "alientech"
|
||||
display_name = "Alien Technology"
|
||||
description = "Things used by the greys."
|
||||
prereq_ids = list("biotech","engineering")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
hidden = TRUE
|
||||
design_ids = list("alienalloy")
|
||||
|
||||
/datum/techweb_node/alientech/New()
|
||||
. = ..()
|
||||
boost_item_paths = typesof(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien,
|
||||
/obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/cautery/alien,
|
||||
/obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor,
|
||||
/obj/item/crowbar/abductor, /obj/item/multitool/abductor,
|
||||
/obj/item/stock_parts/cell/infinite/abductor, /obj/item/weldingtool/abductor,
|
||||
/obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor,
|
||||
/obj/item/abductor, /obj/item/stack/sheet/mineral/abductor)
|
||||
|
||||
/datum/techweb_node/alien_bio
|
||||
id = "alien_bio"
|
||||
display_name = "Alien Biological Tools"
|
||||
description = "Advanced biological tools."
|
||||
prereq_ids = list("alientech", "advance_surgerytools")
|
||||
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery", "ayyplantgenes")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/alien_engi
|
||||
id = "alien_engi"
|
||||
display_name = "Alien Engineering"
|
||||
description = "Alien engineering tools."
|
||||
prereq_ids = list("alientech", "exp_tools")
|
||||
design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
/////////////////////////Biotech/////////////////////////
|
||||
/datum/techweb_node/biotech
|
||||
id = "biotech"
|
||||
display_name = "Biological Technology"
|
||||
description = "What makes us tick." //the MC, silly!
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv", "medspray","genescanner")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_biotech
|
||||
id = "adv_biotech"
|
||||
display_name = "Advanced Biotechnology"
|
||||
description = "Advanced Biotechnology"
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("piercesyringe", "crewpinpointer", "smoke_machine", "plasmarefiller", "limbgrower", "meta_beaker", "healthanalyzer_advanced", "harvester", "holobarrier_med", "defibrillator_compact", "smartdartgun", "medicinalsmartdart", "pHmeter", "containmentbodybag")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/bio_process
|
||||
id = "bio_process"
|
||||
display_name = "Biological Processing"
|
||||
description = "From slimes to kitchens."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("smartfridge", "gibber", "deepfryer", "monkey_recycler", "processor", "gibber", "microwave", "reagentgrinder", "dish_drive")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
/////////////////////////Bluespace tech/////////////////////////
|
||||
/datum/techweb_node/bluespace_basic //Bluespace-memery
|
||||
id = "bluespace_basic"
|
||||
display_name = "Basic Bluespace Theory"
|
||||
description = "Basic studies into the mysterious alternate dimension known as bluespace."
|
||||
prereq_ids = list("base", "datatheory")
|
||||
design_ids = list("beacon", "xenobioconsole", "telesci_gps", "xenobio_monkeys")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/practical_bluespace
|
||||
id = "practical_bluespace"
|
||||
display_name = "Applied Bluespace Research"
|
||||
description = "Using bluespace to make things faster and better."
|
||||
prereq_ids = list("bluespace_basic", "engineering")
|
||||
design_ids = list("bs_rped","biobag_holding","minerbag_holding", "bluespacebeaker", "bluespacesyringe", "phasic_scanning", "bluespacesmartdart", "xenobio_slimebasic")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/adv_bluespace
|
||||
id = "adv_bluespace"
|
||||
display_name = "Advanced Bluespace Research"
|
||||
description = "Deeper understanding of how the Bluespace dimension works"
|
||||
prereq_ids = list("practical_bluespace", "high_efficiency")
|
||||
design_ids = list("bluespace_matter_bin", "femto_mani", "triphasic_scanning", "bluespace_crystal", "xenobio_slimeadv")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
|
||||
/datum/techweb_node/bluespace_power
|
||||
id = "bluespace_power"
|
||||
display_name = "Bluespace Power Technology"
|
||||
description = "Even more powerful.. power!"
|
||||
prereq_ids = list("adv_power", "adv_bluespace")
|
||||
design_ids = list("bluespace_cell", "quadratic_capacitor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/bluespace_holding
|
||||
id = "bluespace_holding"
|
||||
display_name = "Bluespace Pockets"
|
||||
description = "Studies into the mysterious alternate dimension known as bluespace and how to place items in the threads of reality."
|
||||
prereq_ids = list("adv_power", "adv_bluespace", "adv_biotech", "adv_plasma")
|
||||
design_ids = list( "bluespacebodybag","bag_holding", "bluespace_pod", "borg_upgrade_trashofholding", "blutrash", "satchel_holding", "bsblood_bag", "duffelbag_holding")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5500)
|
||||
|
||||
/datum/techweb_node/bluespace_portal
|
||||
id = "bluespace_portal"
|
||||
display_name = "Bluespace Portals"
|
||||
description = "Allows for Bluespace Tech to be used tandem with Wormhole tech."
|
||||
prereq_ids = list("adv_weaponry", "adv_bluespace")
|
||||
design_ids = list("wormholeprojector")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/bluespace_warping
|
||||
id = "bluespace_warping"
|
||||
display_name = "Bluespace Travel"
|
||||
description = "Application of Bluespace for static teleportation technology."
|
||||
prereq_ids = list("adv_power", "adv_bluespace")
|
||||
design_ids = list("tele_station", "tele_hub", "quantumpad", "quantum_keycard", "launchpad", "launchpad_console", "teleconsole", "roastingstick")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/unregulated_bluespace
|
||||
id = "unregulated_bluespace"
|
||||
display_name = "Unregulated Bluespace Research"
|
||||
description = "Bluespace technology using unstable or unbalanced procedures, prone to damaging the fabric of bluespace. Outlawed by galactic conventions."
|
||||
prereq_ids = list("bluespace_warping", "syndicate_basic")
|
||||
design_ids = list("desynchronizer")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
////////////////////////Computer tech////////////////////////
|
||||
/datum/techweb_node/comptech
|
||||
id = "comptech"
|
||||
display_name = "Computer Consoles"
|
||||
description = "Computers and how they work."
|
||||
prereq_ids = list("datatheory")
|
||||
design_ids = list("cargo", "cargorequest", "libraryconsole", "mining", "miningshuttle", "crewconsole", "rdcamera", "comconsole", "idcardconsole", "seccamera")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/computer_hardware_basic //Modular computers are shitty and nearly useless so until someone makes them actually useful this can be easy to get.
|
||||
id = "computer_hardware_basic"
|
||||
display_name = "Computer Hardware"
|
||||
description = "How computer hardware are made."
|
||||
prereq_ids = list("comptech")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1250) //they are really kinda shitty
|
||||
design_ids = list("hdd_basic", "hdd_advanced", "hdd_super", "hdd_cluster", "ssd_small", "ssd_micro", "netcard_basic", "netcard_advanced", "netcard_wired",
|
||||
"portadrive_basic", "portadrive_advanced", "portadrive_super", "cardslot", "aislot", "miniprinter", "APClink", "bat_control", "bat_normal", "bat_advanced",
|
||||
"bat_super", "bat_micro", "bat_nano", "cpu_normal", "pcpu_normal", "cpu_small", "pcpu_small")
|
||||
|
||||
/datum/techweb_node/comp_recordkeeping
|
||||
id = "comp_recordkeeping"
|
||||
display_name = "Computerized Recordkeeping"
|
||||
description = "Organized record databases and how they're used."
|
||||
prereq_ids = list("comptech")
|
||||
design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1250)
|
||||
|
||||
/datum/techweb_node/telecomms
|
||||
id = "telecomms"
|
||||
display_name = "Telecommunications Technology"
|
||||
description = "Subspace transmission technology for near-instant communications devices."
|
||||
prereq_ids = list("comptech", "bluespace_basic")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
design_ids = list("s-receiver", "s-bus", "s-broadcaster", "s-processor", "s-hub", "s-server", "s-relay", "comm_monitor", "comm_server",
|
||||
"s-ansible", "s-filter", "s-amplifier", "ntnet_relay", "s-treatment", "s-analyzer", "s-crystal", "s-transmitter", "message_monitor")
|
||||
|
||||
/datum/techweb_node/integrated_HUDs
|
||||
id = "integrated_HUDs"
|
||||
display_name = "Integrated HUDs"
|
||||
description = "The usefulness of computerized records, projected straight onto your eyepiece!"
|
||||
prereq_ids = list("comp_recordkeeping", "emp_basic")
|
||||
design_ids = list("health_hud", "security_hud", "diagnostic_hud", "scigoggles", "health_hud_prescription", "security_hud_prescription", "diagnostic_hud_prescription")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
|
||||
/datum/techweb_node/NVGtech
|
||||
id = "NVGtech"
|
||||
display_name = "Night Vision Technology"
|
||||
description = "Allows seeing in the dark without actual light!"
|
||||
prereq_ids = list("integrated_HUDs", "adv_engi", "emp_adv")
|
||||
design_ids = list("health_hud_night", "security_hud_night", "diagnostic_hud_night", "night_visision_goggles", "nvgmesons", "night_visision_goggles_glasses")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/computer_board_gaming
|
||||
id = "computer_board_gaming"
|
||||
display_name = "Games and Toys"
|
||||
description = "For the slackers on the station."
|
||||
prereq_ids = list("comptech")
|
||||
design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
@@ -0,0 +1,59 @@
|
||||
|
||||
/////////////////////////engineering tech/////////////////////////
|
||||
/datum/techweb_node/engineering
|
||||
id = "engineering"
|
||||
display_name = "Industrial Engineering"
|
||||
description = "A refresher course on modern engineering technology."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("solarcontrol", "recharger", "powermonitor", "rped", "pacman", "adv_capacitor", "adv_scanning", "emitter", "high_cell", "adv_matter_bin",
|
||||
"atmosalerts", "atmos_control", "recycler", "autolathe", "autolathe_secure", "high_micro_laser", "nano_mani", "mesons", "thermomachine", "rad_collector", "tesla_coil", "grounding_rod",
|
||||
"apc_control", "power control", "airlock_board", "firelock_board", "airalarm_electronics", "firealarm_electronics", "cell_charger", "stack_console", "stack_machine", "rcd_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 6000)
|
||||
|
||||
/datum/techweb_node/adv_engi
|
||||
id = "adv_engi"
|
||||
display_name = "Advanced Engineering"
|
||||
description = "Pushing the boundaries of physics, one chainsaw-fist at a time."
|
||||
prereq_ids = list("engineering", "emp_basic")
|
||||
design_ids = list("engine_goggles", "magboots", "forcefield_projector", "weldingmask" , "rcd_loaded", "rpd", "tray_goggles_prescription", "engine_goggles_prescription", "mesons_prescription", "rcd_upgrade_frames", "rcd_upgrade_simple_circuits", "rcd_ammo_large")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000)
|
||||
|
||||
/datum/techweb_node/anomaly
|
||||
id = "anomaly_research"
|
||||
display_name = "Anomaly Research"
|
||||
description = "Unlock the potential of the mysterious anomalies that appear on station."
|
||||
prereq_ids = list("adv_engi", "practical_bluespace")
|
||||
design_ids = list("reactive_armour", "anomaly_neutralizer")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500)
|
||||
|
||||
/datum/techweb_node/high_efficiency
|
||||
id = "high_efficiency"
|
||||
display_name = "High Efficiency Parts"
|
||||
description = "Finely-tooled manufacturing techniques allowing for picometer-perfect precision levels."
|
||||
prereq_ids = list("engineering", "datatheory")
|
||||
design_ids = list("pico_mani", "super_matter_bin")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/adv_power
|
||||
id = "adv_power"
|
||||
display_name = "Advanced Power Manipulation"
|
||||
description = "How to get more zap."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("smes", "super_cell", "hyper_cell", "super_capacitor", "superpacman", "mrspacman", "power_turbine", "power_turbine_console", "power_compressor", "circulator", "teg")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/*
|
||||
/datum/techweb_node/basic_meteor_defense
|
||||
id = "basic_meteor_defense"
|
||||
display_name = "Meteor Defense Research"
|
||||
description = "Unlock the potential of the mysterious of why CC decided to not build these around the station themselves."
|
||||
prereq_ids = list("adv_engi", "high_efficiency")
|
||||
design_ids = list("meteor_defence", "meteor_console")
|
||||
|
||||
/datum/techweb_node/adv_meteor_defense
|
||||
id = "adv_meteor_defense"
|
||||
display_name = "Meteor Defense Research"
|
||||
description = "New and improved coding and lock on tech for meteor defence!"
|
||||
prereq_ids = list("basic_meteor_defense", "adv_datatheory", "emp_adv")
|
||||
design_ids = list("meteor_disk")
|
||||
*/
|
||||
@@ -0,0 +1,21 @@
|
||||
/datum/techweb_node/blueprinted_bottles
|
||||
id = "blueprinted_bottles"
|
||||
display_name = "License Bottling"
|
||||
description = "Some Branded bottles to print and export."
|
||||
starting_node = TRUE
|
||||
design_ids = list("gin", "wine", "whiskey", "vodka", "tequila", "patron", "rum", "kahlua", "vermouth", "goldschlager", "hcider", "cognac", "absinthe", "grappa", "sake", "fernet", "applejack", "champagne", "blazaam", "trappist", "grenadine", "autobottler")
|
||||
|
||||
/datum/techweb_node/blueprinted_exports
|
||||
id = "blueprinted_exports"
|
||||
display_name = "License Exports"
|
||||
description = "Some Branded bottles to print and export."
|
||||
starting_node = TRUE
|
||||
design_ids = list("gin_export", "wine_export", "whiskey_export", "vodka_export", "tequila_export", "patron_export", "rum_export", "kahlua_export", "vermouth_export", "goldschlager_export", "hcider_export", "cognac_export", "absinthe_export", "grappa_export", "sake_export", "fernet_export", "applejack_export", "champagne_export", "blazaam_export", "trappist_export", "grenadine_export")
|
||||
|
||||
/datum/techweb_node/bottle_exports
|
||||
id = "bottle_exports"
|
||||
display_name = "Legal Bottling"
|
||||
prereq_ids = list("blueprinted_bottles")
|
||||
description = "New bottles for printing and selling."
|
||||
design_ids = list("minikeg", "blooddrop", "slim_gold", "white_bloodmoon", "greenroad")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 250)
|
||||
@@ -0,0 +1,205 @@
|
||||
|
||||
////////////////////////mech technology////////////////////////
|
||||
|
||||
/datum/techweb_node/mech
|
||||
id = "mecha"
|
||||
starting_node = TRUE
|
||||
display_name = "Mechanical Exosuits"
|
||||
description = "Mechanized exosuits that are several magnitudes stronger and more powerful than the average human."
|
||||
design_ids = list("mecha_tracking", "mechacontrol", "mechapower", "mech_recharger", "ripley_chassis", "firefighter_chassis", "ripley_torso", "ripley_left_arm", "ripley_right_arm", "ripley_left_leg", "ripley_right_leg",
|
||||
"ripley_main", "ripley_peri", "mech_hydraulic_clamp")
|
||||
|
||||
/datum/techweb_node/mech_tools
|
||||
id = "mech_tools"
|
||||
starting_node = TRUE
|
||||
display_name = "Basic Exosuit Equipment"
|
||||
description = "Various tools fit for basic mech units"
|
||||
design_ids = list("mech_drill", "mech_mscanner", "mech_extinguisher", "mech_cable_layer")
|
||||
|
||||
/datum/techweb_node/adv_mecha
|
||||
id = "adv_mecha"
|
||||
display_name = "Advanced Exosuits"
|
||||
description = "For when you just aren't Gundam enough."
|
||||
prereq_ids = list("adv_robotics")
|
||||
design_ids = list("mech_repair_droid")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/odysseus
|
||||
id = "mecha_odysseus"
|
||||
display_name = "EXOSUIT: Odysseus"
|
||||
description = "Odysseus exosuit designs"
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("odysseus_chassis", "odysseus_torso", "odysseus_head", "odysseus_left_arm", "odysseus_right_arm" ,"odysseus_left_leg", "odysseus_right_leg",
|
||||
"odysseus_main", "odysseus_peri")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/gygax
|
||||
id = "mech_gygax"
|
||||
display_name = "EXOSUIT: Gygax"
|
||||
description = "Gygax exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "weaponry")
|
||||
design_ids = list("gygax_chassis", "gygax_torso", "gygax_head", "gygax_left_arm", "gygax_right_arm", "gygax_left_leg", "gygax_right_leg", "gygax_main",
|
||||
"gygax_peri", "gygax_targ", "gygax_armor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/durand
|
||||
id = "mech_durand"
|
||||
display_name = "EXOSUIT: Durand"
|
||||
description = "Durand exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "adv_weaponry")
|
||||
design_ids = list("durand_chassis", "durand_torso", "durand_head", "durand_left_arm", "durand_right_arm", "durand_left_leg", "durand_right_leg", "durand_main",
|
||||
"durand_peri", "durand_targ", "durand_armor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
/datum/techweb_node/phazon
|
||||
id = "mecha_phazon"
|
||||
display_name = "EXOSUIT: Phazon"
|
||||
description = "Phazon exosuit designs"
|
||||
prereq_ids = list("adv_mecha", "weaponry" , "adv_bluespace")
|
||||
design_ids = list("phazon_chassis", "phazon_torso", "phazon_head", "phazon_left_arm", "phazon_right_arm", "phazon_left_leg", "phazon_right_leg", "phazon_main",
|
||||
"phazon_peri", "phazon_targ", "phazon_armor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/datum/techweb_node/adv_mecha_tools
|
||||
id = "adv_mecha_tools"
|
||||
display_name = "Advanced Exosuit Equipment"
|
||||
description = "Tools for high level mech suits"
|
||||
prereq_ids = list("adv_mecha")
|
||||
design_ids = list("mech_rcd")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/med_mech_tools
|
||||
id = "med_mech_tools"
|
||||
display_name = "Medical Exosuit Equipment"
|
||||
description = "Tools for high level mech suits"
|
||||
prereq_ids = list("adv_biotech")
|
||||
design_ids = list("mech_sleeper", "mech_syringe_gun", "mech_medi_beam")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/mech_modules
|
||||
id = "adv_mecha_modules"
|
||||
display_name = "Simple Exosuit Modules"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("adv_mecha", "bluespace_power")
|
||||
design_ids = list("mech_energy_relay", "mech_ccw_armor", "mech_proj_armor", "mech_generator_nuclear")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_scattershot
|
||||
id = "mecha_tools"
|
||||
display_name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_scattershot", "mech_scattershot_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_seedscatter
|
||||
id = "mech_seedscatter"
|
||||
display_name = "Exosuit Weapon (Melon Seed \"Scattershot\")"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_seedscatter")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_carbine
|
||||
id = "mech_carbine"
|
||||
display_name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_carbine", "mech_carbine_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_ion
|
||||
id = "mmech_ion"
|
||||
display_name = "Exosuit Weapon (MKIV Ion Heavy Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("electronic_weapons", "emp_adv")
|
||||
design_ids = list("mech_ion")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_tesla
|
||||
id = "mech_tesla"
|
||||
display_name = "Exosuit Weapon (MKI Tesla Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("electronic_weapons", "adv_power")
|
||||
design_ids = list("mech_tesla")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_laser
|
||||
id = "mech_laser"
|
||||
display_name = "Exosuit Weapon (CH-PS \"Immolator\" Laser)"
|
||||
description = "A basic piece of mech weaponry"
|
||||
prereq_ids = list("beam_weapons")
|
||||
design_ids = list("mech_laser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_laser_heavy
|
||||
id = "mech_laser_heavy"
|
||||
display_name = "Exosuit Weapon (CH-LC \"Solaris\" Laser Cannon)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("adv_beam_weapons")
|
||||
design_ids = list("mech_laser_heavy")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_grenade_launcher
|
||||
id = "mech_grenade_launcher"
|
||||
display_name = "Exosuit Weapon (SGL-6 Grenade Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("mech_grenade_launcher", "mech_grenade_launcher_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_missile_rack
|
||||
id = "mech_missile_rack"
|
||||
display_name = "Exosuit Weapon (BRM-6 Missile Rack)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("mech_missile_rack", "mech_missile_rack_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/clusterbang_launcher
|
||||
id = "clusterbang_launcher"
|
||||
display_name = "Exosuit Module (SOB-3 Clusterbang Launcher)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("explosive_weapons")
|
||||
design_ids = list("clusterbang_launcher", "clusterbang_launcher_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_teleporter
|
||||
id = "mech_teleporter"
|
||||
display_name = "Exosuit Module (Teleporter Module)"
|
||||
description = "An advanced piece of mech Equipment"
|
||||
prereq_ids = list("adv_bluespace")
|
||||
design_ids = list("mech_teleporter")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_wormhole_gen
|
||||
id = "mech_wormhole_gen"
|
||||
display_name = "Exosuit Module (Localized Wormhole Generator)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("adv_bluespace")
|
||||
design_ids = list("mech_wormhole_gen")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_taser
|
||||
id = "mech_taser"
|
||||
display_name = "Exosuit Weapon (PBT \"Pacifier\" Mounted Taser)"
|
||||
description = "A basic piece of mech weaponry"
|
||||
prereq_ids = list("electronic_weapons")
|
||||
design_ids = list("mech_taser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_lmg
|
||||
id = "mech_lmg"
|
||||
display_name = "Exosuit Weapon (\"Ultra AC 2\" LMG)"
|
||||
description = "An advanced piece of mech weaponry"
|
||||
prereq_ids = list("ballistic_weapons")
|
||||
design_ids = list("mech_lmg", "mech_lmg_ammo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/mech_diamond_drill
|
||||
id = "mech_diamond_drill"
|
||||
display_name = "Exosuit Diamond Drill"
|
||||
description = "A diamond drill fit for a large exosuit"
|
||||
prereq_ids = list("adv_mining")
|
||||
design_ids = list("mech_diamond_drill")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
////////////////////////Medical////////////////////////
|
||||
/datum/techweb_node/cloning
|
||||
id = "cloning"
|
||||
display_name = "Genetic Engineering"
|
||||
description = "We have the technology to make him."
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("clonecontrol", "clonepod", "clonescanner", "scan_console", "cloning_disk")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/cryotech
|
||||
id = "cryotech"
|
||||
display_name = "Cryostasis Technology"
|
||||
description = "Smart freezing of objects to preserve them!"
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("splitbeaker", "noreactsyringe", "cryotube", "cryo_Grenade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/adv_defibrillator_tec
|
||||
id = "adv_defibrillator_tec"
|
||||
display_name = "Defibrillator Upgrades"
|
||||
description = "More ways to bring back the newly dead."
|
||||
prereq_ids = list("adv_biotech", "exp_surgery", "adv_engi", "adv_power")
|
||||
design_ids = list("defib_decay", "defib_shock", "defib_heal", "defib_speed")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
//////////////////////Cybernetics/////////////////////
|
||||
|
||||
/datum/techweb_node/surplus_limbs
|
||||
id = "surplus_limbs"
|
||||
display_name = "Basic Prosthetics"
|
||||
description = "Basic fragile prosthetics for the impaired."
|
||||
starting_node = TRUE
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("basic_l_arm", "basic_r_arm", "basic_r_leg", "basic_l_leg")
|
||||
|
||||
/datum/techweb_node/advance_limbs
|
||||
id = "advance_limbs"
|
||||
display_name = "Upgraded Prosthetics"
|
||||
description = "Reinforced prosthetics for the impaired."
|
||||
prereq_ids = list("adv_biotech", "surplus_limbs")
|
||||
design_ids = list("adv_l_arm", "adv_r_arm", "adv_r_leg", "adv_l_leg")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1250)
|
||||
|
||||
/datum/techweb_node/subdermal_implants
|
||||
id = "subdermal_implants"
|
||||
display_name = "Subdermal Implants"
|
||||
description = "Electronic implants buried beneath the skin."
|
||||
prereq_ids = list("biotech", "datatheory")
|
||||
design_ids = list("implanter", "implantcase", "implant_chem", "implant_tracking", "locator", "c38_trac")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/cyber_organs
|
||||
id = "cyber_organs"
|
||||
display_name = "Cybernetic Organs"
|
||||
description = "We have the technology to rebuild him."
|
||||
prereq_ids = list("adv_biotech")
|
||||
design_ids = list("cybernetic_ears", "cybernetic_heart", "cybernetic_liver", "cybernetic_lungs", "cybernetic_tongue")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
|
||||
/datum/techweb_node/cyber_organs_upgraded
|
||||
id = "cyber_organs_upgraded"
|
||||
display_name = "Upgraded Cybernetic Organs"
|
||||
description = "We have the technology to upgrade him."
|
||||
prereq_ids = list("cyber_organs")
|
||||
design_ids = list("cybernetic_ears_u", "cybernetic_heart_u", "cybernetic_liver_u", "cybernetic_lungs_u")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
|
||||
/datum/techweb_node/cyber_implants
|
||||
id = "cyber_implants"
|
||||
display_name = "Cybernetic Implants"
|
||||
description = "Electronic implants that improve humans."
|
||||
prereq_ids = list("adv_biotech", "adv_datatheory")
|
||||
design_ids = list("ci-nutriment", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud", "ci-service")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_cyber_implants
|
||||
id = "adv_cyber_implants"
|
||||
display_name = "Advanced Cybernetic Implants"
|
||||
description = "Upgraded and more powerful cybernetic implants."
|
||||
prereq_ids = list("neural_programming", "cyber_implants","integrated_HUDs")
|
||||
design_ids = list("ci-toolset", "ci-surgery", "ci-reviver", "ci-nutrimentplus")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/combat_cyber_implants
|
||||
id = "combat_cyber_implants"
|
||||
display_name = "Combat Cybernetic Implants"
|
||||
description = "Military grade combat implants to improve performance."
|
||||
prereq_ids = list("adv_cyber_implants","weaponry","NVGtech","high_efficiency")
|
||||
design_ids = list("ci-xray", "ci-thermals", "ci-antidrop", "ci-antistun", "ci-thrusters", "ci-shield")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/////////////////////////Advanced Surgery/////////////////////////
|
||||
/datum/techweb_node/imp_wt_surgery
|
||||
id = "imp_wt_surgery"
|
||||
display_name = "Improved Wound-Tending Surgery"
|
||||
description = "Who would have known being more gentle with a hemostat decreases patient pain?"
|
||||
prereq_ids = list("biotech")
|
||||
design_ids = list("surgery_heal_brute_upgrade","surgery_heal_burn_upgrade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
|
||||
|
||||
/datum/techweb_node/advance_surgerytools
|
||||
id = "advance_surgerytools"
|
||||
display_name = "Advanced Surgery Tools"
|
||||
description = "Refined and improved redesigns for the run-of-the-mill medical utensils."
|
||||
prereq_ids = list("adv_biotech", "adv_surgery")
|
||||
design_ids = list("drapes", "retractor_adv", "surgicaldrill_adv", "scalpel_adv")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_surgery
|
||||
id = "adv_surgery"
|
||||
display_name = "Advanced Surgery"
|
||||
description = "When simple medicine doesn't cut it."
|
||||
prereq_ids = list("imp_wt_surgery")
|
||||
design_ids = list("surgery_revival", "surgery_lobotomy", "surgery_heal_brute_upgrade_femto","surgery_heal_burn_upgrade_femto", "surgery_heal_combo", "surgery_toxinhealing", "organbox", "surgery_adv_dissection")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/exp_surgery
|
||||
id = "exp_surgery"
|
||||
display_name = "Experimental Surgery"
|
||||
description = "When evolution isn't fast enough."
|
||||
prereq_ids = list("adv_surgery")
|
||||
design_ids = list("surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond", "surgery_exp_dissection", "surgery_heal_combo_upgrade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/alien_surgery
|
||||
id = "alien_surgery"
|
||||
display_name = "Alien Surgery"
|
||||
description = "Abductors did nothing wrong."
|
||||
prereq_ids = list("exp_surgery", "alientech")
|
||||
design_ids = list("surgery_brainwashing","surgery_zombie", "surgery_ext_dissection", "surgery_heal_combo_upgrade_femto")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
/////////////////////////data theory tech/////////////////////////
|
||||
/datum/techweb_node/datatheory //Computer science
|
||||
id = "datatheory"
|
||||
display_name = "Data Theory"
|
||||
description = "Big Data, in space!"
|
||||
prereq_ids = list("base")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/adv_datatheory
|
||||
id = "adv_datatheory"
|
||||
display_name = "Advanced Data Theory"
|
||||
description = "Better insight into programming and data."
|
||||
prereq_ids = list("datatheory")
|
||||
design_ids = list("icprinter", "icupgadv", "icupgclo")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/////////////////////////plasma tech/////////////////////////
|
||||
/datum/techweb_node/basic_plasma
|
||||
id = "basic_plasma"
|
||||
display_name = "Basic Plasma Research"
|
||||
description = "Research into the mysterious and dangerous substance, plasma."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("mech_generator")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/adv_plasma
|
||||
id = "adv_plasma"
|
||||
display_name = "Advanced Plasma Research"
|
||||
description = "Research on how to fully exploit the power of plasma."
|
||||
prereq_ids = list("basic_plasma")
|
||||
design_ids = list("mech_plasma_cutter")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/////////////////////////EMP tech/////////////////////////
|
||||
/datum/techweb_node/emp_basic //EMP tech for some reason
|
||||
id = "emp_basic"
|
||||
display_name = "Electromagnetic Theory"
|
||||
description = "Study into usage of frequencies in the electromagnetic spectrum."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("holosign", "holosignsec", "holosignengi", "holosignatmos", "holosignfirelock", "inducer", "tray_goggles", "holopad")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/emp_adv
|
||||
id = "emp_adv"
|
||||
display_name = "Advanced Electromagnetic Theory"
|
||||
description = "Determining whether reversing the polarity will actually help in a given situation."
|
||||
prereq_ids = list("emp_basic")
|
||||
design_ids = list("ultra_micro_laser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/datum/techweb_node/emp_super
|
||||
id = "emp_super"
|
||||
display_name = "Quantum Electromagnetic Technology" //bs
|
||||
description = "Even better electromagnetic technology."
|
||||
prereq_ids = list("emp_adv")
|
||||
design_ids = list("quadultra_micro_laser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/////////////////////////Clown tech/////////////////////////
|
||||
/datum/techweb_node/clown
|
||||
id = "clown"
|
||||
display_name = "Clown Technology"
|
||||
description = "Honk?!"
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("air_horn", "honker_main", "honker_peri", "honker_targ", "honk_chassis", "honk_head", "honk_torso", "honk_left_arm", "honk_right_arm",
|
||||
"honk_left_leg", "honk_right_leg", "mech_banana_mortar", "mech_mousetrap_mortar", "mech_honker", "mech_punching_face", "implant_trombone", "borg_transform_clown")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -0,0 +1,84 @@
|
||||
|
||||
/////////////////////////Nanites/////////////////////////
|
||||
/datum/techweb_node/nanite_base
|
||||
id = "nanite_base"
|
||||
display_name = "Basic Nanite Programming"
|
||||
description = "The basics of nanite construction and programming."
|
||||
prereq_ids = list("datatheory","robotics")
|
||||
design_ids = list("nanite_disk","nanite_remote","nanite_comm_remote","nanite_scanner",\
|
||||
"nanite_chamber","public_nanite_chamber","nanite_chamber_control","nanite_programmer","nanite_program_hub","nanite_cloud_control",\
|
||||
"relay_nanites", "monitoring_nanites", "access_nanites", "repairing_nanites","sensor_nanite_volume", "repeater_nanites", "relay_repeater_nanites","red_diag_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/nanite_smart
|
||||
id = "nanite_smart"
|
||||
display_name = "Smart Nanite Programming"
|
||||
description = "Nanite programs that require nanites to perform complex actions, act independently, roam or seek targets."
|
||||
prereq_ids = list("nanite_base","adv_robotics")
|
||||
design_ids = list("purging_nanites", "research_nanites", "metabolic_nanites", "stealth_nanites", "memleak_nanites","sensor_voice_nanites", "voice_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/nanite_mesh
|
||||
id = "nanite_mesh"
|
||||
display_name = "Mesh Nanite Programming"
|
||||
description = "Nanite programs that require static structures and membranes."
|
||||
prereq_ids = list("nanite_base","engineering")
|
||||
design_ids = list("hardening_nanites", "dermal_button_nanites", "refractive_nanites", "cryo_nanites", "conductive_nanites", "shock_nanites", "emp_nanites", "temperature_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/nanite_bio
|
||||
id = "nanite_bio"
|
||||
display_name = "Biological Nanite Programming"
|
||||
description = "Nanite programs that require complex biological interaction."
|
||||
prereq_ids = list("nanite_base","biotech")
|
||||
design_ids = list("regenerative_nanites", "bloodheal_nanites", "coagulating_nanites","poison_nanites","flesheating_nanites",\
|
||||
"sensor_crit_nanites","sensor_death_nanites", "sensor_health_nanites", "sensor_damage_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/nanite_neural
|
||||
id = "nanite_neural"
|
||||
display_name = "Neural Nanite Programming"
|
||||
description = "Nanite programs affecting nerves and brain matter."
|
||||
prereq_ids = list("nanite_bio")
|
||||
design_ids = list("nervous_nanites", "brainheal_nanites", "paralyzing_nanites", "stun_nanites", "selfscan_nanites","good_mood_nanites","bad_mood_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/nanite_synaptic
|
||||
id = "nanite_synaptic"
|
||||
display_name = "Synaptic Nanite Programming"
|
||||
description = "Nanite programs affecting mind and thoughts."
|
||||
prereq_ids = list("nanite_neural","neural_programming")
|
||||
design_ids = list("mindshield_nanites", "pacifying_nanites", "blinding_nanites", "sleep_nanites", "mute_nanites", "speech_nanites","hallucination_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/nanite_harmonic
|
||||
id = "nanite_harmonic"
|
||||
display_name = "Harmonic Nanite Programming"
|
||||
description = "Nanite programs that require seamless integration between nanites and biology."
|
||||
prereq_ids = list("nanite_bio","nanite_smart","nanite_mesh")
|
||||
design_ids = list("fakedeath_nanites","researchplus_nanites","aggressive_nanites","defib_nanites","regenerative_plus_nanites","brainheal_plus_nanites","purging_plus_nanites","adrenaline_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 4000)
|
||||
|
||||
/datum/techweb_node/nanite_combat
|
||||
id = "nanite_military"
|
||||
display_name = "Military Nanite Programming"
|
||||
description = "Nanite programs that perform military-grade functions."
|
||||
prereq_ids = list("nanite_harmonic", "syndicate_basic")
|
||||
design_ids = list("explosive_nanites","pyro_nanites","meltdown_nanites","viral_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
|
||||
|
||||
/datum/techweb_node/nanite_hazard
|
||||
id = "nanite_hazard"
|
||||
display_name = "Hazard Nanite Programs"
|
||||
description = "Extremely advanced Nanite programs with the potential of being extremely dangerous."
|
||||
prereq_ids = list("nanite_harmonic", "alientech")
|
||||
design_ids = list("spreading_nanites","mindcontrol_nanites","mitosis_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
|
||||
/datum/techweb_node/nanite_replication_protocols
|
||||
id = "nanite_replication_protocols"
|
||||
display_name = "Nanite Replication Protocols"
|
||||
description = "Advanced behaviours that allow nanites to exploit certain circumstances to replicate faster."
|
||||
prereq_ids = list("nanite_smart")
|
||||
design_ids = list("kickstart_nanites","factory_nanites","tinker_nanites","offline_nanites","synergy_nanites")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
@@ -0,0 +1,81 @@
|
||||
|
||||
/////////////////////////robotics tech/////////////////////////
|
||||
/datum/techweb_node/robotics
|
||||
id = "robotics"
|
||||
display_name = "Basic Robotics Research"
|
||||
description = "Programmable machines that make our lives lazier."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("paicard", "drone_shell")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/mmi
|
||||
id = "mmi"
|
||||
starting_node = TRUE
|
||||
display_name = "Man Machine Interface"
|
||||
description = "A slightly Frankensteinian device that allows human brains to interface natively with software APIs."
|
||||
design_ids = list("mmi")
|
||||
|
||||
/datum/techweb_node/cyborg
|
||||
id = "cyborg"
|
||||
starting_node = TRUE
|
||||
display_name = "Cyborg Construction"
|
||||
description = "Sapient robots with preloaded tool modules and programmable laws."
|
||||
design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload",
|
||||
"cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename")
|
||||
|
||||
/datum/techweb_node/adv_robotics
|
||||
id = "adv_robotics"
|
||||
display_name = "Advanced Robotics Research"
|
||||
description = "It can even do the dishes!"
|
||||
prereq_ids = list("robotics")
|
||||
design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop", "borg_upgrade_advcutter")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/datum/techweb_node/neural_programming
|
||||
id = "neural_programming"
|
||||
display_name = "Neural Programming"
|
||||
description = "Study into networks of processing units that mimic our brains."
|
||||
prereq_ids = list("biotech", "datatheory")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/posibrain
|
||||
id = "posibrain"
|
||||
display_name = "Positronic Brain"
|
||||
description = "Applied usage of neural technology allowing for autonomous AI units based on special metallic cubes with conductive and processing circuits."
|
||||
prereq_ids = list("neural_programming")
|
||||
design_ids = list("mmi_posi")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/cyborg_upg_util
|
||||
id = "cyborg_upg_util"
|
||||
display_name = "Cyborg Upgrades: Utility"
|
||||
description = "Utility upgrades for cyborgs."
|
||||
prereq_ids = list("engineering", "robotics")
|
||||
design_ids = list("borg_upgrade_lavaproof", "borg_upgrade_thrusters", "borg_upgrade_selfrepair", "borg_upgrade_expand", "borg_upgrade_rped")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/cyborg_upg_med
|
||||
id = "cyborg_upg_med"
|
||||
display_name = "Cyborg Upgrades: Medical"
|
||||
description = "Medical upgrades for cyborgs."
|
||||
prereq_ids = list("adv_biotech", "robotics")
|
||||
design_ids = list("borg_upgrade_advhealth", "borg_upgrade_piercinghypospray", "borg_upgrade_highstrengthsynthesiser", "borg_upgrade_expandedsynthesiser", "borg_upgrade_pinpointer", "borg_upgrade_surgicalprocessor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/cyborg_upg_combat
|
||||
id = "cyborg_upg_combat"
|
||||
display_name = "Cyborg Upgrades: Combat"
|
||||
description = "Military grade upgrades for cyborgs."
|
||||
prereq_ids = list("adv_robotics", "adv_engi" , "weaponry")
|
||||
design_ids = list("borg_upgrade_vtec", "borg_upgrade_disablercooler")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/ai
|
||||
id = "ai"
|
||||
display_name = "Artificial Intelligence"
|
||||
description = "AI unit research."
|
||||
prereq_ids = list("robotics", "posibrain")
|
||||
design_ids = list("aifixer", "aicore", "safeguard_module", "onehuman_module", "protectstation_module", "quarantine_module", "oxygen_module", "freeform_module",
|
||||
"reset_module", "purge_module", "remove_module", "freeformcore_module", "asimov_module", "paladin_module", "tyrant_module", "corporate_module",
|
||||
"default_module", "borg_ai_control", "mecha_tracking_ai_control", "aiupload", "intellicard")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
/datum/techweb_node/syndicate_basic
|
||||
id = "syndicate_basic"
|
||||
display_name = "Illegal Technology"
|
||||
description = "Dangerous research used to create dangerous objects."
|
||||
prereq_ids = list("adv_engi", "adv_weaponry", "explosive_weapons")
|
||||
design_ids = list("decloner", "borg_syndicate_module", "suppressor", "largecrossbow", "donksofttoyvendor", "donksoft_refill", "syndiesleeper")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
|
||||
hidden = TRUE
|
||||
|
||||
/datum/techweb_node/syndicate_basic/New() //Crappy way of making syndicate gear decon supported until there's another way.
|
||||
. = ..()
|
||||
boost_item_paths = list()
|
||||
for(var/path in GLOB.uplink_items)
|
||||
var/datum/uplink_item/UI = new path
|
||||
if(!UI.item || !UI.illegal_tech)
|
||||
continue
|
||||
boost_item_paths |= UI.item //allows deconning to unlock.
|
||||
|
||||
/datum/techweb_node/advanced_illegal_ballistics
|
||||
id = "advanced_illegal_ballistics"
|
||||
display_name = "Advanced Non-Standard Ballistics"
|
||||
description = "Ballistic ammunition for non-standard firearms. Usually the ones you don't have nor want to be involved with."
|
||||
design_ids = list("10mm","10mmap","10mminc","10mmhp","sl357","sl357ap","pistolm9mm","m45","bolt_clip")
|
||||
prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns from traitors, space, or anything in between.
|
||||
|
||||
//Helpers for debugging/balancing the techweb in its entirety!
|
||||
|
||||
/proc/total_techweb_points()
|
||||
var/list/datum/techweb_node/processing = list()
|
||||
for(var/i in subtypesof(/datum/techweb_node))
|
||||
processing += new i
|
||||
var/datum/techweb/TW = new
|
||||
TW.research_points = list()
|
||||
for(var/i in processing)
|
||||
var/datum/techweb_node/TN = i
|
||||
TW.add_point_list(TN.research_costs)
|
||||
return TW.research_points
|
||||
|
||||
/proc/total_techweb_points_printout()
|
||||
var/list/datum/techweb_node/processing = list()
|
||||
for(var/i in subtypesof(/datum/techweb_node))
|
||||
processing += new i
|
||||
var/datum/techweb/TW = new
|
||||
TW.research_points = list()
|
||||
for(var/i in processing)
|
||||
var/datum/techweb_node/TN = i
|
||||
TW.add_point_list(TN.research_costs)
|
||||
return TW.printout_points()
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
////////////////////////Tools////////////////////////
|
||||
/datum/techweb_node/basic_tools
|
||||
id = "basic_tools"
|
||||
display_name = "Basic Tools"
|
||||
description = "Basic mechanical, electronic, surgical and botanical tools."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("screwdriver", "wrench", "wirecutters", "crowbar", "multitool", "welding_tool", "tscanner", "analyzer", "cable_coil", "pipe_painter", "airlock_painter", "scalpel", "circular_saw", "surgicaldrill", "retractor", "cautery", "hemostat", "cultivator", "plant_analyzer", "shovel", "spade", "hatchet", "mop", "broom", "normtrash")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 500)
|
||||
|
||||
/datum/techweb_node/basic_mining
|
||||
id = "basic_mining"
|
||||
display_name = "Mining Technology"
|
||||
description = "Better than Efficiency V."
|
||||
prereq_ids = list("engineering", "basic_plasma")
|
||||
design_ids = list("drill", "superresonator", "triggermod", "damagemod", "cooldownmod", "rangemod", "ore_redemption", "mining_equipment_vendor", "cargoexpress", "plasmacutter")//e a r l y g a m e)
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_mining
|
||||
id = "adv_mining"
|
||||
display_name = "Advanced Mining Technology"
|
||||
description = "Efficiency Level 127" //dumb mc references
|
||||
prereq_ids = list("basic_mining", "adv_engi", "adv_power", "adv_plasma")
|
||||
design_ids = list("drill_diamond", "jackhammer", "hypermod", "plasmacutter_adv", "ore_silo", "plasteel_pick", "titanium_pick")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/janitor
|
||||
id = "janitor"
|
||||
display_name = "Advanced Sanitation Technology"
|
||||
description = "Clean things better, faster, stronger, and harder!"
|
||||
prereq_ids = list("adv_engi")
|
||||
design_ids = list("advmop", "buffer", "light_replacer", "spraybottle", "beartrap", "ci-janitor", "paint_remover")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1750) // No longer has its bag
|
||||
|
||||
/datum/techweb_node/botany
|
||||
id = "botany"
|
||||
display_name = "Botanical Engineering"
|
||||
description = "Botanical tools."
|
||||
prereq_ids = list("adv_engi", "biotech")
|
||||
design_ids = list("diskplantgene", "portaseeder", "plantgenes", "flora_gun", "hydro_tray", "biogenerator", "seed_extractor")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
/datum/techweb_node/exp_tools
|
||||
id = "exp_tools"
|
||||
display_name = "Experimental Tools"
|
||||
description = "Highly advanced construction tools."
|
||||
design_ids = list("exwelder", "jawsoflife", "handdrill", "holosigncombifan")
|
||||
prereq_ids = list("adv_engi")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
/datum/techweb_node/sec_basic
|
||||
id = "sec_basic"
|
||||
display_name = "Basic Security Equipment"
|
||||
description = "Standard equipment used by security."
|
||||
design_ids = list("seclite", "pepperspray", "bola_energy", "zipties", "evidencebag")
|
||||
prereq_ids = list("base")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 750)
|
||||
@@ -0,0 +1,97 @@
|
||||
|
||||
/////////////////////////weaponry tech/////////////////////////
|
||||
/datum/techweb_node/weaponry
|
||||
id = "weaponry"
|
||||
display_name = "Weapon Development Technology"
|
||||
description = "Our researchers have found new to weaponize just about everything now."
|
||||
prereq_ids = list("engineering")
|
||||
design_ids = list("pin_testing", "tele_shield", "lasercarbine", "pin_away")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
|
||||
|
||||
/datum/techweb_node/adv_weaponry
|
||||
id = "adv_weaponry"
|
||||
display_name = "Advanced Weapon Development Technology"
|
||||
description = "Our weapons are breaking the rules of reality by now."
|
||||
prereq_ids = list("adv_engi", "weaponry")
|
||||
design_ids = list("pin_loyalty", "laser_shield", "bullet_shield")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
|
||||
|
||||
/datum/techweb_node/electric_weapons
|
||||
id = "electronic_weapons"
|
||||
display_name = "Electric Weapons"
|
||||
description = "Weapons using electric technology"
|
||||
prereq_ids = list("weaponry", "adv_power" , "emp_basic")
|
||||
design_ids = list("stunrevolver", "stunshell", "ioncarbine")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500)
|
||||
|
||||
/datum/techweb_node/radioactive_weapons
|
||||
id = "radioactive_weapons"
|
||||
display_name = "Radioactive Weaponry"
|
||||
description = "Weapons using radioactive technology."
|
||||
prereq_ids = list("adv_engi", "adv_weaponry")
|
||||
design_ids = list("nuclear_gun")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/magnetic_weapons
|
||||
id = "magnetic_weapons"
|
||||
display_name = "Magnetic Weapons"
|
||||
description = "Weapons using magnetic technology"
|
||||
prereq_ids = list("weaponry", "adv_weaponry", "emp_adv")
|
||||
design_ids = list("magrifle", "magpistol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/medical_weapons
|
||||
id = "medical_weapons"
|
||||
display_name = "Medical Weaponry"
|
||||
description = "Weapons using medical technology."
|
||||
prereq_ids = list("adv_biotech", "adv_weaponry")
|
||||
design_ids = list("rapidsyringe", "shotgundartcryostatis")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
|
||||
|
||||
/datum/techweb_node/beam_weapons
|
||||
id = "beam_weapons"
|
||||
display_name = "Beam Weaponry"
|
||||
description = "Various basic beam weapons"
|
||||
prereq_ids = list("adv_weaponry")
|
||||
design_ids = list("temp_gun", "xray_laser")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_beam_weapons
|
||||
id = "adv_beam_weapons"
|
||||
display_name = "Advanced Beam Weaponry"
|
||||
description = "Various advanced beam weapons"
|
||||
prereq_ids = list("beam_weapons")
|
||||
design_ids = list("beamrifle")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3250) // Sniper
|
||||
|
||||
/datum/techweb_node/explosive_weapons
|
||||
id = "explosive_weapons"
|
||||
display_name = "Explosive & Pyrotechnical Weaponry"
|
||||
description = "If the light stuff just won't do it."
|
||||
prereq_ids = list("adv_weaponry")
|
||||
design_ids = list("large_Grenade", "pyro_Grenade", "adv_Grenade")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
/datum/techweb_node/ballistic_weapons
|
||||
id = "ballistic_weapons"
|
||||
display_name = "Ballistic Weaponry"
|
||||
description = "This isn't research.. This is reverse-engineering!"
|
||||
prereq_ids = list("weaponry")
|
||||
design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber", "mag_oldsmg_tx")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2750)
|
||||
|
||||
/datum/techweb_node/exotic_ammo
|
||||
id = "exotic_ammo"
|
||||
display_name = "Exotic Ammunition"
|
||||
description = "They won't know what hit em."
|
||||
prereq_ids = list("weaponry", "ballistic_weapons")
|
||||
design_ids = list("techshotshell", "c38_hotshot", "c38_iceblox")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3500)
|
||||
|
||||
/datum/techweb_node/gravity_gun
|
||||
id = "gravity_gun"
|
||||
display_name = "One-point Bluespace-gravitational Manipulator"
|
||||
description = "Fancy wording for gravity gun."
|
||||
prereq_ids = list("adv_weaponry", "adv_bluespace")
|
||||
design_ids = list("gravitygun", "mech_gravcatapult")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
@@ -158,7 +158,7 @@ Stabilized extracts:
|
||||
|
||||
/obj/item/slimecross/stabilized/rainbow/attackby(obj/item/O, mob/user)
|
||||
var/obj/item/slimecross/regenerative/regen = O
|
||||
if(istype(O) && !regencore)
|
||||
if(istype(regen) && !regencore)
|
||||
to_chat(user, "<span class='notice'>You place the [O] in the [src], prepping the extract for automatic application!</span>")
|
||||
regencore = regen
|
||||
regen.forceMove(src)
|
||||
|
||||
+14
-1
@@ -3020,7 +3020,20 @@
|
||||
#include "code\modules\research\techweb\__techweb_helpers.dm"
|
||||
#include "code\modules\research\techweb\_techweb.dm"
|
||||
#include "code\modules\research\techweb\_techweb_node.dm"
|
||||
#include "code\modules\research\techweb\all_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\alien_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\biotech_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\bluespace_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\computer_hud_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\engineering_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\export_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\mecha_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\medical_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\misc_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\nanites_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\robotics_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\syndicate_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\tools_nodes.dm"
|
||||
#include "code\modules\research\techweb\nodes\weaponry_nodes.dm"
|
||||
#include "code\modules\research\xenobiology\xenobio_camera.dm"
|
||||
#include "code\modules\research\xenobiology\xenobiology.dm"
|
||||
#include "code\modules\research\xenobiology\crossbreeding\__corecross.dm"
|
||||
|
||||
Reference in New Issue
Block a user