mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-21 20:20:33 +01:00
canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE (#69790)
* canUseTopic now uses TRUE/FALSE instead of defines that just say TRUE The most idiotic thing I've seen is canUseTopic's defines, they literally just define TRUE, you can use it however you want, it doesn't matter, it just means TRUE. You can mix and match the args and it will set that arg to true, despite the name. It's so idiotic I decided to remove it, so now I can reclaim a little bit of my sanity.
This commit is contained in:
@@ -34,7 +34,7 @@
|
||||
|
||||
/obj/item/ai_module/supplied/freeform/attack_self(mob/user)
|
||||
var/newpos = tgui_input_number(user, "Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority ", lawpos, 50, 15)
|
||||
if(!newpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!newpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
lawpos = newpos
|
||||
var/targName = tgui_input_text(user, "Enter a new law for the AI.", "Freeform Law Entry", laws[1], CONFIG_GET(number/max_law_len), TRUE)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/ai_module/remove/attack_self(mob/user)
|
||||
lawpos = tgui_input_number(user, "Law to delete", "Law Removal", lawpos, 50)
|
||||
if(!lawpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!lawpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
to_chat(user, span_notice("Law [lawpos] selected."))
|
||||
..()
|
||||
|
||||
@@ -370,7 +370,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!usr.canUseTopic(src, BE_CLOSE))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
|
||||
toggle_window_glass(usr)
|
||||
@@ -380,7 +380,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
|
||||
set category = "Object"
|
||||
set src in view(1)
|
||||
|
||||
if(!usr.canUseTopic(src, BE_CLOSE))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
|
||||
toggle_window_size(usr)
|
||||
|
||||
@@ -365,7 +365,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
|
||||
if(.)
|
||||
return
|
||||
|
||||
if(!usr.canUseTopic(src, BE_CLOSE))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
var/playeffect = TRUE
|
||||
switch(action)
|
||||
|
||||
@@ -623,7 +623,7 @@
|
||||
/obj/item/card/id/proc/alt_click_can_use_id(mob/living/user)
|
||||
if(!isliving(user))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
|
||||
return TRUE
|
||||
@@ -1239,7 +1239,7 @@
|
||||
to_chat(user, "Restating prisoner ID to default parameters.")
|
||||
return
|
||||
var/choice = tgui_input_number(user, "Sentence time in seconds", "Sentencing")
|
||||
if(!choice || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user)
|
||||
if(!choice || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user)
|
||||
return FALSE
|
||||
time_to_assign = choice
|
||||
to_chat(user, "You set the sentence time to [time_to_assign] seconds.")
|
||||
@@ -1565,7 +1565,7 @@
|
||||
assignment = target_occupation
|
||||
|
||||
var/new_age = tgui_input_number(user, "Choose the ID's age", "Agent card age", AGE_MIN, AGE_MAX, AGE_MIN)
|
||||
if(QDELETED(user) || QDELETED(src) || !user.canUseTopic(user, BE_CLOSE, NO_DEXTERITY, NO_TK))
|
||||
if(QDELETED(user) || QDELETED(src) || !user.canUseTopic(user, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE))
|
||||
return
|
||||
if(new_age)
|
||||
registered_age = new_age
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
return list()
|
||||
|
||||
/obj/item/choice_beacon/proc/canUseBeacon(mob/living/user)
|
||||
if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
else
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE)
|
||||
@@ -29,7 +29,7 @@
|
||||
return
|
||||
if(isnull(display_names[choice]))
|
||||
return
|
||||
if(!M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!M.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
|
||||
spawn_option(display_names[choice],M)
|
||||
|
||||
@@ -752,7 +752,7 @@
|
||||
/obj/item/circuitboard/machine/medical_kiosk/multitool_act(mob/living/user)
|
||||
. = ..()
|
||||
var/new_cost = tgui_input_number(user, "New cost for using this medical kiosk", "Pricing", custom_cost, 1000, 10)
|
||||
if(!new_cost || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!new_cost || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
if(loc != user)
|
||||
to_chat(user, span_warning("You must hold the circuitboard to change its cost!"))
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
if (H == user)
|
||||
to_chat(user, span_warning("You need a mirror to properly style your own facial hair!"))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
var/new_style = tgui_input_list(user, "Select a facial hairstyle", "Grooming", GLOB.facial_hairstyles_list)
|
||||
if(isnull(new_style))
|
||||
@@ -186,7 +186,7 @@
|
||||
if (H == user)
|
||||
to_chat(user, span_warning("You need a mirror to properly style your own hair!"))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
var/new_style = tgui_input_list(user, "Select a hairstyle", "Grooming", GLOB.hairstyles_list)
|
||||
if(isnull(new_style))
|
||||
|
||||
@@ -162,7 +162,7 @@
|
||||
ui.open()
|
||||
|
||||
/obj/item/toy/crayon/spraycan/AltClick(mob/user)
|
||||
if(has_cap && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(has_cap && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
is_capped = !is_capped
|
||||
to_chat(user, span_notice("The cap on [src] is now [is_capped ? "on" : "off"]."))
|
||||
update_appearance()
|
||||
|
||||
@@ -99,13 +99,13 @@
|
||||
qdel(H)
|
||||
|
||||
/obj/item/holochip/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user)))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
if(loc != user)
|
||||
to_chat(user, span_warning("You must be holding the holochip to continue!"))
|
||||
return FALSE
|
||||
var/split_amount = tgui_input_number(user, "How many credits do you want to extract from the holochip? (Max: [credits] cr)", "Holochip", max_value = credits)
|
||||
if(!split_amount || QDELETED(user) || QDELETED(src) || issilicon(user) || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user)) || loc != user)
|
||||
if(!split_amount || QDELETED(user) || QDELETED(src) || issilicon(user) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user)) || loc != user)
|
||||
return
|
||||
var/new_credits = spend(split_amount, TRUE)
|
||||
var/obj/item/holochip/H = new(user ? user : drop_location(), new_credits)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
/obj/item/beacon/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/pen)) // needed for things that use custom names like the locator
|
||||
var/new_name = tgui_input_text(user, "What would you like the name to be?", "Beacon", max_length = MAX_NAME_LEN)
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(new_name)
|
||||
name = new_name
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
. += span_notice("Can be used again to interrupt the effect early. The recharge time is the same as the time spent in desync.")
|
||||
|
||||
/obj/item/desynchronizer/AltClick(mob/living/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
var/new_duration = tgui_input_number(user, "Set the duration", "Desynchronizer", duration / 10, max_duration, 5)
|
||||
if(!new_duration || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!new_duration || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
duration = new_duration
|
||||
to_chat(user, span_notice("You set the duration to [DisplayTimeText(duration)]."))
|
||||
|
||||
@@ -110,7 +110,7 @@
|
||||
to_chat(user, span_notice("[icon2html(src, user)] [isliving(target) ? "Subject" : "Target"] is free of radioactive contamination."))
|
||||
|
||||
/obj/item/geiger_counter/AltClick(mob/living/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE))
|
||||
if(!istype(user) || !user.canUseTopic(src, be_close = TRUE))
|
||||
return ..()
|
||||
if(!scanning)
|
||||
to_chat(usr, span_warning("[src] must be on to reset its radiation level!"))
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
/obj/item/storage/portable_chem_mixer/AltClick(mob/living/user)
|
||||
if(!atom_storage.locked)
|
||||
return ..()
|
||||
if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
replace_beaker(user)
|
||||
update_appearance()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
. += span_notice("Insert [src] into an active quantum pad to link it.")
|
||||
|
||||
/obj/item/quantum_keycard/AltClick(mob/living/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!istype(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
to_chat(user, span_notice("You start pressing [src]'s unlink button..."))
|
||||
if(do_after(user, 40, target = src))
|
||||
|
||||
@@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(channel_tokens, list(
|
||||
|
||||
/obj/item/radio/headset/MouseDrop(mob/over, src_location, over_location)
|
||||
var/mob/headset_user = usr
|
||||
if((headset_user == over) && headset_user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if((headset_user == over) && headset_user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return attack_self(headset_user)
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens
|
||||
..()
|
||||
|
||||
if(!user.canUseTopic(src, BE_CLOSE) || !user.can_read(src))
|
||||
if(!user.canUseTopic(src, be_close = TRUE) || !user.can_read(src))
|
||||
return
|
||||
|
||||
if(cooldown)
|
||||
|
||||
@@ -440,7 +440,7 @@
|
||||
/obj/item/healthanalyzer/AltClick(mob/user)
|
||||
..()
|
||||
|
||||
if(!user.canUseTopic(src, BE_CLOSE) || !user.can_read(src) || user.is_blind())
|
||||
if(!user.canUseTopic(src, be_close = TRUE) || !user.can_read(src) || user.is_blind())
|
||||
return
|
||||
|
||||
mode = !mode
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
var/answer = tgui_input_list(user, "Analyze Potential", "Sequence Analyzer", sort_list(options))
|
||||
if(isnull(answer))
|
||||
return
|
||||
if(!ready || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !user.can_read(src))
|
||||
if(!ready || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || !user.can_read(src))
|
||||
return
|
||||
|
||||
var/sequence
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
. += span_notice("<b>Not Linked.</b> Use on another quantum spin inverter to establish a quantum link.")
|
||||
|
||||
/obj/item/swapper/AltClick(mob/living/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
to_chat(user, span_notice("You break the current quantum link."))
|
||||
if(!QDELETED(linked_swapper))
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
icon_state = base_icon_state
|
||||
|
||||
/obj/item/reagent_containers/cup/blastoff_ampoule/attack_self(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY) || spillable)
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE) || spillable)
|
||||
return ..()
|
||||
reagent_flags |= OPENCONTAINER
|
||||
spillable = TRUE
|
||||
|
||||
@@ -24,18 +24,18 @@
|
||||
return
|
||||
var/mob/living/carbon/human/human_target = target
|
||||
var/beard_or_hair = tgui_alert(user, "What do you want to dye?", "Character Preference", list("Hair", "Facial Hair"))
|
||||
if(!beard_or_hair || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE))
|
||||
if(!beard_or_hair || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE))
|
||||
return
|
||||
|
||||
var/list/choices = beard_or_hair == "Hair" ? GLOB.hair_gradients_list : GLOB.facial_hair_gradients_list
|
||||
var/new_grad_style = tgui_input_list(user, "Choose a color pattern", "Character Preference", choices)
|
||||
if(isnull(new_grad_style))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE))
|
||||
return
|
||||
|
||||
var/new_grad_color = input(user, "Choose a secondary hair color:", "Character Preference",human_target.grad_color) as color|null
|
||||
if(!new_grad_color || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE) || !user.CanReach(target))
|
||||
if(!new_grad_color || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE) || !user.CanReach(target))
|
||||
return
|
||||
|
||||
to_chat(user, span_notice("You start applying the hair dye..."))
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
source.delay = 3
|
||||
|
||||
/obj/item/extinguisher/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
return
|
||||
if(!user.is_holding(src))
|
||||
to_chat(user, span_notice("You must be holding the [src] in your hands do this!"))
|
||||
|
||||
@@ -152,7 +152,7 @@
|
||||
toggle_igniter(user)
|
||||
|
||||
/obj/item/flamethrower/AltClick(mob/user)
|
||||
if(ptank && isliving(user) && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(ptank && isliving(user) && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
user.put_in_hands(ptank)
|
||||
ptank = null
|
||||
to_chat(user, span_notice("You remove the plasma tank from [src]!"))
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
var/newtime = tgui_input_list(user, "Please enter a new detonation time", "Detonation Timer", list("Instant", 3, 4, 5))
|
||||
if (isnull(newtime))
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(newtime == "Instant" && change_det_time(0))
|
||||
to_chat(user, span_notice("You modify the time delay. It's set to be instantaneous."))
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
if (active)
|
||||
return
|
||||
var/newspread = tgui_input_number(user, "Please enter a new spread amount", "Grenade Spread", 5, 100, 5)
|
||||
if(!newspread || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!newspread || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
unit_spread = newspread
|
||||
to_chat(user, span_notice("You set the time release to [unit_spread] units per detonation."))
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
/obj/item/grenade/c4/attack_self(mob/user)
|
||||
var/newtime = tgui_input_number(user, "Please set the timer", "C4 Timer", minimum_timer, maximum_timer, minimum_timer)
|
||||
if(!newtime || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!newtime || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
det_time = newtime
|
||||
to_chat(user, "Timer set for [det_time] seconds.")
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
if(!user.can_write(used_item))
|
||||
return
|
||||
var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN)
|
||||
if((user.get_active_held_item() != used_item) || !user.canUseTopic(src, BE_CLOSE))
|
||||
if((user.get_active_held_item() != used_item) || !user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(new_name)
|
||||
name = "implant case - '[new_name]'"
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN)
|
||||
if(user.get_active_held_item() != I)
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(new_name)
|
||||
name = "implanter ([new_name])"
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/obj/item/implantpad/AltClick(mob/user)
|
||||
..()
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
if(!case)
|
||||
to_chat(user, span_warning("There's no implant to remove from [src]."))
|
||||
@@ -60,7 +60,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/implantpad/ui_interact(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
user.unset_machine(src)
|
||||
user << browse(null, "window=implantpad")
|
||||
return
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
return ..()
|
||||
|
||||
/obj/item/inspector/CtrlClick(mob/living/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)) || !cell_cover_open || !cell)
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands= !iscyborg(user)) || !cell_cover_open || !cell)
|
||||
return ..()
|
||||
user.visible_message(span_notice("[user] removes \the [cell] from [src]!"), \
|
||||
span_notice("You remove [cell]."))
|
||||
@@ -378,7 +378,7 @@
|
||||
grind_results = list(/datum/reagent/water = 5)
|
||||
|
||||
/obj/item/paper/fake_report/water/AltClick(mob/living/user, obj/item/I)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
return
|
||||
var/datum/action/innate/origami/origami_action = locate() in user.actions
|
||||
if(origami_action?.active) //Origami masters can fold water
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
update_appearance()
|
||||
|
||||
/obj/item/pet_carrier/AltClick(mob/living/user)
|
||||
if(open || !user.canUseTopic(src, BE_CLOSE))
|
||||
if(open || !user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
locked = !locked
|
||||
to_chat(user, span_notice("You flip the lock switch [locked ? "down" : "up"]."))
|
||||
@@ -157,7 +157,7 @@
|
||||
|
||||
/obj/item/pet_carrier/MouseDrop(atom/over_atom)
|
||||
. = ..()
|
||||
if(isopenturf(over_atom) && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(usr)) && usr.Adjacent(over_atom) && open && occupants.len)
|
||||
if(isopenturf(over_atom) && usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(usr)) && usr.Adjacent(over_atom) && open && occupants.len)
|
||||
usr.visible_message(span_notice("[usr] unloads [src]."), \
|
||||
span_notice("You unload [src] onto [over_atom]."))
|
||||
for(var/V in occupants)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
if(!user.can_write(writing_instrument))
|
||||
return
|
||||
var/txt = tgui_input_text(user, "What would you like to write on the sign?", "Sign Label", max_length = 30)
|
||||
if(txt && user.canUseTopic(src, BE_CLOSE))
|
||||
if(txt && user.canUseTopic(src, be_close = TRUE))
|
||||
label = txt
|
||||
name = "[label] sign"
|
||||
desc = "It reads: [label]"
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
. += span_notice("Alt-click to set your war cry.")
|
||||
|
||||
/obj/item/spear/explosive/AltClick(mob/user)
|
||||
if(user.canUseTopic(src, BE_CLOSE))
|
||||
if(user.canUseTopic(src, be_close = TRUE))
|
||||
..()
|
||||
if(istype(user) && loc == user)
|
||||
var/input = tgui_input_text(user, "What do you want your war cry to be? You will shout it when you hit someone in melee.", "War Cry", max_length = 50)
|
||||
|
||||
@@ -655,13 +655,13 @@
|
||||
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
|
||||
return
|
||||
|
||||
if(is_cyborg || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(is_cyborg || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return SECONDARY_ATTACK_CONTINUE_CHAIN
|
||||
if(is_zero_amount(delete_if_zero = TRUE))
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
var/max = get_amount()
|
||||
var/stackmaterial = tgui_input_number(user, "How many sheets do you wish to take out of this stack?", "Stack Split", max_value = max)
|
||||
if(!stackmaterial || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK, !iscyborg(user)))
|
||||
if(!stackmaterial || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE, need_hands = !iscyborg(user)))
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
split_stack(user, stackmaterial)
|
||||
to_chat(user, span_notice("You take [stackmaterial] sheets out of the stack."))
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/item/stack/wrapping_paper/attack_hand_secondary(mob/user, modifiers)
|
||||
var/new_base = input(user, "", "Select a base color", color) as color
|
||||
var/new_ribbon = input(user, "", "Select a ribbon color", color) as color
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
set_greyscale(colors = list(new_base, new_ribbon))
|
||||
return TRUE
|
||||
|
||||
@@ -796,7 +796,7 @@
|
||||
. += span_notice("Alt-click it to quickly draw the blade.")
|
||||
|
||||
/obj/item/storage/belt/sabre/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
return
|
||||
if(length(contents))
|
||||
var/obj/item/I = contents[1]
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
. += span_notice("Alt-click to [open ? "close":"open"] it.")
|
||||
|
||||
/obj/item/storage/lockbox/medal/AltClick(mob/user)
|
||||
if(user.canUseTopic(src, BE_CLOSE))
|
||||
if(user.canUseTopic(src, be_close = TRUE))
|
||||
if(!atom_storage.locked)
|
||||
open = (open ? FALSE : TRUE)
|
||||
update_appearance()
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
|
||||
/obj/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY))
|
||||
if(unique_reskin && !current_skin && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE))
|
||||
reskin_obj(user)
|
||||
|
||||
/**
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
. = ..()
|
||||
if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN)
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
if(!ishuman(user) || !user.canUseTopic(src, BE_CLOSE))
|
||||
if(!ishuman(user) || !user.canUseTopic(src, be_close = TRUE))
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
if(has_buckled_mobs())
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
|
||||
@@ -286,7 +286,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool, 0)
|
||||
if(over_object == usr && Adjacent(usr))
|
||||
if(!item_chair || has_buckled_mobs() || src.flags_1 & NODECONSTRUCT_1)
|
||||
return
|
||||
if(!usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
return
|
||||
usr.visible_message(span_notice("[usr] grabs \the [src.name]."), span_notice("You grab \the [src.name]."))
|
||||
var/obj/item/C = new item_chair(loc)
|
||||
@@ -482,7 +482,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0)
|
||||
|
||||
/obj/structure/chair/bronze/AltClick(mob/user)
|
||||
turns = 0
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
if(!(datum_flags & DF_ISPROCESSING))
|
||||
user.visible_message(span_notice("[user] spins [src] around, and the last vestiges of Ratvarian technology keeps it spinning FOREVER."), \
|
||||
|
||||
@@ -598,7 +598,7 @@
|
||||
set category = "Object"
|
||||
set name = "Toggle Open"
|
||||
|
||||
if(!usr.canUseTopic(src, BE_CLOSE) || !isturf(loc))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE) || !isturf(loc))
|
||||
return
|
||||
|
||||
if(iscarbon(usr) || issilicon(usr) || isdrone(usr))
|
||||
@@ -661,7 +661,7 @@
|
||||
/obj/structure/closet/attack_hand_secondary(mob/user, modifiers)
|
||||
. = ..()
|
||||
|
||||
if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc))
|
||||
if(!user.canUseTopic(src, be_close = TRUE) || !isturf(loc))
|
||||
return
|
||||
|
||||
if(!opened && secure)
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
var/t = tgui_input_text(user, "What would you like the label to be?", name, max_length = 53)
|
||||
if(user.get_active_held_item() != interact_tool)
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
handle_tag("[t ? t : initial(name)]")
|
||||
return
|
||||
@@ -315,7 +315,7 @@
|
||||
open()
|
||||
|
||||
/obj/structure/closet/body_bag/environmental/prisoner/attack_hand_secondary(mob/user, modifiers)
|
||||
if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc))
|
||||
if(!user.canUseTopic(src, be_close = TRUE) || !isturf(loc))
|
||||
return
|
||||
togglelock(user)
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
|
||||
@@ -458,7 +458,7 @@
|
||||
if(!payments_acc)
|
||||
to_chat(usr, span_notice("[src] hasn't been registered yet."))
|
||||
return TRUE
|
||||
if(!usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
if(!potential_acc)
|
||||
to_chat(usr, span_notice("No ID card detected."))
|
||||
@@ -514,7 +514,7 @@
|
||||
if(payments_acc != potential_acc.registered_account)
|
||||
to_chat(usr, span_warning("[src] rejects your new price."))
|
||||
return
|
||||
if(!usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
to_chat(usr, span_warning("You need to get closer!"))
|
||||
return
|
||||
sale_price = new_price_input
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
/obj/structure/sacrificealtar/AltClick(mob/living/user)
|
||||
..()
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE))
|
||||
if(!istype(user) || !user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if(!has_buckled_mobs())
|
||||
return
|
||||
|
||||
@@ -110,7 +110,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/extinguisher_cabinet, 29)
|
||||
return attack_hand(user, modifiers)
|
||||
|
||||
/obj/structure/extinguisher_cabinet/AltClick(mob/living/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE))
|
||||
return
|
||||
toggle_cabinet(user)
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return
|
||||
if(obj_flags & IN_USE)
|
||||
to_chat(user, span_warning("It's already in use - wait a bit!"))
|
||||
|
||||
@@ -167,7 +167,7 @@
|
||||
playsound(src, 'sound/machines/click.ogg', 10, TRUE)
|
||||
|
||||
/obj/item/plunger/AltClick(mob/user)
|
||||
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE))
|
||||
if(!istype(user) || !user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
|
||||
var/new_layer = tgui_input_list(user, "Select a layer", "Layer", GLOB.plumbing_layers)
|
||||
|
||||
@@ -151,7 +151,7 @@ at the cost of risking a vicious bite.**/
|
||||
switch(altar_result)
|
||||
if("Change Color")
|
||||
var/chosen_color = input(user, "", "Choose Color", pants_color) as color|null
|
||||
if(!isnull(chosen_color) && user.canUseTopic(src, BE_CLOSE))
|
||||
if(!isnull(chosen_color) && user.canUseTopic(src, be_close = TRUE))
|
||||
pants_color = chosen_color
|
||||
if("Create Artefact")
|
||||
if(!COOLDOWN_FINISHED(src, use_cooldown) || status != ALTAR_INACTIVE)
|
||||
|
||||
@@ -32,7 +32,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
var/new_style = tgui_input_list(user, "Select a facial hairstyle", "Grooming", GLOB.facial_hairstyles_list)
|
||||
if(isnull(new_style))
|
||||
return TRUE
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE //no tele-grooming
|
||||
hairdresser.facial_hairstyle = new_style
|
||||
else
|
||||
@@ -42,7 +42,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
var/new_style = tgui_input_list(user, "Select a hairstyle", "Grooming", GLOB.hairstyles_list)
|
||||
if(isnull(new_style))
|
||||
return TRUE
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE //no tele-grooming
|
||||
if(HAS_TRAIT(hairdresser, TRAIT_BALD))
|
||||
to_chat(hairdresser, span_notice("If only growing back hair were that easy for you..."))
|
||||
@@ -153,7 +153,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
if(isnull(choice))
|
||||
return TRUE
|
||||
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
|
||||
switch(choice)
|
||||
@@ -161,7 +161,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
var/newname = sanitize_name(tgui_input_text(amazed_human, "Who are we again?", "Name change", amazed_human.name, MAX_NAME_LEN), allow_numbers = TRUE) //It's magic so whatever.
|
||||
if(!newname)
|
||||
return TRUE
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
amazed_human.real_name = newname
|
||||
amazed_human.name = newname
|
||||
@@ -176,7 +176,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
return TRUE
|
||||
if(!selectable_races[racechoice])
|
||||
return TRUE
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
|
||||
var/datum/species/newrace = selectable_races[racechoice]
|
||||
@@ -190,7 +190,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
|
||||
if(MUTCOLORS in amazed_human.dna.species.species_traits)
|
||||
var/new_mutantcolor = input(user, "Choose your skin color:", "Race change", amazed_human.dna.features["mcolor"]) as color|null
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
if(new_mutantcolor)
|
||||
var/temp_hsv = RGBtoHSV(new_mutantcolor)
|
||||
@@ -211,7 +211,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
return TRUE
|
||||
if(amazed_human.gender == "male")
|
||||
if(tgui_alert(amazed_human, "Become a Witch?", "Confirmation", list("Yes", "No")) == "Yes")
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
amazed_human.gender = FEMALE
|
||||
amazed_human.physique = FEMALE
|
||||
@@ -221,7 +221,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
|
||||
else
|
||||
if(tgui_alert(amazed_human, "Become a Warlock?", "Confirmation", list("Yes", "No")) == "Yes")
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
amazed_human.gender = MALE
|
||||
amazed_human.physique = MALE
|
||||
@@ -234,13 +234,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
|
||||
if("hair")
|
||||
var/hairchoice = tgui_alert(amazed_human, "Hairstyle or hair color?", "Change Hair", list("Style", "Color"))
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
if(hairchoice == "Style") //So you just want to use a mirror then?
|
||||
return ..()
|
||||
else
|
||||
var/new_hair_color = input(amazed_human, "Choose your hair color", "Hair Color",amazed_human.hair_color) as color|null
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
if(new_hair_color)
|
||||
amazed_human.hair_color = sanitize_hexcolor(new_hair_color)
|
||||
@@ -254,7 +254,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
|
||||
if(BODY_ZONE_PRECISE_EYES)
|
||||
var/new_eye_color = input(amazed_human, "Choose your eye color", "Eye Color", amazed_human.eye_color_left) as color|null
|
||||
if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return TRUE
|
||||
if(new_eye_color)
|
||||
amazed_human.eye_color_left = sanitize_hexcolor(new_eye_color)
|
||||
|
||||
@@ -90,7 +90,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an
|
||||
var/t = tgui_input_text(user, "What would you like the label to be?", text("[]", name), null)
|
||||
if (user.get_active_held_item() != P)
|
||||
return
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
if (t)
|
||||
name = text("[]- '[]'", initial(name), t)
|
||||
|
||||
@@ -162,13 +162,13 @@
|
||||
to_chat(user, span_warning("The rotation is locked!"))
|
||||
return FALSE
|
||||
var/new_angle = tgui_input_number(user, "New angle for primary reflection face", "Reflector Angle", rotation_angle, 360)
|
||||
if(isnull(new_angle) || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
if(isnull(new_angle) || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE))
|
||||
return FALSE
|
||||
set_angle(SIMPLIFY_DEGREES(new_angle))
|
||||
return TRUE
|
||||
|
||||
/obj/structure/reflector/AltClick(mob/user)
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)))
|
||||
return
|
||||
else if(finished)
|
||||
rotate(user)
|
||||
|
||||
@@ -131,7 +131,7 @@ FLOOR SAFES
|
||||
if(!ishuman(usr))
|
||||
return
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if(!user.canUseTopic(src, BE_CLOSE))
|
||||
if(!user.canUseTopic(src, be_close = TRUE))
|
||||
return
|
||||
|
||||
var/canhear = FALSE
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
|
||||
/obj/structure/training_machine/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, FLOOR_OKAY))
|
||||
if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, floor_okay = TRUE))
|
||||
return
|
||||
if(has_buckled_mobs())
|
||||
user_unbuckle_mob(buckled_mobs[1], user)
|
||||
|
||||
Reference in New Issue
Block a user