From 5619b73e6b6a0fa5fb8fcf32aea20b46490f1db4 Mon Sep 17 00:00:00 2001 From: Artur Date: Wed, 16 Jun 2021 02:02:28 +0300 Subject: [PATCH] Makes it actually, actually work --- .../abductor/equipment/glands/heal.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 19 +++++++------------ code/modules/mob/living/carbon/human/human.dm | 3 +-- .../research/nanites/nanite_program_hub.dm | 2 +- .../research/nanites/nanite_programmer.dm | 2 +- .../nanites/nanite_programs/protocols.dm | 10 ++++++++++ 6 files changed, 21 insertions(+), 17 deletions(-) diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm index 6726e44f3d..5ea8f77d6c 100644 --- a/code/modules/antagonists/abductor/equipment/glands/heal.dm +++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm @@ -64,7 +64,7 @@ /obj/item/organ/heart/gland/heal/proc/reject_implant(obj/item/organ/cyberimp/implant) owner.visible_message("[owner] vomits up his [implant.name]!", "You suddenly vomit up your [implant.name]!") - owner.vomit(0, TRUE, TRUE, 1, FALSE, FALSE, FAL SE, TRUE) + owner.vomit(0, TRUE, TRUE, 1, FALSE, FALSE, FALSE, TRUE) implant.Remove() implant.forceMove(owner.drop_location()) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6110b524cd..a0beb07fab 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -502,17 +502,17 @@ return 0 return ..() -/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, vomit_type = VOMIT_TOXIC, purge_ratio = 0.1) +/mob/living/carbon/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, vomit_type = VOMIT_TOXIC, harm = TRUE, force = FALSE, purge_ratio = 0.1) if((HAS_TRAIT(src, TRAIT_NOHUNGER) || HAS_TRAIT(src, TRAIT_TOXINLOVER)) && !force) return TRUE - if(nutrition < 100 && !blood) + if(nutrition < 100 && !blood && !force) if(message) visible_message("[src] dry heaves!", \ "You try to throw up, but there's nothing in your stomach!") if(stun) DefaultCombatKnockdown(200) - return 1 + return TRUE if(is_mouth_covered()) //make this add a blood/vomit overlay later it'll be hilarious if(message) @@ -525,10 +525,11 @@ visible_message("[src] throws up!", "You throw up!") if(!isflyperson(src)) SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "vomit", /datum/mood_event/vomit) + if(stun) Stun(80) - playsound(get_turf(src), 'sound/effects/splat.ogg', 50, 1) + playsound(get_turf(src), 'sound/effects/splat.ogg', 50, TRUE) var/turf/T = get_turf(src) if(!blood) adjust_nutrition(-lost_nutrition) @@ -538,21 +539,15 @@ if(blood) if(T) add_splatter_floor(T) - if(stun) + if(harm) adjustBruteLoss(3) else if(T) T.add_vomit_floor(src, vomit_type, purge_ratio) //toxic barf looks different || call purge when doing detoxicfication to pump more chems out of the stomach. - else if(src.reagents.has_reagent(/datum/reagent/consumable/ethanol/blazaam)) - if(T) - T.add_vomit_floor(src, VOMIT_PURPLE) - else - if(T) - T.add_vomit_floor(src, VOMIT_TOXIC)//toxic barf looks different T = get_step(T, dir) if (is_blocked_turf(T)) break - return 1 + return TRUE /mob/living/carbon/proc/spew_organ(power = 5, amt = 1) var/list/spillable_organs = list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0adb529ae4..9b9c86f471 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -841,8 +841,7 @@ ..() /mob/living/carbon/human/vomit(lost_nutrition = 10, blood = FALSE, stun = TRUE, distance = 1, message = TRUE, vomit_type = VOMIT_TOXIC, harm = TRUE, force = FALSE, purge_ratio = 0.1) - if(blood && (NOBLOOD in dna.species.species_traits) && !HAS_TRAIT(src, TRAIT_TOXINLOVER)) - if(blood && dna?.species && (NOBLOOD in dna.species.species_traits)) + if(blood && dna?.species && (NOBLOOD in dna.species.species_traits) && !HAS_TRAIT(src, TRAIT_TOXINLOVER)) if(message) visible_message("[src] dry heaves!", \ "You try to throw up, but there's nothing in your stomach!") diff --git a/code/modules/research/nanites/nanite_program_hub.dm b/code/modules/research/nanites/nanite_program_hub.dm index 8c7596be30..85a117f53f 100644 --- a/code/modules/research/nanites/nanite_program_hub.dm +++ b/code/modules/research/nanites/nanite_program_hub.dm @@ -29,7 +29,7 @@ /obj/machinery/nanite_program_hub/update_overlays() . = ..() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) - if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open) + if((stat & (NOPOWER|MAINT|BROKEN)) || panel_open) return SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", layer, plane) SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", EMISSIVE_LAYER, EMISSIVE_PLANE) diff --git a/code/modules/research/nanites/nanite_programmer.dm b/code/modules/research/nanites/nanite_programmer.dm index 3e9a55044b..f23a44909c 100644 --- a/code/modules/research/nanites/nanite_programmer.dm +++ b/code/modules/research/nanites/nanite_programmer.dm @@ -14,7 +14,7 @@ /obj/machinery/nanite_programmer/update_overlays() . = ..() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) - if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open) + if((stat & (NOPOWER|MAINT|BROKEN)) || panel_open) return SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", layer, plane) SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", EMISSIVE_LAYER, EMISSIVE_PLANE) diff --git a/code/modules/research/nanites/nanite_programs/protocols.dm b/code/modules/research/nanites/nanite_programs/protocols.dm index c0c039a53b..3716bc61ac 100644 --- a/code/modules/research/nanites/nanite_programs/protocols.dm +++ b/code/modules/research/nanites/nanite_programs/protocols.dm @@ -90,6 +90,16 @@ /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)) /datum/nanite_program/protocol/hive name = "Hive Protocol"