From ae6bd7faf0d4d9452c4500a734f788d531c369e4 Mon Sep 17 00:00:00 2001 From: Mechoid Date: Sat, 13 Apr 2019 13:28:19 -0700 Subject: [PATCH] My vision is augmented. Yours can be too. --- code/__defines/damage_organs.dm | 1 + code/__defines/mobs.dm | 3 + code/modules/organs/internal/bioaugment.dm | 92 +++++++++++++++++++++ code/modules/organs/organ.dm | 38 ++++++++- icons/obj/surgery.dmi | Bin 32864 -> 33389 bytes polaris.dme | 1 + 6 files changed, 132 insertions(+), 3 deletions(-) create mode 100644 code/modules/organs/internal/bioaugment.dm diff --git a/code/__defines/damage_organs.dm b/code/__defines/damage_organs.dm index c3eef1099e..70f90df8d0 100644 --- a/code/__defines/damage_organs.dm +++ b/code/__defines/damage_organs.dm @@ -47,6 +47,7 @@ // Damage above this value must be repaired with surgery. #define ROBOLIMB_REPAIR_CAP 30 +#define ORGAN_FLESH 0 // Normal organic organs. #define ORGAN_ASSISTED 1 // Like pacemakers, not robotic #define ORGAN_ROBOT 2 // Fully robotic, no organic parts #define ORGAN_LIFELIKE 3 // Robotic, made to appear organic diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm index 51039af253..8426edcfcf 100644 --- a/code/__defines/mobs.dm +++ b/code/__defines/mobs.dm @@ -196,6 +196,9 @@ #define O_VOICE "voicebox" #define O_STANDARD list(O_EYES, O_HEART, O_LUNGS, O_BRAIN, O_LIVER, O_KIDNEYS, O_APPENDIX, O_VOICE) +// Augments +#define O_AUG_TSHADE "integrated thermolensing implant" + // Non-Standard organs #define O_MOUTH "mouth" #define O_CELL "cell" diff --git a/code/modules/organs/internal/bioaugment.dm b/code/modules/organs/internal/bioaugment.dm new file mode 100644 index 0000000000..52621e74c1 --- /dev/null +++ b/code/modules/organs/internal/bioaugment.dm @@ -0,0 +1,92 @@ +/* + * Augments. This file contains the base, and organic-targeting augments. + */ + +/obj/item/organ/internal/augment + name = "augment" + + icon_state = "cell_bay" + + parent_organ = BP_TORSO + + organ_verbs = list() // Verbs added by the organ when present in the body. + target_parent_classes = list() // Is the parent supposed to be organic, robotic, assisted? + forgiving_class = FALSE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic. + + var/obj/item/integrated_object // Objects held by the organ, used for deployable things. + var/integrated_object_type // Object type the organ will spawn. + +/obj/item/organ/internal/augment/Initialize() + ..() + if(integrated_object_type) + integrated_object = new integrated_object_type(src) + integrated_object.canremove = FALSE + +/obj/item/organ/internal/augment/handle_organ_mod_special(var/removed = FALSE) + if(removed && integrated_object && integrated_object.loc != src) + if(isliving(integrated_object.loc)) + var/mob/living/L = integrated_object.loc + L.drop_from_inventory(integrated_object) + integrated_object.forceMove(src) + ..(removed) + +// The base organic-targeting augment. + +/obj/item/organ/internal/augment/bioaugment + name = "bioaugmenting implant" + + robotic = ORGAN_ROBOT + target_parent_classes = list(ORGAN_FLESH) + +// Jensen Shades. Your vision can be augmented. + +/obj/item/organ/internal/augment/bioaugment/thermalshades + name = "integrated thermolensing implant" + desc = "A miniscule implant that houses a pair of thermolensed sunglasses. Don't ask how they deploy, you don't want to know." + icon_state = "augment_shades" + dead_icon = "augment_shades_dead" + + w_class = ITEMSIZE_TINY + + organ_tag = O_AUG_TSHADE + + parent_organ = BP_HEAD + + organ_verbs = list(/mob/living/carbon/human/proc/toggle_shades) + + integrated_object_type = /obj/item/clothing/glasses/hud/security/jensenshades + +/mob/living/carbon/human/proc/toggle_shades() + set name = "Toggle Integrated Thermoshades" + set desc = "Toggle your flash-proof, thermal-integrated sunglasses." + set category = "Augments" + + var/obj/item/organ/internal/augment/aug = internal_organs_by_name[O_AUG_TSHADE] + + if(glasses) + if(aug && aug.integrated_object == glasses) + drop_from_inventory(glasses) + aug.integrated_object.forceMove(aug) + if(!glasses) + to_chat(src, "Your [aug.integrated_object] retract into your skull.") + else if(!istype(glasses, /obj/item/clothing/glasses/hud/security/jensenshades)) + to_chat(src, "\The [glasses] block your shades from deploying.") + else if(istype(glasses, /obj/item/clothing/glasses/hud/security/jensenshades)) + var/obj/item/G = glasses + if(G.canremove) + to_chat(src, "\The [G] are not your integrated shades.") + else + drop_from_inventory(G) + to_chat(src, "\The [G] retract into your skull.") + qdel(G) + + else + if(aug && aug.integrated_object) + to_chat(src, "Your [aug.integrated_object] deploy.") + equip_to_slot(aug.integrated_object, slot_glasses, 0, 1) + if(!glasses || glasses != aug.integrated_object) + aug.integrated_object.forceMove(aug) + else + var/obj/item/clothing/glasses/hud/security/jensenshades/J = new(get_turf(src)) + equip_to_slot(J, slot_glasses, 1, 1) + to_chat(src, "Your [aug.integrated_object] deploy.") diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index c959ab3752..eef80e1750 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -36,7 +36,10 @@ var/list/organ_cache = list() var/list/will_assist_languages = list() var/list/datum/language/assists_languages = list() - var/list/organ_verbs // Verbs added by the organ when present in the body. + // Organ verb vars. + var/list/organ_verbs // Verbs added by the organ when present in the body. + var/list/target_parent_classes = list() // Is the parent supposed to be organic, robotic, assisted? + var/forgiving_class = TRUE // Will the organ give its verbs when it isn't a perfect match? I.E., assisted in organic, synthetic in organic. /obj/item/organ/Destroy() @@ -429,12 +432,12 @@ var/list/organ_cache = list() all_organs |= owner.internal_organs for(var/obj/item/organ/O in all_organs) - if(!(O.status & ORGAN_DEAD) && O.organ_verbs) + if(!(O.status & ORGAN_DEAD) && O.organ_verbs && O.check_verb_compatability()) for(var/verb_type in O.organ_verbs) if(verb_type in organ_verbs) save_verbs |= verb_type - if(!removed && organ_verbs) + if(!removed && organ_verbs && check_verb_compatability()) for(var/verb_path in organ_verbs) owner.verbs |= verb_path else if(organ_verbs) @@ -445,3 +448,32 @@ var/list/organ_cache = list() /obj/item/organ/proc/handle_organ_proc_special() // Called when processed. return + +/obj/item/organ/proc/check_verb_compatability() // Used for determining if an organ should give or remove its verbs. I.E., FBP part in a human, no verbs. If true, keep or add. + if(owner) + if(ishuman(owner)) + var/mob/living/carbon/human/H = owner + var/obj/item/organ/O = H.get_organ(parent_organ) + if(forgiving_class) + if(O.robotic <= ORGAN_ASSISTED && robotic <= ORGAN_LIFELIKE) // Parent is organic or assisted, we are at most synthetic. + return TRUE + + if(O.robotic >= ORGAN_ROBOT && robotic >= ORGAN_ASSISTED) // Parent is synthetic, and we are biosynthetic at least. + return TRUE + + if(!target_parent_classes || !target_parent_classes.len) // Default checks, if we're not looking for a Specific type. + + if(O.robotic == robotic) // Same thing, we're fine. + return TRUE + + if(O.robotic < ORGAN_ROBOT && robotic < ORGAN_ROBOT) + return TRUE + + if(O.robotic > ORGAN_ASSISTED && robotic > ORGAN_ASSISTED) + return TRUE + + else + if(O.robotic in target_parent_classes) + return TRUE + + return FALSE diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 9fd6f77296e595b6a6d6caab67c5c6497f936673..12bededf90328f7738e70f466b5a75d9f56f49c8 100644 GIT binary patch delta 14039 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%0D%SL(Ak5P8U#6fCmNjc0Fa_&LSCy9fX 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