Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TESTMERGE] Convert Input lists to TGUI Input lists #784

Closed
wants to merge 23 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions code/__HELPERS/type2type.dm
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,8 @@
return 'icons/mob/screen_operative.dmi'
if("White")
return 'icons/mob/screen_white.dmi'
// SS220 ADDITION START
if("Midnight")
return 'icons/mob/screen_midnight.dmi'
if("Vaporwave")
return 'modular_ss220/aesthetics/skin/icons/screen_vaporwave.dmi'
if("Detective")
Expand All @@ -216,7 +217,6 @@
return 'modular_ss220/aesthetics/skin/icons/screen_trasenknox.dmi'
if("Clockwork")
return 'modular_ss220/aesthetics/skin/icons/screen_clockwork.dmi'
// SS220 ADDITION END
else
return 'icons/mob/screen_midnight.dmi'

Expand Down
4 changes: 2 additions & 2 deletions code/_onclick/hud/ai_hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

/obj/screen/ai/camera_list/Click()
var/mob/living/silicon/ai/AI = usr
var/camera = input(AI, "Choose which camera you want to view", "Cameras") as null|anything in AI.get_camera_list()
var/camera = tgui_input_list(AI, "Choose which camera you want to view", "Cameras", AI.get_camera_list())
AI.ai_camera_list(camera)

/obj/screen/ai/camera_track
Expand All @@ -26,7 +26,7 @@
/obj/screen/ai/camera_track/Click()
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
var/target_name = input(AI) as null|anything in AI.trackable_mobs()
var/target_name = tgui_input_list(AI, "Choose a target you want to track", "Tracking", AI.trackable_mobs())
if(target_name)
AI.ai_camera_track(target_name)

Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/surgery_initiator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
procedure = S
break
else
procedure = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries
procedure = tgui_input_list(user, "Begin which procedure?", "Surgery", available_surgeries)

if(!procedure)
return
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spell_targeting/matter_eater_targeting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
continue
possible_targets += O

var/atom/movable/target = input("Choose the target of your hunger.", "Targeting") as null|anything in possible_targets
var/atom/movable/target = tgui_input_list(user, "Choose the target of your hunger", "Targeting", possible_targets)

if(QDELETED(target))
return
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spell_targeting/remoteview_targeting.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
if(!length(remoteviewers))
return

var/mob/target = input("Choose the target to spy on.", "Targeting") as null|anything in remoteviewers
var/mob/target = tgui_input_list(user, "Choose the target to spy on", "Targeting", remoteviewers)

if(QDELETED(target))
return
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spell_targeting/targeted.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
else if(max_targets == 1) // Only one target
var/atom/target
if(!random_target)
target = input("Choose the target for the spell.", "Targeting") as anything in possible_targets
target = tgui_input_list(user, "Choose the target for the spell", "Targeting", possible_targets)
//Adds a safety check post-input to make sure those targets are actually in range.
if(target in view_or_range(range, spell_location, selection_type))
targets += target
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spell_targeting/telepathic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
if(!length(valid_targets))
return

var/target_name = input("Choose the target to listen to.", "Targeting") as null|anything in valid_targets
var/target_name = tgui_input_list(user, "Choose the target to listen to", "Targeting", valid_targets)

var/mob/living/target = valid_targets[target_name]
if(QDELETED(target))
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spells/mimic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
forms += "Original Form"

forms += available_forms.Copy()
var/what = input(user, "Which form do you want to become?", "Mimic") as null|anything in forms
var/what = tgui_input_list(user, "Which form do you want to become?", "Mimic", forms)
if(!what)
to_chat(user, "<span class='notice'>You decide against changing forms.</span>")
revert_cast(user)
Expand Down
2 changes: 1 addition & 1 deletion code/datums/spells/shapeshift.dm
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
for(var/path in possible_shapes)
var/mob/living/simple_animal/A = path
animal_list[initial(A.name)] = path
shapeshift_type = input(M, "Choose Your Animal Form!", "It's Morphing Time!", null) as anything in animal_list
shapeshift_type = tgui_input_list(M, "Choose Your Animal Form!", "It's Morphing Time!", animal_list)
if(!shapeshift_type) //If you aren't gonna decide I am!
shapeshift_type = pick(animal_list)
shapeshift_type = animal_list[shapeshift_type]
Expand Down
8 changes: 4 additions & 4 deletions code/game/gamemodes/cult/blood_magic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
possible_spells[cult_name] = J
if(length(spells))
possible_spells += "(REMOVE SPELL)"
entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells
entered_spell_name = tgui_input_list(owner, "Pick a blood spell to prepare...", "Spell Choices", possible_spells)
if(entered_spell_name == "(REMOVE SPELL)")
remove_spell()
return
Expand Down Expand Up @@ -80,8 +80,8 @@
SSblackbox.record_feedback("tally", "cult_spells_prepared", 1, "[new_spell.name]")
channeling = FALSE

/datum/action/innate/cult/blood_magic/proc/remove_spell(message = "Pick a spell to remove.")
var/nullify_spell = input(owner, message, "Current Spells") as null|anything in spells
/datum/action/innate/cult/blood_magic/proc/remove_spell()
var/nullify_spell = tgui_input_list(owner, "Pick a spell to remove", "Current Spells", spells)
if(nullify_spell)
qdel(nullify_spell)

Expand Down Expand Up @@ -518,7 +518,7 @@
log_game("Teleport spell failed - user in away mission")
return

var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/input_rune_key = tgui_input_list(user, "Choose a rune to teleport to", "Rune to Teleport to", potential_runes) //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
if(QDELETED(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune)
return
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/cult/cult_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -782,7 +782,7 @@
to_chat(user, "<span class='cultitalic'>You are not in the right dimension!</span>")
return

var/input_rune_key = input(user, "Choose a rune to make a portal to.", "Rune to make a portal to") as null|anything in potential_runes //we know what key they picked
var/input_rune_key = tgui_input_list(user, "Choose a rune to make a portal to", "Rune to make a portal to", potential_runes) //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
if(QDELETED(R) || QDELETED(actual_selected_rune) || !Adjacent(user) || user.incapacitated())
return
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/cult/ritual.dm
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
if(!length(possible_runes))
return

var/chosen_rune = input(user, "Choose a rite to scribe.", "Sigils of Power") as null|anything in possible_runes
var/chosen_rune = tgui_input_list(user, "Choose a rite to scribe.", "Sigils of Power", possible_runes)
if(!chosen_rune)
return
var/obj/effect/rune/rune = possible_runes[chosen_rune]
Expand Down
6 changes: 3 additions & 3 deletions code/game/gamemodes/cult/runes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -489,7 +489,7 @@ structure_check() searches for nearby cultist structures required for the invoca
fail_invoke()
return

var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/input_rune_key = tgui_input_list(user, "Choose a rune to teleport to.", "Rune to Teleport to", potential_runes) //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
if(QDELETED(src) || QDELETED(actual_selected_rune) ||!Adjacent(user) || user.incapacitated())
fail_invoke()
Expand Down Expand Up @@ -631,7 +631,7 @@ structure_check() searches for nearby cultist structures required for the invoca
fail_invoke()
return
if(length(potential_revive_mobs) > 1)
mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs
mob_to_revive = tgui_input_list(user, "Choose a cultist to revive.", "Cultist to Revive", potential_revive_mobs)
else // If there's only one, no need for a menu
mob_to_revive = potential_revive_mobs[1]
if(!validness_checks(mob_to_revive, user))
Expand Down Expand Up @@ -753,7 +753,7 @@ structure_check() searches for nearby cultist structures required for the invoca
for(var/datum/mind/M in SSticker.mode.cult)
if(!(M.current in invokers) && M.current && M.current.stat != DEAD)
cultists[M.current.real_name] = M.current
var/input = input(user, "Who do you wish to call to [src]?", "Acolytes") as null|anything in cultists
var/input = tgui_input_list(user, "Who do you wish to call to [src]?", "Acolytes", cultists)
var/mob/living/cultist_to_summon = cultists[input]
if(QDELETED(src) || !Adjacent(user) || user.incapacitated())
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
to_chat(usr, "<span class='warning'>There are no valid targets!</span>")
return

var/mob/living/target = input("Choose the target to talk to.", "Targeting") as null|mob in validtargets
var/mob/living/target = tgui_input_list(user, "Choose the target to talk to", "Targeting", validtargets)
return target

/datum/action/innate/demon/whisper/Activate()
Expand Down
4 changes: 2 additions & 2 deletions code/game/gamemodes/nuclear/pinpointer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@
var/name = initial(T.name)
item_names += name
item_paths[name] = initial(T.typepath)
var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in item_names
var/targetitem = tgui_input_list(user, "Select item to search for", "Select Item", item_names)
if(!targetitem)
return

Expand Down Expand Up @@ -492,7 +492,7 @@
user.visible_message("<span class='notice'>[user]'s pinpointer fails to detect a signal.</span>", "<span class='notice'>Your pinpointer fails to detect a signal.</span>")
return

var/A = input(user, "Person to track", "Pinpoint") in names
var/A = tgui_input_list(user, "Person to track", "Pinpoint", names)
if(!src || !user || (user.get_active_hand() != src) || user.incapacitated() || !A)
return

Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/computer/atmos_controllers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ GLOBAL_LIST_EMPTY(gas_sensors)
"-SAVE TO BUFFER-" = "multitool"
)

var/temp_answer = input(user, "Select an option to adjust", "Options!", null) as null|anything in options
var/temp_answer = tgui_input_list(user, "Select an option to adjust", "Options!", options)

if(!Adjacent(user))
break
Expand Down Expand Up @@ -191,7 +191,7 @@ GLOBAL_LIST_EMPTY(gas_sensors)
to_chat(user, "<span class='notice'>Successfully added a new sensor/meter with name <code>[new_name]</code></span>")

if("Remove")
var/to_remove = input(user, "Select a sensor/meter to remove", "Sensor/Meter Removal") as null|anything in sensor_name_uid_map
var/to_remove = tgui_input_list(user, "Select a sensor/meter to remove", "Sensor/Meter Removal", sensor_name_uid_map)
if(!to_remove)
return

Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/computer/buildandrepair.dm
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
var/choice = input(user, "Circuit Setting", "What would you change the board setting to?") as null|anything in monitor_names_paths
var/choice = tgui_input_list(user, "Circuit Setting", "What would you change the board setting to?", monitor_names_paths)
if(!choice)
return
board_name = choice
Expand Down Expand Up @@ -527,7 +527,7 @@
if(istype(I, /obj/item/card/id) || istype(I, /obj/item/pda))
if(allowed(user))
user.visible_message("<span class='notice'>[user] waves [user.p_their()] ID past [src]'s access protocol scanner.</span>", "<span class='notice'>You swipe your ID past [src]'s access protocol scanner.</span>")
var/console_choice = input(user, "What do you want to configure the access to?", "Access Modification", "R&D Core") as null|anything in access_types
var/console_choice = tgui_input_list(user, "What do you want to configure the access to?", "Access Modification", access_types)
if(!console_choice)
return
switch(console_choice)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/camera_advanced.dm
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@


playsound(origin, 'sound/machines/terminal_prompt.ogg', 25, 0)
var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T
var/camera = tgui_input_list(target, "Choose which camera you want to view", "Cameras", T)
var/obj/machinery/camera/final = T[camera]
playsound(origin, "terminal_type", 25, 0)
if(final)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/camera_console.dm
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
var/direction = input(user, "Which direction?", "Select direction!") as null|anything in list("North", "East", "South", "West", "Centre")
var/direction = tgui_input_list(user, "Which direction?", "Select direction", list("North", "East", "South", "West", "Centre"))
if(!direction || !Adjacent(user))
return
pixel_x = 0
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/constructable_frame.dm
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ to destroy them and players will be able to make replacements.
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
var/choice = input(user, "Choose a new brand", "Select an Item") as null|anything in station_vendors
var/choice = tgui_input_list(user, "Choose a new brand", "Select an Item", station_vendors)
if(!choice)
return
set_type(choice)
Expand Down Expand Up @@ -569,7 +569,7 @@ to destroy them and players will be able to make replacements.
. = TRUE
if(!I.use_tool(src, user, 0, volume = I.tool_volume))
return
var/choice = input(user, "Circuit Setting", "What would you change the board setting to?") as null|anything in fridge_names_paths
var/choice = tgui_input_list(user, "Circuit Setting", "What would you change the board setting to?", fridge_names_paths)
if(!choice)
return
set_type(user, choice)
Expand Down
4 changes: 2 additions & 2 deletions code/game/machinery/tcomms/tcomms_core.dm
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@

// Job Format
if("nttc_job_indicator_type")
var/card_style = input(usr, "Pick a job card format.", "Job Card Format") as null|anything in nttc.job_card_styles
var/card_style = tgui_input_list(usr, "Pick a job card format", "Job Card Format", nttc.job_card_styles)
if(!card_style)
return
nttc.job_indicator_type = card_style
Expand All @@ -268,7 +268,7 @@

// Language Settings
if("nttc_setting_language")
var/new_language = input(usr, "Pick a language to convert messages to.", "Language Conversion") as null|anything in nttc.valid_languages
var/new_language = tgui_input_list(usr, "Pick a language to convert messages to", "Language Conversion", nttc.valid_languages)
if(!new_language)
return
if(new_language == "--DISABLE--")
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/cardboard_cutouts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
if(pushed_over)
to_chat(user, "<span class='warning'>Right [src] first!</span>")
return
var/new_appearance = input(user, "Choose a new appearance for [src].", "26th Century Deception") as null|anything in possible_appearances
var/new_appearance = tgui_input_list(user, "Choose a new appearance for [src]", "26th Century Deception", possible_appearances)
if(!Adjacent(usr))
user.visible_message("<span class='danger'>You need to be closer!</span>")
return
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/collar.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
/obj/item/petcollar/attack_self(mob/user)
var/option = "Change Name"
if(access_id)
option = input(user, "What do you want to do?", "[src]", option) as null|anything in list("Change Name", "Remove ID")
option = tgui_input_list(user, "What do you want to do?", "[src]", list("Change Name", "Remove ID"))
if(QDELETED(src) || !Adjacent(user))
return
switch(option)
Expand Down
6 changes: 2 additions & 4 deletions code/game/objects/items/devices/enginepicker.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@
return

locatebeacons()
var/default = null
var/E = input("Select the station's Engine:", "[src]", default) as null|anything in list_enginebeacons
var/E = tgui_input_list(user, "Select the station's Engine", "[src]", list_enginebeacons)
if(E)
processchoice(E, user)
else
Expand All @@ -51,8 +50,7 @@
var/turf/T = get_turf(choice)

if(choice.enginetype.len > 1) //If the beacon has multiple engine types
var/default = null
var/E = input("You have selected a combined beacon, which option would you prefer?", "[src]", default) as null|anything in choice.enginetype
var/E = tgui_input_list(user, "You have selected a combined beacon, which option would you prefer?", "[src]", choice.enginetype)
if(E)
engtype = E
issuccessful = TRUE
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/painter/airlock_painter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"Standard" = /obj/machinery/door/airlock)

/datum/painter/airlock/pick_color(mob/user)
var/choice = input(user, "Please select a paintjob.") as null|anything in available_paint_jobs
var/choice = tgui_input_list(user, "Please select a paintjob.", "Airlock painter", available_paint_jobs)
if(!choice)
return
paint_setting = choice
Expand Down
5 changes: 4 additions & 1 deletion code/game/objects/items/devices/painter/pipe_painter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@
paint_setting = pick(modes)

/datum/painter/pipe/pick_color(mob/user)
paint_setting = input("Which color do you want to use?", null, paint_setting) in modes
var/new_paint_setting = tgui_input_list(user, "Which color do you want to use?", "Pick color", modes)
if(!new_paint_setting)
return
paint_setting = new_paint_setting

/datum/painter/pipe/paint_atom(atom/target, mob/user)
if(!istype(target, /obj/machinery/atmospherics/pipe))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/robot/robot_parts.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
AddComponent(/datum/component/surgery_initiator/limb, forced_surgery = /datum/surgery/attach_robotic_limb)

/obj/item/robot_parts/attack_self(mob/user)
var/choice = input(user, "Select the company appearance for this limb.", "Limb Company Selection") as null|anything in GLOB.selectable_robolimbs
var/choice = tgui_input_list(user, "Select the company appearance for this limb", "Limb Company Selection", GLOB.selectable_robolimbs)
if(!choice)
return
if(loc != user)
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/weapons/scissors.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@
to_chat(user, "<span class='warning'>[M] doesn't have a head!</span>")
return
//facial hair
var/f_new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in H.generate_valid_facial_hairstyles()
var/f_new_style = tgui_input_list(user, "Select a facial hair style", "Grooming", H.generate_valid_facial_hairstyles())
//handle normal hair
var/h_new_style = input(user, "Select a hair style", "Grooming") as null|anything in H.generate_valid_hairstyles()
var/h_new_style = tgui_input_list(user, "Select a hair style", "Grooming", H.generate_valid_hairstyles())
user.visible_message("<span class='notice'>[user] starts cutting [M]'s hair!</span>", "<span class='notice'>You start cutting [M]'s hair!</span>") //arguments for this are: 1. what others see 2. what the user sees. --Fixed grammar, (TGameCo)
playsound(loc, 'sound/goonstation/misc/scissor.ogg', 100, 1)
if(do_after(user, 50 * toolspeed, target = H)) //this is the part that adds a delay. delay is in deciseconds. --Made it 5 seconds, because hair isn't cut in one second in real life, and I want at least a little bit longer time, (TGameCo)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/scrolls.dm
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
return

var/picked_area
picked_area = input(user, "Area to jump to", "Teleport where?", picked_area) as null|anything in SSmapping.teleportlocs
picked_area = tgui_input_list(user, "Area to jump to", "Teleport where?", SSmapping.teleportlocs)
if(!picked_area)
return

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/storage/boxes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -780,7 +780,7 @@
to_chat(user, "<span class='warning'>You can't modify [src] with items still inside!</span>")
return
var/list/designs = list(NODESIGN, NANOTRASEN, SYNDI, HEART, SMILE)
var/switchDesign = input("Select a Design:", "Paper Sack Design", designs[1]) as null|anything in designs
var/switchDesign = tgui_input_list(user, "Select a Design", "Paper Sack Design", designs)
if(!switchDesign)
return
if(get_dist(usr, src) > 1 && !usr.incapacitated())
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/weapons/teleportation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
turfs += T
if(turfs.len)
L["None (Dangerous)"] = pick(turfs)
var/t1 = input(user, "Please select a teleporter to lock in on.", "Hand Teleporter") as null|anything in L
var/t1 = tgui_input_list(user, "Please select a teleporter to lock in on.", "Hand Teleporter", L)
if(!t1 || (!user.is_in_active_hand(src) || user.stat || user.restrained()))
return
if(active_portals >= 3)
Expand Down
Loading
Loading