mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 04:26:03 +01:00
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:
@@ -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..
|
||||
|
||||
|
||||
Reference in New Issue
Block a user