diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index fffdab16013..8e72b88a191 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -908,3 +908,20 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons /obj/item/proc/get_heat() return + +/obj/item/proc/run_pointed_on_item(mob/pointer_mob, atom/target_atom) + if(!HAS_TRAIT(src, TRAIT_CAN_POINT_WITH) || target_atom == src) + return FALSE + + var/pointed_object = "\the [target_atom]" + if(target_atom.loc in pointer_mob) + pointed_object += " inside [target_atom.loc]" + + if(pointer_mob.a_intent == INTENT_HELP || !ismob(target_atom)) + pointer_mob.visible_message("[pointer_mob] points to [pointed_object] with [src]") + return TRUE + + target_atom.visible_message("[pointer_mob] points [src] at [pointed_object]!", + "[pointer_mob] points [src] at you!") + SEND_SOUND(target_atom, sound('sound/weapons/targeton.ogg')) + return TRUE diff --git a/code/game/objects/items/hand_item.dm b/code/game/objects/items/hand_item.dm index 628b4cd1664..a874987ca62 100644 --- a/code/game/objects/items/hand_item.dm +++ b/code/game/objects/items/hand_item.dm @@ -77,3 +77,9 @@ creature.EyeBlind(2 SECONDS) //OH GOD MY EARS ARE RINGING creature.Deaf(4 SECONDS) //OH MY HEAD return ..() + +/obj/item/slapper/run_pointed_on_item(mob/pointer_mob, atom/target_atom) + if(target_atom == src) + pointer_mob.visible_message("[pointer_mob] raises [pointer_mob.p_their()] hand!") + return TRUE + return ..() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index e7ab5d2763a..5a7cd55cbdc 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1239,6 +1239,13 @@ shoot_gun(user) return ..() +/obj/item/toy/russian_revolver/trick_revolver/run_pointed_on_item(mob/pointer_mob, atom/target_atom) + if(target_atom != src) + pointer_mob.visible_message("[pointer_mob] points [src] at- and [src] goes off in their hand!") + shoot_gun(pointer_mob) + return TRUE + return ..() + /* * Rubber Chainsaw */ diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 4fc6391cee5..6d344aa72d2 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -268,24 +268,14 @@ /mob/living/run_pointed(atom/A) if(!..()) return FALSE + + var/obj/item/hand_item = get_active_hand() + if(istype(hand_item) && hand_item.run_pointed_on_item(src, A)) + return TRUE var/pointed_object = "\the [A]" if(A.loc in src) pointed_object += " inside [A.loc]" - var/obj/item/hand_item = get_active_hand() - if(!QDELETED(hand_item) && istype(hand_item) && HAS_TRAIT(hand_item, TRAIT_CAN_POINT_WITH) && A != hand_item) - if(a_intent == INTENT_HELP || !ismob(A)) - visible_message("[src] points to [pointed_object] with [hand_item]") - return TRUE - A.visible_message("[src] points [hand_item] at [pointed_object]!", - "[src] points [hand_item] at you!") - SEND_SOUND(A, sound('sound/weapons/targeton.ogg')) - return TRUE - if(istype(hand_item, /obj/item/toy/russian_revolver/trick_revolver) && A != hand_item) - var/obj/item/toy/russian_revolver/trick_revolver/trick = hand_item - visible_message("[src] points [trick] at- and [trick] goes off in their hand!") - trick.shoot_gun(src) - visible_message("[src] points to [pointed_object]") return TRUE