- if parameters == "avatars":
- message = "These are the avatars managed by your account:$(eol)"
- avatars = user.list_avatar_names()
- avatars.sort()
- for avatar in avatars: message += "$(eol) $(grn)" + avatar + "$(nrm)"
- elif parameters == "files":
- message = "These are the current files containing the universe:$(eol)"
- keys = universe.files.keys()
- keys.sort()
- for key in keys: message += "$(eol) $(grn)" + key + "$(nrm)"
- elif parameters == "universe":
- message = "These are the current elements in the universe:$(eol)"
- keys = universe.contents.keys()
- keys.sort()
- for key in keys: message += "$(eol) $(grn)" + key + "$(nrm)"
- elif parameters == "time":
- message = universe.categories["internal"]["counters"].get("elapsed") + " increments elapsed since the world was created."
- elif parameters: message = "I don't know what \"" + parameters + "\" is."
- else: message = "What do you want to show?"
+ message = ""
+ if parameters.find(" ") < 1:
+ if parameters == "time":
+ message = universe.categories["internal"]["counters"].get("elapsed") + " increments elapsed since the world was created."
+ elif parameters == "categories":
+ message = "These are the element categories:$(eol)"
+ categories = universe.categories.keys()
+ categories.sort()
+ for category in categories: message += "$(eol) $(grn)" + category + "$(nrm)"
+ elif parameters == "files":
+ message = "These are the current files containing the universe:$(eol)"
+ filenames = universe.files.keys()
+ filenames.sort()
+ for filename in filenames: message += "$(eol) $(grn)" + filename + "$(nrm)"
+ else: message = ""
+ else:
+ arguments = parameters.split()
+ if arguments[0] == "category":
+ if arguments[1] in universe.categories:
+ message = "These are the elements in the \"" + arguments[1] + "\" category:$(eol)"
+ elements = universe.categories[arguments[1]].keys()
+ elements.sort()
+ for element in elements:
+ message += "$(eol) $(grn)" + universe.categories[arguments[1]][element].key + "$(nrm)"
+ elif arguments[0] == "element":
+ if arguments[1] in universe.contents:
+ message = "These are the properties of the \"" + arguments[1] + "\" element:$(eol)"
+ element = universe.contents[arguments[1]]
+ facets = element.facets()
+ facets.sort()
+ for facet in facets:
+ message += "$(eol) $(grn)" + facet + ": $(red)" + escape_macros(element.get(facet)) + "$(nrm)"
+ if not message:
+ if parameters: message = "I don't know what \"" + parameters + "\" is."
+ else: message = "What do you want to show?"
+ user.send(message)
+
+def command_create(user, parameters):
+ """Create an element if it does not exist."""
+ if not parameters: message = "You must at least specify an element to create."
+ else:
+ arguments = parameters.split()
+ if len(arguments) == 1: arguments.append("")
+ if len(arguments) == 2:
+ element, filename = arguments
+ if element in universe.contents: message = "The \"" + element + "\" element already exists."
+ else:
+ message = "You create \"" + element + "\" within the universe."
+ logline = user.account.get("name") + " created an element: " + element
+ if filename:
+ logline += " in file " + filename
+ if filename not in universe.files:
+ message += " Warning: \"" + filename + "\" is not yet included in any other file and will not be read on startup unless this is remedied."
+ Element(element, universe, filename)
+ log(logline)
+ elif len(arguments) > 2: message = "You can only specify an element and a filename."
+ user.send(message)
+
+def command_destroy(user, parameters):
+ """Destroy an element if it exists."""
+ if not parameters: message = "You must specify an element to destroy."
+ else:
+ if parameters not in universe.contents: message = "The \"" + parameters + "\" element does not exist."
+ else:
+ universe.contents[parameters].destroy()
+ message = "You destroy \"" + parameters + "\" within the universe."
+ log(user.account.get("name") + " destroyed an element: " + parameters)
+ user.send(message)
+
+def command_set(user, parameters):
+ """Set a facet of an element."""
+ if not parameters: message = "You must specify an element, a facet and a value."
+ else:
+ arguments = parameters.split(" ", 2)
+ if len(arguments) == 1: message = "What facet of element \"" + arguments[0] + "\" would you like to set?"
+ elif len(arguments) == 2: message = "What value would you like to set for the \"" + arguments[1] + "\" facet of the \"" + arguments[0] + "\" element?"
+ else:
+ element, facet, value = arguments
+ if element not in universe.contents: message = "The \"" + element + "\" element does not exist."
+ else:
+ universe.contents[element].set(facet, value)
+ message = "You have successfully (re)set the \"" + facet + "\" facet of element \"" + element + "\". Try \"show element " + element + "\" for verification."
+ user.send(message)
+
+def command_delete(user, parameters):
+ """Delete a facet from an element."""
+ if not parameters: message = "You must specify an element and a facet."
+ else:
+ arguments = parameters.split(" ")
+ if len(arguments) == 1: message = "What facet of element \"" + arguments[0] + "\" would you like to delete?"
+ elif len(arguments) != 2: message = "You may only specify an element and a facet."
+ else:
+ element, facet = arguments
+ if element not in universe.contents: message = "The \"" + element + "\" element does not exist."
+ elif facet not in universe.contents[element].facets(): message = "The \"" + element + "\" element has no \"" + facet + "\" facet."
+ else:
+ universe.contents[element].delete(facet)
+ message = "You have successfully deleted the \"" + facet + "\" facet of element \"" + element + "\". Try \"show element " + element + "\" for verification."