- implemented @destroy as per the MUX help specifications. As part of this, fixed the object recycling routines to actually properly replace GARBAGE-flagged objects (it crashed before).

- Set up a global cleaner event to clean all @destroyed objects every 30 minutes (makes their dbrefs available).
- Added the @recover command for recovering @destroyed objects up until the point that the cleaner runs and actually destroys them. This can recover @destroyed objects, rooms and exits to the same state as before @destroy. It could easily be made to recover player objects too, but I'm thinking this would be a security issue.
- Added to @dig in order to allow for creating rooms with a particular parent. Also auto-creates exits in each room if desired. The only things that is not implemented is the aliases of the exits, I don't really know how to do that.
- Changed the @create command format to match the @dig (it uses : to mark the parent instead of = now, since MUX' @dig reserve = to the exit list.)
- Added extra security in the example event to guard against the bug that causes the whole scheduler to freak out if the event_function() gives a traceback.
- Changed many instances of type to point to the defines_global.OTYPE instead of giving the integer explicitly.
/Starkiel
This commit is contained in:
Griatch 2009-04-30 15:01:59 +00:00
parent 8799a0fd55
commit 3eb4cddf42
8 changed files with 274 additions and 77 deletions

View file

@ -502,7 +502,7 @@ class Object(models.Model):
% (self,))
# Set the object type to GOING
self.type = 5
self.type = defines_global.OTYPE_GOING
# Destroy any exits to and from this room, do this first
self.clear_exits()
# Clear out any objects located within the object
@ -519,7 +519,7 @@ class Object(models.Model):
uobj[0].delete()
# Set the object to type GARBAGE.
self.type = 6
self.type = defines_global.OTYPE_GARBAGE
self.save()
# Clear all attributes
@ -530,8 +530,8 @@ class Object(models.Model):
Destroys all of the exits and any exits pointing to this
object as a destination.
"""
exits = self.get_contents(filter_type=4)
exits += self.obj_home.all().filter(type__exact=4)
exits = self.get_contents(filter_type=defines_global.OTYPE_EXIT)
exits += self.obj_home.all().filter(type__exact=defines_global.OTYPE_EXIT)
for exit in exits:
exit.destroy()
@ -781,6 +781,7 @@ class Object(models.Model):
parent_str: (string) String pythonic import path of the script parent
assuming the python path is game/gamesrc/parents.
"""
if parent_str == None:
if self.is_player():
self.script_parent = settings.SCRIPT_DEFAULT_PLAYER
@ -789,9 +790,10 @@ class Object(models.Model):
elif parent_str:
#check if this is actually a reasonable script parent
#(storing with a non-valid parent path causes havoc!)
parent_str = str(parent_str).strip()
if not scripthandler.scriptlink(self, parent_str):
return False
self.script_parent = parent_str.strip()
self.script_parent = parent_str
self.save()
return True