[MIRROR] balloon alerts for storage failures [MDB IGNORE] (#22586)

* balloon alerts for storage failures

* merge conflicts

* Update backpack.dm

---------

Co-authored-by: Lufferly <40921881+Lufferly@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
This commit is contained in:
SkyratBot
2023-07-21 01:27:46 -04:00
committed by GitHub
co-authored by Lufferly Giz
parent f060680c79
commit aabca144c5
2 changed files with 22 additions and 16 deletions
+12 -10
View File
@@ -328,6 +328,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
return FALSE
if(locked > force)
user.balloon_alert(user, "closed!")
return FALSE
if((to_insert == resolve_parent) || (to_insert == real_location))
@@ -336,16 +337,16 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
if(to_insert.w_class > max_specific_storage)
if(!is_type_in_typecache(to_insert, exception_hold))
if(messages && user)
to_chat(user, span_warning("\The [to_insert] is too big for \the [resolve_parent]!"))
user.balloon_alert(user, "too big!")
return FALSE
if(exception_max != INFINITE && exception_max <= exception_count())
if(messages && user)
to_chat(user, span_warning("Too many large items already in \the [resolve_parent], can't fit \the [to_insert]!"))
user.balloon_alert(user, "no room!")
return FALSE
if(resolve_location.contents.len >= max_slots)
if(messages && user && !silent_for_user)
to_chat(user, span_warning("\The [to_insert] can't fit into \the [resolve_parent]! Make some space!"))
user.balloon_alert(user, "no room!")
return FALSE
var/total_weight = to_insert.w_class
@@ -355,37 +356,37 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
if(total_weight > max_total_storage)
if(messages && user && !silent_for_user)
to_chat(user, span_warning("\The [to_insert] can't fit into \the [resolve_parent]! Make some space!"))
user.balloon_alert(user, "no room!")
return FALSE
if(length(can_hold))
if(!is_type_in_typecache(to_insert, can_hold))
if(messages && user)
to_chat(user, span_warning("\The [resolve_parent] cannot hold \the [to_insert]!"))
user.balloon_alert(user, "can't hold!")
return FALSE
if(is_type_in_typecache(to_insert, cant_hold) || HAS_TRAIT(to_insert, TRAIT_NO_STORAGE_INSERT) || (can_hold_trait && !HAS_TRAIT(to_insert, can_hold_trait)))
if(messages && user)
to_chat(user, span_warning("\The [resolve_parent] cannot hold \the [to_insert]!"))
user.balloon_alert(user, "can't hold!")
return FALSE
if(HAS_TRAIT(to_insert, TRAIT_NODROP))
if(messages)
to_chat(user, span_warning("\The [to_insert] is stuck on your hand!"))
user.balloon_alert(user, "stuck on your hand!")
return FALSE
var/datum/storage/biggerfish = resolve_parent.loc.atom_storage // this is valid if the container our resolve_parent is being held in is a storage item
if(biggerfish && biggerfish.max_specific_storage < max_specific_storage)
if(messages && user)
to_chat(user, span_warning("[to_insert] can't fit in [resolve_parent] while [resolve_parent.loc] is in the way!"))
user.balloon_alert(user, "[lowertext(resolve_parent.loc.name)] is in the way!")
return FALSE
if(istype(resolve_parent))
var/datum/storage/item_storage = to_insert.atom_storage
if((to_insert.w_class >= resolve_parent.w_class) && item_storage && !allow_big_nesting)
if(messages && user)
to_chat(user, span_warning("[resolve_parent] cannot hold [to_insert] as it's a storage item of the same size!"))
user.balloon_alert(user, "too big!")
return FALSE
return TRUE
@@ -756,6 +757,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
var/obj/item/resolve_location = real_location.resolve()
if(locked)
user.balloon_alert(user, "closed!")
return
if(!user.CanReach(resolve_parent) || !user.CanReach(dest_object))
return
@@ -987,7 +989,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches)
if(locked)
if(!silent)
resolve_parent.balloon_alert(to_show, "locked!")
resolve_parent.balloon_alert(to_show, "closed!")
return FALSE
// If we're quickdrawing boys
+10 -6
View File
@@ -387,9 +387,10 @@
inhand_icon_state = "duffel"
actions_types = list(/datum/action/item_action/zipper)
storage_type = /datum/storage/duffel
// How much to slow you down if your bag isn't zipped up
var/zip_slowdown = 1
/// If this bag is zipped (contents hidden) up or not
/// Starts enabled so people need to figure it out to use the thing
/// Starts enabled so you're forced to interact with it to "get" it
var/zipped_up = TRUE
/obj/item/storage/backpack/duffelbag/Initialize(mapload)
@@ -427,6 +428,7 @@
playsound(src, 'sound/items/un_zip.ogg', 100, FALSE)
var/datum/callback/can_unzip = CALLBACK(src, PROC_REF(zipper_matches), TRUE)
if(!do_after(user, 2.1 SECONDS, src, extra_checks = can_unzip))
user.balloon_alert(user, "unzip failed!")
return
balloon_alert(user, "unzipped")
set_zipper(FALSE)
@@ -443,6 +445,7 @@
playsound(src, 'sound/items/zip_up.ogg', 100, FALSE)
var/datum/callback/can_zip = CALLBACK(src, PROC_REF(zipper_matches), FALSE)
if(!do_after(user, 0.5 SECONDS, src, extra_checks = can_zip))
user.balloon_alert(user, "zip failed!")
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
balloon_alert(user, "zipped")
set_zipper(TRUE)
@@ -457,7 +460,6 @@
zipped_up = new_zip
SEND_SIGNAL(src, COMSIG_DUFFEL_ZIP_CHANGE, new_zip)
if(zipped_up)
slowdown = initial(slowdown)
atom_storage.locked = STORAGE_SOFT_LOCKED
atom_storage.display_contents = FALSE
@@ -620,14 +622,14 @@
resistance_flags = FIRE_PROOF
/obj/item/storage/backpack/duffelbag/syndie
name = "tactical duffel bag" //SKYRAT EDIT, was "suspicious-looking duffel bag". It's just a black duffel.
name = "tactical duffel bag" //SKYRAT EDIT CHANGE, was "suspicious-looking duffel bag". It's just a black duffel.
desc = "A large duffel bag for holding extra tactical supplies."
icon_state = "duffel-syndie"
inhand_icon_state = "duffel-syndieammo"
storage_type = /datum/storage/duffel/syndicate
resistance_flags = FIRE_PROOF
special_desc_requirement = EXAMINE_CHECK_SYNDICATE // Skyrat edit
special_desc = "This duffel bag has the Syndicate logo stiched on the inside. It appears to be made from lighter yet sturdier materials." // Skyrat edit
special_desc_requirement = EXAMINE_CHECK_SYNDICATE // SKYRAT EDIT ADDITION
special_desc = "This duffel bag has the Syndicate logo stiched on the inside. It appears to be made from lighter yet sturdier materials." // SKYRAT EDIT ADDITION
/obj/item/storage/backpack/duffelbag/syndie/hitman
desc = "A large duffel bag for holding extra things. There is a Nanotrasen logo on the back."
@@ -652,9 +654,11 @@
/obj/item/storage/backpack/duffelbag/syndie/surgery
name = "surgery duffel bag"
desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools." //SKYRAT EDIT, to match the security surgery bag
desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools." //SKYRAT EDIT CHANGE, to match the security surgery bag
icon_state = "duffel-syndiemed"
inhand_icon_state = "duffel-syndiemed"
special_desc_requirement = EXAMINE_CHECK_SYNDICATE // SKYRAT EDIT ADDITION
special_desc = "This duffel bag has the Syndicate logo stiched on the inside. It appears to be made from lighter yet sturdier materials." // SKYRAT EDIT ADDITION
/obj/item/storage/backpack/duffelbag/syndie/surgery/PopulateContents()
new /obj/item/scalpel/advanced(src)