From 332dd3c30979cf37dbdd486de0ec2fb3f15178c8 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Tue, 6 Aug 2024 18:24:43 -0400 Subject: [PATCH 01/14] added signals --- .../dcs/signals/signals_atom/signals_atom_attack.dm | 2 ++ .../dcs/signals/signals_obj/signals_item/signals_item.dm | 5 +++++ code/_onclick/ai.dm | 4 +++- code/game/machinery/_machinery.dm | 3 +++ code/game/objects/items.dm | 3 +++ code/modules/jobs/access.dm | 4 ++-- 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 91094391ed1d1..62c50fb569093 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -8,6 +8,8 @@ #define COMPONENT_NO_AFTERATTACK (1<<0) ///from base of atom/attack_hulk(): (/mob/living/carbon/human) #define COMSIG_ATOM_HULK_ATTACK "hulk_attack" +///from base of atom/attack_ai(): (/mob/user) +#define COMSIG_ATOM_ATTACK_AI "attack_ai" ///from base of atom/animal_attack(): (/mob/user) #define COMSIG_ATOM_ATTACK_ANIMAL "attack_animal" //from base of atom/attack_basic_mob(): (/mob/user) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index 555630211a3a4..0c8430299fe33 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -54,6 +54,11 @@ #define COMSIG_ITEM_ATTACK_EFFECT "item_effect_attacked" +///from the base of obj/item/proc/GetAccess(): () +#define COMSIG_ITEM_GET_ACCESS "item_get_access" +///from the base of obj/item/proc/GetID(): () +#define COMSIG_ITEM_GET_ID "item_get_id" + ////////////////////////////// // /obj/effect/mine signals diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 082665ccea657..d17f5af0bfa40 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -95,7 +95,9 @@ A.attack_ai(src) /atom/proc/attack_ai(mob/user) - return + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_AI, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + return FALSE /* Since the AI handles shift, ctrl, and alt-click differently diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 7e6497177ac85..1a0deefdcee41 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -475,6 +475,9 @@ Class Procs: return _try_interact(user) /obj/machinery/attack_ai(mob/user) + . = ..() + if(.) + return if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE if(iscyborg(user))// For some reason attack_robot doesn't work diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5a21f635f38b8..6531e11f603f3 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -538,6 +538,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) attack_paw(A) /obj/item/attack_ai(mob/user) + . = ..() + if(.) + return if(istype(src.loc, /obj/item/robot_module)) //If the item is part of a cyborg module, equip it if(!iscyborg(user)) diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index b69ca5b25fe06..7297256668376 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -45,10 +45,10 @@ return TRUE /obj/item/proc/GetAccess() - return list() + . = SEND_SIGNAL(src, COMSIG_ITEM_GET_ACCESS) || list() /obj/item/proc/GetID() - return null + . = SEND_SIGNAL(src, COMSIG_ITEM_GET_ID) /obj/item/proc/RemoveID() return null From 7af0ed23b0810b69c5d14fc6412f55c54adee168 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Tue, 6 Aug 2024 19:42:30 -0400 Subject: [PATCH 02/14] attack_robot() --- .../dcs/signals/signals_atom/signals_atom_attack.dm | 2 ++ code/_onclick/cyborg.dm | 5 +++-- code/game/machinery/_machinery.dm | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 62c50fb569093..72ac753677f7c 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -27,3 +27,5 @@ #define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" ///from base of atom/attack_paw(): (mob/user) #define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" +///from base of atom/attack_robot(): (mob/user) +#define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index f9dfef70633f7..46b752836e392 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -182,5 +182,6 @@ A.attack_robot(src) /atom/proc/attack_robot(mob/user) - attack_ai(user) - return + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_ROBOT, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + return FALSE diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 1a0deefdcee41..a4197e81c4640 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -462,6 +462,9 @@ Class Procs: user.visible_message("[user] smashes [src] with [user.p_their()] paws[damage ? "." : ", without leaving a mark!"]", null, null, COMBAT_MESSAGE_RANGE) /obj/machinery/attack_robot(mob/user) + . = ..() + if(.) + return if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE if(Adjacent(user) && can_buckle && has_buckled_mobs()) //so that borgs (but not AIs, sadly (perhaps in a future PR?)) can unbuckle people from machines From 4701f503a5eb0bf6fb121cc66f9ce21a2d366d07 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:28:48 -0400 Subject: [PATCH 03/14] attack_robot() --- code/_onclick/cyborg.dm | 1 - code/game/machinery/_machinery.dm | 11 +++++++---- code/game/machinery/cell_charger.dm | 3 +++ code/game/machinery/cloning.dm | 6 +++--- code/game/machinery/computer/apc_control.dm | 3 +++ code/game/machinery/cryopod.dm | 3 +++ code/game/machinery/dish_drive.dm | 3 +++ code/game/machinery/doors/airlock.dm | 3 +++ code/game/machinery/flasher.dm | 2 ++ code/game/machinery/igniter.dm | 5 +++-- code/game/machinery/navbeacon.dm | 3 +++ .../porta_turret/portable_turret_construct.dm | 3 +++ .../machinery/porta_turret/portable_turret_cover.dm | 3 +++ code/game/machinery/status_display.dm | 2 -- code/game/machinery/syndicatebeacon.dm | 2 ++ code/game/objects/items.dm | 3 +++ code/game/objects/items/devices/powersink.dm | 3 +++ code/game/objects/items/devices/radio/intercom.dm | 3 +++ code/game/objects/structures/barsigns.dm | 3 +++ code/game/objects/structures/fireaxe.dm | 4 ++++ code/game/objects/structures/mineral_doors.dm | 10 ++++------ code/game/turfs/open/floor/light_floor.dm | 3 +++ code/modules/awaymissions/super_secret_room.dm | 3 +++ .../food_and_drinks/kitchen_machinery/deep_fryer.dm | 3 +++ .../food_and_drinks/kitchen_machinery/grill.dm | 3 +++ code/modules/holodeck/items.dm | 4 ++++ .../modular_computers/computers/item/computer.dm | 3 +++ .../modular_computers/computers/item/tablet.dm | 4 ++++ code/modules/power/lighting/light.dm | 6 +++++- code/modules/power/port_gen.dm | 3 +++ code/modules/station_goals/bluespace_tap.dm | 3 +++ 31 files changed, 95 insertions(+), 19 deletions(-) diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index f9dfef70633f7..10a38c68ff8e2 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -182,5 +182,4 @@ A.attack_robot(src) /atom/proc/attack_robot(mob/user) - attack_ai(user) return diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 7e6497177ac85..c2bc4631e20c7 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -462,6 +462,9 @@ Class Procs: user.visible_message("[user] smashes [src] with [user.p_their()] paws[damage ? "." : ", without leaving a mark!"]", null, null, COMBAT_MESSAGE_RANGE) /obj/machinery/attack_robot(mob/user) + if(isAI(user)) + CRASH("An AI just tried to run attack_robot().") // They should not be running the same procs anymore. + . = ..() if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE if(Adjacent(user) && can_buckle && has_buckled_mobs()) //so that borgs (but not AIs, sadly (perhaps in a future PR?)) can unbuckle people from machines @@ -475,12 +478,12 @@ Class Procs: return _try_interact(user) /obj/machinery/attack_ai(mob/user) + if(iscyborg(user)) + CRASH("A cyborg just tried to run attack_ai().") // They should not be running the same procs anymore. if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE - if(iscyborg(user))// For some reason attack_robot doesn't work - return attack_robot(user) - else - return _try_interact(user) + + return _try_interact(user) /obj/machinery/_try_interact(mob/user) if((interaction_flags_machine & INTERACT_MACHINE_WIRES_IF_OPEN) && panel_open && (attempt_wire_interaction(user) == WIRE_INTERACTION_BLOCK)) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index bd0a164f12229..a6c8745580659 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -106,6 +106,9 @@ /obj/machinery/cell_charger/attack_ai(mob/user) return +/obj/machinery/cell_charger/attack_robot(mob/user) + return + /obj/machinery/cell_charger/emp_act(severity) . = ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 5b5afdc06a34e..e3e8c70d95d85 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -108,6 +108,9 @@ /obj/machinery/clonepod/attack_ai(mob/user) return attack_hand(user) +/obj/machinery/clonepod/attack_robot(mob/user) + return attack_hand(user) + /obj/machinery/clonepod/examine(mob/user) . = ..() . += "The linking device can be scanned with a multitool. It can be emptied by Alt-Clicking it." @@ -179,9 +182,6 @@ if(mob_occupant) . = (100 * ((mob_occupant.health + 100) / (heal_level + 100))) -/obj/machinery/clonepod/attack_ai(mob/user) - return examine(user) - //Start growing a human clone in the pod! /obj/machinery/clonepod/proc/growclone(clonename, ui, mutation_index, mindref, last_death, datum/species/mrace, list/features, factions, datum/bank_account/insurance, list/traumas, body_only, experimental) var/result = CLONING_SUCCESS diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 8f2b84866db50..3c31180093025 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -36,6 +36,9 @@ return ..(user) +/obj/machinery/computer/apc_control/attack_robot(mob/user) + attack_ai(user) + /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) return APC.get_virtual_z_level() == get_virtual_z_level() && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.machine_stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 17214114501de..ec5bbb8baf491 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -46,6 +46,9 @@ GLOBAL_LIST_EMPTY(cryopod_computers) /obj/machinery/computer/cryopod/attack_ai() attack_hand() +/obj/machinery/computer/cryopod/attack_robot() + attack_hand() + /obj/machinery/computer/cryopod/attack_hand(mob/user = usr) if(machine_stat & (NOPOWER|BROKEN)) return diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index bd5eb18709cb2..67afeaaf41238 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -110,6 +110,9 @@ to_chat(user, "You send a disposal transmission signal to [src].") do_the_dishes(TRUE) +/obj/machinery/dish_drive/attack_robot(mob/user) + attack_ai(user) + /obj/machinery/dish_drive/AltClick(mob/living/user) if(user.canUseTopic(src, !issilicon(user))) do_the_dishes(TRUE) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 89bc71c57e7d8..32c5355d77e90 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -785,6 +785,9 @@ ui_interact(user) +/obj/machinery/door/airlock/attack_robot(mob/user) + attack_robot(user) + /obj/machinery/door/airlock/proc/hack(mob/user) set waitfor = 0 if(!aiHacking) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 50d8a0fc21d7f..ba79d9d24282d 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -92,6 +92,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/flasher, 26) if (anchored) return flash() +/obj/machinery/flasher/attack_robot() + /obj/machinery/flasher/eminence_act(mob/living/simple_animal/eminence/eminence) . = ..() to_chat(usr, "You begin manipulating [src]!") diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index dcce9b812b5a1..fe17d6f6e8f41 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -119,8 +119,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26) /obj/machinery/sparker/attack_ai() if (anchored) return ignite() - else - return + +/obj/machinery/sparker/attack_robot() + return attack_ai() /obj/machinery/sparker/proc/ignite() if (!(powered())) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 35e77322e7adc..d179859a81848 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -98,6 +98,9 @@ /obj/machinery/navbeacon/attack_ai(mob/user) interact(user, 1) +/obj/machinery/navbeacon/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/navbeacon/attack_paw() return diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 163c46d1bb6ef..f058d56ac5fe2 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -187,3 +187,6 @@ /obj/machinery/porta_turret_construct/attack_ai() return + +/obj/machinery/porta_turret_construct/attack_robot() + return diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 14feee213eafd..6fb33e5728929 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -30,6 +30,9 @@ return parent_turret.attack_ai(user) +/obj/machinery/porta_turret_cover/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/porta_turret_cover/attack_hand(mob/user) . = ..() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 3c0e11ff55ac8..2531835a64906 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -450,8 +450,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/status_display/ai, 32) . = ..() /obj/machinery/status_display/ai/attack_ai(mob/living/silicon/ai/user) - if(!isAI(user)) - return var/list/choices = list() for(var/emotion_const in emotion_map) var/icon_state = emotion_map[emotion_const] diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 61320e077e3b7..d3553e1522d6a 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -45,6 +45,8 @@ /obj/machinery/power/singularity_beacon/attack_ai(mob/user) return +/obj/machinery/power/singularity_beacon/attack_robot(mob/user) + return /obj/machinery/power/singularity_beacon/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5a21f635f38b8..6531e11f603f3 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -538,6 +538,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) attack_paw(A) /obj/item/attack_ai(mob/user) + . = ..() + if(.) + return if(istype(src.loc, /obj/item/robot_module)) //If the item is part of a cyborg module, equip it if(!iscyborg(user)) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index f57c077bbdac2..9437ec6d32bfd 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -103,6 +103,9 @@ /obj/item/powersink/attack_ai() return +/obj/item/powersink/attack_robot() + return + /obj/item/powersink/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index e448d54434215..6368b6da18ad3 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -57,6 +57,9 @@ /obj/item/radio/intercom/attack_ai(mob/user) interact(user) +/obj/item/radio/intercom/attack_robot(mob/user) + interact(user) + /obj/item/radio/intercom/attack_paw(mob/user) return attack_hand(user) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index d47d71b3fa1d0..ac894e7be446f 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -62,6 +62,9 @@ /obj/structure/sign/barsign/attack_ai(mob/user) return attack_hand(user) +/obj/structure/sign/barsign/attack_robot(mob/user) + return attack_hand(user) + /obj/structure/sign/barsign/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index b417c19d64091..e843d4bac7ac7 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -135,6 +135,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) toggle_lock(user) return +/obj/structure/fireaxecabinet/attack_robot(mob/user) + toggle_lock(user) + return + /obj/structure/fireaxecabinet/attack_tk(mob/user) . = COMPONENT_CANCEL_ATTACK_CHAIN if(locked) diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 4a9790843926e..0f28eb2d11f3f 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -40,12 +40,10 @@ if(!door_opened) return TryToSwitchState(AM) -/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral - if(isAI(user)) //so the AI can't open it - return - else if(iscyborg(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) +/obj/structure/mineral_door/attack_robot(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral + // so the AI can't open it but cyborgs can + if(get_dist(user,src) <= 1) //not remotely though + return TryToSwitchState(user) /obj/structure/mineral_door/attack_paw(mob/user) return attack_hand(user) diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index fd865cb614321..5a369429a4845 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -78,6 +78,9 @@ /turf/open/floor/light/attack_ai(mob/user) return attack_hand(user) +/turf/open/floor/light/attack_robot(mob/user) + return attack_hand(user) + /turf/open/floor/light/attackby(obj/item/C, mob/user, params) if(..()) return diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index e9f3fb75689b1..f74af0f952a39 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -104,6 +104,9 @@ /obj/structure/speaking_tile/attack_ai(mob/user) return interact(user) +/obj/structure/speaking_tile/attack_robot(mob/living/user) + return interact(user) + /obj/structure/speaking_tile/attack_slime(mob/user) return interact(user) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 0c2e5a6b9d993..50b1bbe701f07 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -219,6 +219,9 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( /obj/machinery/deepfryer/attack_ai(mob/user) return +/obj/machinery/deepfryer/attack_robot(mob/user) + return + /obj/machinery/deepfryer/attack_hand(mob/user) if(frying) to_chat(user, "You eject [frying] from [src].") diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 3963ffa3cfb0e..ee8e6710122ac 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -117,6 +117,9 @@ /obj/machinery/grill/attack_ai(mob/user) return +/obj/machinery/grill/attack_robot(mob/user) + return + /obj/machinery/grill/attack_hand(mob/user) if(grilled_item) to_chat(user, "You take out [grilled_item] from [src].") diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 3510e090af54d..23f8c028e8669 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -161,6 +161,10 @@ to_chat(user, "The station AI is not to interact with these devices.") return +/obj/machinery/readybutton/attack_robot(mob/user as mob) + to_chat(user, "The station AI is not to interact with these devices.") + return + /obj/machinery/readybutton/attack_paw(mob/user as mob) to_chat(user, "You are too primitive to use this device!") return diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index f5285829b4d6a..637b7fefd9131 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -238,6 +238,9 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar /obj/item/modular_computer/attack_ai(mob/user) return attack_self(user) +/obj/item/modular_computer/attack_robot(mob/living/user) + return attack_self(user) + /obj/item/modular_computer/attack_ghost(mob/dead/observer/user) . = ..() if(.) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 59011959d44b6..e04ed26e1833f 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -388,6 +388,10 @@ to_chat(user, "It doesn't feel right to snoop around like that...") return // we don't want ais or cyborgs using a private role tablet +/obj/item/modular_computer/tablet/pda/attack_robot(mob/user) + attack_ai(user) + return + /obj/item/modular_computer/tablet/pda/Initialize(mapload) . = ..() install_component(new /obj/item/computer_hardware/hard_drive/small/pda) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index d761ec5a1d4e3..b934fa5ac312a 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -160,7 +160,7 @@ if(on && turning_on) return - + var/area/local_area = get_area(src) if(emergency_mode || (local_area?.fire)) . += mutable_appearance(overlayicon, "[base_state]_emergency") @@ -484,6 +484,10 @@ update(FALSE) return +/obj/machinery/light/attack_robot(mob/user) + attack_ai(user) + return + // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 904f497ce06de..5b1d7220a41e3 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -221,6 +221,9 @@ /obj/machinery/power/port_gen/pacman/attack_ai(mob/user) interact(user) +/obj/machinery/power/port_gen/pacman/attack_robot(mob/user) + interact(user) + /obj/machinery/power/port_gen/pacman/attack_paw(mob/user) interact(user) diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index d40fbd2649085..aee4829f8415a 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -365,6 +365,9 @@ /obj/machinery/power/bluespace_tap/attack_ai(mob/user) ui_interact(user) +/obj/machinery/power/bluespace_tap/attack_robot(mob/user) + ui_interact(user) + /** * Produces the product with the desired key and increases product cost accordingly */ From df1053d8553594c15250f5f0af5c432391dfb572 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:35:54 -0400 Subject: [PATCH 04/14] add the . = ..() --- code/game/machinery/_machinery.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index c2bc4631e20c7..c837274b9e54f 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -480,6 +480,7 @@ Class Procs: /obj/machinery/attack_ai(mob/user) if(iscyborg(user)) CRASH("A cyborg just tried to run attack_ai().") // They should not be running the same procs anymore. + . = ..() if(!(interaction_flags_machine & INTERACT_MACHINE_ALLOW_SILICON) && !IsAdminGhost(user)) return FALSE From 0eb1f448ff566367acd8aff15007ad96be525324 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Thu, 8 Aug 2024 21:59:18 -0400 Subject: [PATCH 05/14] run that back --- .../dcs/signals/signals_obj/signals_item/signals_item.dm | 5 ----- code/modules/jobs/access.dm | 4 ++-- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm index 0c8430299fe33..555630211a3a4 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_item.dm @@ -54,11 +54,6 @@ #define COMSIG_ITEM_ATTACK_EFFECT "item_effect_attacked" -///from the base of obj/item/proc/GetAccess(): () -#define COMSIG_ITEM_GET_ACCESS "item_get_access" -///from the base of obj/item/proc/GetID(): () -#define COMSIG_ITEM_GET_ID "item_get_id" - ////////////////////////////// // /obj/effect/mine signals diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 7297256668376..b69ca5b25fe06 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -45,10 +45,10 @@ return TRUE /obj/item/proc/GetAccess() - . = SEND_SIGNAL(src, COMSIG_ITEM_GET_ACCESS) || list() + return list() /obj/item/proc/GetID() - . = SEND_SIGNAL(src, COMSIG_ITEM_GET_ID) + return null /obj/item/proc/RemoveID() return null From 56c1067dd09fb0ecbe3febe5d0b8f65e71715ab8 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Fri, 9 Aug 2024 11:28:24 -0400 Subject: [PATCH 06/14] so apparently this is very important for cyborgs to be able to function --- code/game/objects/items.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 6531e11f603f3..2f2cabeee1a79 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -537,14 +537,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) return attack_paw(A) -/obj/item/attack_ai(mob/user) +/obj/item/attack_robot(mob/living/user) . = ..() if(.) return if(istype(src.loc, /obj/item/robot_module)) //If the item is part of a cyborg module, equip it - if(!iscyborg(user)) - return var/mob/living/silicon/robot/R = user if(!R.low_power_mode) //can't equip modules with an empty cell. R.activate_module(src) From f804bec4bfe6bb01f90ca35109f09d3dcf702390 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Fri, 9 Aug 2024 21:14:42 -0400 Subject: [PATCH 07/14] COMSIG_ATOM_INTERACT and cleaning up interact() --- .../__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm | 3 +++ code/_onclick/other_mobs.dm | 2 ++ code/game/objects/items.dm | 4 +++- code/game/objects/items/devices/camera_bug.dm | 3 --- code/game/objects/items/devices/traitordevices.dm | 4 ---- code/modules/assembly/assembly.dm | 3 --- code/modules/clothing/ears/_ears.dm | 3 --- code/modules/instruments/items.dm | 3 --- code/modules/modular_computers/computers/item/computer_ui.dm | 2 +- 9 files changed, 9 insertions(+), 18 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 72ac753677f7c..c4c545b5359ff 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -29,3 +29,6 @@ #define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" ///from base of atom/attack_robot(): (mob/user) #define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" + +///from base of atom/interact(): (mob/user) +#define COMSIG_ATOM_INTERACT "atom_interact" diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index a6559a9ec4c06..8992b6a065ed0 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -78,6 +78,8 @@ return FALSE /atom/proc/interact(mob/user) + if(SEND_SIGNAL(src, COMSIG_ATOM_INTERACT, user)) + return TRUE if(interaction_flags_atom & INTERACT_ATOM_NO_FINGERPRINT_INTERACT) add_hiddenprint(user) else diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2f2cabeee1a79..97c32c32cc63e 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -429,8 +429,10 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) . += research_msg.Join() /obj/item/interact(mob/user) + if(SEND_SIGNAL(src, COMSIG_ATOM_INTERACT, user)) + . = TRUE add_fingerprint(user) - ui_interact(user) + return ui_interact(user) /obj/item/ui_act(action, params) add_fingerprint(usr) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index b97e1707c6159..41721d51f501c 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -47,9 +47,6 @@ tracking = null return ..() -/obj/item/camera_bug/interact(mob/user) - ui_interact(user) - /obj/item/camera_bug/ui_interact(mob/user = usr) . = ..() var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 3f9c1d818ea81..c8ffd0ac59e38 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -111,10 +111,6 @@ effective or pretty fucking useless. /obj/item/healthanalyzer/rad_laser/attack_self(mob/user) interact(user) -/obj/item/healthanalyzer/rad_laser/interact(mob/user) - ui_interact(user) - - /obj/item/healthanalyzer/rad_laser/ui_state(mob/user) return GLOB.hands_state diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index a3a3e294f76f1..384c38adc9dd5 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -138,9 +138,6 @@ interact(user) return TRUE -/obj/item/assembly/interact(mob/user) - return ui_interact(user) - /obj/item/assembly/ui_host(mob/user) if(holder) return holder diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm index dec80cf4b3ab0..3acb974a557e8 100644 --- a/code/modules/clothing/ears/_ears.dm +++ b/code/modules/clothing/ears/_ears.dm @@ -68,9 +68,6 @@ return TRUE interact(user) -/obj/item/clothing/ears/headphones/interact(mob/user) - ui_interact(user) - /obj/item/clothing/ears/headphones/ui_interact(mob/living/user) if(!isliving(user) || user.stat != CONSCIOUS || (HAS_TRAIT(user, TRAIT_HANDS_BLOCKED) && !ispAI(user))) return diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index a0bcec6999935..55c63d251b338 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -37,9 +37,6 @@ return TRUE interact(user) -/obj/item/instrument/interact(mob/user) - ui_interact(user) - /obj/item/instrument/ui_interact(mob/living/user) if((!isliving(user) || user.stat != CONSCIOUS || HAS_TRAIT(user, TRAIT_HANDS_BLOCKED)) && !ispAI(user)) return diff --git a/code/modules/modular_computers/computers/item/computer_ui.dm b/code/modules/modular_computers/computers/item/computer_ui.dm index e89b34bfde167..2ce4edb106598 100644 --- a/code/modules/modular_computers/computers/item/computer_ui.dm +++ b/code/modules/modular_computers/computers/item/computer_ui.dm @@ -1,6 +1,6 @@ /obj/item/modular_computer/interact(mob/user) if(enabled) - ui_interact(user) + return ..() else turn_on(user) From a6fe63d6a5d52fea271f925f2345452f17f25bee Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sat, 10 Aug 2024 10:40:24 -0400 Subject: [PATCH 08/14] we should probably return true all the time --- code/_onclick/other_mobs.dm | 3 ++- code/game/objects/items.dm | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 8992b6a065ed0..cd4192c81babe 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -85,7 +85,8 @@ else add_fingerprint(user) if(interaction_flags_atom & INTERACT_ATOM_UI_INTERACT) - return ui_interact(user) + ui_interact(user) + return TRUE return FALSE /mob/living/carbon/RangedAttack(atom/A, mouseparams) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 97c32c32cc63e..2a25bb8c24a00 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -432,7 +432,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(SEND_SIGNAL(src, COMSIG_ATOM_INTERACT, user)) . = TRUE add_fingerprint(user) - return ui_interact(user) + ui_interact(user) /obj/item/ui_act(action, params) add_fingerprint(usr) From 9ad3ce762518d06688d6c799c6534af80b518e73 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sat, 10 Aug 2024 15:37:37 -0400 Subject: [PATCH 09/14] fixes lockers and crates not being able to be opened --- code/game/objects/structures/crates_lockers/closets.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f6d0983296766..8c8d67e3aec7d 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -10,6 +10,7 @@ armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 60, STAMINA = 0, BLEED = 0) blocks_emissive = EMISSIVE_BLOCK_GENERIC pass_flags_self = LETPASSCLICKS | PASSSTRUCTURE + interaction_flags_atom = NONE var/contents_initialised = FALSE var/enable_door_overlay = TRUE var/has_opened_overlay = TRUE From 20cf00818d7bc2fec39ffc3e4fc0ddb92fbdb7f5 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sun, 22 Sep 2024 23:47:26 -0400 Subject: [PATCH 10/14] cleans this up a bit --- beestation.dme | 1 + .../dcs/signals/signals_atom/signals_atom_attack.dm | 2 ++ code/_onclick/ai.dm | 2 ++ code/_onclick/cyborg.dm | 2 ++ code/_onclick/silicon.dm | 9 +++++++++ code/game/machinery/announcement_system.dm | 6 ++---- code/game/machinery/buttons.dm | 5 +---- code/game/machinery/cell_charger.dm | 7 ++----- code/game/machinery/cloning.dm | 5 +---- code/game/machinery/computer/apc_control.dm | 5 +---- code/game/machinery/cryopod.dm | 7 ++----- code/game/machinery/dish_drive.dm | 6 ++---- code/game/machinery/doors/airlock.dm | 6 ++---- code/game/machinery/doors/firedoor.dm | 5 +---- code/game/machinery/firealarm.dm | 5 +---- code/game/machinery/flasher.dm | 4 +--- code/game/machinery/igniter.dm | 5 +---- code/game/machinery/navbeacon.dm | 5 +---- code/game/machinery/porta_turret/portable_turret.dm | 8 +------- .../machinery/porta_turret/portable_turret_construct.dm | 7 ++----- .../game/machinery/porta_turret/portable_turret_cover.dm | 6 +----- code/game/machinery/syndicatebeacon.dm | 7 ++----- code/game/objects/items/devices/powersink.dm | 7 ++----- code/game/objects/items/devices/radio/intercom.dm | 5 +---- code/game/objects/structures/barsigns.dm | 5 +---- code/game/objects/structures/fireaxe.dm | 6 +----- code/game/objects/structures/morgue.dm | 8 ++++---- code/game/turfs/open/floor/light_floor.dm | 5 +---- code/modules/atmospherics/machinery/other/miner.dm | 2 +- code/modules/awaymissions/super_secret_room.dm | 5 +---- .../food_and_drinks/kitchen_machinery/deep_fryer.dm | 7 ++----- code/modules/food_and_drinks/kitchen_machinery/grill.dm | 7 ++----- code/modules/holodeck/items.dm | 6 +----- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- .../modules/modular_computers/computers/item/computer.dm | 5 +---- code/modules/modular_computers/computers/item/tablet.dm | 6 +----- code/modules/pool/pool.dm | 7 +------ code/modules/power/lighting/light.dm | 6 +----- code/modules/power/port_gen.dm | 5 +---- code/modules/shuttle/ferry.dm | 5 +---- code/modules/station_goals/bluespace_tap.dm | 5 +---- 41 files changed, 65 insertions(+), 154 deletions(-) create mode 100644 code/_onclick/silicon.dm diff --git a/beestation.dme b/beestation.dme index d4abc6470f3b1..bf204c89c80a7 100644 --- a/beestation.dme +++ b/beestation.dme @@ -358,6 +358,7 @@ #include "code\_onclick\other_mobs.dm" #include "code\_onclick\overmind.dm" #include "code\_onclick\pai.dm" +#include "code\_onclick\silicon.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" #include "code\_onclick\hud\action_button.dm" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index c4c545b5359ff..2008f9d67a21f 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -29,6 +29,8 @@ #define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" ///from base of atom/attack_robot(): (mob/user) #define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" +///from base of atom/attack_silicon(): (mob/user) +#define COMSIG_ATOM_ATTACK_SILICON "atom_attack_silicon" ///from base of atom/interact(): (mob/user) #define COMSIG_ATOM_INTERACT "atom_interact" diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 54f160dd04a3e..3cdf1c25fedfa 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -97,6 +97,8 @@ /atom/proc/attack_ai(mob/user) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_AI, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE + if(attack_silicon(user)) + return TRUE return FALSE /* diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 3a706f6cb37cc..82b087f26cb14 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -184,4 +184,6 @@ /atom/proc/attack_robot(mob/user) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_ROBOT, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE + if(attack_silicon(user)) + return TRUE return FALSE diff --git a/code/_onclick/silicon.dm b/code/_onclick/silicon.dm new file mode 100644 index 0000000000000..877d887fa7c0f --- /dev/null +++ b/code/_onclick/silicon.dm @@ -0,0 +1,9 @@ +/** + * Often times, we want functionality to be available to both AIs and Cyborgs. + * + * returns TRUE if action has been done + */ +/atom/proc/attack_silicon(mob/user) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_SILICON, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + return FALSE diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index a777feaf0d418..8e6868d461959 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -155,16 +155,14 @@ GLOBAL_LIST_EMPTY(announcement_systems) update_icon() . = TRUE -/obj/machinery/announcement_system/attack_robot(mob/living/silicon/user) - . = attack_ai(user) - -/obj/machinery/announcement_system/attack_ai(mob/user) +/obj/machinery/announcement_system/attack_silicon(mob/user) if(!user.canUseTopic(src, !issilicon(user))) return if(machine_stat & BROKEN) to_chat(user, "[src]'s firmware appears to be malfunctioning!") return interact(user) + return TRUE /obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff if(!obj_break()) // if badmins flag this unbreakable or its already broken diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 54182368f4896..a9e89a0ac1e19 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -116,13 +116,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/button) if(do_after(eminence, 20, target=get_turf(eminence))) attack_hand(eminence) -/obj/machinery/button/attack_ai(mob/user) +/obj/machinery/button/attack_silicon(mob/user) if(!panel_open) return attack_hand(user) -/obj/machinery/button/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/button/proc/setup_device() if(id && istype(device, /obj/item/assembly/control)) var/obj/item/assembly/control/A = device diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index a6c8745580659..d44fabf0aa49b 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -103,11 +103,8 @@ removecell() return COMPONENT_CANCEL_ATTACK_CHAIN -/obj/machinery/cell_charger/attack_ai(mob/user) - return - -/obj/machinery/cell_charger/attack_robot(mob/user) - return +/obj/machinery/cell_charger/attack_silicon(mob/user) + return TRUE /obj/machinery/cell_charger/emp_act(severity) . = ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 23a8e641e1a5d..fa9c1e3481660 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -105,10 +105,7 @@ reagents.reaction(user.loc) src.reagents.clear_reagents() -/obj/machinery/clonepod/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/clonepod/attack_robot(mob/user) +/obj/machinery/clonepod/attack_silicon(mob/user) return attack_hand(user) /obj/machinery/clonepod/examine(mob/user) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 3c31180093025..1b4cf065f1ccc 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -30,15 +30,12 @@ active_apc.remote_control = null active_apc = null -/obj/machinery/computer/apc_control/attack_ai(mob/user) +/obj/machinery/computer/apc_control/attack_silicon(mob/user) if(!IsAdminGhost(user)) to_chat(user,"[src] does not support AI control.") //You already have APC access, cheater! return ..(user) -/obj/machinery/computer/apc_control/attack_robot(mob/user) - attack_ai(user) - /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) return APC.get_virtual_z_level() == get_virtual_z_level() && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.machine_stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 1fc0d35573662..1521b2520e51d 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -43,11 +43,8 @@ GLOBAL_LIST_EMPTY(cryopod_computers) GLOB.cryopod_computers -= src ..() -/obj/machinery/computer/cryopod/attack_ai() - attack_hand() - -/obj/machinery/computer/cryopod/attack_robot() - attack_hand() +/obj/machinery/computer/cryopod/attack_silicon() + return attack_hand() /obj/machinery/computer/cryopod/attack_hand(mob/user = usr) if(machine_stat & (NOPOWER|BROKEN)) diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index 1c6c0bb8e7431..b06017a24d4e5 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -102,14 +102,12 @@ else step_towards(I, src) -/obj/machinery/dish_drive/attack_ai(mob/living/user) +/obj/machinery/dish_drive/attack_silicon(mob/living/user) if(machine_stat) return to_chat(user, "You send a disposal transmission signal to [src].") do_the_dishes(TRUE) - -/obj/machinery/dish_drive/attack_robot(mob/user) - attack_ai(user) + return TRUE /obj/machinery/dish_drive/AltClick(mob/living/user) if(user.canUseTopic(src, !issilicon(user))) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ce2d304250e74..9bc1d1aa1b878 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -769,7 +769,7 @@ . += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it." . += "Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access." -/obj/machinery/door/airlock/attack_ai(mob/user) +/obj/machinery/door/airlock/attack_silicon(mob/user) if(!canAIControl(user)) if(canAIHack()) hack(user) @@ -784,9 +784,7 @@ return ui_interact(user) - -/obj/machinery/door/airlock/attack_robot(mob/user) - attack_robot(user) + return TRUE /obj/machinery/door/airlock/proc/hack(mob/user) set waitfor = 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 278110a0b6331..0a2f1083bbc60 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -229,7 +229,7 @@ return ..() -/obj/machinery/door/firedoor/attack_ai(mob/user) +/obj/machinery/door/firedoor/attack_silicon(mob/user) add_fingerprint(user) if(welded || operating || machine_stat & NOPOWER) return TRUE @@ -239,9 +239,6 @@ close() return TRUE -/obj/machinery/door/firedoor/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) if(welded) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 820bf6fd17ff8..e1a78a1e48294 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -193,10 +193,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/firealarm) else alarm(user) -/obj/machinery/firealarm/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/firealarm/attack_robot(mob/user) +/obj/machinery/firealarm/attack_silicon(mob/user) return attack_hand(user) /obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 2dae2ecb2fda9..d27471b9f74ae 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -90,12 +90,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/flasher) return ..() //Let the AI trigger them directly. -/obj/machinery/flasher/attack_ai() +/obj/machinery/flasher/attack_silicon() if (anchored) return flash() -/obj/machinery/flasher/attack_robot() - /obj/machinery/flasher/eminence_act(mob/living/simple_animal/eminence/eminence) . = ..() to_chat(usr, "You begin manipulating [src]!") diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index fe17d6f6e8f41..6d3db9ff5ceb2 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -116,13 +116,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26) update_appearance() return TRUE -/obj/machinery/sparker/attack_ai() +/obj/machinery/sparker/attack_silicon() if (anchored) return ignite() -/obj/machinery/sparker/attack_robot() - return attack_ai() - /obj/machinery/sparker/proc/ignite() if (!(powered())) return diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index d179859a81848..3ab494d79723a 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -95,12 +95,9 @@ else return ..() -/obj/machinery/navbeacon/attack_ai(mob/user) +/obj/machinery/navbeacon/attack_silicon(mob/user) interact(user, 1) -/obj/machinery/navbeacon/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/navbeacon/attack_paw() return diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 26a7be1621543..e3a51d3871f47 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -941,13 +941,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/turretid) to_chat(user, "You short out the turret controls' access analysis module.") locked = FALSE -/obj/machinery/turretid/attack_robot(mob/user) - if(!ailock) - return attack_hand(user) - else - to_chat(user, "There seems to be a firewall preventing you from accessing this device.") - -/obj/machinery/turretid/attack_ai(mob/user) +/obj/machinery/turretid/attack_silicon(mob/user) if(!ailock || IsAdminGhost(user)) return attack_hand(user) else diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index d61ef53a9c04d..95943a20d6e9b 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -185,11 +185,8 @@ new /obj/item/assembly/prox_sensor(loc) build_step = PTURRET_GUN_EQUIPPED -/obj/machinery/porta_turret_construct/attack_ai() - return - -/obj/machinery/porta_turret_construct/attack_robot() - return +/obj/machinery/porta_turret_construct/attack_silicon() + return TRUE #undef PTURRET_UNSECURED #undef PTURRET_BOLTED diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index a337b0ea3ae42..8761404d545e4 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -23,17 +23,13 @@ //>necessary //I'm not fixing it because i'm fucking bored of this code already, but someone should just reroute these to the parent turret's procs. -/obj/machinery/porta_turret_cover/attack_ai(mob/user) +/obj/machinery/porta_turret_cover/attack_silicon(mob/user) . = ..() if(.) return return parent_turret.attack_ai(user) -/obj/machinery/porta_turret_cover/attack_robot(mob/user) - return attack_ai(user) - - /obj/machinery/porta_turret_cover/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index d3553e1522d6a..1da7a00cab370 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -42,11 +42,8 @@ to_chat(user, "You deactivate the beacon.") -/obj/machinery/power/singularity_beacon/attack_ai(mob/user) - return - -/obj/machinery/power/singularity_beacon/attack_robot(mob/user) - return +/obj/machinery/power/singularity_beacon/attack_silicon(mob/user) + return TRUE /obj/machinery/power/singularity_beacon/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 9437ec6d32bfd..bbd01ccbea583 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -100,11 +100,8 @@ /obj/item/powersink/attack_paw() return -/obj/item/powersink/attack_ai() - return - -/obj/item/powersink/attack_robot() - return +/obj/item/powersink/attack_silicon() + return TRUE /obj/item/powersink/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 910d817ab737c..e2c4e0d877fb3 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -56,10 +56,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/radio/intercom) return return ..() -/obj/item/radio/intercom/attack_ai(mob/user) - interact(user) - -/obj/item/radio/intercom/attack_robot(mob/user) +/obj/item/radio/intercom/attack_silicon(mob/user) interact(user) /obj/item/radio/intercom/attack_paw(mob/user) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index ac894e7be446f..2ca66cc88647d 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -59,10 +59,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/structure/sign/barsign/attack_ai(mob/user) - return attack_hand(user) - -/obj/structure/sign/barsign/attack_robot(mob/user) +/obj/structure/sign/barsign/attack_silicon(mob/user) return attack_hand(user) /obj/structure/sign/barsign/attack_hand(mob/user) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index e843d4bac7ac7..e4720096c9765 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -131,11 +131,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) /obj/structure/fireaxecabinet/attack_paw(mob/living/user) return attack_hand(user) -/obj/structure/fireaxecabinet/attack_ai(mob/user) - toggle_lock(user) - return - -/obj/structure/fireaxecabinet/attack_robot(mob/user) +/obj/structure/fireaxecabinet/attack_silicon(mob/user) toggle_lock(user) return diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 282b2bf827d74..d77abbbcbc3a0 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -215,7 +215,7 @@ GLOBAL_LIST_EMPTY(crematoriums) /obj/structure/bodycontainer/crematorium/attack_robot(mob/user) //Borgs can't use crematoriums without help to_chat(user, "[src] is locked against you.") - return + return TRUE /obj/structure/bodycontainer/crematorium/Destroy() GLOB.crematoriums.Remove(src) @@ -395,9 +395,9 @@ GLOBAL_LIST_EMPTY(crematoriums) desc = "Apply body before burning." icon_state = "cremat" -/obj/structure/tray/c_tray/attack_robot(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium - to_chat(user, "[src] is locked against you.") - return +/obj/structure/tray/c_tray/attack_silicon(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium + to_chat(user, "\The [src] is locked against you.") + return TRUE /* * Morgue tray diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index 5a369429a4845..5c24204e41963 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -75,10 +75,7 @@ on = FALSE update_icon() -/turf/open/floor/light/attack_ai(mob/user) - return attack_hand(user) - -/turf/open/floor/light/attack_robot(mob/user) +/turf/open/floor/light/attack_silicon(mob/user) return attack_hand(user) /turf/open/floor/light/attackby(obj/item/C, mob/user, params) diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index c025855411842..6f7b4260e1439 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -138,7 +138,7 @@ merger.set_temperature(spawn_temp) O.assume_air(merger) -/obj/machinery/atmospherics/miner/attack_ai(mob/living/silicon/user) +/obj/machinery/atmospherics/miner/attack_silicon(mob/living/silicon/user) if(broken) to_chat(user, "[src] seems to be broken. Its debug interface outputs: [broken_message]") ..() diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index f74af0f952a39..5b7445ce56b86 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -101,10 +101,7 @@ /obj/structure/speaking_tile/attack_larva(mob/user) return interact(user) -/obj/structure/speaking_tile/attack_ai(mob/user) - return interact(user) - -/obj/structure/speaking_tile/attack_robot(mob/living/user) +/obj/structure/speaking_tile/attack_silicon(mob/user) return interact(user) /obj/structure/speaking_tile/attack_slime(mob/user) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 5f52b8376387b..38b685bcfde0d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -199,11 +199,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( explosion(src, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 5, flame_range = 7) deconstruct(FALSE) -/obj/machinery/deepfryer/attack_ai(mob/user) - return - -/obj/machinery/deepfryer/attack_robot(mob/user) - return +/obj/machinery/deepfryer/attack_silicon(mob/user) + return TRUE /obj/machinery/deepfryer/attack_hand(mob/user) if(frying) diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index ee8e6710122ac..7eea5ee3a60d6 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -114,11 +114,8 @@ new /obj/item/stack/rods(loc, 5) ..() -/obj/machinery/grill/attack_ai(mob/user) - return - -/obj/machinery/grill/attack_robot(mob/user) - return +/obj/machinery/grill/attack_silicon(mob/user) + return TRUE /obj/machinery/grill/attack_hand(mob/user) if(grilled_item) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 23f8c028e8669..89078d5f03e17 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -157,11 +157,7 @@ active_power_usage = 6 power_channel = AREA_USAGE_ENVIRON -/obj/machinery/readybutton/attack_ai(mob/user as mob) - to_chat(user, "The station AI is not to interact with these devices.") - return - -/obj/machinery/readybutton/attack_robot(mob/user as mob) +/obj/machinery/readybutton/attack_silicon(mob/user as mob) to_chat(user, "The station AI is not to interact with these devices.") return diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index f4b33a44b3aed..97f7d82503cad 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -310,7 +310,7 @@ else return ..() -/mob/living/simple_animal/bot/attack_ai(mob/user) +/mob/living/simple_animal/bot/attack_silicon(mob/user) if(!topic_denied(user)) interact(user) else diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 36dac40bfafb5..3ceb2011d325c 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -235,10 +235,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar return attack_self(M) return ..() -/obj/item/modular_computer/attack_ai(mob/user) - return attack_self(user) - -/obj/item/modular_computer/attack_robot(mob/living/user) +/obj/item/modular_computer/attack_silicon(mob/user) return attack_self(user) /obj/item/modular_computer/attack_ghost(mob/dead/observer/user) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 8194762a57b25..d725676716c81 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -384,14 +384,10 @@ add_overlay(mutable_appearance(init_icon, "light_overlay")) -/obj/item/modular_computer/tablet/pda/attack_ai(mob/user) +/obj/item/modular_computer/tablet/pda/attack_silicon(mob/user) to_chat(user, "It doesn't feel right to snoop around like that...") return // we don't want ais or cyborgs using a private role tablet -/obj/item/modular_computer/tablet/pda/attack_robot(mob/user) - attack_ai(user) - return - /obj/item/modular_computer/tablet/pda/Initialize(mapload) . = ..() install_component(new /obj/item/computer_hardware/hard_drive/small/pda) diff --git a/code/modules/pool/pool.dm b/code/modules/pool/pool.dm index 9639fa63eb569..4725215997a30 100644 --- a/code/modules/pool/pool.dm +++ b/code/modules/pool/pool.dm @@ -216,7 +216,6 @@ Place a pool filter somewhere in the pool if you want people to be able to modif P.splash(user) /obj/structure/pool_ladder/attack_robot(mob/user) - . = ..() attack_hand(user) GLOBAL_LIST_EMPTY(pool_filters) @@ -257,11 +256,7 @@ GLOBAL_LIST_EMPTY(pool_filters) //Brick can set the pool to low temperatures remotely. This will probably be hell on malf! -/obj/machinery/pool_filter/attack_robot(mob/user) - . = ..() - wrench_act(user, null) - -/obj/machinery/pool_filter/attack_ai(mob/user) +/obj/machinery/pool_filter/attack_silicon(mob/user) . = ..() wrench_act(user, null) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index b934fa5ac312a..7a79332566807 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -478,16 +478,12 @@ // ai attack - make lights flicker, because why not -/obj/machinery/light/attack_ai(mob/user) +/obj/machinery/light/attack_silicon(mob/user) no_emergency = !no_emergency to_chat(user, "Emergency lights for this fixture have been [no_emergency ? "disabled" : "enabled"].") update(FALSE) return -/obj/machinery/light/attack_robot(mob/user) - attack_ai(user) - return - // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 5b1d7220a41e3..c4c09b2c2bd40 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -218,10 +218,7 @@ ..() emp_act(EMP_HEAVY) -/obj/machinery/power/port_gen/pacman/attack_ai(mob/user) - interact(user) - -/obj/machinery/power/port_gen/pacman/attack_robot(mob/user) +/obj/machinery/power/port_gen/pacman/attack_silicon(mob/user) interact(user) /obj/machinery/power/port_gen/pacman/attack_paw(mob/user) diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm index d6908c05768b7..14d9bfa3f8365 100644 --- a/code/modules/shuttle/ferry.dm +++ b/code/modules/shuttle/ferry.dm @@ -17,10 +17,7 @@ return FALSE return TRUE -/obj/machinery/computer/shuttle_flight/ferry/attack_ai() - return allow_silicons ? ..() : FALSE - -/obj/machinery/computer/shuttle_flight/ferry/attack_robot() +/obj/machinery/computer/shuttle_flight/ferry/attack_silicon() return allow_silicons ? ..() : FALSE /obj/machinery/computer/shuttle_flight/ferry/request diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 89d9029a736e4..f06886f63dce4 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -362,10 +362,7 @@ /obj/machinery/power/bluespace_tap/attack_ghost(mob/user) ui_interact(user) -/obj/machinery/power/bluespace_tap/attack_ai(mob/user) - ui_interact(user) - -/obj/machinery/power/bluespace_tap/attack_robot(mob/user) +/obj/machinery/power/bluespace_tap/attack_silicon(mob/user) ui_interact(user) /** From 0125d3f7d345e0eb50374e0a6cfdfc9f2b6af74b Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sun, 22 Sep 2024 23:50:05 -0400 Subject: [PATCH 11/14] cleans things up --- beestation.dme | 1 + .../dcs/signals/signals_atom/signals_atom_attack.dm | 4 ++++ code/_onclick/ai.dm | 6 +++++- code/_onclick/cyborg.dm | 6 +++++- code/game/machinery/announcement_system.dm | 6 ++---- code/game/machinery/buttons.dm | 5 +---- code/game/machinery/cell_charger.dm | 7 ++----- code/game/machinery/cloning.dm | 5 +---- code/game/machinery/computer/apc_control.dm | 5 +---- code/game/machinery/cryopod.dm | 7 ++----- code/game/machinery/dish_drive.dm | 6 ++---- code/game/machinery/doors/airlock.dm | 6 ++---- code/game/machinery/doors/firedoor.dm | 5 +---- code/game/machinery/firealarm.dm | 5 +---- code/game/machinery/flasher.dm | 4 +--- code/game/machinery/igniter.dm | 5 +---- code/game/machinery/navbeacon.dm | 5 +---- code/game/machinery/porta_turret/portable_turret.dm | 8 +------- .../machinery/porta_turret/portable_turret_construct.dm | 7 ++----- code/game/machinery/porta_turret/portable_turret_cover.dm | 6 +----- code/game/machinery/syndicatebeacon.dm | 7 ++----- code/game/objects/items/devices/powersink.dm | 7 ++----- code/game/objects/items/devices/radio/intercom.dm | 5 +---- code/game/objects/structures/barsigns.dm | 5 +---- code/game/objects/structures/fireaxe.dm | 6 +----- code/game/objects/structures/morgue.dm | 8 ++++---- code/game/turfs/open/floor/light_floor.dm | 5 +---- code/modules/atmospherics/machinery/other/miner.dm | 2 +- code/modules/awaymissions/super_secret_room.dm | 5 +---- .../food_and_drinks/kitchen_machinery/deep_fryer.dm | 7 ++----- code/modules/food_and_drinks/kitchen_machinery/grill.dm | 7 ++----- code/modules/holodeck/items.dm | 6 +----- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- code/modules/modular_computers/computers/item/computer.dm | 5 +---- code/modules/modular_computers/computers/item/tablet.dm | 6 +----- code/modules/pool/pool.dm | 7 +------ code/modules/power/lighting/light.dm | 6 +----- code/modules/power/port_gen.dm | 5 +---- code/modules/shuttle/ferry.dm | 5 +---- code/modules/station_goals/bluespace_tap.dm | 5 +---- 40 files changed, 64 insertions(+), 156 deletions(-) diff --git a/beestation.dme b/beestation.dme index d4abc6470f3b1..bf204c89c80a7 100644 --- a/beestation.dme +++ b/beestation.dme @@ -358,6 +358,7 @@ #include "code\_onclick\other_mobs.dm" #include "code\_onclick\overmind.dm" #include "code\_onclick\pai.dm" +#include "code\_onclick\silicon.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" #include "code\_onclick\hud\action_button.dm" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 91094391ed1d1..e4784e7dffd0c 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -25,3 +25,7 @@ #define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" ///from base of atom/attack_paw(): (mob/user) #define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" +///from base of atom/attack_robot(): (mob/user) +#define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" +///from base of atom/attack_silicon(): (mob/user) +#define COMSIG_ATOM_ATTACK_SILICON "atom_attack_silicon" diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 708b157e6a8c8..3cdf1c25fedfa 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -95,7 +95,11 @@ A.attack_ai(src) /atom/proc/attack_ai(mob/user) - return + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_AI, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + if(attack_silicon(user)) + return TRUE + return FALSE /* Since the AI handles shift, ctrl, and alt-click differently diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index fc2e4e6a1d40b..82b087f26cb14 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -182,4 +182,8 @@ A.attack_robot(src) /atom/proc/attack_robot(mob/user) - return + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_ROBOT, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + if(attack_silicon(user)) + return TRUE + return FALSE diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index a777feaf0d418..8e6868d461959 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -155,16 +155,14 @@ GLOBAL_LIST_EMPTY(announcement_systems) update_icon() . = TRUE -/obj/machinery/announcement_system/attack_robot(mob/living/silicon/user) - . = attack_ai(user) - -/obj/machinery/announcement_system/attack_ai(mob/user) +/obj/machinery/announcement_system/attack_silicon(mob/user) if(!user.canUseTopic(src, !issilicon(user))) return if(machine_stat & BROKEN) to_chat(user, "[src]'s firmware appears to be malfunctioning!") return interact(user) + return TRUE /obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff if(!obj_break()) // if badmins flag this unbreakable or its already broken diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 54182368f4896..a9e89a0ac1e19 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -116,13 +116,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/button) if(do_after(eminence, 20, target=get_turf(eminence))) attack_hand(eminence) -/obj/machinery/button/attack_ai(mob/user) +/obj/machinery/button/attack_silicon(mob/user) if(!panel_open) return attack_hand(user) -/obj/machinery/button/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/button/proc/setup_device() if(id && istype(device, /obj/item/assembly/control)) var/obj/item/assembly/control/A = device diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index a6c8745580659..d44fabf0aa49b 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -103,11 +103,8 @@ removecell() return COMPONENT_CANCEL_ATTACK_CHAIN -/obj/machinery/cell_charger/attack_ai(mob/user) - return - -/obj/machinery/cell_charger/attack_robot(mob/user) - return +/obj/machinery/cell_charger/attack_silicon(mob/user) + return TRUE /obj/machinery/cell_charger/emp_act(severity) . = ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 23a8e641e1a5d..fa9c1e3481660 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -105,10 +105,7 @@ reagents.reaction(user.loc) src.reagents.clear_reagents() -/obj/machinery/clonepod/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/clonepod/attack_robot(mob/user) +/obj/machinery/clonepod/attack_silicon(mob/user) return attack_hand(user) /obj/machinery/clonepod/examine(mob/user) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 3c31180093025..1b4cf065f1ccc 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -30,15 +30,12 @@ active_apc.remote_control = null active_apc = null -/obj/machinery/computer/apc_control/attack_ai(mob/user) +/obj/machinery/computer/apc_control/attack_silicon(mob/user) if(!IsAdminGhost(user)) to_chat(user,"[src] does not support AI control.") //You already have APC access, cheater! return ..(user) -/obj/machinery/computer/apc_control/attack_robot(mob/user) - attack_ai(user) - /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) return APC.get_virtual_z_level() == get_virtual_z_level() && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.machine_stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 1fc0d35573662..1521b2520e51d 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -43,11 +43,8 @@ GLOBAL_LIST_EMPTY(cryopod_computers) GLOB.cryopod_computers -= src ..() -/obj/machinery/computer/cryopod/attack_ai() - attack_hand() - -/obj/machinery/computer/cryopod/attack_robot() - attack_hand() +/obj/machinery/computer/cryopod/attack_silicon() + return attack_hand() /obj/machinery/computer/cryopod/attack_hand(mob/user = usr) if(machine_stat & (NOPOWER|BROKEN)) diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index 1c6c0bb8e7431..b06017a24d4e5 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -102,14 +102,12 @@ else step_towards(I, src) -/obj/machinery/dish_drive/attack_ai(mob/living/user) +/obj/machinery/dish_drive/attack_silicon(mob/living/user) if(machine_stat) return to_chat(user, "You send a disposal transmission signal to [src].") do_the_dishes(TRUE) - -/obj/machinery/dish_drive/attack_robot(mob/user) - attack_ai(user) + return TRUE /obj/machinery/dish_drive/AltClick(mob/living/user) if(user.canUseTopic(src, !issilicon(user))) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ce2d304250e74..9bc1d1aa1b878 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -769,7 +769,7 @@ . += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it." . += "Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access." -/obj/machinery/door/airlock/attack_ai(mob/user) +/obj/machinery/door/airlock/attack_silicon(mob/user) if(!canAIControl(user)) if(canAIHack()) hack(user) @@ -784,9 +784,7 @@ return ui_interact(user) - -/obj/machinery/door/airlock/attack_robot(mob/user) - attack_robot(user) + return TRUE /obj/machinery/door/airlock/proc/hack(mob/user) set waitfor = 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 278110a0b6331..0a2f1083bbc60 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -229,7 +229,7 @@ return ..() -/obj/machinery/door/firedoor/attack_ai(mob/user) +/obj/machinery/door/firedoor/attack_silicon(mob/user) add_fingerprint(user) if(welded || operating || machine_stat & NOPOWER) return TRUE @@ -239,9 +239,6 @@ close() return TRUE -/obj/machinery/door/firedoor/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) if(welded) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 820bf6fd17ff8..e1a78a1e48294 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -193,10 +193,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/firealarm) else alarm(user) -/obj/machinery/firealarm/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/firealarm/attack_robot(mob/user) +/obj/machinery/firealarm/attack_silicon(mob/user) return attack_hand(user) /obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 2dae2ecb2fda9..d27471b9f74ae 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -90,12 +90,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/flasher) return ..() //Let the AI trigger them directly. -/obj/machinery/flasher/attack_ai() +/obj/machinery/flasher/attack_silicon() if (anchored) return flash() -/obj/machinery/flasher/attack_robot() - /obj/machinery/flasher/eminence_act(mob/living/simple_animal/eminence/eminence) . = ..() to_chat(usr, "You begin manipulating [src]!") diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index fe17d6f6e8f41..6d3db9ff5ceb2 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -116,13 +116,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26) update_appearance() return TRUE -/obj/machinery/sparker/attack_ai() +/obj/machinery/sparker/attack_silicon() if (anchored) return ignite() -/obj/machinery/sparker/attack_robot() - return attack_ai() - /obj/machinery/sparker/proc/ignite() if (!(powered())) return diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index d179859a81848..3ab494d79723a 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -95,12 +95,9 @@ else return ..() -/obj/machinery/navbeacon/attack_ai(mob/user) +/obj/machinery/navbeacon/attack_silicon(mob/user) interact(user, 1) -/obj/machinery/navbeacon/attack_robot(mob/user) - return attack_ai(user) - /obj/machinery/navbeacon/attack_paw() return diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 26a7be1621543..e3a51d3871f47 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -941,13 +941,7 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/turretid) to_chat(user, "You short out the turret controls' access analysis module.") locked = FALSE -/obj/machinery/turretid/attack_robot(mob/user) - if(!ailock) - return attack_hand(user) - else - to_chat(user, "There seems to be a firewall preventing you from accessing this device.") - -/obj/machinery/turretid/attack_ai(mob/user) +/obj/machinery/turretid/attack_silicon(mob/user) if(!ailock || IsAdminGhost(user)) return attack_hand(user) else diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index d61ef53a9c04d..95943a20d6e9b 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -185,11 +185,8 @@ new /obj/item/assembly/prox_sensor(loc) build_step = PTURRET_GUN_EQUIPPED -/obj/machinery/porta_turret_construct/attack_ai() - return - -/obj/machinery/porta_turret_construct/attack_robot() - return +/obj/machinery/porta_turret_construct/attack_silicon() + return TRUE #undef PTURRET_UNSECURED #undef PTURRET_BOLTED diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index a337b0ea3ae42..8761404d545e4 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -23,17 +23,13 @@ //>necessary //I'm not fixing it because i'm fucking bored of this code already, but someone should just reroute these to the parent turret's procs. -/obj/machinery/porta_turret_cover/attack_ai(mob/user) +/obj/machinery/porta_turret_cover/attack_silicon(mob/user) . = ..() if(.) return return parent_turret.attack_ai(user) -/obj/machinery/porta_turret_cover/attack_robot(mob/user) - return attack_ai(user) - - /obj/machinery/porta_turret_cover/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index d3553e1522d6a..1da7a00cab370 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -42,11 +42,8 @@ to_chat(user, "You deactivate the beacon.") -/obj/machinery/power/singularity_beacon/attack_ai(mob/user) - return - -/obj/machinery/power/singularity_beacon/attack_robot(mob/user) - return +/obj/machinery/power/singularity_beacon/attack_silicon(mob/user) + return TRUE /obj/machinery/power/singularity_beacon/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 9437ec6d32bfd..bbd01ccbea583 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -100,11 +100,8 @@ /obj/item/powersink/attack_paw() return -/obj/item/powersink/attack_ai() - return - -/obj/item/powersink/attack_robot() - return +/obj/item/powersink/attack_silicon() + return TRUE /obj/item/powersink/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 910d817ab737c..e2c4e0d877fb3 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -56,10 +56,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/radio/intercom) return return ..() -/obj/item/radio/intercom/attack_ai(mob/user) - interact(user) - -/obj/item/radio/intercom/attack_robot(mob/user) +/obj/item/radio/intercom/attack_silicon(mob/user) interact(user) /obj/item/radio/intercom/attack_paw(mob/user) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index ac894e7be446f..2ca66cc88647d 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -59,10 +59,7 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/structure/sign/barsign/attack_ai(mob/user) - return attack_hand(user) - -/obj/structure/sign/barsign/attack_robot(mob/user) +/obj/structure/sign/barsign/attack_silicon(mob/user) return attack_hand(user) /obj/structure/sign/barsign/attack_hand(mob/user) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index e843d4bac7ac7..e4720096c9765 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -131,11 +131,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) /obj/structure/fireaxecabinet/attack_paw(mob/living/user) return attack_hand(user) -/obj/structure/fireaxecabinet/attack_ai(mob/user) - toggle_lock(user) - return - -/obj/structure/fireaxecabinet/attack_robot(mob/user) +/obj/structure/fireaxecabinet/attack_silicon(mob/user) toggle_lock(user) return diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 282b2bf827d74..d77abbbcbc3a0 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -215,7 +215,7 @@ GLOBAL_LIST_EMPTY(crematoriums) /obj/structure/bodycontainer/crematorium/attack_robot(mob/user) //Borgs can't use crematoriums without help to_chat(user, "[src] is locked against you.") - return + return TRUE /obj/structure/bodycontainer/crematorium/Destroy() GLOB.crematoriums.Remove(src) @@ -395,9 +395,9 @@ GLOBAL_LIST_EMPTY(crematoriums) desc = "Apply body before burning." icon_state = "cremat" -/obj/structure/tray/c_tray/attack_robot(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium - to_chat(user, "[src] is locked against you.") - return +/obj/structure/tray/c_tray/attack_silicon(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium + to_chat(user, "\The [src] is locked against you.") + return TRUE /* * Morgue tray diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index 5a369429a4845..5c24204e41963 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -75,10 +75,7 @@ on = FALSE update_icon() -/turf/open/floor/light/attack_ai(mob/user) - return attack_hand(user) - -/turf/open/floor/light/attack_robot(mob/user) +/turf/open/floor/light/attack_silicon(mob/user) return attack_hand(user) /turf/open/floor/light/attackby(obj/item/C, mob/user, params) diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index c025855411842..6f7b4260e1439 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -138,7 +138,7 @@ merger.set_temperature(spawn_temp) O.assume_air(merger) -/obj/machinery/atmospherics/miner/attack_ai(mob/living/silicon/user) +/obj/machinery/atmospherics/miner/attack_silicon(mob/living/silicon/user) if(broken) to_chat(user, "[src] seems to be broken. Its debug interface outputs: [broken_message]") ..() diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index f74af0f952a39..5b7445ce56b86 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -101,10 +101,7 @@ /obj/structure/speaking_tile/attack_larva(mob/user) return interact(user) -/obj/structure/speaking_tile/attack_ai(mob/user) - return interact(user) - -/obj/structure/speaking_tile/attack_robot(mob/living/user) +/obj/structure/speaking_tile/attack_silicon(mob/user) return interact(user) /obj/structure/speaking_tile/attack_slime(mob/user) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 5f52b8376387b..38b685bcfde0d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -199,11 +199,8 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( explosion(src, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 5, flame_range = 7) deconstruct(FALSE) -/obj/machinery/deepfryer/attack_ai(mob/user) - return - -/obj/machinery/deepfryer/attack_robot(mob/user) - return +/obj/machinery/deepfryer/attack_silicon(mob/user) + return TRUE /obj/machinery/deepfryer/attack_hand(mob/user) if(frying) diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index ee8e6710122ac..7eea5ee3a60d6 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -114,11 +114,8 @@ new /obj/item/stack/rods(loc, 5) ..() -/obj/machinery/grill/attack_ai(mob/user) - return - -/obj/machinery/grill/attack_robot(mob/user) - return +/obj/machinery/grill/attack_silicon(mob/user) + return TRUE /obj/machinery/grill/attack_hand(mob/user) if(grilled_item) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 23f8c028e8669..89078d5f03e17 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -157,11 +157,7 @@ active_power_usage = 6 power_channel = AREA_USAGE_ENVIRON -/obj/machinery/readybutton/attack_ai(mob/user as mob) - to_chat(user, "The station AI is not to interact with these devices.") - return - -/obj/machinery/readybutton/attack_robot(mob/user as mob) +/obj/machinery/readybutton/attack_silicon(mob/user as mob) to_chat(user, "The station AI is not to interact with these devices.") return diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index f4b33a44b3aed..97f7d82503cad 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -310,7 +310,7 @@ else return ..() -/mob/living/simple_animal/bot/attack_ai(mob/user) +/mob/living/simple_animal/bot/attack_silicon(mob/user) if(!topic_denied(user)) interact(user) else diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 36dac40bfafb5..3ceb2011d325c 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -235,10 +235,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar return attack_self(M) return ..() -/obj/item/modular_computer/attack_ai(mob/user) - return attack_self(user) - -/obj/item/modular_computer/attack_robot(mob/living/user) +/obj/item/modular_computer/attack_silicon(mob/user) return attack_self(user) /obj/item/modular_computer/attack_ghost(mob/dead/observer/user) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 8194762a57b25..d725676716c81 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -384,14 +384,10 @@ add_overlay(mutable_appearance(init_icon, "light_overlay")) -/obj/item/modular_computer/tablet/pda/attack_ai(mob/user) +/obj/item/modular_computer/tablet/pda/attack_silicon(mob/user) to_chat(user, "It doesn't feel right to snoop around like that...") return // we don't want ais or cyborgs using a private role tablet -/obj/item/modular_computer/tablet/pda/attack_robot(mob/user) - attack_ai(user) - return - /obj/item/modular_computer/tablet/pda/Initialize(mapload) . = ..() install_component(new /obj/item/computer_hardware/hard_drive/small/pda) diff --git a/code/modules/pool/pool.dm b/code/modules/pool/pool.dm index 9639fa63eb569..4725215997a30 100644 --- a/code/modules/pool/pool.dm +++ b/code/modules/pool/pool.dm @@ -216,7 +216,6 @@ Place a pool filter somewhere in the pool if you want people to be able to modif P.splash(user) /obj/structure/pool_ladder/attack_robot(mob/user) - . = ..() attack_hand(user) GLOBAL_LIST_EMPTY(pool_filters) @@ -257,11 +256,7 @@ GLOBAL_LIST_EMPTY(pool_filters) //Brick can set the pool to low temperatures remotely. This will probably be hell on malf! -/obj/machinery/pool_filter/attack_robot(mob/user) - . = ..() - wrench_act(user, null) - -/obj/machinery/pool_filter/attack_ai(mob/user) +/obj/machinery/pool_filter/attack_silicon(mob/user) . = ..() wrench_act(user, null) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index b934fa5ac312a..7a79332566807 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -478,16 +478,12 @@ // ai attack - make lights flicker, because why not -/obj/machinery/light/attack_ai(mob/user) +/obj/machinery/light/attack_silicon(mob/user) no_emergency = !no_emergency to_chat(user, "Emergency lights for this fixture have been [no_emergency ? "disabled" : "enabled"].") update(FALSE) return -/obj/machinery/light/attack_robot(mob/user) - attack_ai(user) - return - // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index 5b1d7220a41e3..c4c09b2c2bd40 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -218,10 +218,7 @@ ..() emp_act(EMP_HEAVY) -/obj/machinery/power/port_gen/pacman/attack_ai(mob/user) - interact(user) - -/obj/machinery/power/port_gen/pacman/attack_robot(mob/user) +/obj/machinery/power/port_gen/pacman/attack_silicon(mob/user) interact(user) /obj/machinery/power/port_gen/pacman/attack_paw(mob/user) diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm index d6908c05768b7..14d9bfa3f8365 100644 --- a/code/modules/shuttle/ferry.dm +++ b/code/modules/shuttle/ferry.dm @@ -17,10 +17,7 @@ return FALSE return TRUE -/obj/machinery/computer/shuttle_flight/ferry/attack_ai() - return allow_silicons ? ..() : FALSE - -/obj/machinery/computer/shuttle_flight/ferry/attack_robot() +/obj/machinery/computer/shuttle_flight/ferry/attack_silicon() return allow_silicons ? ..() : FALSE /obj/machinery/computer/shuttle_flight/ferry/request diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index 89d9029a736e4..f06886f63dce4 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -362,10 +362,7 @@ /obj/machinery/power/bluespace_tap/attack_ghost(mob/user) ui_interact(user) -/obj/machinery/power/bluespace_tap/attack_ai(mob/user) - ui_interact(user) - -/obj/machinery/power/bluespace_tap/attack_robot(mob/user) +/obj/machinery/power/bluespace_tap/attack_silicon(mob/user) ui_interact(user) /** From e95635d7cd10c361be29d40d2184dcf86433b395 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sun, 22 Sep 2024 23:50:18 -0400 Subject: [PATCH 12/14] forgot this --- code/_onclick/silicon.dm | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 code/_onclick/silicon.dm diff --git a/code/_onclick/silicon.dm b/code/_onclick/silicon.dm new file mode 100644 index 0000000000000..877d887fa7c0f --- /dev/null +++ b/code/_onclick/silicon.dm @@ -0,0 +1,9 @@ +/** + * Often times, we want functionality to be available to both AIs and Cyborgs. + * + * returns TRUE if action has been done + */ +/atom/proc/attack_silicon(mob/user) + if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_SILICON, user) & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + return FALSE From 5338cf0b5a2ac76631663bebe009c4b5606ad294 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Sun, 22 Sep 2024 23:53:00 -0400 Subject: [PATCH 13/14] Revert "cleans this up a bit" This reverts commit 20cf00818d7bc2fec39ffc3e4fc0ddb92fbdb7f5. --- beestation.dme | 1 - .../dcs/signals/signals_atom/signals_atom_attack.dm | 2 -- code/_onclick/ai.dm | 2 -- code/_onclick/cyborg.dm | 2 -- code/_onclick/silicon.dm | 9 --------- code/game/machinery/announcement_system.dm | 6 ++++-- code/game/machinery/buttons.dm | 5 ++++- code/game/machinery/cell_charger.dm | 7 +++++-- code/game/machinery/cloning.dm | 5 ++++- code/game/machinery/computer/apc_control.dm | 5 ++++- code/game/machinery/cryopod.dm | 7 +++++-- code/game/machinery/dish_drive.dm | 6 ++++-- code/game/machinery/doors/airlock.dm | 6 ++++-- code/game/machinery/doors/firedoor.dm | 5 ++++- code/game/machinery/firealarm.dm | 5 ++++- code/game/machinery/flasher.dm | 4 +++- code/game/machinery/igniter.dm | 5 ++++- code/game/machinery/navbeacon.dm | 5 ++++- code/game/machinery/porta_turret/portable_turret.dm | 8 +++++++- .../machinery/porta_turret/portable_turret_construct.dm | 7 +++++-- .../game/machinery/porta_turret/portable_turret_cover.dm | 6 +++++- code/game/machinery/syndicatebeacon.dm | 7 +++++-- code/game/objects/items/devices/powersink.dm | 7 +++++-- code/game/objects/items/devices/radio/intercom.dm | 5 ++++- code/game/objects/structures/barsigns.dm | 5 ++++- code/game/objects/structures/fireaxe.dm | 6 +++++- code/game/objects/structures/morgue.dm | 8 ++++---- code/game/turfs/open/floor/light_floor.dm | 5 ++++- code/modules/atmospherics/machinery/other/miner.dm | 2 +- code/modules/awaymissions/super_secret_room.dm | 5 ++++- .../food_and_drinks/kitchen_machinery/deep_fryer.dm | 7 +++++-- code/modules/food_and_drinks/kitchen_machinery/grill.dm | 7 +++++-- code/modules/holodeck/items.dm | 6 +++++- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- .../modules/modular_computers/computers/item/computer.dm | 5 ++++- code/modules/modular_computers/computers/item/tablet.dm | 6 +++++- code/modules/pool/pool.dm | 7 ++++++- code/modules/power/lighting/light.dm | 6 +++++- code/modules/power/port_gen.dm | 5 ++++- code/modules/shuttle/ferry.dm | 5 ++++- code/modules/station_goals/bluespace_tap.dm | 5 ++++- 41 files changed, 154 insertions(+), 65 deletions(-) delete mode 100644 code/_onclick/silicon.dm diff --git a/beestation.dme b/beestation.dme index bf204c89c80a7..d4abc6470f3b1 100644 --- a/beestation.dme +++ b/beestation.dme @@ -358,7 +358,6 @@ #include "code\_onclick\other_mobs.dm" #include "code\_onclick\overmind.dm" #include "code\_onclick\pai.dm" -#include "code\_onclick\silicon.dm" #include "code\_onclick\telekinesis.dm" #include "code\_onclick\hud\_defines.dm" #include "code\_onclick\hud\action_button.dm" diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 2008f9d67a21f..c4c545b5359ff 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -29,8 +29,6 @@ #define COMSIG_ATOM_ATTACK_PAW "atom_attack_paw" ///from base of atom/attack_robot(): (mob/user) #define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" -///from base of atom/attack_silicon(): (mob/user) -#define COMSIG_ATOM_ATTACK_SILICON "atom_attack_silicon" ///from base of atom/interact(): (mob/user) #define COMSIG_ATOM_INTERACT "atom_interact" diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 3cdf1c25fedfa..54f160dd04a3e 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -97,8 +97,6 @@ /atom/proc/attack_ai(mob/user) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_AI, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE - if(attack_silicon(user)) - return TRUE return FALSE /* diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 82b087f26cb14..3a706f6cb37cc 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -184,6 +184,4 @@ /atom/proc/attack_robot(mob/user) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_ROBOT, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE - if(attack_silicon(user)) - return TRUE return FALSE diff --git a/code/_onclick/silicon.dm b/code/_onclick/silicon.dm deleted file mode 100644 index 877d887fa7c0f..0000000000000 --- a/code/_onclick/silicon.dm +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Often times, we want functionality to be available to both AIs and Cyborgs. - * - * returns TRUE if action has been done - */ -/atom/proc/attack_silicon(mob/user) - if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_SILICON, user) & COMPONENT_CANCEL_ATTACK_CHAIN) - return TRUE - return FALSE diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 8e6868d461959..a777feaf0d418 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -155,14 +155,16 @@ GLOBAL_LIST_EMPTY(announcement_systems) update_icon() . = TRUE -/obj/machinery/announcement_system/attack_silicon(mob/user) +/obj/machinery/announcement_system/attack_robot(mob/living/silicon/user) + . = attack_ai(user) + +/obj/machinery/announcement_system/attack_ai(mob/user) if(!user.canUseTopic(src, !issilicon(user))) return if(machine_stat & BROKEN) to_chat(user, "[src]'s firmware appears to be malfunctioning!") return interact(user) - return TRUE /obj/machinery/announcement_system/proc/act_up() //does funny breakage stuff if(!obj_break()) // if badmins flag this unbreakable or its already broken diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index a9e89a0ac1e19..54182368f4896 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -116,10 +116,13 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/button) if(do_after(eminence, 20, target=get_turf(eminence))) attack_hand(eminence) -/obj/machinery/button/attack_silicon(mob/user) +/obj/machinery/button/attack_ai(mob/user) if(!panel_open) return attack_hand(user) +/obj/machinery/button/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/button/proc/setup_device() if(id && istype(device, /obj/item/assembly/control)) var/obj/item/assembly/control/A = device diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index d44fabf0aa49b..a6c8745580659 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -103,8 +103,11 @@ removecell() return COMPONENT_CANCEL_ATTACK_CHAIN -/obj/machinery/cell_charger/attack_silicon(mob/user) - return TRUE +/obj/machinery/cell_charger/attack_ai(mob/user) + return + +/obj/machinery/cell_charger/attack_robot(mob/user) + return /obj/machinery/cell_charger/emp_act(severity) . = ..() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index fa9c1e3481660..23a8e641e1a5d 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -105,7 +105,10 @@ reagents.reaction(user.loc) src.reagents.clear_reagents() -/obj/machinery/clonepod/attack_silicon(mob/user) +/obj/machinery/clonepod/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/clonepod/attack_robot(mob/user) return attack_hand(user) /obj/machinery/clonepod/examine(mob/user) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 1b4cf065f1ccc..3c31180093025 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -30,12 +30,15 @@ active_apc.remote_control = null active_apc = null -/obj/machinery/computer/apc_control/attack_silicon(mob/user) +/obj/machinery/computer/apc_control/attack_ai(mob/user) if(!IsAdminGhost(user)) to_chat(user,"[src] does not support AI control.") //You already have APC access, cheater! return ..(user) +/obj/machinery/computer/apc_control/attack_robot(mob/user) + attack_ai(user) + /obj/machinery/computer/apc_control/proc/check_apc(obj/machinery/power/apc/APC) return APC.get_virtual_z_level() == get_virtual_z_level() && !APC.malfhack && !APC.aidisabled && !(APC.obj_flags & EMAGGED) && !APC.machine_stat && !istype(APC.area, /area/ai_monitored) && !APC.area.outdoors diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 1521b2520e51d..1fc0d35573662 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -43,8 +43,11 @@ GLOBAL_LIST_EMPTY(cryopod_computers) GLOB.cryopod_computers -= src ..() -/obj/machinery/computer/cryopod/attack_silicon() - return attack_hand() +/obj/machinery/computer/cryopod/attack_ai() + attack_hand() + +/obj/machinery/computer/cryopod/attack_robot() + attack_hand() /obj/machinery/computer/cryopod/attack_hand(mob/user = usr) if(machine_stat & (NOPOWER|BROKEN)) diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index b06017a24d4e5..1c6c0bb8e7431 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -102,12 +102,14 @@ else step_towards(I, src) -/obj/machinery/dish_drive/attack_silicon(mob/living/user) +/obj/machinery/dish_drive/attack_ai(mob/living/user) if(machine_stat) return to_chat(user, "You send a disposal transmission signal to [src].") do_the_dishes(TRUE) - return TRUE + +/obj/machinery/dish_drive/attack_robot(mob/user) + attack_ai(user) /obj/machinery/dish_drive/AltClick(mob/living/user) if(user.canUseTopic(src, !issilicon(user))) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 9bc1d1aa1b878..ce2d304250e74 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -769,7 +769,7 @@ . += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it." . += "Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access." -/obj/machinery/door/airlock/attack_silicon(mob/user) +/obj/machinery/door/airlock/attack_ai(mob/user) if(!canAIControl(user)) if(canAIHack()) hack(user) @@ -784,7 +784,9 @@ return ui_interact(user) - return TRUE + +/obj/machinery/door/airlock/attack_robot(mob/user) + attack_robot(user) /obj/machinery/door/airlock/proc/hack(mob/user) set waitfor = 0 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 0a2f1083bbc60..278110a0b6331 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -229,7 +229,7 @@ return ..() -/obj/machinery/door/firedoor/attack_silicon(mob/user) +/obj/machinery/door/firedoor/attack_ai(mob/user) add_fingerprint(user) if(welded || operating || machine_stat & NOPOWER) return TRUE @@ -239,6 +239,9 @@ close() return TRUE +/obj/machinery/door/firedoor/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) if(welded) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index e1a78a1e48294..820bf6fd17ff8 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -193,7 +193,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/firealarm) else alarm(user) -/obj/machinery/firealarm/attack_silicon(mob/user) +/obj/machinery/firealarm/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/firealarm/attack_robot(mob/user) return attack_hand(user) /obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index d27471b9f74ae..2dae2ecb2fda9 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -90,10 +90,12 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/flasher) return ..() //Let the AI trigger them directly. -/obj/machinery/flasher/attack_silicon() +/obj/machinery/flasher/attack_ai() if (anchored) return flash() +/obj/machinery/flasher/attack_robot() + /obj/machinery/flasher/eminence_act(mob/living/simple_animal/eminence/eminence) . = ..() to_chat(usr, "You begin manipulating [src]!") diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 6d3db9ff5ceb2..fe17d6f6e8f41 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -116,10 +116,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26) update_appearance() return TRUE -/obj/machinery/sparker/attack_silicon() +/obj/machinery/sparker/attack_ai() if (anchored) return ignite() +/obj/machinery/sparker/attack_robot() + return attack_ai() + /obj/machinery/sparker/proc/ignite() if (!(powered())) return diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 3ab494d79723a..d179859a81848 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -95,9 +95,12 @@ else return ..() -/obj/machinery/navbeacon/attack_silicon(mob/user) +/obj/machinery/navbeacon/attack_ai(mob/user) interact(user, 1) +/obj/machinery/navbeacon/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/navbeacon/attack_paw() return diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index e3a51d3871f47..26a7be1621543 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -941,7 +941,13 @@ DEFINE_BUFFER_HANDLER(/obj/machinery/turretid) to_chat(user, "You short out the turret controls' access analysis module.") locked = FALSE -/obj/machinery/turretid/attack_silicon(mob/user) +/obj/machinery/turretid/attack_robot(mob/user) + if(!ailock) + return attack_hand(user) + else + to_chat(user, "There seems to be a firewall preventing you from accessing this device.") + +/obj/machinery/turretid/attack_ai(mob/user) if(!ailock || IsAdminGhost(user)) return attack_hand(user) else diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 95943a20d6e9b..d61ef53a9c04d 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -185,8 +185,11 @@ new /obj/item/assembly/prox_sensor(loc) build_step = PTURRET_GUN_EQUIPPED -/obj/machinery/porta_turret_construct/attack_silicon() - return TRUE +/obj/machinery/porta_turret_construct/attack_ai() + return + +/obj/machinery/porta_turret_construct/attack_robot() + return #undef PTURRET_UNSECURED #undef PTURRET_BOLTED diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 8761404d545e4..a337b0ea3ae42 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -23,13 +23,17 @@ //>necessary //I'm not fixing it because i'm fucking bored of this code already, but someone should just reroute these to the parent turret's procs. -/obj/machinery/porta_turret_cover/attack_silicon(mob/user) +/obj/machinery/porta_turret_cover/attack_ai(mob/user) . = ..() if(.) return return parent_turret.attack_ai(user) +/obj/machinery/porta_turret_cover/attack_robot(mob/user) + return attack_ai(user) + + /obj/machinery/porta_turret_cover/attack_hand(mob/user) . = ..() if(.) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 1da7a00cab370..d3553e1522d6a 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -42,8 +42,11 @@ to_chat(user, "You deactivate the beacon.") -/obj/machinery/power/singularity_beacon/attack_silicon(mob/user) - return TRUE +/obj/machinery/power/singularity_beacon/attack_ai(mob/user) + return + +/obj/machinery/power/singularity_beacon/attack_robot(mob/user) + return /obj/machinery/power/singularity_beacon/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index bbd01ccbea583..9437ec6d32bfd 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -100,8 +100,11 @@ /obj/item/powersink/attack_paw() return -/obj/item/powersink/attack_silicon() - return TRUE +/obj/item/powersink/attack_ai() + return + +/obj/item/powersink/attack_robot() + return /obj/item/powersink/attack_hand(mob/user) . = ..() diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index e2c4e0d877fb3..910d817ab737c 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -56,7 +56,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/radio/intercom) return return ..() -/obj/item/radio/intercom/attack_silicon(mob/user) +/obj/item/radio/intercom/attack_ai(mob/user) + interact(user) + +/obj/item/radio/intercom/attack_robot(mob/user) interact(user) /obj/item/radio/intercom/attack_paw(mob/user) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index 2ca66cc88647d..ac894e7be446f 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -59,7 +59,10 @@ if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) -/obj/structure/sign/barsign/attack_silicon(mob/user) +/obj/structure/sign/barsign/attack_ai(mob/user) + return attack_hand(user) + +/obj/structure/sign/barsign/attack_robot(mob/user) return attack_hand(user) /obj/structure/sign/barsign/attack_hand(mob/user) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index e4720096c9765..e843d4bac7ac7 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -131,7 +131,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32) /obj/structure/fireaxecabinet/attack_paw(mob/living/user) return attack_hand(user) -/obj/structure/fireaxecabinet/attack_silicon(mob/user) +/obj/structure/fireaxecabinet/attack_ai(mob/user) + toggle_lock(user) + return + +/obj/structure/fireaxecabinet/attack_robot(mob/user) toggle_lock(user) return diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index d77abbbcbc3a0..282b2bf827d74 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -215,7 +215,7 @@ GLOBAL_LIST_EMPTY(crematoriums) /obj/structure/bodycontainer/crematorium/attack_robot(mob/user) //Borgs can't use crematoriums without help to_chat(user, "[src] is locked against you.") - return TRUE + return /obj/structure/bodycontainer/crematorium/Destroy() GLOB.crematoriums.Remove(src) @@ -395,9 +395,9 @@ GLOBAL_LIST_EMPTY(crematoriums) desc = "Apply body before burning." icon_state = "cremat" -/obj/structure/tray/c_tray/attack_silicon(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium - to_chat(user, "\The [src] is locked against you.") - return TRUE +/obj/structure/tray/c_tray/attack_robot(mob/user) //copied behaviour from /obj/structure/bodycontainer/crematorium + to_chat(user, "[src] is locked against you.") + return /* * Morgue tray diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index 5c24204e41963..5a369429a4845 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -75,7 +75,10 @@ on = FALSE update_icon() -/turf/open/floor/light/attack_silicon(mob/user) +/turf/open/floor/light/attack_ai(mob/user) + return attack_hand(user) + +/turf/open/floor/light/attack_robot(mob/user) return attack_hand(user) /turf/open/floor/light/attackby(obj/item/C, mob/user, params) diff --git a/code/modules/atmospherics/machinery/other/miner.dm b/code/modules/atmospherics/machinery/other/miner.dm index 6f7b4260e1439..c025855411842 100644 --- a/code/modules/atmospherics/machinery/other/miner.dm +++ b/code/modules/atmospherics/machinery/other/miner.dm @@ -138,7 +138,7 @@ merger.set_temperature(spawn_temp) O.assume_air(merger) -/obj/machinery/atmospherics/miner/attack_silicon(mob/living/silicon/user) +/obj/machinery/atmospherics/miner/attack_ai(mob/living/silicon/user) if(broken) to_chat(user, "[src] seems to be broken. Its debug interface outputs: [broken_message]") ..() diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index 5b7445ce56b86..f74af0f952a39 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -101,7 +101,10 @@ /obj/structure/speaking_tile/attack_larva(mob/user) return interact(user) -/obj/structure/speaking_tile/attack_silicon(mob/user) +/obj/structure/speaking_tile/attack_ai(mob/user) + return interact(user) + +/obj/structure/speaking_tile/attack_robot(mob/living/user) return interact(user) /obj/structure/speaking_tile/attack_slime(mob/user) diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 38b685bcfde0d..5f52b8376387b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -199,8 +199,11 @@ GLOBAL_LIST_INIT(oilfry_blacklisted_items, typecacheof(list( explosion(src, devastation_range = 1, heavy_impact_range = 3, light_impact_range = 5, flame_range = 7) deconstruct(FALSE) -/obj/machinery/deepfryer/attack_silicon(mob/user) - return TRUE +/obj/machinery/deepfryer/attack_ai(mob/user) + return + +/obj/machinery/deepfryer/attack_robot(mob/user) + return /obj/machinery/deepfryer/attack_hand(mob/user) if(frying) diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 7eea5ee3a60d6..ee8e6710122ac 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -114,8 +114,11 @@ new /obj/item/stack/rods(loc, 5) ..() -/obj/machinery/grill/attack_silicon(mob/user) - return TRUE +/obj/machinery/grill/attack_ai(mob/user) + return + +/obj/machinery/grill/attack_robot(mob/user) + return /obj/machinery/grill/attack_hand(mob/user) if(grilled_item) diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm index 89078d5f03e17..23f8c028e8669 100644 --- a/code/modules/holodeck/items.dm +++ b/code/modules/holodeck/items.dm @@ -157,7 +157,11 @@ active_power_usage = 6 power_channel = AREA_USAGE_ENVIRON -/obj/machinery/readybutton/attack_silicon(mob/user as mob) +/obj/machinery/readybutton/attack_ai(mob/user as mob) + to_chat(user, "The station AI is not to interact with these devices.") + return + +/obj/machinery/readybutton/attack_robot(mob/user as mob) to_chat(user, "The station AI is not to interact with these devices.") return diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 97f7d82503cad..f4b33a44b3aed 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -310,7 +310,7 @@ else return ..() -/mob/living/simple_animal/bot/attack_silicon(mob/user) +/mob/living/simple_animal/bot/attack_ai(mob/user) if(!topic_denied(user)) interact(user) else diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 3ceb2011d325c..36dac40bfafb5 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -235,7 +235,10 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar return attack_self(M) return ..() -/obj/item/modular_computer/attack_silicon(mob/user) +/obj/item/modular_computer/attack_ai(mob/user) + return attack_self(user) + +/obj/item/modular_computer/attack_robot(mob/living/user) return attack_self(user) /obj/item/modular_computer/attack_ghost(mob/dead/observer/user) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index d725676716c81..8194762a57b25 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -384,10 +384,14 @@ add_overlay(mutable_appearance(init_icon, "light_overlay")) -/obj/item/modular_computer/tablet/pda/attack_silicon(mob/user) +/obj/item/modular_computer/tablet/pda/attack_ai(mob/user) to_chat(user, "It doesn't feel right to snoop around like that...") return // we don't want ais or cyborgs using a private role tablet +/obj/item/modular_computer/tablet/pda/attack_robot(mob/user) + attack_ai(user) + return + /obj/item/modular_computer/tablet/pda/Initialize(mapload) . = ..() install_component(new /obj/item/computer_hardware/hard_drive/small/pda) diff --git a/code/modules/pool/pool.dm b/code/modules/pool/pool.dm index 4725215997a30..9639fa63eb569 100644 --- a/code/modules/pool/pool.dm +++ b/code/modules/pool/pool.dm @@ -216,6 +216,7 @@ Place a pool filter somewhere in the pool if you want people to be able to modif P.splash(user) /obj/structure/pool_ladder/attack_robot(mob/user) + . = ..() attack_hand(user) GLOBAL_LIST_EMPTY(pool_filters) @@ -256,7 +257,11 @@ GLOBAL_LIST_EMPTY(pool_filters) //Brick can set the pool to low temperatures remotely. This will probably be hell on malf! -/obj/machinery/pool_filter/attack_silicon(mob/user) +/obj/machinery/pool_filter/attack_robot(mob/user) + . = ..() + wrench_act(user, null) + +/obj/machinery/pool_filter/attack_ai(mob/user) . = ..() wrench_act(user, null) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 7a79332566807..b934fa5ac312a 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -478,12 +478,16 @@ // ai attack - make lights flicker, because why not -/obj/machinery/light/attack_silicon(mob/user) +/obj/machinery/light/attack_ai(mob/user) no_emergency = !no_emergency to_chat(user, "Emergency lights for this fixture have been [no_emergency ? "disabled" : "enabled"].") update(FALSE) return +/obj/machinery/light/attack_robot(mob/user) + attack_ai(user) + return + // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index c4c09b2c2bd40..5b1d7220a41e3 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -218,7 +218,10 @@ ..() emp_act(EMP_HEAVY) -/obj/machinery/power/port_gen/pacman/attack_silicon(mob/user) +/obj/machinery/power/port_gen/pacman/attack_ai(mob/user) + interact(user) + +/obj/machinery/power/port_gen/pacman/attack_robot(mob/user) interact(user) /obj/machinery/power/port_gen/pacman/attack_paw(mob/user) diff --git a/code/modules/shuttle/ferry.dm b/code/modules/shuttle/ferry.dm index 14d9bfa3f8365..d6908c05768b7 100644 --- a/code/modules/shuttle/ferry.dm +++ b/code/modules/shuttle/ferry.dm @@ -17,7 +17,10 @@ return FALSE return TRUE -/obj/machinery/computer/shuttle_flight/ferry/attack_silicon() +/obj/machinery/computer/shuttle_flight/ferry/attack_ai() + return allow_silicons ? ..() : FALSE + +/obj/machinery/computer/shuttle_flight/ferry/attack_robot() return allow_silicons ? ..() : FALSE /obj/machinery/computer/shuttle_flight/ferry/request diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm index f06886f63dce4..89d9029a736e4 100644 --- a/code/modules/station_goals/bluespace_tap.dm +++ b/code/modules/station_goals/bluespace_tap.dm @@ -362,7 +362,10 @@ /obj/machinery/power/bluespace_tap/attack_ghost(mob/user) ui_interact(user) -/obj/machinery/power/bluespace_tap/attack_silicon(mob/user) +/obj/machinery/power/bluespace_tap/attack_ai(mob/user) + ui_interact(user) + +/obj/machinery/power/bluespace_tap/attack_robot(mob/user) ui_interact(user) /** From e99065e887ab9a02c1def28295615f814ca57b06 Mon Sep 17 00:00:00 2001 From: mystery3525 <30960302+mystery3525@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:31:28 -0400 Subject: [PATCH 14/14] reverts random change --- .../dcs/signals/signals_atom/signals_atom_attack.dm | 3 +++ code/modules/assembly/assembly.dm | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm index 4e8c5bcc80bb2..2008f9d67a21f 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_attack.dm @@ -31,3 +31,6 @@ #define COMSIG_ATOM_ATTACK_ROBOT "atom_attack_robot" ///from base of atom/attack_silicon(): (mob/user) #define COMSIG_ATOM_ATTACK_SILICON "atom_attack_silicon" + +///from base of atom/interact(): (mob/user) +#define COMSIG_ATOM_INTERACT "atom_interact" diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 21c43e5512241..6f9591ef72777 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -146,13 +146,6 @@ . = ..() . += "\The [src] [secured? "is secured and ready to be used!" : "can be attached to other things."]" -/obj/item/assembly/attack_self(mob/user) - if(!user) - return FALSE - user.set_machine(src) - interact(user) - return TRUE - /obj/item/assembly/ui_host(mob/user) // In order, return: // - The conencted wiring datum's owner, or