Aufruf von SR_FUN gefixt.
Bei extern_call() muss das Objekt mit uebergeben werden, wenn keine
Closure und kein Array mit Angabe des Objektes eingetragen wurde.
Sonst wird ein call_other() auf this_object() gemacht. Wurde der
restriction_checker nicht inheritet, sondern per call_other() verwendet,
bringt einen das nicht weiter. (Passiert so z.B. bei der Auswertung von
P_RESTRICTIONS in Waffen und Ruestungen.
Change-Id: I9a7bd43b382c63700fe1e199c3b981d0ed826a65
diff --git a/std/restriction_checker.c b/std/restriction_checker.c
index f2d4248..a88f630 100644
--- a/std/restriction_checker.c
+++ b/std/restriction_checker.c
@@ -187,6 +187,12 @@
return ("Mit Deiner Gildenzugehoerigkeit kannst Du das nicht.\n");
break;
case SR_FUN:
+ // In aller Regel sollte die Funktion dann nicht in diesem Objekt
+ // gerufen werden, sondern in dem, was uns ruft.
+ if(stringp(condition) && extern_call())
+ {
+ condition=({previous_object(),condition});
+ }
string res=execute_anything(condition, pl);
if (stringp(res))
return res;