Add AltClick removes pAIs for tablets (#68251)

* Add AltClick removes pAIs

* Add context screentips for pAIs to tablets

* Fix screentip context syntax error

* Fix syntax error

* Merge remote-tracking branch 'upstream/master' into patch-10

* Refactor contextual screentips to work

* Fix runtimes

* Apply code review changes

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

* Add balloon alert to tablet items

* Refactor screentips to be more robust

* Change add_context to be more robust

* Add more balloon alerts

* Some idiot set user to null so I gotta remove this

* Change pen screentip to display inserted item

* Add screentip to insert items

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
This commit is contained in:
Tim
2022-10-25 13:59:24 -05:00
committed by GitHub
parent b22e35c6e5
commit bf35df42bf
3 changed files with 44 additions and 15 deletions
@@ -172,8 +172,19 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
if(user.canUseTopic(src, be_close = TRUE))
var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2]
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
if(card_slot2?.try_eject(user) || card_slot?.try_eject(user))
if(istype(card_slot) && card_slot.stored_card && card_slot?.try_eject(user))
return TRUE
if(istype(card_slot2) && card_slot2?.stored_card && card_slot2?.try_eject(user))
return TRUE
if(istype(inserted_pai)) // Remove pAI
user.put_in_hands(inserted_pai)
balloon_alert(user, "removed pAI")
inserted_pai = null
return TRUE
if(!istype(src, /obj/item/modular_computer/tablet))
return FALSE
@@ -359,13 +370,24 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
if(Adjacent(user))
. += span_notice("Paper level: [stored_paper] / [max_paper].")
/obj/item/modular_computer/add_context(atom/source, list/context, obj/item/held_item, mob/user)
/obj/item/modular_computer/add_context(atom/source, list/context, obj/item/held_item, mob/living/user)
. = ..()
context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove ID"
context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB] = "Remove Disk"
var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD]
var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2]
return CONTEXTUAL_SCREENTIP_SET
if(card_slot?.stored_card || card_slot2?.stored_card) // IDs get removed first before pAIs
context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove ID"
. = CONTEXTUAL_SCREENTIP_SET
else if(inserted_pai)
context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove pAI"
. = CONTEXTUAL_SCREENTIP_SET
if(all_components[MC_SDD])
context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB] = "Remove SSD"
. = CONTEXTUAL_SCREENTIP_SET
return . || NONE
/obj/item/modular_computer/update_icon_state()
if(!bypass_state)
@@ -700,7 +722,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
if(!user.transferItemToLoc(attacking_item, src))
return
inserted_pai = attacking_item
to_chat(user, span_notice("You slot \the [attacking_item] into [src]."))
balloon_alert(user, "inserted pai")
return
// Check if any Applications need it
@@ -712,18 +734,18 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
if(istype(attacking_item, /obj/item/paper))
if(stored_paper >= max_paper)
to_chat(user, span_warning("You try to add \the [attacking_item] into [src], but it can't hold any more!"))
balloon_alert(user, "no more room!")
return
if(!user.temporarilyRemoveItemFromInventory(attacking_item))
return FALSE
to_chat(user, span_notice("You insert \the [attacking_item] into [src]'s paper recycler."))
balloon_alert(user, "inserted paper")
qdel(attacking_item)
stored_paper++
return
if(istype(attacking_item, /obj/item/paper_bin))
var/obj/item/paper_bin/bin = attacking_item
if(bin.total_paper <= 0)
to_chat(user, span_notice("\The [bin] is empty!"))
balloon_alert(user, "empty bin!")
return
var/papers_added //just to keep track
while((bin.total_paper > 0) && (stored_paper < max_paper))
@@ -732,6 +754,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar
bin.remove_paper()
if(!papers_added)
return
balloon_alert(user, "inserted paper")
to_chat(user, span_notice("Added in [papers_added] new sheets. You now have [stored_paper] / [max_paper] printing paper stored."))
bin.update_appearance()
return
@@ -65,9 +65,14 @@
/obj/item/modular_computer/tablet/add_context(atom/source, list/context, obj/item/held_item, mob/user)
. = ..()
context[SCREENTIP_CONTEXT_CTRL_LMB] = "Remove pen"
if(inserted_item)
context[SCREENTIP_CONTEXT_CTRL_LMB] = "Remove [inserted_item]"
. = CONTEXTUAL_SCREENTIP_SET
else if(istype(held_item) && is_type_in_list(held_item, contained_item))
context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]"
. = CONTEXTUAL_SCREENTIP_SET
return CONTEXTUAL_SCREENTIP_SET
return . || NONE
/obj/item/modular_computer/tablet/attackby(obj/item/W, mob/user)
. = ..()
@@ -77,11 +82,11 @@
user.balloon_alert(user, "too big!")
return
if(inserted_item)
to_chat(user, span_warning("There is already \a [inserted_item] in \the [src]!"))
balloon_alert(user, "no room!")
else
if(!user.transferItemToLoc(W, src))
return
to_chat(user, span_notice("You insert \the [W] into \the [src]."))
balloon_alert(user, "inserted [W]")
inserted_item = W
playsound(src, 'sound/machines/pda_button1.ogg', 50, TRUE)
@@ -120,13 +125,13 @@
return
if(inserted_item)
to_chat(user, span_notice("You remove [inserted_item] from [src]."))
balloon_alert(user, "removed [inserted_item]")
user.put_in_hands(inserted_item)
inserted_item = null
update_appearance()
playsound(src, 'sound/machines/pda_button2.ogg', 50, TRUE)
else
to_chat(user, span_warning("This tablet does not have a pen in it!"))
balloon_alert(user, "nothing to remove!")
// Tablet 'splosion..