From 0bf05a8795806190b8b60600c4caaebd3822d554 Mon Sep 17 00:00:00 2001 From: Griatch Date: Wed, 20 Jan 2016 18:58:41 +0100 Subject: [PATCH] Removed at_before_traverse hook completely since it was not used and also makes no sense to use due to how exits works. Overload at_traverse if wanting to tweak how traversal happens. Resolves #902. --- evennia/game_template/typeclasses/exits.py | 8 +++++--- evennia/game_template/typeclasses/objects.py | 6 ++++-- evennia/objects/objects.py | 15 --------------- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/evennia/game_template/typeclasses/exits.py b/evennia/game_template/typeclasses/exits.py index bb48b1cc06..53a942de12 100644 --- a/evennia/game_template/typeclasses/exits.py +++ b/evennia/game_template/typeclasses/exits.py @@ -25,9 +25,11 @@ class Exit(DefaultExit): attribute `err_traverse` is not defined. Relevant hooks to overload (compared to other types of Objects): - at_before_traverse(traveller) - called just before traversing. - at_after_traverse(traveller, source_loc) - called just after traversing. - at_failed_traverse(traveller) - called if traversal failed for some reason. Will + at_traverse(traveller, target_loc) - called to do the actual traversal and calling of the other hooks. + If overloading this, consider using super() to use the default + movement implementation (and hook-calling). + at_after_traverse(traveller, source_loc) - called by at_traverse just after traversing. + at_failed_traverse(traveller) - called by at_traverse if traversal failed for some reason. Will not be called if the attribute `err_traverse` is defined, in which case that will simply be echoed. """ diff --git a/evennia/game_template/typeclasses/objects.py b/evennia/game_template/typeclasses/objects.py index c028278176..11e4f6a59e 100644 --- a/evennia/game_template/typeclasses/objects.py +++ b/evennia/game_template/typeclasses/objects.py @@ -133,8 +133,10 @@ class Object(DefaultObject): at_object_receive(obj, source_location) - called when this object receives another object - at_before_traverse(traversing_object) - (exit-objects only) - called just before an object traverses this object + at_traverse(traversing_object, source_loc) - (exit-objects only) + handles all moving across the exit, including + calling the other exit hooks. Use super() to retain + the default functionality. at_after_traverse(traversing_object, source_location) - (exit-objects only) called just after a traversal has happened. at_failed_traverse(traversing_object) - (exit-objects only) called if diff --git a/evennia/objects/objects.py b/evennia/objects/objects.py index 6e01556e19..7240a5aa44 100644 --- a/evennia/objects/objects.py +++ b/evennia/objects/objects.py @@ -1159,21 +1159,6 @@ class DefaultObject(with_metaclass(TypeclassBase, ObjectDB)): """ pass - def at_before_traverse(self, traversing_object): - """ - Called just before an object uses this object to traverse to - another object (i.e. this object is a type of Exit) - - Args: - traversing_object (Object): The object traversing us. - - Notes: - The target destination should normally be available as - `self.destination`. - - """ - pass - def at_traverse(self, traversing_object, target_location): """ This hook is responsible for handling the actual traversal,