Neue Funktion: GetHelperObject()
Damit nicht jeder eine eigene Funktion bauen muss,
um irgendein Helferobjekt zu finden, was bestimmten
Kriterien genuegt, gibt es jetzt eine in der Mudlib.
Change-Id: Id627046bc3da6685b7509cab448fe76b45a16293
diff --git a/std/living/helpers.c b/std/living/helpers.c
index 3d292c0..26c94e5 100644
--- a/std/living/helpers.c
+++ b/std/living/helpers.c
@@ -147,3 +147,23 @@
return deep_copy(Query(P_HELPER_OBJECTS,F_VALUE));
}
+public varargs object GetHelperObject(int type, int|closure strength)
+{
+ object ob;
+ // Wir brauchen strength als kleineren Wert, als den minimal akzeptierten,
+ // damit wir mit > arbeiten koennen, ist meistens egal, aber wenn kein
+ // Wert uebergeben wird ist strength = 0, in dem Fall duerfte aber
+ // mehrheitlich 1 gemeint sein.
+ --strength;
+ foreach(closure cl : Query(P_HELPER_OBJECTS)[type]-({0}))
+ {
+ if((intp(strength) &&
+ funcall(cl,this_object(),previous_object())>strength) ||
+ (closurep(strength) && funcall(strength,this_object(),cl)))
+ {
+ ob=get_type_info(cl,2);
+ break;
+ }
+ }
+ return ob;
+}