From 261b53d17cb54854ac47ca2ef4ba5c3ca99f2409 Mon Sep 17 00:00:00 2001 From: matttheficus <57759731+matttheficus@users.noreply.github.com> Date: Sun, 24 Mar 2024 14:10:21 -0400 Subject: [PATCH] Adds Hand Raising (#24223) * pick me pick me! * quick fix Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> * contra tweak Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * contra refactor help * copy paste moment * missed one lul * contra review * tab hell tab hell tab hell --------- Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Co-authored-by: Contrabang <91113370+Contrabang@users.noreply.github.com> --- code/game/objects/items.dm | 17 +++++++++++++++++ code/game/objects/items/hand_item.dm | 6 ++++++ code/game/objects/items/toys.dm | 7 +++++++ code/modules/mob/living/living.dm | 18 ++++-------------- 4 files changed, 34 insertions(+), 14 deletions(-) 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