Merge branch 'master' into familyport
This commit is contained in:
@@ -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."
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user