Fixes head IDs not giving large pointers while slotted into a wallet or PDA (#89177)

## About The Pull Request

Closes #88618
Head IDs now keep the large pointer effect when slotted into a PDA or
displayed as the front ID in a wallet

## Changelog
🆑
fix: Head IDs now keep the large pointer effect when slotted into a PDA
or displayed as the front ID in a wallet
/🆑
This commit is contained in:
SmArtKar
2025-01-25 13:07:35 +01:00
committed by GitHub
parent 2e91f9e0e8
commit fa396269ba

View File

@@ -158,13 +158,29 @@
registered_account.bank_cards -= src
if (my_store)
QDEL_NULL(my_store)
if (isitem(loc))
UnregisterSignal(loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
return ..()
/obj/item/card/id/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change)
if (isitem(old_loc))
UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
if (ismob(old_loc.loc))
UnregisterSignal(old_loc.loc, COMSIG_MOVABLE_POINTED)
. = ..()
if (isitem(loc))
RegisterSignal(loc, COMSIG_ITEM_EQUIPPED, PROC_REF(on_loc_equipped))
RegisterSignal(loc, COMSIG_ITEM_DROPPED, PROC_REF(on_loc_dropped))
/obj/item/card/id/equipped(mob/user, slot)
. = ..()
if(slot == ITEM_SLOT_ID)
if (slot == ITEM_SLOT_ID)
RegisterSignal(user, COMSIG_MOVABLE_POINTED, PROC_REF(on_pointed))
/obj/item/card/id/dropped(mob/user)
UnregisterSignal(user, COMSIG_MOVABLE_POINTED)
return ..()
/obj/item/card/id/proc/return_message_name_part(datum/source, list/stored_name, mob/living/carbon/carbon_human)
SIGNAL_HANDLER
var/voice_name = carbon_human.GetVoice()
@@ -179,24 +195,36 @@
return_string += end_string
stored_name[NAME_PART_INDEX] = return_string
/obj/item/card/id/proc/on_loc_equipped(datum/source, mob/equipper, slot)
SIGNAL_HANDLER
if (slot == ITEM_SLOT_ID)
RegisterSignal(equipper, COMSIG_MOVABLE_POINTED, PROC_REF(on_pointed))
/obj/item/card/id/proc/on_loc_dropped(datum/source, mob/dropper)
SIGNAL_HANDLER
UnregisterSignal(dropper, COMSIG_MOVABLE_POINTED)
/obj/item/card/id/proc/on_pointed(mob/living/user, atom/pointed, obj/effect/temp_visual/point/point)
SIGNAL_HANDLER
if((!big_pointer && !pointer_color) || HAS_TRAIT(user, TRAIT_UNKNOWN))
if ((!big_pointer && !pointer_color) || HAS_TRAIT(user, TRAIT_UNKNOWN))
return
if(point.icon_state != /obj/effect/temp_visual/point::icon_state) //it differs from the original icon_state already.
if (point.icon_state != /obj/effect/temp_visual/point::icon_state) //it differs from the original icon_state already.
return
if(big_pointer)
if (loc != user)
if (!isitem(loc))
return
var/obj/item/as_item = loc
if (as_item.GetID() != src)
return
if (big_pointer)
point.icon_state = "arrow_large"
if(pointer_color)
if (pointer_color)
point.icon_state = "[point.icon_state]_white"
point.color = pointer_color
var/mutable_appearance/highlight = mutable_appearance(point.icon, "[point.icon_state]_highlights", appearance_flags = RESET_COLOR)
point.add_overlay(highlight)
/obj/item/card/id/dropped(mob/user)
UnregisterSignal(user, COMSIG_MOVABLE_POINTED)
return ..()
/obj/item/card/id/get_id_examine_strings(mob/user)
. = ..()
. += list("[icon2html(get_cached_flat_icon(), user, extra_classes = "hugeicon")]")
@@ -1130,6 +1158,16 @@
update_icon()
return ITEM_INTERACT_SUCCESS
/obj/item/card/id/advanced/on_loc_equipped(datum/source, mob/equipper, slot)
. = ..()
if(istype(loc, /obj/item/storage/wallet) || istype(loc, /obj/item/modular_computer))
update_intern_status(source, equipper, slot)
/obj/item/card/id/advanced/on_loc_dropped(datum/source, mob/dropper)
. = ..()
if(istype(loc, /obj/item/storage/wallet) || istype(loc, /obj/item/modular_computer))
remove_intern_status(source, dropper)
/obj/item/card/id/advanced/proc/update_intern_status(datum/source, mob/user, slot)
SIGNAL_HANDLER
@@ -1165,25 +1203,6 @@
is_intern = FALSE
update_label()
/obj/item/card/id/advanced/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE)
. = ..()
//Old loc
if(istype(old_loc, /obj/item/storage/wallet))
UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
if(istype(old_loc, /obj/item/modular_computer))
UnregisterSignal(old_loc, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
//New loc
if(istype(loc, /obj/item/storage/wallet))
RegisterSignal(loc, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status))
RegisterSignal(loc, COMSIG_ITEM_DROPPED, PROC_REF(remove_intern_status))
if(istype(loc, /obj/item/modular_computer))
RegisterSignal(loc, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status))
RegisterSignal(loc, COMSIG_ITEM_DROPPED, PROC_REF(remove_intern_status))
/obj/item/card/id/advanced/update_overlays()
. = ..()