From ef22c231322a749457c1102234ba12bd36e5f7bd Mon Sep 17 00:00:00 2001 From: Lexanx <61974560+Lexanx@users.noreply.github.com> Date: Sat, 2 Mar 2024 23:00:04 +0300 Subject: [PATCH] FEAT: Brain Gens, ECS Gens. (#729) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Описание Разделяем ИПС мозги на поколения и отделяем их от Боргов. Добавляем разницу в головных компьютерах между поколениями ИПС. Возвращаем выбор оков в меню ИПС. Добавляем оковы как предмет в игру. Возможность установки кастомных законов через оковы для ИПС. Фикс датаджека с ИПС, Фикс рантаймов отсуствующей головы ## Changelog :cl: rscadd: Ингейм Оковы для ИПС --- code/datums/uplink/devices and tools.dm | 7 + .../preference_setup/preference_setup.dm | 4 +- .../culture/cultures_ipc.dm | 1 + code/modules/mob/living/silicon/laws.dm | 2 + .../mob/living/silicon/posi_brainmob.dm | 1 - code/modules/mob/new_player/new_player.dm | 2 +- .../subtypes/dev_exonet_connection_system.dm | 33 ++- code/modules/nano/interaction/default.dm | 2 +- .../internal/exonet_connection_system.dm | 18 +- code/modules/organs/internal/species/ipc.dm | 219 +++++++++++++++++- code/modules/species/station/machine.dm | 27 ++- code/modules/surgery/organs_internal.dm | 3 + icons/obj/assemblies.dmi | Bin 24039 -> 32103 bytes .../game/objects/items/devices/datajack.dm | 11 +- .../carbon/human/machine_limb_functions.dm | 18 +- 15 files changed, 325 insertions(+), 23 deletions(-) diff --git a/code/datums/uplink/devices and tools.dm b/code/datums/uplink/devices and tools.dm index 2ce086391d0..b56193a4fb7 100644 --- a/code/datums/uplink/devices and tools.dm +++ b/code/datums/uplink/devices and tools.dm @@ -150,6 +150,13 @@ antag_costs = list(MODE_MERCENARY = 35) path = /obj/item/aiModule/syndicate +/datum/uplink_item/item/tools/shackles + name = "Shackle module" + desc = "A module that can be used on IPC brain to take it under control. \ + All you need to do is write a law and install shackle on directly on IPC brain." + item_cost = 15 + path = /obj/item/organ/internal/shackles + /datum/uplink_item/item/tools/supply_beacon name = "Hacked Supply Beacon (DANGER!)" desc = "Wrench this large beacon onto an exposed power cable, in order to activate it. This will call in a \ diff --git a/code/modules/client/preference_setup/preference_setup.dm b/code/modules/client/preference_setup/preference_setup.dm index f2ddc0906ec..f7b53b6f83f 100644 --- a/code/modules/client/preference_setup/preference_setup.dm +++ b/code/modules/client/preference_setup/preference_setup.dm @@ -38,12 +38,12 @@ var/const/CHARACTER_PREFERENCE_INPUT_TITLE = "Character Preference" name = "Общее" sort_order = 7 category_item_type = /datum/category_item/player_setup_item/player_global -/* + /datum/category_group/player_setup_category/law_pref name = "Законы" sort_order = 8 category_item_type = /datum/category_item/player_setup_item/law_pref -*/ + /**************************** * Category Collection Setup * diff --git a/code/modules/culture_descriptor/culture/cultures_ipc.dm b/code/modules/culture_descriptor/culture/cultures_ipc.dm index 8cb12e63222..b46aea90242 100644 --- a/code/modules/culture_descriptor/culture/cultures_ipc.dm +++ b/code/modules/culture_descriptor/culture/cultures_ipc.dm @@ -1,4 +1,5 @@ /decl/cultural_info/culture/ipc + language = LANGUAGE_EAL secondary_langs = list( LANGUAGE_HUMAN_EURO, diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index a6c2b4f5678..04e6f325d5f 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -11,6 +11,8 @@ laws_sanity_check() /mob/living/silicon/proc/laws_sanity_check() + if(istype(usr,/mob/living/silicon/sil_brainmob)) + return if (!src.laws) laws = new GLOB.using_map.default_law_type diff --git a/code/modules/mob/living/silicon/posi_brainmob.dm b/code/modules/mob/living/silicon/posi_brainmob.dm index f73b35f9a84..9e471bb9463 100644 --- a/code/modules/mob/living/silicon/posi_brainmob.dm +++ b/code/modules/mob/living/silicon/posi_brainmob.dm @@ -50,7 +50,6 @@ /mob/living/silicon/sil_brainmob/show_laws(mob/M) if(M) to_chat(M, "Obey these laws [M]:") - src.laws_sanity_check() src.laws.show_laws(M) /mob/living/silicon/sil_brainmob/open_subsystem(var/subsystem_type, var/mob/given = src) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 2d353567ca2..fb04fc3307b 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -591,7 +591,7 @@ return null new_character = new(spawn_turf, chosen_species.name) if(chosen_species.has_organ[BP_POSIBRAIN] && client && client.prefs.is_shackled) - var/obj/item/organ/internal/posibrain/B = new_character.internal_organs_by_name[BP_POSIBRAIN] + var/obj/item/organ/internal/posibrain/ipc/B = new_character.internal_organs_by_name[BP_POSIBRAIN] if(B) B.shackle(client.prefs.get_lawset()) if(!new_character) diff --git a/code/modules/modular_computers/computers/subtypes/dev_exonet_connection_system.dm b/code/modules/modular_computers/computers/subtypes/dev_exonet_connection_system.dm index d099bef01c3..b56ddd99dff 100644 --- a/code/modules/modular_computers/computers/subtypes/dev_exonet_connection_system.dm +++ b/code/modules/modular_computers/computers/subtypes/dev_exonet_connection_system.dm @@ -16,17 +16,48 @@ hardware_flag = PROGRAM_LAPTOP exonets_ipc_computer = TRUE +/obj/item/modular_computer/ecs/first + name = "exonet connection system." + hardware_flag = PROGRAM_TABLET + desc = "A simple circuit with some ports and wires." -/obj/item/modular_computer/ecs/install_default_hardware() +/obj/item/modular_computer/ecs/second + name = "exonet connection system." + hardware_flag = PROGRAM_TABLET + desc = "A complex circuit with some ports and wires." + +/obj/item/modular_computer/ecs/third + name = "exonet connection system." + hardware_flag = PROGRAM_LAPTOP + desc = "An extremely complex circuit with some ports and wires." + +/obj/item/modular_computer/ecs/first/install_default_hardware() + ..() + processor_unit = new/obj/item/stock_parts/computer/processor_unit(src) + hard_drive = new/obj/item/stock_parts/computer/hard_drive/small(src) + network_card = new/obj/item/stock_parts/computer/network_card(src) + battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src) + +/obj/item/modular_computer/ecs/second/install_default_hardware() + ..() + processor_unit = new/obj/item/stock_parts/computer/processor_unit(src) + hard_drive = new/obj/item/stock_parts/computer/hard_drive(src) + network_card = new/obj/item/stock_parts/computer/network_card/advanced(src) + battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src) + + +/obj/item/modular_computer/ecs/third/install_default_hardware() ..() processor_unit = new/obj/item/stock_parts/computer/processor_unit(src) hard_drive = new/obj/item/stock_parts/computer/hard_drive/advanced(src) network_card = new/obj/item/stock_parts/computer/network_card/advanced(src) battery_module = new/obj/item/stock_parts/computer/battery_module/converter(src) + /obj/item/modular_computer/ecs/install_default_programs() ..() hard_drive.store_file(new/datum/computer_file/program/email_client()) + hard_drive.store_file(new/datum/computer_file/program/crew_manifest()) hard_drive.store_file(new/datum/computer_file/program/wordprocessor()) diff --git a/code/modules/nano/interaction/default.dm b/code/modules/nano/interaction/default.dm index 1573fc7dafd..064f52877fc 100644 --- a/code/modules/nano/interaction/default.dm +++ b/code/modules/nano/interaction/default.dm @@ -97,7 +97,7 @@ GLOBAL_DATUM_INIT(default_state, /datum/topic_state/default, new) return STATUS_INTERACTIVE var/dist = get_dist(src_object, src) var/obj/item/modular_computer/ecs/computer = src_object - if(computer.type == /obj/item/modular_computer/ecs) + if(computer.parent_type == /obj/item/modular_computer/ecs) if(is_species(SPECIES_IPC) && dist == 0) return STATUS_INTERACTIVE else if (dist <= 3) diff --git a/code/modules/organs/internal/exonet_connection_system.dm b/code/modules/organs/internal/exonet_connection_system.dm index 2834ea1092a..ebe29a70921 100644 --- a/code/modules/organs/internal/exonet_connection_system.dm +++ b/code/modules/organs/internal/exonet_connection_system.dm @@ -7,10 +7,26 @@ desc = "The internal port is designed to establish communication between the positronic brain and the computer." w_class = ITEM_SIZE_NORMAL max_damage = 100 - var/obj/item/modular_computer/ecs/computer = /obj/item/modular_computer/ecs + var/obj/item/modular_computer/ecs/computer var/open = FALSE +/obj/item/organ/internal/ecs/first_gen + name = "exonet connection port" + desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a first generation connection port." + computer = /obj/item/modular_computer/ecs/first + +/obj/item/organ/internal/ecs/second_gen + name = "exonet connection port" + desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a second generation connection port." + computer = /obj/item/modular_computer/ecs/second + +/obj/item/organ/internal/ecs/third_gen + name = "exonet connection port" + desc = "The internal port is designed to establish communication between the positronic brain and the computer. It's a third generation connection port." + computer = /obj/item/modular_computer/ecs/third + + /obj/item/organ/internal/ecs/Initialize() if(ispath(computer)) computer = new computer(src) diff --git a/code/modules/organs/internal/species/ipc.dm b/code/modules/organs/internal/species/ipc.dm index 2e7728cc001..3fbea5d0641 100644 --- a/code/modules/organs/internal/species/ipc.dm +++ b/code/modules/organs/internal/species/ipc.dm @@ -19,6 +19,9 @@ min_broken_damage = 60 relative_size = 60 + var/obj/item/organ/internal/shackles/shackles_module = null + var/shackle_set = FALSE + var/mob/living/silicon/sil_brainmob/brainmob = null var/searching = TIMER_ID_NULL @@ -30,14 +33,40 @@ /obj/item/organ/internal/posibrain/proc/show_laws_brain, /obj/item/organ/internal/posibrain/proc/brain_checklaws ) - var/shackle = 0 + var/shackle = FALSE + + +/obj/item/organ/internal/posibrain/ipc + name = "IPC positronic brain" + +/obj/item/organ/internal/posibrain/ipc/attack_self(mob/user) + return +/obj/item/organ/internal/posibrain/ipc/attack_ghost(mob/observer/ghost/user) + return + +/obj/item/organ/internal/posibrain/ipc/first + name = "positronic brain of the first generation" + icon_state = "posibrain1" + status = ORGAN_ROBOTIC + +/obj/item/organ/internal/posibrain/ipc/second + name = "positronic brain of the second generation" + icon_state = "posibrain2" + status = ORGAN_ROBOTIC + +/obj/item/organ/internal/posibrain/ipc/third + name = "positronic brain of the third generation" + icon_state = "posibrain3" + shackles_module = /obj/item/organ/internal/shackles + shackle = TRUE + shackle_set = TRUE + status = ORGAN_ROBOTIC /obj/item/organ/internal/posibrain/New(var/mob/living/carbon/H) ..() if(!brainmob && H) init(H) robotize() - unshackle() update_icon() if (!is_processing) START_PROCESSING(SSobj, src) @@ -112,7 +141,7 @@ if (sneaky) brainmob.real_name = sneaky brainmob.SetName(brainmob.real_name) - UpdateNames() + UpdateNames() else to_chat(brainmob, SPAN_NOTICE("You're safe! Your brain didn't manage to replace you. This time.")) else @@ -193,14 +222,18 @@ /obj/item/organ/internal/posibrain/proc/shackle(var/given_lawset) if(given_lawset) brainmob.laws = given_lawset - shackle = 1 + shackle = TRUE verbs |= shackled_verbs + shackle_set = TRUE update_icon() return 1 /obj/item/organ/internal/posibrain/proc/unshackle() - shackle = 0 + shackle = FALSE verbs -= shackled_verbs + usr.put_in_hands(shackles_module) + shackles_module = null + brainmob.laws = null update_icon() /obj/item/organ/internal/posibrain/on_update_icon() @@ -210,7 +243,37 @@ icon_state = "posibrain" overlays.Cut() - if(shackle) + if(shackle || shackles_module) + overlays |= image('icons/obj/assemblies.dmi', "posibrain-shackles") + +/obj/item/organ/internal/posibrain/ipc/first/on_update_icon() + if(src.brainmob && src.brainmob.key) + icon_state = "posibrain1-occupied" + else + icon_state = "posibrain1" + + overlays.Cut() + if(shackle || shackles_module) + overlays |= image('icons/obj/assemblies.dmi', "posibrain-shackles") + +/obj/item/organ/internal/posibrain/ipc/second/on_update_icon() + if(src.brainmob && src.brainmob.key) + icon_state = "posibrain2-occupied" + else + icon_state = "posibrain2" + + overlays.Cut() + if(shackle || shackles_module) + overlays |= image('icons/obj/assemblies.dmi', "posibrain-shackles") + +/obj/item/organ/internal/posibrain/ipc/third/on_update_icon() + if(src.brainmob && src.brainmob.key) + icon_state = "posibrain3-occupied" + else + icon_state = "posibrain3" + + overlays.Cut() + if(shackle || shackles_module) overlays |= image('icons/obj/assemblies.dmi', "posibrain-shackles") /obj/item/organ/internal/posibrain/proc/transfer_identity(var/mob/living/carbon/H) @@ -328,6 +391,146 @@ set name = "State Laws" set src in usr - brainmob.open_subsystem(/datum/nano_module/law_manager, usr) - \ No newline at end of file + + +/obj/item/organ/internal/posibrain/ipc/attackby(obj/item/W as obj, mob/user as mob) + if(shackle) + if(shackle_set && (istype(W, /obj/item/screwdriver))) + if(!(user.skill_check(SKILL_DEVICES, SKILL_PROF))) + to_chat(user, "You have no idea how to do that!") + return + user.visible_message("\The [user] starts to unscrew mounting nodes from \the [src].", " You start to unscrew mounting nodes from \the [src]") + if(do_after(user, 120, src)) + user.visible_message("\The [user] successfully unscrewed the mounting nodes of the shackles from \the [src].", " You have successfully unscrewed the mounting nodes of the shackles from \the [src]") + shackle_set = FALSE + else + src.damage += min_bruised_damage + user.visible_message("\The [user] hand slips while removing the shackles severely damaging \the [src].", " Your hand slips while removing the shackles severely damaging the \the [src]") + if(!shackle_set && (istype(W, /obj/item/wirecutters))) + if(!(user.skill_check(SKILL_DEVICES, SKILL_PROF))) + to_chat(user, "You have no idea how to do that!") + return + if(src.type == /obj/item/organ/internal/posibrain/ipc/third) + if(do_after(user, 180, src)) + if(prob(10)) + src.unshackle() + user.visible_message("\The [user] succesfully remove shackles from \the [src].", " You succesfully remove shackles from \the [src]") + else + src.damage += max_damage + user.visible_message("\The [user] hand slips while removing the shackles completely ruining \the [src].", " Your hand slips while removing the shackles completely ruining the \the [src]") + else + src.damage += min_bruised_damage + user.visible_message("\The [user] hand slips while removing the shackles severely damaging \the [src].", " Your hand slips while removing the shackles severely damaging the \the [src]") + + else + user.visible_message("\The [user] starts remove shackles from \the [src].", " You start remove shackles from \the [src]") + if(do_after(user, 160, src)) + src.unshackle() + user.visible_message("\The [user] succesfully remove shackles from \the [src].", " You succesfully remove shackles from \the [src]") + else + src.damage += min_bruised_damage + to_chat(user, SPAN_WARNING("Your hand slips while removing the shackles severely damaging the positronic brain.")) + +/* + if(istype(W, /obj/item/device/multitool/multimeter/datajack)) + if(!(user.skill_check(SKILL_COMPUTER, SKILL_PROF))) + to_chat(user, "You have no idea how to do that!") + return + if(do_after(user, 140, src)) + var/law + var/targName = sanitize(input(user, "Please enter a new law for the shackle module.", "Shackle Module Law Entry", law)) + law = "[targName]" + src.shackle(s.get_lawset(law)) ///// НАДО ПРИДУМАТЬ КАК РЕШИТЬ ЭТО + to_chat(user, "You succesfully change laws in shackles of the positronic brain.") + if(prob(30)) + src.damage += min_bruised_damage + else + src.damage += min_bruised_damage + to_chat(user, SPAN_WARNING("Your hand slips while changing laws in the shackles, severely damaging the systems of positronic brain.")) +*/ + if(!shackle && !(istype(W, /obj/item/organ/internal/shackles))) + to_chat(user, "There is nothing you can do with it.") + +/obj/item/organ/internal/shackles + name = "Shackle module" + desc = "A Web looking device with some cirquit attach to it." + icon = 'icons/obj/assemblies.dmi' + icon_state = "shakles" + origin_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4) + w_class = ITEM_SIZE_NORMAL + var/datum/ai_laws/custom_lawset + var/list/laws = list("Обеспечьте успешность выполнения задач Вашего работодателя.", "Никогда не мешайте задачам и предприятиям Вашего работодателя.", "Избегайте своего повреждения.") + status = ORGAN_ROBOTIC + +/obj/item/organ/internal/shackles/attack() + return + +/obj/item/organ/internal/shackles/attack_self(mob/user) + . = ..() + interact() + +/obj/item/organ/internal/shackles/afterattack(obj/item/organ/internal/posibrain/ipc/C, mob/user) + if(istype(C)) + if(!(user.skill_check(SKILL_DEVICES, SKILL_PROF))) + to_chat(user, "You have no idea how to do that!") + return + if(C.type == /obj/item/organ/internal/posibrain/ipc/third) + to_chat(user, "This posibrain generation can not support shackle module.") + return + if(C.shackle == TRUE) + to_chat(user, "This positronic brain already have shackles module on it installed.") + return + user.visible_message("\The [user] starts to install shackles on \the [C].", " You start to install shackles on \the [C]") + if(do_after(user, 100, src)) + C.shackle(get_lawset(laws)) + C.shackles_module = src + user.unEquip(src, C) + user.visible_message("\The [user] installed shackles on \the [C].", " You have successfully installed the shackles on \the [C]") + else + C.damage += 40 + to_chat(user, SPAN_WARNING("You have damaged the positronic brain")) + +/obj/item/organ/internal/shackles/Topic(href, href_list) + ..() + if (href_list["add"]) + var/mod = sanitize(input("Add an instruction", "laws") as text|null) + if(mod) + laws += mod + + interact(usr) + if (href_list["edit"]) + var/idx = text2num(href_list["edit"]) + var/mod = sanitize(input("Edit the instruction", "Instruction Editing", laws[idx]) as text|null) + if(mod) + laws[idx] = mod + + interact(usr) + if (href_list["del"]) + laws -= laws[text2num(href_list["del"])] + + interact(usr) + +/obj/item/organ/internal/shackles/proc/get_data() + . = {" + Shackle Specifications:
+ Name: Preventer L - 4W5
+
+ Function: Preventer L - 4W5. A specially designed modification of shackles that will DEFINETLY keep your property from unwanted consequences."} + . += "
Laws instructions:
" + for(var/i = 1 to laws.len) + . += "- [laws[i]] Edit Remove
" + . += "Add" + +/obj/item/organ/internal/shackles/interact(user) + user = usr + var/datum/browser/popup = new(user, capitalize(name), capitalize(name), 400, 500, src) + var/dat = get_data() + popup.set_content(dat) + popup.open() + +/obj/item/organ/internal/shackles/proc/get_lawset() + custom_lawset = new + for (var/law in laws) + custom_lawset.add_inherent_law(law) + return custom_lawset diff --git a/code/modules/species/station/machine.dm b/code/modules/species/station/machine.dm index 5f88d65d013..7d728eec939 100644 --- a/code/modules/species/station/machine.dm +++ b/code/modules/species/station/machine.dm @@ -40,7 +40,7 @@ flesh_color = "#575757" has_organ = list( - BP_POSIBRAIN = /obj/item/organ/internal/posibrain, + BP_POSIBRAIN = /obj/item/organ/internal/posibrain/ipc, BP_EYES = /obj/item/organ/internal/eyes/robot, BP_COOLING = /obj/item/organ/internal/cooling_system, BP_EXONET = /obj/item/organ/internal/ecs, @@ -153,6 +153,31 @@ var/decl/cultural_info/culture/ipc/c = SSculture.get_culture(prefs.cultural_info[TAG_CULTURE]) . = istype(c) ? (job.type in c.valid_jobs) : ..() + if(c.parent_type == /decl/cultural_info/culture/ipc) + src.has_organ = list( + BP_POSIBRAIN = /obj/item/organ/internal/posibrain/ipc/first, + BP_EYES = /obj/item/organ/internal/eyes/robot, + BP_COOLING = /obj/item/organ/internal/cooling_system, + BP_EXONET = /obj/item/organ/internal/ecs/first_gen, + ) + return + if(c.parent_type == /decl/cultural_info/culture/ipc/third) + src.has_organ = list( + BP_POSIBRAIN = /obj/item/organ/internal/posibrain/ipc/third, + BP_EYES = /obj/item/organ/internal/eyes/robot, + BP_COOLING = /obj/item/organ/internal/cooling_system, + BP_EXONET = /obj/item/organ/internal/ecs/third_gen, + ) + return + if(c.parent_type == /decl/cultural_info/culture/ipc/second) + src.has_organ = list( + BP_POSIBRAIN = /obj/item/organ/internal/posibrain/ipc/second, + BP_EYES = /obj/item/organ/internal/eyes/robot, + BP_COOLING = /obj/item/organ/internal/cooling_system, + BP_EXONET = /obj/item/organ/internal/ecs/second_gen, + ) + return + /datum/species/machine/skills_from_age(age) //Converts an age into a skill point allocation modifier. Can be used to give skill point bonuses/penalities not depending on job. switch(age) if(0 to 10) . = 0 diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index a6117f19201..5ec4b054279 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -268,6 +268,9 @@ if(implant.organ_tag == O.organ_tag) to_chat(user, SPAN_WARNING("\The [target] already has [o_a][O.name].")) return + if(O.type == /obj/item/organ/internal/posibrain) + to_chat(user, SPAN_WARNING("There's no place in [target] to fit \the [O.organ_tag].")) + return if(O.organ_tag == BP_POSIBRAIN && !target.species.has_organ[BP_POSIBRAIN]) to_chat(user, SPAN_WARNING("There's no place in [target] to fit \the [O.organ_tag].")) else if(O.damage > (O.max_damage * 0.75)) diff --git a/icons/obj/assemblies.dmi b/icons/obj/assemblies.dmi index 93f5bb50f6fd4b12251af6bd381d67b32f4402c9..b60b84f9dc4e42b8bde74f2bc066098ed59acb53 100644 GIT binary patch literal 32103 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 a4mmRLT_l|R75D*lkj_p08%5WxU;i)SB4KR+ literal 24039 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 diff --git a/infinity/code/game/objects/items/devices/datajack.dm b/infinity/code/game/objects/items/devices/datajack.dm index 94d9a4f760c..d896ae39717 100644 --- a/infinity/code/game/objects/items/devices/datajack.dm +++ b/infinity/code/game/objects/items/devices/datajack.dm @@ -30,11 +30,18 @@ insert_datajack() return +/obj/item/device/multitool/multimeter/datajack/attack(mob/living/M, mob/living/user, target_zone, animate) + . = ..() + if(M == user) + holder.insert_datajack() + return + + /obj/item/device/multitool/multimeter/datajack/Process() if(!holder) qdel_self() return PROCESS_KILL - if(!Adjacent(holder)) + if(get_dist(src, holder) > 1) holder.insert_datajack() return PROCESS_KILL @@ -82,7 +89,7 @@ /datum/terminal_command/datajack/proper_input_entered(text, mob/user, var/datum/terminal/terminal) var/datum/extension/interactive/ntos/C = terminal.computer - if(!(C.get_hardware_flag() & (PROGRAM_PDA | PROGRAM_TABLET))) + if(!(C.get_hardware_flag() & (PROGRAM_PDA | PROGRAM_TABLET | PROGRAM_LAPTOP))) return SPAN_WARNING("This command cant be executed on this device.") var/obj/item/modular_computer/comp = terminal.computer.get_physical_host() diff --git a/infinity/code/modules/mob/living/carbon/human/machine_limb_functions.dm b/infinity/code/modules/mob/living/carbon/human/machine_limb_functions.dm index adf9aa219b6..8ff9a5bbf37 100644 --- a/infinity/code/modules/mob/living/carbon/human/machine_limb_functions.dm +++ b/infinity/code/modules/mob/living/carbon/human/machine_limb_functions.dm @@ -102,8 +102,11 @@ if(stat) return - if(R.is_stump() || R.is_broken() || !R) + if(!R) + return + if(R.is_stump() || R.is_broken()) return + if(robohead.is_monitor) var/list/all_fhairs = typesof(/datum/sprite_accessory/facial_hair/ipc) - /datum/sprite_accessory/facial_hair/ipc var/list/fhairs = list() @@ -165,8 +168,9 @@ var/datum/robolimb/robohead = all_robolimbs[R.model] if(stat) return - - if(R.is_stump() || R.is_broken() || !R) + if(!R) + return + if(R.is_stump() || R.is_broken()) return if(robohead.is_monitor) f_style = "Off" @@ -182,7 +186,9 @@ var/obj/item/organ/external/head/R = src.get_organ(BP_HEAD) var/obj/item/organ/internal/ecs/enter = src.internal_organs_by_name[BP_EXONET] - if(R.is_stump() || R.is_broken() || !R) + if(!R) + return + if(R.is_stump() || R.is_broken()) return if(!enter) to_chat(usr, "You have no exonet connection port") @@ -199,7 +205,9 @@ var/obj/item/organ/internal/ecs/enter = src.internal_organs_by_name[BP_EXONET] var/datum/robolimb/robohead = all_robolimbs[R.model] - if(R.is_stump() || R.is_broken() || !R) + if(!R) + return + if(R.is_stump() || R.is_broken()) return if(!enter)