Merge branch 'master' into familyport

This commit is contained in:
keronshb
2022-02-11 14:04:57 -05:00
1209 changed files with 276175 additions and 55667 deletions
@@ -122,6 +122,17 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/smartdartrepeater
name = "Smartdart Repeater"
desc = "An experimental smartdart rifle. It can make its own smart darts and is loaded with a hypovial."
id = "smartdartrepeater"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 2000, /datum/material/plastic = 1000, /datum/material/iron = 2000,/datum/material/titanium = 1000 )
build_path = /obj/item/gun/chem/smart
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/plasmarefiller
name = "Plasma-Man Jumpsuit Refill"
desc = "A refill pack for the auto-extinguisher on Plasma-man suits."
@@ -201,8 +212,8 @@
build_path = /obj/item/storage/hypospraykit // let's not summon new hyposprays thanks
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/hypospray/mkii
/datum/design/hypospray_mkii
name = "Hypospray Mk. II"
id = "hypospray_mkii"
build_type = PROTOLATHE
@@ -211,6 +222,15 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/nanogel
name = "Nanogel paste"
id = "nanogel"
build_type = PROTOLATHE | MECHFAB
materials = list(/datum/material/iron = 800, /datum/material/titanium = 500, /datum/material/gold = 100, /datum/material/diamond = 20)
build_path = /obj/item/stack/medical/nanogel/one
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
/datum/design/blood_bag
name = "Empty Blood Bag"
desc = "A small sterilized plastic bag for blood."
+26 -8
View File
@@ -19,6 +19,7 @@
var/list/research_logs = list() //IC logs.
var/largest_bomb_value = 0
var/organization = "Third-Party" //Organization name, used for display.
var/list/next_income = list() //To be applied on the next passive techweb income
var/list/last_bitcoins = list() //Current per-second production, used for display only.
var/list/discovered_mutations = list() //Mutations discovered by genetics, this way they are shared and cant be destroyed by destroying a single console
var/list/tiers = list() //Assoc list, id = number, 1 is available, 2 is all reqs are 1, so on
@@ -105,10 +106,15 @@
V.rescan_views()
V.updateUsrDialog()
/datum/techweb/proc/add_point_list(list/pointlist)
for(var/i in pointlist)
if(SSresearch.point_types[i] && pointlist[i] > 0)
research_points[i] += pointlist[i]
/datum/techweb/proc/add_point_list(list/pointlist, income = TRUE)
if(income) // i DO NOT TRUST byond to optimize this way properly
for(var/i in pointlist)
if(SSresearch.point_types[i] && pointlist[i] > 0)
next_income[i] += pointlist[i]
else
for(var/i in pointlist)
if(SSresearch.point_types[i] && pointlist[i] > 0)
research_points[i] += pointlist[i]
/datum/techweb/proc/add_points_all(amount)
var/list/l = SSresearch.point_types.Copy()
@@ -116,6 +122,12 @@
l[i] = amount
add_point_list(l)
/datum/techweb/proc/commit_income()
. = next_income.Copy()
add_point_list(next_income, income = FALSE)
for(var/i in next_income)
next_income[i] = 0
/datum/techweb/proc/remove_point_list(list/pointlist)
for(var/i in pointlist)
if(SSresearch.point_types[i] && pointlist[i] > 0)
@@ -170,16 +182,22 @@
/datum/techweb/proc/get_researched_nodes()
return researched_nodes - hidden_nodes
/datum/techweb/proc/add_point_type(type, amount)
/datum/techweb/proc/add_point_type(type, amount, income = TRUE)
if(!SSresearch.point_types[type] || (amount <= 0))
return FALSE
research_points[type] += amount
if(income)
next_income[type] += amount
else
research_points[type] += amount
return TRUE
/datum/techweb/proc/modify_point_type(type, amount)
/datum/techweb/proc/modify_point_type(type, amount, income = TRUE)
if(!SSresearch.point_types[type])
return FALSE
research_points[type] = max(0, research_points[type] + amount)
if(income && amount > 0)
next_income[type] += amount
else
research_points[type] = max(0, research_points[type] + amount)
return TRUE
/datum/techweb/proc/remove_point_type(type, amount)
@@ -28,7 +28,7 @@
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")
design_ids = list("borg_upgrade_diamonddrill", "borg_upgrade_advancedmop", "borg_upgrade_advcutter", "nanogel")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
/datum/techweb_node/neural_programming
@@ -45,7 +45,7 @@
display_name = "Medical Weaponry"
description = "Weapons using medical technology."
prereq_ids = list("adv_biotech", "adv_weaponry")
design_ids = list("rapidsyringe", "shotgundartcryostatis")
design_ids = list("rapidsyringe", "shotgundartcryostatis","smartdartrepeater")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000)
/datum/techweb_node/beam_weapons
@@ -92,6 +92,10 @@
icon_state = "capturedevice"
/obj/item/capturedevice/attack(mob/living/M, mob/user)
try_catching(M, user)
/obj/item/capturedevice/proc/try_catching(mob/living/M, mob/user)
set waitfor = FALSE
if(length(contents))
to_chat(user, "<span class='warning'>The device already has something inside.</span>")
return
@@ -116,7 +120,7 @@
to_chat(user, "<span class='warning'>This creature is too aggressive to capture.</span>")
return
to_chat(user, "<span class='notice'>You store [M] in the capture device.</span>")
store(M)
store(M, user)
/obj/item/capturedevice/attack_self(mob/user)
if(contents.len)
@@ -125,7 +129,10 @@
else
to_chat(user, "<span class='warning'>The device is empty...</span>")
/obj/item/capturedevice/proc/store(var/mob/living/M)
/obj/item/capturedevice/proc/store(var/mob/living/M, mob/user)
if(length(contents))
to_chat(user, "<span class='warning'>The device already has something inside.</span>")
return
M.forceMove(src)
/obj/item/capturedevice/proc/release()
@@ -495,7 +495,11 @@
/datum/status_effect/stabilized/orange/tick()
var/body_temperature_difference = BODYTEMP_NORMAL - owner.bodytemperature
owner.adjust_bodytemperature(min(5,body_temperature_difference))
var/cooling_cap = -5
if(HAS_TRAIT(owner, TRAIT_ROBOTIC_ORGANISM))
cooling_cap *= 0.5 //Only cools by half as much (which is 5 per life tick since this ticks twice as much as life) so it isn't true spaceproofness..
body_temperature_difference += SYNTH_COLD_OFFSET //.. But also cools towards a cold temp, provided there is nothing that counters it.
owner.adjust_bodytemperature(clamp(body_temperature_difference, cooling_cap, 5))
return ..()
/datum/status_effect/stabilized/purple
@@ -735,7 +735,10 @@
if(jb)
to_chat(user, "<span class='warning'>Your mind goes blank as you attempt to use the potion.</span>")
return
try_transfer_mind(SM, user)
/obj/item/slimepotion/transference/proc/try_transfer_mind(mob/living/simple_animal/SM, mob/user)
set waitfor = FALSE
prompted = 1
if(alert("This will permanently transfer your consciousness to [SM]. Are you sure you want to do this?",,"Yes","No")=="No")
prompted = 0