#include <thing.h>#include <properties.h>#include <sensitive.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | NEED_PROTOTYPES |
| #define | ME this_object() |
Funktionen | |
| void | RemoveSensitiveObjectFromList (object ob, string list) |
| void | RemoveSensitiveObject (object ob) |
| varargs void | InsertSensitiveObjectToList (object ob, string list, string key, int threshold, mixed *opt) |
| void | InsertSensitiveObject (object ob, mixed arg) |
| varargs void | insert_sensitive_inv (object ob, string key, int threshold, mixed *opt) |
| varargs void | insert_sensitive_inv_trigger (object ob, string key, int threshold, mixed *opt) |
| #define ME this_object() |
Definiert in Zeile 19 der Datei inventory.c.
| #define NEED_PROTOTYPES |
Definiert in Zeile 13 der Datei inventory.c.
| varargs void insert_sensitive_inv | ( | object | ob, | |
| string | key, | |||
| int | threshold, | |||
| mixed * | opt | |||
| ) |
Definiert in Zeile 81 der Datei inventory.c.
Benutzt P_SENSITIVE_INVENTORY_TRIGGER, QueryProp(), SENS_KEY, SENS_OBJECT, SENS_OPT, SENS_THRESHOLD und x.
00082 { 00083 // Diese Funktion sucht, ob beim Hinzufuegen eines sensitiven Objekts 00084 // schon ein Objekt da ist, dass dieses ausloest. 00085 // z.B. (dynamit, feuer, 100, opt_dynamit) sorgt fuer 00086 // dynamit->trigger_sensitive_inv(fackel,feuer,120,opt_fackel,opt_dynamit) 00087 // wenn eine Fackel vorher mit Wert 120 eingetragen war. 00088 mixed a,x; 00089 int i; 00090 00091 if (!pointerp(a=QueryProp(P_SENSITIVE_INVENTORY_TRIGGER)) || 00092 !objectp(ob)) 00093 return; 00094 for (i=sizeof(a)-1;i>=0;i--) 00095 if (pointerp(x=a[i]) && 00096 x[SENS_KEY]==key && 00097 x[SENS_THRESHOLD]>threshold && // Ist der Ausloeser gross genug? 00098 objectp(x[SENS_OBJECT]) && 00099 environment(x[SENS_OBJECT])==environment(ob)) 00100 ob->trigger_sensitive_inv(x[SENS_OBJECT],x[SENS_KEY],x[SENS_THRESHOLD], 00101 x[SENS_OPT],opt); 00102 // Zuerst Trigger-Optionen, dann Optionen des sensitiven Objekts 00103 }

| varargs void insert_sensitive_inv_trigger | ( | object | ob, | |
| string | key, | |||
| int | threshold, | |||
| mixed * | opt | |||
| ) |
Definiert in Zeile 105 der Datei inventory.c.
Benutzt P_SENSITIVE_INVENTORY, QueryProp(), SENS_CLOSURE, SENS_KEY, SENS_OBJECT, SENS_OPT, SENS_THRESHOLD und x.
00106 { 00107 // Diese Funktion sucht, ob ein sensitives Objekt im Inventory ist, 00108 // das durch dieses Objekt ausgeloest wird. 00109 // z.B. (fackel, feuer, 120, opt_fackel) sorgt fuer 00110 // dynamit->trigger_sensitive_inv(fackel,feuer,120,opt_fackel,opt_dynamit) 00111 // wenn Dynamit mit Wert<120 eingetragen war 00112 mixed a,x; 00113 int i; 00114 00115 if (!pointerp(a=QueryProp(P_SENSITIVE_INVENTORY)) || 00116 !objectp(ob)) 00117 return; 00118 for (i=sizeof(a)-1;i>=0;i--) 00119 if (pointerp(x=a[i]) && 00120 x[SENS_KEY]==key && 00121 x[SENS_THRESHOLD]<threshold && // Ausloeser gross genug? 00122 objectp(x[SENS_OBJECT]) && 00123 environment(x[SENS_OBJECT])==environment(ob) && 00124 closurep(x[SENS_CLOSURE])) 00125 funcall(x[SENS_CLOSURE], 00126 ob,key,threshold,opt,x[SENS_OPT]); 00127 // Zuerst Trigger-Optionen, dann Optionen des sensitiven Objekts 00128 }

| void InsertSensitiveObject | ( | object | ob, | |
| mixed | arg | |||
| ) |
Definiert in Zeile 63 der Datei inventory.c.
Benutzt InsertSensitiveObjectToList(), map_ldfied, ME, SENS_INSERT_PREFIX und x.
Wird benutzt von InsertSensitiveObject().
00063 { 00064 int i; 00065 mixed x; 00066 mapping map_ldfied; 00067 00068 if (!pointerp(arg)) 00069 return; 00070 for (i=sizeof(arg)-1;i>=0;i--) 00071 if (pointerp(x=arg[i]) && 00072 sizeof(x)>=3 && 00073 stringp(x[0]) && 00074 stringp(x[1]) && 00075 intp(x[2])) { 00076 InsertSensitiveObjectToList(ob,x[0],x[1],x[2],x[3..]); 00077 call_other(ME,SENS_INSERT_PREFIX+x[0],ob,x[1],x[2],x[3..]); 00078 } 00079 }


| varargs void InsertSensitiveObjectToList | ( | object | ob, | |
| string | list, | |||
| string | key, | |||
| int | threshold, | |||
| mixed * | opt | |||
| ) |
Definiert in Zeile 48 der Datei inventory.c.
Benutzt i, QueryProp(), SENS_KEY, SENS_OBJECT, SENS_PROP_PREFIX, SENS_TRIGGER_PREFIX und SetProp().
Wird benutzt von InsertSensitiveObject().
00049 { 00050 mixed a; 00051 int i; 00052 00053 if (!pointerp(a=QueryProp(SENS_PROP_PREFIX+list))) 00054 a=({}); 00055 for (i=sizeof(a)-1;i>=0;i--) 00056 if (a[i][SENS_OBJECT]==ob && a[i][SENS_KEY]==key) 00057 return; 00058 a+=({({ob,symbol_function(SENS_TRIGGER_PREFIX+list,ob), 00059 key,threshold,opt})}); 00060 SetProp(SENS_PROP_PREFIX+list,a); 00061 }


| void RemoveSensitiveObject | ( | object | ob | ) |
Definiert in Zeile 43 der Datei inventory.c.
Benutzt RemoveSensitiveObjectFromList(), SENSITIVE_INVENTORY und SENSITIVE_INVENTORY_TRIGGER.
Wird benutzt von RemoveSensitiveObject().
00043 { 00044 RemoveSensitiveObjectFromList(ob,SENSITIVE_INVENTORY); 00045 RemoveSensitiveObjectFromList(ob,SENSITIVE_INVENTORY_TRIGGER); 00046 }


| void RemoveSensitiveObjectFromList | ( | object | ob, | |
| string | list | |||
| ) |
Definiert in Zeile 21 der Datei inventory.c.
Benutzt c, i, ME, QueryProp(), SENS_PROP_PREFIX und SetProp().
Wird benutzt von RemoveSensitiveObject().
00021 { 00022 mixed a,b,c; 00023 int i,f; 00024 00025 if (!pointerp(a=QueryProp(SENS_PROP_PREFIX+list))) 00026 return; 00027 f=1; 00028 for (i=sizeof(a)-1;i>=0;i--) 00029 if (!pointerp(b=a[i]) || 00030 !sizeof(b) || 00031 !objectp(c=b[0]) || 00032 environment(c)!=ME || 00033 c==ob) 00034 a[i]=f=0; 00035 if (f) 00036 return; 00037 a-=({0}); 00038 if (!sizeof(a)) 00039 a=0; 00040 SetProp(SENS_PROP_PREFIX+list,a); 00041 }


1.6.3