Nanite Protocols and more Fat Programs

Restored Nanite Protocols, available through a tech node that requires the odd disk, a maint loot item.
Added Adipose Conversion (-fat +nanites over time and BWOMF (-lot of fat + a a lot more of nanites) nanite programs.
This commit is contained in:
Alphas00
2024-06-04 14:47:10 +02:00
parent b5e6bb5ae0
commit 403891b094
12 changed files with 131 additions and 37 deletions
@@ -109,3 +109,53 @@
id = "fat_adjuster_nanites"
program_type = /datum/nanite_program/fat_adjuster
category = list("Medical Nanites")
/datum/nanite_program/fat_converter
name = "Adipose Conversion"
desc = "Nanites learn to convert excess body mass to replicate."
rogue_types = list(/datum/nanite_program/necrotic)
/datum/nanite_program/fat_converter/check_conditions()
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
if(C.fatness_real <= 0 || nanites.nanite_volume >= nanites.max_nanites)
return FALSE
else
return FALSE
return ..()
/datum/nanite_program/fat_converter/active_effect()
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
if(C.fatness_real > 0 && nanites.nanite_volume < nanites.max_nanites)
nanites.adjust_nanites(src, min(round(C.fatness_real), 5))
C.adjust_fatness(-(min(round(C.fatness_real), 5)), FATTENING_TYPE_WEIGHT_LOSS)
/datum/design/nanites/fat_converter
name = "Adipose Conversion"
desc = "The nanites use fat to replicate quickly."
id = "fat_converter_nanites"
program_type = /datum/nanite_program/fat_converter
category = list("Medical Nanites")
/datum/nanite_program/bwomf
name = "B.W.O.M.F." //Body Widening Operation for Mass Fattening
desc = "Nanites remains on standy-by, massively increasing the host's mass on trigger.."
unique = FALSE
can_trigger = TRUE
trigger_cost = 50
trigger_cooldown = 50
rogue_types = list(/datum/nanite_program/toxic)
/datum/nanite_program/bwomf/on_trigger(comm_message)
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
C.adjust_fatness(100, FATTENING_TYPE_ITEM)
to_chat(C, "<span class='warning'>[pick("Your belly expands quickly!", "Fat envelops you further!", "Lard grows all over you!")]</span>")
/datum/design/nanites/bwomf
name = "B.W.O.M.F."
desc = "Massively increase host's mass on trigger."
id = "bwomf_nanites"
program_type = /datum/nanite_program/bwomf
category = list("Medical Nanites")
@@ -16,7 +16,7 @@
display_name = "Nutri-Tech Weapons"
description = "Ever wanted to reach your daily caloric intake in just 5 seconds?"
prereq_ids = list("biotech", "adv_engi")
design_ids = list("fatoray_weak", "fatoray_cannon_weak", "alter_ray_metabolism", "alter_ray_reverser", "borg_upgrade_fatoray")
design_ids = list("fatoray_weak", "fatoray_cannon_weak", "alter_ray_metabolism", "alter_ray_reverser", "borg_upgrade_fatoray", "bwomf_nanites")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
boost_item_paths = list(/obj/item/gun/energy/fatoray, /obj/item/gun/energy/fatoray/cannon, /obj/item/trash/fatoray_scrap1, /obj/item/trash/fatoray_scrap2)
export_price = 10000
@@ -157,3 +157,9 @@
else
icon_state = "sign_closed"
desc = "A sign that reads 'closed'"
/obj/item/trash/odd_disk
name = "odd disk"
icon = 'icons/obj/module.dmi'
icon_state = "datadisk0"
desc = "A dusty disk, desconstruction will be needed to recover data."
+5
View File
@@ -46,3 +46,8 @@
//GS13 DEFINES
#define NES_FATNESS "BFI"
#define NES_FAT_GAIN_LOSS "Loss/Gain"
//PROTOCOLS
#define NANITE_PROTOCOL_REPLICATION 1
#define NANITE_PROTOCOL_STORAGE 2
@@ -113,6 +113,7 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/storage/pill_bottle/breast_enlargement = 2,
/obj/item/trash/fatoray_scrap1 = 1, //GS13 - added for researching fat guns
/obj/item/trash/fatoray_scrap2 = 1, //GS13
/obj/item/trash/odd_disk = 1, //GS13
/obj/item/clothing/shoes/wheelys = 1,
/obj/item/clothing/shoes/kindleKicks = 1,
/obj/item/autosurgeon/penis = 1,
+1 -1
View File
@@ -252,7 +252,7 @@
nanite_volume = CLAMP(amount, 0, max_nanites)
/datum/component/nanites/proc/set_max_volume(datum/source, amount)
max_nanites = max(1, max_nanites)
max_nanites = max(1, amount)
/datum/component/nanites/proc/set_cloud(datum/source, amount)
cloud_id = CLAMP(amount, 0, 100)
@@ -76,6 +76,7 @@
/obj/item/trash/candy = 1,
/obj/item/trash/fatoray_scrap1 = 1, // GS13
/obj/item/trash/fatoray_scrap2 = 1,
/obj/item/trash/odd_disk = 1,
/obj/item/trash/chips = 1,
/obj/item/reagent_containers/food/snacks/deadmouse = 1,
/obj/item/trash/pistachios = 1,
@@ -525,36 +525,3 @@
id = "sensor_nanite_volume"
program_type = /datum/nanite_program/sensor/nanite_volume
category = list("Sensor Nanites")
////////////////////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."
id = "kickstart_nanites"
program_type = /datum/nanite_program/protocol/kickstart
category = list("Protocols_Nanites")
/datum/design/nanites/factory
name = "Factory Protocol"
desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. The factory decays if the protocol is not active."
id = "factory_nanites"
program_type = /datum/nanite_program/protocol/factory
category = list("Protocols_Nanites")
/datum/design/nanites/tinker
name = "Tinker Protocol"
desc = "Replication Protocol: the nanites learn to use metallic material in the host's bloodstream to speed up the replication process."
id = "tinker_nanites"
program_type = /datum/nanite_program/protocol/tinker
category = list("Protocols_Nanites")
/datum/design/nanites/offline
name = "Offline Production Protocol"
desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly."
id = "offline_nanites"
program_type = /datum/nanite_program/protocol/offline
category = list("Protocols_Nanites")
*/
@@ -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")
)
/obj/machinery/nanite_program_hub/Initialize()
@@ -105,3 +105,66 @@
/datum/nanite_program/protocol/offline/active_effect()
nanites.adjust_nanites(null, boost)
/datum/nanite_program/protocol/hive
name = "Hive Protocol"
desc = "The nanites use a more efficient grid arrangment for volume storage, increasing maximum volume in a host by 250."
rogue_types = list(/datum/nanite_program/skin_decay)
protocol_class = NANITE_PROTOCOL_STORAGE
/datum/nanite_program/protocol/hive/enable_passive_effect()
nanites.set_max_volume(src, nanites.max_nanites + 250)
..()
/datum/nanite_program/protocol/hive/disable_passive_effect()
nanites.set_max_volume(src, nanites.max_nanites - 250)
..()
////////////////////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."
id = "kickstart_nanites"
program_type = /datum/nanite_program/protocol/kickstart
category = list("Protocols_Nanites")
/datum/design/nanites/factory
name = "Factory Protocol"
desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. The factory decays if the protocol is not active."
id = "factory_nanites"
program_type = /datum/nanite_program/protocol/factory
category = list("Protocols_Nanites")
/datum/design/nanites/tinker
name = "Tinker Protocol"
desc = "Replication Protocol: the nanites learn to use metallic material in the host's bloodstream to speed up the replication process."
id = "tinker_nanites"
program_type = /datum/nanite_program/protocol/tinker
category = list("Protocols_Nanites")
/datum/design/nanites/offline
name = "Offline Production Protocol"
desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly."
id = "offline_nanites"
program_type = /datum/nanite_program/protocol/offline
category = list("Protocols_Nanites")
/datum/design/nanites/hive
name = "Hive Protocol"
desc = "Storage Protocol: safely increases the maximum volume of nanites in the host by 250."
id = "hive_nanites"
program_type = /datum/nanite_program/protocol/hive
category = list("Protocols_Nanites")
/datum/techweb_node/nanite_protocol
id = "nanite_protocol"
display_name = "Nanite Protocols"
description = "Advanced nanite protocols that massively increase their efficiency."
prereq_ids = list("nanite_synaptic", "nanite_harmonic")
design_ids = list("kickstart_nanites","factory_nanites","tinker_nanites", "offline_nanites", "hive_nanites")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
export_price = 15000
boost_item_paths = list(/obj/item/trash/odd_disk)
hidden = TRUE
+1 -1
View File
@@ -999,7 +999,7 @@
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", "fat_sensor_nanites", "fat_adjuster_nanites")
"sensor_crit_nanites","sensor_death_nanites", "sensor_health_nanites", "sensor_damage_nanites", "fat_sensor_nanites", "fat_converter_nanites", "fat_adjuster_nanites")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
+1
View File
@@ -2784,6 +2784,7 @@
#include "code\modules\research\nanites\nanite_program_hub.dm"
#include "code\modules\research\nanites\nanite_programmer.dm"
#include "code\modules\research\nanites\nanite_programs.dm"
#include "code\modules\research\nanites\nanite_programs\protocols.dm"
#include "code\modules\research\nanites\nanite_remote.dm"
#include "code\modules\research\nanites\program_disks.dm"
#include "code\modules\research\nanites\public_chamber.dm"