diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm index feae05ae917..ddac25ee834 100644 --- a/code/controllers/subsystems/transcore_vr.dm +++ b/code/controllers/subsystems/transcore_vr.dm @@ -45,12 +45,18 @@ SUBSYSTEM_DEF(transcore) current_run.len-- //Remove if not in a human anymore. - if(!imp || !ishuman(imp.loc)) + if(!imp || !isorgan(imp.loc)) implants -= imp continue - //We're in a human, at least. - var/mob/living/carbon/human/H = imp.loc + //We're in an organ, at least. + var/obj/item/organ/external/EO = imp.loc + var/mob/living/carbon/human/H = EO.owner + if(!H) + implants -= imp + continue + + //In a human BITSET(H.hud_updateflag, BACKUP_HUD) if(H == imp.imp_in && H.mind && H.stat < DEAD) diff --git a/code/game/objects/items/weapons/implants/implant_vr.dm b/code/game/objects/items/weapons/implants/implant_vr.dm index 4b796cc56e6..ebcc2d9f546 100644 --- a/code/game/objects/items/weapons/implants/implant_vr.dm +++ b/code/game/objects/items/weapons/implants/implant_vr.dm @@ -3,43 +3,39 @@ desc = "Allows the user to understand and speak almost all known languages.." var/uses = 1 - get_data() - var/dat = {" -Implant Specifications:
-Name: Language Implant
-Life: One day.
-Important Notes: Personnel with this implant can speak almost all known languages.
-
-Implant Details: Subjects injected with implant can understand and speak almost all known languages.
-Function: Contains specialized nanobots to stimulate the brain so the user can speak and understand previously unknown languages.
-Special Features: Will allow the user to understand almost all languages.
-Integrity: Implant can only be used once before the nanobots are depleted."} - return dat +/obj/item/weapon/implant/vrlanguage/get_data() + var/dat = {" + Implant Specifications:
+ Name: Language Implant
+ Life: One day.
+ Important Notes: Personnel with this implant can speak almost all known languages.
+
+ Implant Details: Subjects injected with implant can understand and speak almost all known languages.
+ Function: Contains specialized nanobots to stimulate the brain so the user can speak and understand previously unknown languages.
+ Special Features: Will allow the user to understand almost all languages.
+ Integrity: Implant can only be used once before the nanobots are depleted."} + return dat +/obj/item/weapon/implant/vrlanguage/trigger(emote, mob/source as mob) + if (src.uses < 1) + return 0 + if (emote == "smile") + src.uses-- + to_chat(source,"You suddenly feel as if you can understand other languages!") + source.add_language(LANGUAGE_CHIMPANZEE) + source.add_language(LANGUAGE_NEAERA) + source.add_language(LANGUAGE_STOK) + source.add_language(LANGUAGE_FARWA) + source.add_language(LANGUAGE_UNATHI) + source.add_language(LANGUAGE_SIIK) + source.add_language(LANGUAGE_SKRELLIAN) + source.add_language(LANGUAGE_SCHECHI) + source.add_language(LANGUAGE_BIRDSONG) + source.add_language(LANGUAGE_SAGARU) + source.add_language(LANGUAGE_CANILUNZT) + source.add_language(LANGUAGE_SOL_COMMON) //In case they're giving a xenomorph an implant or something. - trigger(emote, mob/source as mob) - if (src.uses < 1) return 0 - if (emote == "smile") - src.uses-- - source << "You suddenly feel as if you can understand other languages!" - source.add_language(LANGUAGE_CHIMPANZEE) - source.add_language(LANGUAGE_NEAERA) - source.add_language(LANGUAGE_STOK) - source.add_language(LANGUAGE_FARWA) - source.add_language(LANGUAGE_UNATHI) - source.add_language(LANGUAGE_SIIK) - source.add_language(LANGUAGE_SKRELLIAN) - source.add_language(LANGUAGE_SCHECHI) - source.add_language(LANGUAGE_BIRDSONG) - source.add_language(LANGUAGE_SAGARU) - source.add_language(LANGUAGE_CANILUNZT) - source.add_language(LANGUAGE_SOL_COMMON) //In case they're giving a xenomorph an implant or something. - - - return - - - implanted(mob/source) - source.mind.store_memory("A implant can be activated by using the smile emote, say *smile to attempt to activate.", 0, 0) - source << "The implanted language implant can be activated by using the smile emote, say *smile to attempt to activate." - return 1 +/obj/item/weapon/implant/vrlanguage/post_implant(mob/source) + source.mind.store_memory("A implant can be activated by using the smile emote, say *smile to attempt to activate.", 0, 0) + to_chat(source,"The implanted language implant can be activated by using the smile emote, say *smile to attempt to activate.") + return 1 diff --git a/code/game/objects/items/weapons/implants/implantreagent_vr.dm b/code/game/objects/items/weapons/implants/implantreagent_vr.dm index 1c4e9a9b040..83a586d2ba1 100644 --- a/code/game/objects/items/weapons/implants/implantreagent_vr.dm +++ b/code/game/objects/items/weapons/implants/implantreagent_vr.dm @@ -30,7 +30,7 @@ update() return -/obj/item/weapon/implant/reagent_generator/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") assigned_proc = new assigned_proc(source, verb_name, verb_desc) diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm index 0bfe571a8b9..adb3d38e1c3 100644 --- a/code/modules/resleeving/implant.dm +++ b/code/modules/resleeving/implant.dm @@ -27,13 +27,9 @@ SStranscore.implants -= src return ..() -/obj/item/weapon/implant/backup/implanted(var/mob/living/carbon/human/H) - ..() +/obj/item/weapon/implant/backup/post_implant(var/mob/living/carbon/human/H) if(istype(H)) - var/obj/item/weapon/implant/backup/other_imp = locate(/obj/item/weapon/implant/backup,H) - if(other_imp && other_imp.imp_in == H) - qdel(other_imp) //implant fight - + BITSET(H.hud_updateflag, BACKUP_HUD) SStranscore.implants |= src return 1 @@ -107,18 +103,10 @@ M.visible_message("[M] has been backup implanted by [user].") var/obj/item/weapon/implant/backup/imp = imps[imps.len] - if(imp.implanted(M)) - imp.forceMove(M) + if(imp.handle_implant(M,user.zone_sel.selecting)) + imp.post_implant(M) imps -= imp - imp.imp_in = M - imp.implanted = 1 add_attack_logs(user,M,"Implanted backup implant") - if (ishuman(M)) - var/mob/living/carbon/human/H = M - var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting) - affected.implants += imp - imp.part = affected - BITSET(H.hud_updateflag, BACKUP_HUD) update() diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 787d867eb89..69f0cfebd1a 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -538,14 +538,8 @@ //Give them a backup implant var/obj/item/weapon/implant/backup/new_imp = new() - if(new_imp.implanted(occupant)) - new_imp.loc = occupant - new_imp.imp_in = occupant - new_imp.implanted = 1 - //Put it in the head! Makes sense. - var/obj/item/organ/external/affected = occupant.get_organ(BP_HEAD) - affected.implants += new_imp - new_imp.part = affected + if(new_imp.handle_implant(occupant, BP_HEAD)) + new_imp.post_implant(occupant) //Inform them and make them a little dizzy. if(confuse_amount + blur_amount <= 16) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 4b0e1ece7b8..b01e3a9e2c2 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -725,7 +725,7 @@ random_emote = list("hisses softly with a blush on his face", "yelps in embarrassment", "grunts a little") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_roiz -/obj/item/weapon/implant/reagent_generator/roiz/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/roiz/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc @@ -793,7 +793,7 @@ random_emote = list("hisses softly with a blush on her face", "bites down on her lower lip", "lets out a light huff") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_jasmine -/obj/item/weapon/implant/reagent_generator/jasmine/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/jasmine/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc @@ -861,7 +861,7 @@ random_emote = list("hisses softly with a blush on her face", "yelps in embarrassment", "grunts a little") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_yonra -/obj/item/weapon/implant/reagent_generator/yonra/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/yonra/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc @@ -945,7 +945,7 @@ random_emote = list("trembles and huffs, panting from the exertion.", "sees what has happened and covers her face with both hands!", "whimpers softly, her legs shivering, knees pointed inward from the feeling.") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_rischi -/obj/item/weapon/implant/reagent_generator/rischi/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/rischi/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc @@ -1011,7 +1011,7 @@ self_emote_descriptor = list("grab", "pick", "snatch") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_pumila_apple -/obj/item/weapon/implant/reagent_generator/pumila_apple/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/pumila_apple/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc @@ -1704,7 +1704,7 @@ random_emote = list("hisses softly with a blush on his face", "yelps in embarrassment", "grunts a little") assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_evian -/obj/item/weapon/implant/reagent_generator/evian/implanted(mob/living/carbon/source) +/obj/item/weapon/implant/reagent_generator/evian/post_implant(mob/living/carbon/source) processing_objects += src to_chat(source, "You implant [source] with \the [src].") source.verbs |= assigned_proc