diff --git a/src/commands/objmanip.py b/src/commands/objmanip.py index fbb0119a19..f9782addea 100644 --- a/src/commands/objmanip.py +++ b/src/commands/objmanip.py @@ -476,17 +476,8 @@ def cmd_find(command): dbref_limits=(lowlim, highlim)) if not results: return - source_object.emit_to("Name match: %s" % results) + source_object.emit_to("Found a unique name match: %s" % results) - ## if len(results) > 0: - ## source_object.emit_to("Name matches for: %s" % (searchstring,)) - ## s = "" - ## for result in results: - ## s += " %s\n\r" % (result.get_name(fullname=True),) - ## s += "%d matches returned." % (len(results),) - ## source_object.emit_to(s) - ## else: - ## source_object.emit_to("No name matches found for: %s" % (searchstring,)) GLOBAL_CMD_TABLE.add_command("@find", cmd_find, priv_tuple=("objects.info",), help_category="Building", auto_help_override=False) diff --git a/src/objects/managers/object.py b/src/objects/managers/object.py index 7b973093c4..d98c57dcb6 100644 --- a/src/objects/managers/object.py +++ b/src/objects/managers/object.py @@ -169,9 +169,15 @@ class ObjectManager(models.Manager): """ Searches through all objects returning those which has a certain script parent. """ - o_query = self.filter(script_parent__exact=script_parent) + o_query = self.filter(script_parent__exact=script_parent) return o_query.exclude(type__in=[defines_global.OTYPE_GARBAGE, defines_global.OTYPE_GOING]) + + def local_object_script_parent_search(self, script_parent, location): + o_query = self.filter(script_parent__exact=script_parent).filter(location__iexact=location) + return o_query.exclude(type__in=[defines_global.OTYPE_GARBAGE, + defines_global.OTYPE_GOING]) + def list_search_object_namestr(self, searchlist, ostring, dbref_only=False, limit_types=False, match_type="fuzzy", diff --git a/src/objects/models.py b/src/objects/models.py index f72c8787bc..66cab27c08 100755 --- a/src/objects/models.py +++ b/src/objects/models.py @@ -1002,6 +1002,9 @@ class Object(models.Model): # Execute eventual extra commands on this object after moving it self.scriptlink.at_after_move() + + # Perform eventual extra commands on the receiving location + target.scriptlink.at_obj_receive(self) if force_look and self.is_player(): self.execute_cmd('look') diff --git a/src/script_parents/basicobject.py b/src/script_parents/basicobject.py index 6ca652e35a..3312606fbc 100644 --- a/src/script_parents/basicobject.py +++ b/src/script_parents/basicobject.py @@ -125,6 +125,12 @@ class EvenniaBasicObject(object): #print "SCRIPT TEST: %s dropped %s." % (pobject, self.scripted_obj) pass + def at_obj_receive(self, object=None): + """ + Called whenever an object is added to the contents of this object. + """ + pass + def return_appearance(self, pobject=None): """ Returns a string representation of an object's appearance when LOOKed at. diff --git a/src/script_parents/basicplayer.py b/src/script_parents/basicplayer.py index b920fe1360..e0abac226d 100644 --- a/src/script_parents/basicplayer.py +++ b/src/script_parents/basicplayer.py @@ -99,6 +99,11 @@ class EvenniaBasicPlayer(object): """ pass + def at_obj_receive(self, object=None): + """ + Called whenever an object is added to the inventory of the player. + """ + pass def at_disconnect(self): """