Added DEFAULT_HOME value of 2 to settings.py.dist
Added import of DEFAULT_HOME from settings into defines_global
Removed clear_players()
Removed clear_things()
Created a more general clear_objects():
* obj.clear_objects()
* Everything with obj as its location will be moved
to its home.
* If the home is the obj, then said objects will be
moved to DEFAULT_HOME, if it exists.
* If the said objects do not have a home, they will
also be moved to DEFAULT_HOME.
This commit is contained in:
parent
5f962b69a0
commit
8b8099a9db
3 changed files with 45 additions and 34 deletions
|
|
@ -401,33 +401,13 @@ class Object(models.Model):
|
||||||
self.type = 6
|
self.type = 6
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
# Clear any players out of the object
|
# Destroy any exits to and from this room, do this first
|
||||||
self.clear_players()
|
|
||||||
# Destroy any exits to and from this room
|
|
||||||
self.clear_exits()
|
self.clear_exits()
|
||||||
# Clear any things out of the object
|
# Clear out any objects located within the object
|
||||||
self.clear_things()
|
self.clear_objects()
|
||||||
# Clear all attributes
|
# Clear all attributes
|
||||||
self.clear_all_attributes()
|
self.clear_all_attributes()
|
||||||
|
|
||||||
def clear_players(self, relocate_to=None):
|
|
||||||
"""
|
|
||||||
Relocates all players from object to referenced object.
|
|
||||||
If no location is given, location 2 is assumed.
|
|
||||||
"""
|
|
||||||
players = self.get_contents(filter_type=1)
|
|
||||||
for player in players:
|
|
||||||
if not relocate_to:
|
|
||||||
try:
|
|
||||||
relocate_to = Object.objects.get(id=2)
|
|
||||||
player.move_to(relocate_to)
|
|
||||||
except:
|
|
||||||
functions_general.log_errmsg("Could not find Limbo - player '%s(#%d)' moved to null location." % (player.name,player.id))
|
|
||||||
player.move_to(None)
|
|
||||||
else:
|
|
||||||
player.move_to(relocate_to)
|
|
||||||
player.save()
|
|
||||||
|
|
||||||
def clear_exits(self):
|
def clear_exits(self):
|
||||||
"""
|
"""
|
||||||
Destroys all of the exits and any exits pointing to this
|
Destroys all of the exits and any exits pointing to this
|
||||||
|
|
@ -439,20 +419,43 @@ class Object(models.Model):
|
||||||
for exit in exits:
|
for exit in exits:
|
||||||
exit.destroy()
|
exit.destroy()
|
||||||
|
|
||||||
def clear_things(self):
|
def clear_objects(self):
|
||||||
"""
|
"""
|
||||||
Moves all things currently in a GOING -> GONE location
|
Moves all objects (players/things) currently in a GOING -> GARBAGE location
|
||||||
to limbo (if it can be found).
|
to their home or default home (if it can be found).
|
||||||
"""
|
"""
|
||||||
things = self.get_contents(filter_type=3)
|
# Gather up everything, other than exits and going/garbage, that is under
|
||||||
|
# the belief this is its location.
|
||||||
|
objs = self.obj_location.filter(type__in=[1,2,3])
|
||||||
|
|
||||||
for thing in things:
|
for obj in objs:
|
||||||
|
home = obj.get_home()
|
||||||
|
text = "object"
|
||||||
|
|
||||||
|
if obj.is_player():
|
||||||
|
text = "player"
|
||||||
|
|
||||||
|
# Obviously, we can't send it back to here.
|
||||||
|
if home is self:
|
||||||
|
home = None
|
||||||
|
|
||||||
|
if not home:
|
||||||
try:
|
try:
|
||||||
relocate_to = Object.objects.get(id=2)
|
home = Object.objects.get(id=defines_global.DEFAULT_HOME)
|
||||||
thing.move_to(relocate_to, True)
|
|
||||||
except:
|
except:
|
||||||
functions_general.log_errmsg("Could not find Limbo - object '%s(#%d)' moved to null location." % (thing.name, thing.id))
|
functions_general.log_errmsg("Could not find default home '(#%d)' for %s '%s(#%d)'." % (defines_global.DEFAULT_HOME, text, obj.name, obj.id))
|
||||||
thing.move_to(None)
|
|
||||||
|
if obj.is_player():
|
||||||
|
if obj.is_connected():
|
||||||
|
if home:
|
||||||
|
obj.emit_to("Your current location has ceased to exist, moving you to your home %s(#%d)." % (home.name, home.id))
|
||||||
|
else:
|
||||||
|
# Famous last words: The player should never see this.
|
||||||
|
obj.emit_to("You seem to have found a place that does not exist.")
|
||||||
|
|
||||||
|
# If home is still None, it goes to a null location.
|
||||||
|
obj.move_to(home, True)
|
||||||
|
obj.save()
|
||||||
|
|
||||||
def set_attribute(self, attribute, new_value):
|
def set_attribute(self, attribute, new_value):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,9 @@ HIDDEN_ATTRIBS = ["CHANLIST"]
|
||||||
# Server version number.
|
# Server version number.
|
||||||
EVENNIA_VERSION = 'Alpha'
|
EVENNIA_VERSION = 'Alpha'
|
||||||
|
|
||||||
|
# Default home definition.
|
||||||
|
from settings import DEFAULT_HOME
|
||||||
|
|
||||||
# The message to show when the user lacks permissions for something.
|
# The message to show when the user lacks permissions for something.
|
||||||
NOPERMS_MSG = "You do not have the necessary permissions to do that."
|
NOPERMS_MSG = "You do not have the necessary permissions to do that."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
# A list of ports to listen on. Can be one or many.
|
# A list of ports to listen on. Can be one or many.
|
||||||
GAMEPORTS = [4000]
|
GAMEPORTS = [4000]
|
||||||
|
|
||||||
|
# The integer dbref of a home for objects that become homeless. This is the room
|
||||||
|
# where new players start. NOTE: This is based on the default data. If you delete
|
||||||
|
# #2, you will want to change this.
|
||||||
|
DEFAULT_HOME = 2
|
||||||
|
|
||||||
# While DEBUG is False, show a regular server error page on the web stuff,
|
# While DEBUG is False, show a regular server error page on the web stuff,
|
||||||
# email the traceback to the people in the ADMINS tuple below. By default (True),
|
# email the traceback to the people in the ADMINS tuple below. By default (True),
|
||||||
# show a detailed traceback for the web browser to display.
|
# show a detailed traceback for the web browser to display.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue