In a situation where you have default values, these are ignored by verb panels and right click context menus, but respected by macro commands and typed commands.
If you wanted to call a custom input() proc that uses a non-byond default UI, the best place to do this would be in a verb's arg default value. Unfortunately, to make the verb also able to be typed as a command, or to be able to be used in a macro, the two verbs cannot have the same name.
It requires this hacky workaround:
obj/test
verb
testverb(value=usr.client.specialAlert("Test","Test","Yes","No") as text)
set hidden = 1
testverb_()
testverb2()
This uses the testverb2_ verb for panels/context menus, which leaves a space at the end of the context menu (not a huge deal, easily missable).
I propose a new verb setting that will tell the client to treat a verb the same way it does when you enter the verb as a command or use it as part of a macro, where any unpassed args are ignored and the verb is called with the ignored args being left empty.
obj/test
verb
testverb(value=usr.client.specialAlert("Test","Test","Yes","No") as text)
set flexible = 1