diff --git a/evennia/prototypes/menus.py b/evennia/prototypes/menus.py index f7566e56b0..19f2ae4380 100644 --- a/evennia/prototypes/menus.py +++ b/evennia/prototypes/menus.py @@ -965,7 +965,7 @@ def _typeclass_actions(caller, raw_inp, **kwargs): return "node_typeclass" -def _typeclass_select(caller, typeclass): +def _typeclass_select(caller, typeclass, **kwargs): """Select typeclass from list and add it to prototype. Return next node to go to.""" ret = _set_property(caller, typeclass, prop="typeclass", processor=str) caller.msg("Selected typeclass |c{}|n.".format(typeclass)) diff --git a/evennia/prototypes/prototypes.py b/evennia/prototypes/prototypes.py index 361c3c9e65..c79a1b0ed1 100644 --- a/evennia/prototypes/prototypes.py +++ b/evennia/prototypes/prototypes.py @@ -918,7 +918,7 @@ def prototype_to_str(prototype): attrs = prototype["attrs"] out = [] for (attrkey, value, category, locks) in attrs: - locks = ", ".join(lock for lock in locks if lock) + locks = locks if isinstance(locks, str) else ", ".join(lock for lock in locks if lock) category = "|ccategory:|n {}".format(category) if category else "" cat_locks = "" if category or locks: diff --git a/evennia/utils/evmenu.py b/evennia/utils/evmenu.py index 15617af6be..1fef4fff82 100644 --- a/evennia/utils/evmenu.py +++ b/evennia/utils/evmenu.py @@ -1374,7 +1374,7 @@ def list_node(option_generator, select=None, pagesize=10): Parse the select action """ - available_choices = kwargs.get("available_choices", []) + available_choices = kwargs.pop("available_choices", []) try: index = int(raw_string.strip()) - 1 @@ -1390,7 +1390,10 @@ def list_node(option_generator, select=None, pagesize=10): else: return select(caller, selection, **kwargs) except Exception: - logger.log_trace() + logger.log_trace("Error in EvMenu.list_node decorator:\n " + f"select-callable: {select}\n with args: ({caller}" + f"{selection}, {available_choices}, {kwargs}) raised " + "exception.") elif select: # we assume a string was given, we inject the result into the kwargs # to pass on to the next node