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