From ba76d876045afc9e0dad6f0eb9e26cfa3336181e Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Sat, 3 Jul 2021 13:57:06 -0400 Subject: [PATCH] Fix inventory bugs and add tgui state --- code/modules/mob/inventory.dm | 9 +++---- code/modules/mob/living/carbon/human/human.dm | 4 +-- code/modules/mob/living/living.dm | 4 +-- code/modules/tgui/states.dm | 2 +- code/modules/tgui/states/physical.dm | 25 +++++++++++++++++++ 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index c26629a8bb6..f007b5c8dcd 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -147,12 +147,9 @@ var/list/slot_equipment_priority = list( \ // If canremove or other conditions need to be checked then use unEquip instead. /mob/proc/drop_from_inventory(var/obj/item/W, var/atom/target) - if(W) - remove_from_mob(W, target) - if(!(W && W.loc)) - return 1 // self destroying objects (tk, grabs) - return 1 - return 0 + if(!W) + return 0 + return remove_from_mob(W, target) //Drops the item in our left hand /mob/proc/drop_l_hand(var/atom/Target) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b1fe390e783..bc914b52043 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1395,8 +1395,8 @@ /mob/living/carbon/human/drop_from_inventory(var/obj/item/W, var/atom/Target = null) if(W in organs) - return - ..() + return 0 + return ..() /mob/living/carbon/human/reset_view(atom/A, update_hud = 1) ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 1951d370c6e..d5de7e47e93 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -719,8 +719,8 @@ /mob/living/carbon/drop_from_inventory(var/obj/item/W, var/atom/Target = null) if(W in internal_organs) - return - ..() + return 0 + return ..() /mob/living/touch_map_edge() diff --git a/code/modules/tgui/states.dm b/code/modules/tgui/states.dm index 775bf0c5221..01b8ae1a843 100644 --- a/code/modules/tgui/states.dm +++ b/code/modules/tgui/states.dm @@ -119,7 +119,7 @@ return STATUS_DISABLED return STATUS_CLOSE // Otherwise, we got nothing. -/mob/living/carbon/human/shared_living_tgui_distance(atom/movable/src_object) +/mob/living/carbon/human/shared_living_tgui_distance(atom/movable/src_object, viewcheck = TRUE) if((TK in mutations) && (get_dist(src, src_object) <= 2)) return STATUS_INTERACTIVE return ..() diff --git a/code/modules/tgui/states/physical.dm b/code/modules/tgui/states/physical.dm index a57a321e958..30c67906ae2 100644 --- a/code/modules/tgui/states/physical.dm +++ b/code/modules/tgui/states/physical.dm @@ -22,3 +22,28 @@ GLOBAL_DATUM_INIT(tgui_physical_state, /datum/tgui_state/physical, new) /mob/living/silicon/ai/physical_can_use_tgui_topic(src_object) return STATUS_UPDATE // AIs are not physical. + +/** + * tgui state: physical_obscured_state + * + * Short-circuits the default state to only check physical distance, being in view doesn't matter + */ + +GLOBAL_DATUM_INIT(tgui_physical_obscured_state, /datum/tgui_state/physical_obscured_state, new) + +/datum/tgui_state/physical_obscured_state/can_use_topic(src_object, mob/user) + . = user.shared_tgui_interaction(src_object) + if(. > STATUS_CLOSE) + return min(., user.physical_obscured_can_use_topic(src_object)) + +/mob/proc/physical_obscured_can_use_topic(src_object) + return STATUS_CLOSE + +/mob/living/physical_obscured_can_use_topic(src_object) + return shared_living_tgui_distance(src_object, viewcheck = FALSE) + +/mob/living/silicon/physical_obscured_can_use_topic(src_object) + return max(STATUS_UPDATE, shared_living_tgui_distance(src_object, viewcheck = FALSE)) // Silicons can always see. + +/mob/living/silicon/ai/physical_obscured_can_use_topic(src_object) + return STATUS_UPDATE // AIs are not physical.