From 98ab831437427dfe82260baa05fc06f68f80d9c1 Mon Sep 17 00:00:00 2001 From: Griatch Date: Fri, 27 Oct 2017 09:16:46 +0200 Subject: [PATCH] Fix evmenu persistence loading for 0.7 --- evennia/utils/evmenu.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/evennia/utils/evmenu.py b/evennia/utils/evmenu.py index 523f6ec00c..d248910e76 100644 --- a/evennia/utils/evmenu.py +++ b/evennia/utils/evmenu.py @@ -426,6 +426,15 @@ class EvMenu(object): for key, val in kwargs.iteritems(): setattr(self, key, val) + # + if self.caller.ndb._menutree: + # an evmenu already exists - we try to close it cleanly. Note that this will + # not fire the previous menu's end node. + try: + self.caller.ndb._menutree.close_menu() + except Exception: + pass + # store ourself on the object self.caller.ndb._menutree = self @@ -441,17 +450,7 @@ class EvMenu(object): "persistent": persistent} calldict.update(kwargs) try: - caller.attributes.add("_menutree_saved", - ((menudata, ), - {"startnode": startnode, - "cmdset_mergetype": cmdset_mergetype, - "cmdset_priority": cmdset_priority, - "auto_quit": auto_quit, "auto_look": auto_look, "auto_help": auto_help, - "cmd_on_exit": cmd_on_exit, - "nodetext_formatter": nodetext_formatter, - "options_formatter": options_formatter, - "node_formatter": node_formatter, "input_parser": input_parser, - "persistent": persistent, })) + caller.attributes.add("_menutree_saved", (self.__class__, (menudata, ), calldict)) caller.attributes.add("_menutree_saved_startnode", (startnode, startnode_input)) except Exception as err: caller.msg(_ERROR_PERSISTENT_SAVING.format(error=err), session=self._session)