Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit697
This commit is contained in:
@@ -36,6 +36,9 @@ other types of metals and chemistry for reagents).
|
||||
var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed.
|
||||
var/departmental_flags = ALL //bitflags for deplathes.
|
||||
var/list/datum/techweb_node/unlocked_by = list()
|
||||
///minimum and security levels the design can be printed on. Currently only available for rnd production machinery and mechfab.
|
||||
var/min_security_level = SEC_LEVEL_GREEN
|
||||
var/max_security_level = SEC_LEVEL_DELTA
|
||||
var/research_icon //Replaces the item icon in the research console
|
||||
var/research_icon_state
|
||||
var/icon_cache
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
///////Biogenerator Designs ///////
|
||||
///////////////////////////////////
|
||||
|
||||
//Please be wary to not add inorganic items to the results such as generic glass bottles and metal.
|
||||
//as they kind of defeat the design of this feature.
|
||||
|
||||
/datum/design/milk
|
||||
name = "10u Milk"
|
||||
id = "milk"
|
||||
@@ -18,22 +21,6 @@
|
||||
make_reagents = list(/datum/reagent/consumable/cream = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/milk_carton
|
||||
name = "Milk Carton"
|
||||
id = "milk_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 100)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/milk
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/cream_carton
|
||||
name = "Cream Carton"
|
||||
id = "cream_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 300)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/cream
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/black_pepper
|
||||
name = "10u Black Pepper"
|
||||
id = "black_pepper"
|
||||
@@ -42,15 +29,6 @@
|
||||
make_reagents = list(/datum/reagent/consumable/blackpepper = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/pepper_mill
|
||||
name = "Pepper Mill"
|
||||
id = "pepper_mill"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/peppermill
|
||||
make_reagents = list()
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/enzyme
|
||||
name = "10u Universal Enzyme"
|
||||
id = "enzyme"
|
||||
@@ -59,14 +37,6 @@
|
||||
make_reagents = list(/datum/reagent/consumable/enzyme = 10)
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/flour_sack
|
||||
name = "Flour Sack"
|
||||
id = "flour_sack"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 150)
|
||||
build_path = /obj/item/reagent_containers/food/condiment/flour
|
||||
category = list("initial","Food")
|
||||
|
||||
/datum/design/monkey_cube
|
||||
name = "Monkey Cube"
|
||||
id = "mcube"
|
||||
@@ -84,43 +54,43 @@
|
||||
category = list("initial", "Food")
|
||||
|
||||
/datum/design/ez_nut
|
||||
name = "E-Z Nutrient"
|
||||
name = "10u E-Z Nutrient"
|
||||
id = "ez_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 10)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/ez
|
||||
materials = list(/datum/material/biomass = 2)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/eznutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/l4z_nut
|
||||
name = "Left 4 Zed"
|
||||
name = "10u Left 4 Zed"
|
||||
id = "l4z_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 20)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/l4z
|
||||
materials = list(/datum/material/biomass = 4)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/rh_nut
|
||||
name = "Robust Harvest"
|
||||
name = "10u Robust Harvest"
|
||||
id = "rh_nut"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 25)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/rh
|
||||
materials = list(/datum/material/biomass = 5)
|
||||
make_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/weed_killer
|
||||
name = "Weed Killer"
|
||||
id = "weed_killer"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/weedkiller
|
||||
materials = list(/datum/material/biomass = 10)
|
||||
make_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/pest_spray
|
||||
name = "Pest Killer"
|
||||
id = "pest_spray"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 50)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/killer/pestkiller
|
||||
materials = list(/datum/material/biomass = 10)
|
||||
make_reagents = list(/datum/reagent/toxin/pestkiller = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/ammonia
|
||||
@@ -139,13 +109,13 @@
|
||||
make_reagents = list(/datum/reagent/saltpetre = 10)
|
||||
category = list("initial","Botany Chemicals")
|
||||
|
||||
/datum/design/botany_bottle
|
||||
name = "Empty Bottle"
|
||||
id = "botany_bottle"
|
||||
/datum/design/empty_carton
|
||||
name = "Small Empty Carton Box"
|
||||
id = "empty_carton"
|
||||
build_type = BIOGENERATOR
|
||||
materials = list(/datum/material/biomass = 5)
|
||||
build_path = /obj/item/reagent_containers/glass/bottle/nutrient/empty
|
||||
category = list("initial", "Botany Chemicals")
|
||||
materials = list(/datum/material/biomass = 15)
|
||||
build_path = /obj/item/reagent_containers/food/drinks/bottle/bio_carton
|
||||
category = list("initial", "Organic Materials")
|
||||
|
||||
/datum/design/cloth
|
||||
name = "Roll of Cloth"
|
||||
|
||||
@@ -529,7 +529,6 @@
|
||||
////////////////////NANITE PROTOCOLS//////////////////////////////////////
|
||||
//Note about the category name: The UI cuts the last 8 characters from the category name to remove the " Nanites" in the other categories
|
||||
//Because of this, Protocols was getting cut down to "P", so i had to add some padding
|
||||
/*
|
||||
/datum/design/nanites/kickstart
|
||||
name = "Kickstart Protocol"
|
||||
desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation."
|
||||
@@ -557,4 +556,10 @@
|
||||
id = "offline_nanites"
|
||||
program_type = /datum/nanite_program/protocol/offline
|
||||
category = list("Protocols_Nanites")
|
||||
*/
|
||||
|
||||
/datum/design/nanites/synergy
|
||||
name = "Synergy Protocol"
|
||||
desc = "Replication Protocol: the nanites syncronize their tasks and processes within a host, leading to an increase in replication speed proportional to the current nanite volume."
|
||||
id = "synergy_nanites"
|
||||
program_type = /datum/nanite_program/protocol/synergy
|
||||
category = list("Protocols_Nanites")
|
||||
|
||||
@@ -101,7 +101,7 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
if(!istype(loaded_item) || !istype(linked_console))
|
||||
return FALSE
|
||||
|
||||
if (id && id != RESEARCH_MATERIAL_RECLAMATION_ID)
|
||||
if (id && id != RESEARCH_MATERIAL_RECLAMATION_ID && id != RESEARCH_DEEP_SCAN_ID)
|
||||
var/datum/techweb_node/TN = SSresearch.techweb_node_by_id(id)
|
||||
if(!istype(TN))
|
||||
return FALSE
|
||||
@@ -125,7 +125,7 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
if(destroy_item(loaded_item))
|
||||
linked_console.stored_research.boost_with_path(SSresearch.techweb_node_by_id(TN.id), dpath)
|
||||
|
||||
else
|
||||
else if(id == RESEARCH_MATERIAL_RECLAMATION_ID)
|
||||
var/list/point_value = techweb_item_point_check(loaded_item)
|
||||
if(linked_console.stored_research.deconstructed_items[loaded_item.type])
|
||||
point_value = list()
|
||||
@@ -143,6 +143,15 @@ Note: Must be placed within 3 tiles of the R&D Console
|
||||
if(destroy_item(loaded_item))
|
||||
linked_console.stored_research.add_point_list(point_value)
|
||||
linked_console.stored_research.deconstructed_items[loaded_type] = point_value
|
||||
else if(id == RESEARCH_DEEP_SCAN_ID)
|
||||
var/list/return_list = list()
|
||||
. = SEND_SIGNAL(loaded_item, COMSIG_ITEM_DECONSTRUCTOR_DEEPSCAN, src, user, return_list)
|
||||
flick("d_analyzer_process", src)
|
||||
if(. & COMPONENT_DEEPSCAN_UNCOVERED_INFORMATION)
|
||||
say("New information uncovered from item deep scan[length(return_list)? ": [english_list(return_list)]" : ""].")
|
||||
else
|
||||
say("Item deep scan uncovered no new information.")
|
||||
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/rnd/destructive_analyzer/proc/unload_item()
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "Makes researched and prototype items with materials and energy."
|
||||
layer = BELOW_OBJ_LAYER
|
||||
var/consoleless_interface = TRUE //Whether it can be used without a console.
|
||||
var/offstation_security_levels = TRUE
|
||||
var/efficiency_coeff = 1 //Materials needed / coeff = actual.
|
||||
var/list/categories = list()
|
||||
var/datum/component/remote_materials/materials
|
||||
@@ -98,6 +99,7 @@
|
||||
var/obj/item/I = O
|
||||
I.material_flags |= MATERIAL_NO_EFFECTS //Find a better way to do this.
|
||||
I.set_custom_materials(matlist.Copy())
|
||||
I.rnd_crafted(src)
|
||||
SSblackbox.record_feedback("nested tally", "item_printed", amount, list("[type]", "[path]"))
|
||||
investigate_log("[key_name(user)] built [amount] of [path] at [src]([type]).", INVESTIGATE_RESEARCH)
|
||||
|
||||
@@ -134,6 +136,12 @@
|
||||
if(D.build_type && !(D.build_type & allowed_buildtypes))
|
||||
say("This machine does not have the necessary manipulation systems for this design. Please contact Nanotrasen Support!")
|
||||
return FALSE
|
||||
if(!(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)))
|
||||
if(GLOB.security_level < D.min_security_level)
|
||||
say("Minimum security alert level required to print this design not met, please contact the command staff.")
|
||||
return FALSE
|
||||
if(GLOB.security_level > D.max_security_level)
|
||||
say("Exceeded maximum security alert level required to print this design, please contact the command staff.")
|
||||
if(!materials.mat_container)
|
||||
say("No connection to material storage, please contact the quartermaster.")
|
||||
return FALSE
|
||||
@@ -275,15 +283,26 @@
|
||||
temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]"
|
||||
c = min(c,t)
|
||||
|
||||
if (c >= 1)
|
||||
var/clearance = !(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z))
|
||||
var/sec_text = ""
|
||||
if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA))
|
||||
sec_text = " (Allowed security levels: "
|
||||
for(var/n in D.min_security_level to D.max_security_level)
|
||||
sec_text += NUM2SECLEVEL(n)
|
||||
if(n + 1 <= D.max_security_level)
|
||||
sec_text += ", "
|
||||
sec_text += ")"
|
||||
|
||||
clearance = !clearance || ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level)
|
||||
if (c >= 1 && clearance)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=1'>[D.name]</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 5)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=5'>x5</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 10)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=10'>x10</A>[RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][sec_text][RDSCREEN_NOBREAK]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][sec_text][RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
return l
|
||||
|
||||
|
||||
@@ -30,3 +30,9 @@
|
||||
total_rating += M.rating * 2 //There is only one.
|
||||
total_rating = max(1, total_rating)
|
||||
efficiency_coeff = total_rating
|
||||
var/obj/item/circuitboard/machine/circuit_imprinter/C = circuit
|
||||
offstation_security_levels = C.offstation_security_levels
|
||||
|
||||
/obj/machinery/rnd/production/circuit_imprinter/offstation
|
||||
offstation_security_levels = FALSE
|
||||
circuit = /obj/item/circuitboard/machine/circuit_imprinter/offstation
|
||||
|
||||
@@ -23,3 +23,12 @@
|
||||
/obj/machinery/rnd/production/protolathe/disconnect_console()
|
||||
linked_console.linked_lathe = null
|
||||
..()
|
||||
|
||||
/obj/machinery/rnd/production/protolathe/calculate_efficiency()
|
||||
. = ..()
|
||||
var/obj/item/circuitboard/machine/protolathe/C = circuit
|
||||
offstation_security_levels = C.offstation_security_levels
|
||||
|
||||
/obj/machinery/rnd/production/protolathe/offstation
|
||||
offstation_security_levels = FALSE
|
||||
circuit = /obj/item/circuitboard/machine/protolathe/offstation
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
list(name = "Augmentation Nanites"),
|
||||
list(name = "Suppression Nanites"),
|
||||
list(name = "Weaponized Nanites"),
|
||||
//list(name = "Protocols") B.E.P.I.S Content, which we dont have
|
||||
list(name = "Protocols") //Moved to default techweb from B.E.P.I.S. research, for now
|
||||
)
|
||||
|
||||
/obj/machinery/nanite_program_hub/Initialize()
|
||||
|
||||
@@ -290,7 +290,7 @@
|
||||
qdel(src)
|
||||
|
||||
///A nanite program containing a behaviour protocol. Only one protocol of each class can be active at once.
|
||||
//Currently unused due to us lacking the B.E.P.I.S
|
||||
//Moved to being 'normally' researched due to lack of B.E.P.I.S.
|
||||
/datum/nanite_program/protocol
|
||||
name = "Nanite Protocol"
|
||||
var/protocol_class = NONE
|
||||
|
||||
@@ -105,3 +105,14 @@
|
||||
|
||||
/datum/nanite_program/protocol/offline/active_effect()
|
||||
nanites.adjust_nanites(null, boost)
|
||||
|
||||
/datum/nanite_program/protocol/synergy
|
||||
name = "Synergy Protocol"
|
||||
desc = "Replication Protocol: the nanites syncronize their tasks and processes within a host, leading to an increase in replication speed proportional to the current nanite volume."
|
||||
use_rate = 0
|
||||
rogue_types = list(/datum/nanite_program/necrotic)
|
||||
protocol_class = NANITE_PROTOCOL_REPLICATION
|
||||
var/max_boost = 2 //The maximum boost this program applies to the nanite replication, multiplied with the current nanite 'saturation' percentage
|
||||
|
||||
/datum/nanite_program/protocol/synergy/active_effect()
|
||||
nanites.adjust_nanites(null, round(max_boost * (nanites.nanite_volume / nanites.max_nanites), 0.1))
|
||||
|
||||
@@ -47,6 +47,9 @@ Nothing else in the console has ID requirements.
|
||||
|
||||
var/research_control = TRUE
|
||||
|
||||
/// Long action cooldown to prevent spam
|
||||
var/last_long_action = 0
|
||||
|
||||
/obj/machinery/computer/rdconsole/production
|
||||
circuit = /obj/item/circuitboard/computer/rdconsole/production
|
||||
research_control = FALSE
|
||||
@@ -301,15 +304,26 @@ Nothing else in the console has ID requirements.
|
||||
temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]"
|
||||
c = min(c,t)
|
||||
|
||||
if (c >= 1)
|
||||
var/clearance = !(linked_lathe.obj_flags & EMAGGED) && (linked_lathe.offstation_security_levels || is_station_level(linked_lathe.z))
|
||||
var/sec_text = ""
|
||||
if(clearance && (D.min_security_level > SEC_LEVEL_GREEN || D.max_security_level < SEC_LEVEL_DELTA))
|
||||
sec_text = " (Allowed security levels: "
|
||||
for(var/n in D.min_security_level to D.max_security_level)
|
||||
sec_text += NUM2SECLEVEL(n)
|
||||
if(n + 1 <= D.max_security_level)
|
||||
sec_text += ", "
|
||||
sec_text += ")"
|
||||
|
||||
clearance = !clearance || ISINRANGE(GLOB.security_level, D.min_security_level, D.max_security_level)
|
||||
if (c >= 1 && clearance)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=1'>[D.name]</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 5)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=5'>x5</A>[RDSCREEN_NOBREAK]"
|
||||
if(c >= 10)
|
||||
l += "<A href='?src=[REF(src)];build=[D.id];amount=10'>x10</A>[RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += "[temp_material][sec_text][RDSCREEN_NOBREAK]"
|
||||
else
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][RDSCREEN_NOBREAK]"
|
||||
l += "<span class='linkOff'>[D.name]</span>[temp_material][sec_text][RDSCREEN_NOBREAK]"
|
||||
l += ""
|
||||
l += "</div>"
|
||||
return l
|
||||
@@ -572,10 +586,8 @@ Nothing else in the console has ID requirements.
|
||||
l += "<table><tr><td>[icon2html(linked_destroy.loaded_item, usr)]</td><td><b>[linked_destroy.loaded_item.name]</b> <A href='?src=[REF(src)];eject_item=1'>Eject</A></td></tr></table>[RDSCREEN_NOBREAK]"
|
||||
l += "Select a node to boost by deconstructing this item. This item can boost:"
|
||||
|
||||
var/anything = FALSE
|
||||
var/list/boostable_nodes = techweb_item_boost_check(linked_destroy.loaded_item)
|
||||
for(var/id in boostable_nodes)
|
||||
anything = TRUE
|
||||
var/list/worth = boostable_nodes[id]
|
||||
var/datum/techweb_node/N = SSresearch.techweb_node_by_id(id)
|
||||
|
||||
@@ -609,7 +621,6 @@ Nothing else in the console has ID requirements.
|
||||
// point deconstruction and material reclamation use the same ID to prevent accidentally missing the points
|
||||
var/list/point_values = techweb_item_point_check(linked_destroy.loaded_item)
|
||||
if(point_values)
|
||||
anything = TRUE
|
||||
l += "<div class='statusDisplay'>[RDSCREEN_NOBREAK]"
|
||||
if (stored_research.deconstructed_items[linked_destroy.loaded_item.type])
|
||||
l += "<span class='linkOff'>Point Deconstruction</span>"
|
||||
@@ -625,10 +636,8 @@ Nothing else in the console has ID requirements.
|
||||
for (var/M in materials)
|
||||
l += "* [CallMaterialName(M)] x [materials[M]]"
|
||||
l += "</div>[RDSCREEN_NOBREAK]"
|
||||
anything = TRUE
|
||||
|
||||
if (!anything)
|
||||
l += "Nothing!"
|
||||
l += "<div class='statusDisplay'><A href='?src=[REF(src)];deconstruct=[RESEARCH_DEEP_SCAN_ID]'>Nondestructive Deep Scan</A></div>"
|
||||
|
||||
l += "</div>"
|
||||
return l
|
||||
@@ -915,6 +924,9 @@ Nothing else in the console has ID requirements.
|
||||
screen = RDSCREEN_MENU
|
||||
say("Ejecting Technology Disk")
|
||||
if(ls["deconstruct"])
|
||||
if((last_long_action + 1 SECONDS) > world.time)
|
||||
return
|
||||
last_long_action = world.time
|
||||
if(QDELETED(linked_destroy))
|
||||
say("No Destructive Analyzer Linked!")
|
||||
return
|
||||
|
||||
@@ -957,6 +957,14 @@
|
||||
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)
|
||||
|
||||
////////////////////////Alien technology////////////////////////
|
||||
/datum/techweb_node/alientech //AYYYYYYYYLMAOO tech
|
||||
id = "alientech"
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
alert_type = /obj/screen/alert/status_effect/bloodchill
|
||||
|
||||
/datum/status_effect/bloodchill/on_apply()
|
||||
owner.add_movespeed_modifier("bloodchilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3)
|
||||
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/bloodchill/tick()
|
||||
@@ -199,7 +199,7 @@
|
||||
owner.adjustFireLoss(2)
|
||||
|
||||
/datum/status_effect/bloodchill/on_remove()
|
||||
owner.remove_movespeed_modifier("bloodchilled")
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bloodchill)
|
||||
return ..()
|
||||
|
||||
/obj/screen/alert/status_effect/bloodchill
|
||||
@@ -213,7 +213,7 @@
|
||||
alert_type = /obj/screen/alert/status_effect/bonechill
|
||||
|
||||
/datum/status_effect/bonechill/on_apply()
|
||||
owner.add_movespeed_modifier("bonechilled", TRUE, 100, NONE, override = TRUE, multiplicative_slowdown = 3)
|
||||
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/bonechill/tick()
|
||||
@@ -223,7 +223,7 @@
|
||||
owner.adjust_bodytemperature(-10)
|
||||
|
||||
/datum/status_effect/bonechill/on_remove()
|
||||
owner.remove_movespeed_modifier("bonechilled")
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill)
|
||||
return ..()
|
||||
|
||||
/obj/screen/alert/status_effect/bonechill
|
||||
@@ -385,11 +385,11 @@ datum/status_effect/rebreathing/tick()
|
||||
duration = 30
|
||||
|
||||
/datum/status_effect/tarfoot/on_apply()
|
||||
owner.add_movespeed_modifier(MOVESPEED_ID_TARFOOT, update=TRUE, priority=100, multiplicative_slowdown=0.5, blacklisted_movetypes=(FLYING|FLOATING))
|
||||
owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/tarfoot/on_remove()
|
||||
owner.remove_movespeed_modifier(MOVESPEED_ID_TARFOOT)
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/tarfoot)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/spookcookie
|
||||
@@ -707,15 +707,15 @@ datum/status_effect/stabilized/blue/on_remove()
|
||||
/datum/status_effect/stabilized/sepia/tick()
|
||||
if(prob(50) && mod > -1)
|
||||
mod--
|
||||
owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=-1, blacklisted_movetypes=(FLYING|FLOATING))
|
||||
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 1)
|
||||
else if(mod < 1)
|
||||
mod++
|
||||
// yeah a value of 0 does nothing but replacing the trait in place is cheaper than removing and adding repeatedly
|
||||
owner.add_movespeed_modifier(MOVESPEED_ID_SEPIA, update=TRUE, priority=100, multiplicative_slowdown=0, blacklisted_movetypes=(FLYING|FLOATING))
|
||||
owner.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia, multiplicative_slowdown = 0)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/sepia/on_remove()
|
||||
owner.remove_movespeed_modifier(MOVESPEED_ID_SEPIA)
|
||||
owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/sepia)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/cerulean
|
||||
@@ -777,11 +777,11 @@ datum/status_effect/stabilized/blue/on_remove()
|
||||
colour = "red"
|
||||
|
||||
/datum/status_effect/stabilized/red/on_apply()
|
||||
owner.ignore_slowdown("slimestatus")
|
||||
return ..()
|
||||
. = ..()
|
||||
owner.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod)
|
||||
|
||||
/datum/status_effect/stabilized/red/on_remove()
|
||||
owner.unignore_slowdown("slimestatus")
|
||||
owner.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/equipment_speedmod)
|
||||
return ..()
|
||||
|
||||
/datum/status_effect/stabilized/green
|
||||
|
||||
Reference in New Issue
Block a user